解密Prompt系列1. Tunning-Free Prompt:GPT2 GPT3 LAMA AutoPrompt

借着ChatGPT的东风,我们来梳理下prompt范式的相关模型。本系列会以A Systematic Survey of Prompting Methods in Natural Language Processing这篇综述为基础,分门别类的整理下这几年比较有代表性的prompt模型。或许你还以其他形式看到过prompt概念,例如Demonstration,Instruction,In-Context learning,few-shot learning等等

开篇我们简单介绍下Prompt范式,并以其中的冻结参数Tunning-Free Prompt为线索串联GPT2,GPT3,LAMA和AutoPrompt这四种冻结参数的基础模型

what is prompt

  • 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评)
  • 综述2. Paradigm Shift in Natural Language Processing(四星推荐)
  • 综述3. Pre-Trained Models: Past, Present and Future

Prompt即提示学习,是继预训练+微调范式后众望所归的第四范式。在预训练+微调的范式中我们调整预训练模型来匹配下游任务数据,本质是对预训练学到的众多信息进行重新排列和筛选。而Prompt是通过引入“提示信息”,让模型回忆起预训练中学过的语言知识,也就是调整下游数据来适配预训练模型,进而把所有NLP任务都统一成LM任务。

举几个例子,以下[x]为prompt提示词,[z]为模型预测

  1. 分类任务:
    相比情绪分类对应的多分类0~N的输出,Prompt会输出对应代表情绪的token

  1. 抽取任务

  1. 生成任务

看着非常玄妙!但其实部分原理就来自于于超大的预训练数据中包含的丰富文本知识。例如English2French的翻译任务,在预训练文本中会自然出现一些英法的对应文本如下。而提示词的加入可以理解为尝试还原模型在以下场景中的上下文(Attention)

那和预训练+微调的范式相比,Prompt有什么优势?

  • 微调参数量更小:这几年模型越来越大,连微调都变成了一件很奢侈的事情,而prompt出现提供了新的选择,可以freeze模型只对提示词进行微调
  • 小样本场景: 不少Prompt模型是面向zero-shot,few-shot场景设计的
  • 多任务范式统一:一切皆为LM!

Prompt模型的设计主要包含以下几个模块,

  • Pretrain Model Choice:GPT等Decoder,BERT等Encoder,BART等Encoder-Decoder
  • Prompt Engineering:离散模板(文本),连续模板(embedding)的设计。模型效果对模板的敏感性,以及人工模板设计的不稳定的和难度是需要解决的问题
  • Answer Engineering: 包括答案文本的搜索,和预测文本到标签的映射。相比分类标签,Prompt范式输出的答案多为文本,因此多了一步文本到标签的解析
  • Training Strategy:主要有4种不同类型,LM和Prompt都冻结的Tunning-free,微调LM冻结Prompt,冻结LM微调Prompt,和LM+Prompt微调

我们先按照Training Strategy的不同,来梳理下各个方向的基础模型,再进阶的前沿模型,哈哈所以得花点时间才能轮到ChatGPT。第一章介绍Tunning-Free Prompt,在下游任务使用中LM和Prompt都是冻结的,不需要针对下游任务进行微调,可以用于Zero-shot和few-shot场景,主要介绍下GPT2,GPT3,LAMA和AutoPrompt。

GPT2

  • GPT2:Language Models are Unsupervised Multitask Learners,2019.2
  • 任务:NLG
  • Prompt: Discrete + Hand crafted Prompt
  • 核心:Language Model本身就是无监督的多任务学习

在前BERT时代,通用文本表征-GenSen就探索过通过多任务得到在不同下游任务中泛化能力更好的文本表征,而后BERT时代,MQPN,MTDNN等模型也探索过如何通过多任务学习得到更加通用的大模型。

GPT2更往前迈了一步,它认为如果语言模型足够优秀,则在拟合P(output|input)P(output|input)的过程中,对p(output|input,task)p(output|input,task)也会进行学习,因为NLP任务信息本身就会在丰富的预训练预料中出现,例如上面我们举的翻译的case。和GPT相比,GPT2的创新就是在“LM是无监督多任务”这个观点上,所以GPT2的评测是基于无finetune的zero-shot场景进行的,旨在证明足够优秀的语言模型是可以不经过微调直接用在不同的下游场景中的。

那如何让模型针对不同的任务给出预测呢?作者通过在原始Input上加入任务相关提示词的方式,这不prompt就来了!举个栗子

  • Translation:English = 输入 French = ?
  • Summarization:文章 + TL;DR:?,这里TL;DR是Too Long; Didn't Read的缩写,可类比咱的‘一言以蔽之‘,会出现在大段文本的末尾作为总结升华,或者对话中

几年前看GPT2的论文,只觉得模型更大了(评估是用的1542M的版本是Bert-large的5倍),样本更多了,zero-shot的能力挺新奇但是效果差点意思。如今从Prompt的角度重读,GPT2更像是在探索模型zero-shot能力的时候不小心推开了prompt的大门,从最直观的视角构建了Prompt提示词,也就是类似的任务在常规文本中是以什么形式(关键词)出现的,就以该形式构建文本输入即可~

除此之外GPT2对模型的微调以及构造了更大质量更高的数据集这里就不细说了~

GPT3

  • GPT3: Language Models are Few-Shot Learners, 2020.5
  • Making pre-trained language models better few-shot learners
  • 任务:无所不能
  • Prompt: Discrete + Hand crafted Prompt + Prompt Augmentation
  • 核心:大力出奇迹!175B大模型在few-shot,zero-shot的模型表现甚至可以比肩微调

GPT3是GPT2的延续,一方面旨在进一步提高模型的zero-shot能力,方法简单粗暴加参数就完事了!175Billion的参数首次证明了规模的量变会带来质变![Ref8]详细论证了大模型会带来一些奇迹般的能力,包括更强的复杂推理,知识推理,和样本外泛化能力!

另一方面GPT3在few-shot场景做了很多尝试,提出了自带神秘光环的in-context learning,可以被归类为multi-prompt中的prompt augmentation方案~

175Billon!

GPT3的模型结构延续GPT系列,但测试了不同模型参数量级的8个模型在不同下游任务上的效果,从125M到175B,模型效果在zero/one/few-shot的设定下都有稳步提升。在TriviaQA等任务上175B的GPT3甚至超越微调模型拿到了SOTA,算是预训练模型超越微调模型的第一次。但在NLI(判断两个句子是相似,对立,中性),WiC(判断一个单词是否在两个句子中含义相同)两个任务上GPT3的表现非常差,看起来似乎对涉及两个句子间逻辑推断的任务并不擅长。或许因为类似两个文本的逻辑推断在预训练文本中未出现过?

针对GPT3变态的模型大小,咱不聊技术垄断,OpenAI好有钱blabla我更好奇的是增长的参数究竟是如何提升模型能力?是更多的参数可以记忆更多的知识?还是更大的向量空间可以让模型学到更加线性可分的空间表征,使得下游任务对信息的解码更加简单,所以在few-shot场景有更好的表现?还没看到较严谨的论证,有知道的盆友求答疑解惑

In-context learning

论文在GPT2已有的zero-shot的基础上,提出了In-Context learning的概念,也称类比学习,上下文学习或者语境学习。有one-shot和few-shot两种方案,对应不同的增强Prompt的构建方式。随着模型参数量级的提升,few-shot,one-shot带来的效果提升更加显著。以英翻法任务为例

  1. zero-shot: Prompt为任务描述

  1. one-shot: Prompt Augmentation,任务描述+一个带答案的样本

  1. few-shot: Prompt Augmentation,任务描述+多个带答案的样本

GPT3对其他NLP任务的prompt构建方案详见论文附录G~

对于Prompt Augmentation带来的效果提升,个人感觉in-context这个词的使用恰如其分,就是带答案的样本输入其实做了和任务描述相似的事情,也就是让待预测的输入处于和预训练文本中任务相关语料相似的上下文。带答案的样本比任务描述本身更接近自然的上下文语境。

不过prompt增强的构建还有许多细节待研究,例如抽取哪些样本更好,不同样本模型预测结果是否稳健,样本答案的构建方式,样本的顺序是否有影响等等。针对素材生成的场景没啥所谓,但是对抽取,分类,QA等任务,如果不同的prompt会得到显著不同的结果,就让人很头疼了~

[Ref6]的论文更深入的探究了in-context具体提供了哪些信息,作者定位到以下4类信息

  1. 输入标签的对应关系: 把样本标签改成错误标签,模型效果下降有限
  2. 标签分布:把标签改成随机单词,模型效果有显著下降
  3. 输入分布:在prompt中加入领域外文本,模型效果有显著下降
  4. 输入输出格式:改变双输入格式,在prompt中只保留标签或者只保留输入,模型效果都会有显著下降

GPT3正式推开了in-context learning的大门,模型参数也断层式的增长进入了Billon级别,后面的Flan,PaLM,LaMDA皆是这个大小。不过就效果而言GPT3在部分任务上依旧会被小模型T5吊打,以至于模型规模增长到底是否是正确的技术方向一度被质疑,直到之后的Chain of Thought出现才被逆转,这个放在后面章节再说~

LAMA

  • LAMA: Language Models as Knowledge Bases? 2019.9
  • Github: GitHub - facebookresearch/LAMA: LAnguage Model Analysis
  • 任务:NLU(实事抽取)
  • prompt: cloze + Hand Craft Prompt
  • 核心:不经过微调的Bert在知识抽取和开放与问答上效果惊人的好,可以比肩有监督的KG基准

LAMA是在GPT2和GPT3之间提出的一个探测(probe)任务,旨在研究预训练模型存储的知识信息,这里只考虑实体关系三元组(Subject, Relation, Object)。

LAMA设计的Probe方案就是人工设计的完形填空(cloze)类型的prompt模板。例如把出生地实体识别,转化成小明出生于[MASK]的完形填空任务,如果模型预测MASK正确,就认为模型掌握了这一知识。

来具体说下LAMA针对不同关系构建的Prompt模板。论文使用以下4个评测数据

  1. Google-RE

Wikipedia抽取的事实,包括5种关系,论文只保留了出生地,死亡地,出生日期3种关系,因为剩余两种的预测结果为多token,而LAMA的答案模板限制只预测1个token。每种关系作者手工构建了Prompt填空模板,举个栗子

  • 出生时间
    • Federico Falco is an Argentinian writer born in [MASK] .
    • Steve Lindsey (born May, 6th [MASK]) is an American record producer
  • 出生地
    • Lucy Toulmin Smith was born at [MASK], Massachusetts, USA
    • Born in [MASK], New Jersey, Connor attended parochial schools as a child
  • 死亡地
    • Uvedale Tomkins Price died at [MASK] in 1764
    • Lewin died on December 18, 2010, at the age of 84 in [MASK]
  1. T-REx

wikidata三元组,比Google-RE范围更广,作者选取了41种关系,每种关系采样了1000条事实。每种关系作者手工构建了Prompt模板,部分Prompt如下

  1. ConceptNet

多语言词之间的常识关系,作者只考虑object为英文单字的16种关系,部分prompt如下

  1. SQuAD

QA数据集,论文选取了305条上下文无关,且回答为单字的问题。prompt模板通过人工把问题改造成MLM语句得到,举个例子

  • The Normans combine with the [MASK] culture in Ireland
  • Isaac's chains made out of [MASK].

因为LAMA只检测实体三元组关系,所以除Squad外的prompt模板可以抽象为'[X] relation [Y]'的完形填空形式, 但是prompt构建本身还是依赖人工,完整的LAMA数据集详见github~

这类Hand Crafted Prompt的构建主要有2个问题,一个是全靠人工,另一个在论文中也有提到就是不同的prompt对结果有较大影响,那如何找到最优的构建方案是个需要解决的问题

在Answer模板上LAMA限定了答案只能是token,这和它选择的预训练模型是BERT有关,所以Answer的解析没啥好说的就判断预测token是否正确即可。

其他探测任务相关的细节这里就不展开,感兴趣的盆友可以去看论文~

AutoPrompt

  • paper: AutoPrompt Eliciting Knowledge from Language Models,2020.10
  • github: GitHub - ucinlp/autoprompt: AutoPrompt: Automatic Prompt Construction for Masked Language Models.
  • 任务:NLU(NLI,实事抽取,关系抽取)
  • prompt: Discrete + Gradient Search Prompt

AutoPrompt是在LAMA上的改进,针对LAMA需要人工构造Prompt的问题,提出了一种基于梯度自动生成提示词的方案。论文针对分类任务,作者设计了通用的prompt模板如下,在原始文本输入的基础上,拼接多个触发词[T],最后一个MASK token为模型预测[P]。

下面分别针对Prompt和Answer Engineering来说下细节

LAMA的一个核心问题就是人工构造Prompt的成本和效果的不确定性,AutoPrompt借鉴了文本对抗AdvTrigger的梯度搜索方案,给定样本和模型可以自动搜索任务相关触发词。

AdvTrigger旨在找到和输入以及模型无关的通用Trigger,把这个Trigger拼接在输入文本的开头或者结尾可以使得模型得到特定的结果,可以是增加模型的误判率,使得模型输出有种族歧视的文本,或者让模型输出相同的错误结果等等。以下是AdvTrigger中给出的例子(注意以下案例只显示模型结果)

AutoPrompt使用了相同的Trigger搜索方式,首先把触发词用[MASK]初始化,然后逐步迭代来最大化以下似然函数,即加入触发词后MASK预测为正确标签的概率最大化

p(y|xprompt)=∑wp([MASK]=w|xprompt)p(y|xprompt)=∑wp([MASK]=w|xprompt)

每一步迭代通过用以下一阶泰勒展开来近似把触发词改成j后似然函数的变化(梯度*词向量),得到最大化似然函数的topK个触发词。然后把触发词拼接输入,重新计算上述似然函数。以上两步迭代多次,得到最终的TopK触发词,这里K作为超参可以有{3,6}个

Vcand=topkw∈V[wTin▽logp(y|xprompt)]Vcand=topkw∈V[winT▽logp(y|xprompt)]

所以AutoPrompt虽然省去了人工构建prompt,但是需要下游标注任务样本来搜索触发词,一定程度上不算是tunning-free范式,更像是Fixed-LM Prompt-Tunning,除非搜索得到的触发词能直接迁移到相同任务其他领域数据中,不过这部分论文中并未评测。

Auto Label Token Selection

AutoPrompt除了评估事实抽取任务,还加入了对分类任务的评估所以需要对Answer部分进行额外处理把模型预测的token映射到分类标签。这里主要是多token到单label的映射,例如哪些单词代表情感正向,哪些是负向。依旧是基于下游人物样本的有监督方案,top-k标签词的选择需要两步

第一步是label表征,作者使用了模型对[MASK]的模型输出作为x,真实标签作为Y,训练了一个logit classifer,这时模型权重(hidden_size * label_size )其实就是标签的空间表征

h=Transformer([MASK])p(y|h)∝exp(h⊙y+β)(1)(2)(1)h=Transformer([MASK])(2)p(y|h)∝exp(h⊙y+β)

第二步是token打分,作者把[MASK]替换为其他候选token,p(y|htoken)p(y|htoken)概率值越高,意味着token的输出向量和标签向量相似度越高,因此选择概率值最高的K个token来作为标签的答案词。

最后我们看下AutoPrompt搜索得到的触发词和答案长啥样,可以说是完全出乎意料,毫无逻辑可言,触发词和答案候选词都很离谱哈哈哈

至于效果AutoPrompt超越LAMA嘛,本身AutoPrompt就是使用下游任务样本搜索的Prompt和label,不好才奇怪不是~~~


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22965.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来式人工智能教育在国内的现状

无论是高空户外还是深海水下,或者火灾、地震现场,危险环境让身处其中的工作人员面临巨大威胁。而正在兴起的特种机器人,有望代替人类,在危险现场完成任务。格物斯坦表示:特种机器人,是机器人的一个重要分支…

chatgpt赋能python:Python如何隐藏进程

Python如何隐藏进程 介绍 进程是指运行中的程序在操作系统中的一个实例。在计算机系统中,进程通常都可以被用户或者其他程序所看到。然而,有时候我们需要隐藏进程,比如保护敏感信息或者防止恶意攻击。 Python是一种高级编程语言&#xff0…

UP主高薪裸辞转型独立开发者;LLM权威学习路线图;游戏开发最全AI工具盘点;LOGO制作保姆教程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 Hugging Face 全球开源AI游戏开发挑战赛,7月8日开始 Open Source AI Game Jam 是 Hugging Face 举办的首场开源游戏开发挑…

ChatGPT到底是什么,带领大家详细解读!

前言 ChatGPT的强大程度相信很多同学都已经体验过了,无论是编写文章,问答,写代码展现除了非常惊艳的能力。一定喜欢技术的同学一定好奇,ChatGPT是如何做到“全知全能”,即会写文章,又会表达总结&#xff0…

IDE + ChatGPT,这款编辑器真的做到可以自动写代码了!

介绍 Cursor 是集成了 GPT-4 的 IDE 工具,目前免费并且无需 API Key,支持 Win、Mac、Linux 平台,可以按要求生成代码,或者让 AI 帮助优化代码,分析代码。Cursor目前已经集成了openai的GPT-4,它或将彻底改变…

CSDN周赛第30期题目解析(天然气定单、小艺读书、买苹果、圆桌)

CSDN周赛第30期,我应试成绩“0”分。试着对天然气定单、小艺读书、买苹果🍎、圆桌四个题目,完成算法解析。 (本文获得CSDN质量评分【91】) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖…

猿人学逆向比赛第四题-gRPC题解 | Go版本

大家好,我是TheWeiJun,欢迎来到我的公众号。在现代互联网中,某些网站、App会使用gRPC进行数据传输,以加强数据的安全性和保密性。然而,逆向加密算法并不是一件简单的事情。本文将探讨如何逆向猿人学App的gRPC协议&…

ChatGPT 扩展来自动化你的生活

除非您一直生活在岩石下,否则您可能知道 ChatGPT 如何改变业务以及我们的工作和沟通方式。您只需访OpenAI 的网站即可解锁 ChatGPT 的强大功能。 但是,如果我们不仅可以在其官方网站上使用 ChatGPT,还可以在 微信、Excel、Word 以及更多地方使…

chatGPT的到来,是否意味新时代的来临

chatGPT是一种人工智能技术驱动的自然语言处理工具,是一种基于语言对话场景的语言模型,它使用了Transformer神经网络架构,也是GPT-3.5架构,功能具备上知天文下知地理,还可以进行撰写邮件、视频脚本、文案、翻译、代码等…

windows的软件能在鸿蒙系统运行吗,如果鸿蒙系统能不能兼容windows的所有应用软件,会让你惊喜吗...

如果华为能够让鸿蒙系统兼容Windows系统上所有的应用,那华为鸿蒙系统可能已经超脱时代了。 你得知道在两个不同平台,硬件和内核不同的情况下,华为如果想兼容所有的平台,可能所花费的人力,财力会更巨大。我们知道鸿蒙系…

为什么鸿蒙内核是安卓,鸿蒙系统发布,为什么有人说其为安卓换壳?

2021年4月,鸿蒙系统内测版正式面向消费者开放,而我由于在校读书也变没有时间去专门去进行鸿蒙系统的深度体验只是回来后简单的体验一下 首先我要说的是-鸿蒙它……不是安卓套壳!!!我之前在评论区经常看见有人说鸿蒙就是…

华为p10 鸿蒙,全面上线!华为鸿蒙新消息传来,这是要彻底替换安卓

自从手机出现后,手机操作系统就掌握在少数几个厂商手中,在功能机时代,诺基亚几乎掌控了塞班系统,而微则掌握Windows mobie系统。 苹果开启智能手机时代后,手机系统主要被苹果和谷歌掌控。其中,苹果的IOS系统…

鸿蒙OS到底是不是Android套皮?(不多说,看源码!)

人生就像一场旅行,不必在乎目的地。在乎的,是沿途的风景以及看风景的心情。 #正文 某人曾说「没有调查就没有发言权」 最近鸿蒙系统关注度好高,支持与反对、看好和看衰、「自主的全场景分布式系统」和「Android套壳」各执一词,吵…

鸿蒙会干掉安卓吗?刚刚 ,首款搭载华为鸿蒙OS终端正式亮相!

点击“开发者技术前线”,选择“星标?” 13:21 在看|星标|留言, 真爱 编辑:可可| 来源:华为,创业邦 8月9日,也就是昨天下午,华为鸿蒙OS终于揭开了面纱。 8月10日下午,在华为开发者大…

谷歌失算了,华为的鸿蒙系统在海外市场撕开了一大口子

近日媒体报道指出华为手机在北方某国的销量暴涨三倍,成为该国出货量增速第一的手机品牌,带动鸿蒙系统用户激增,这也是鸿蒙系统在海外市场首次取得突破,对谷歌的安卓系统造成了新一轮的挑战。 由于众所周知的原因,谷歌对…

鸿蒙系统拆包,我已经拿到华为鸿蒙升级包,正在拆包分析鸿蒙与安卓的关系

我已经拿到华为鸿蒙升级包,正在拆包进行分析 可以说华为鸿蒙用在手机上的操作系统与微内核没有任何关系,华为的微内核是用在其他地方的。 images里有这些文件 boot.img ramdisk.img recovery.img等等 拆包后整体的文件 首先看一下init.environ.rc文件的内…

手机升级鸿蒙OS后,以前的安卓APP还能使用吗?

近日,华为正式发布了HarmonyOS 2.0.0,这宣告手机版的鸿蒙操作系统正式到来,很多小伙伴关心手机升级鸿蒙操作系统后,以前的安卓APP还能使用吗? 今天我们了解一下鸿蒙生态下APP,日后会以怎样的形式存在。 …

鸿蒙到底是不是安卓?

原文:https://www.toutiao.com/i6970301348873044516/ 这几天我的4台手机都升级到了鸿蒙。Mate X2、Mate 40 Pro、Mate 40 Pro、P40 Pro。使用起来,其实我觉得和之前没什么明显变化。偶尔看到微博上有人说流畅了,反正我没感觉。流畅了吗&…

鸿蒙OS到底是不是Android套皮?(少bb,看源码!)

来源:21ic电子网,头条我的小号等,本文作者观点不代表本网观点某人曾说「没有调查就没有发言权」最近鸿蒙系统关注度好高,支持与反对、看好和看衰、「自主的全场景分布式系统」和「Android套壳」各执一词,吵的不可开交。…

鸿蒙OS到底是不是Android套皮?

本文转载自不正经程序员 某人曾说「没有调查就没有发言权」 最近鸿蒙系统关注度好高,支持与反对、看好和看衰、「自主的全场景分布式系统」和「Android套壳」各执一词,吵的不可开交。 作为十八流码农,本着了解行业动态、体验HarmonyOS开发流…