借着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系列1. Tunning-Free Prompt:GPT3 & LAMA & AutoPrompt

Prompt即提示学习,是继预练习+微调范式后人心所向的第四范式。在预练习+微调的范式中咱们调整预练习模型来匹配下流使命数据,本质是对预练习学到的众多信息进行重新排列和挑选。而Prompt是经过引入“提示信息”,让模型回忆起预练习中学过的言语知识,也便是调整下流数据来适配预练习模型,进而把所有NLP使命都一致成LM使命。

举几个比如,以下[x]为prompt提示词,[z]为模型猜测

  1. 分类使命: 比较心情分类对应的多分类0~N的输出,Prompt会输出对应代表心情的token

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

  1. 抽取使命

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

  1. 生成使命

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

看着十分玄妙!但其实部分原理就来自于于超大的预练习数据中包含的丰厚文本知识。例如English2French的翻译使命,在预练习文本中会自然呈现一些英法的对应文本如下。而提示词的加入能够理解为测验还原模型在以下场景中的上下文(Attention)

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

那和预练习+微调的范式比较,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!

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

GPT3的模型结构连续GPT系列,但测试了不同模型参数量级的8个模型在不同下流使命上的作用,从125M到175B,模型作用在zero/one/few-shot的设定下都有稳步提高。在TriviaQA等使命上175B的GPT3乃至逾越微调模型拿到了SOTA,算是预练习模型逾越微调模型的第一次。但在NLI(判别两个语句是相似,对立,中性),WiC(判别一个单词是否在两个语句中含义相同)两个使命上GPT3的体现十分差,看起来似乎对触及两个语句间逻辑揣度的使命并不拿手。或许由于相似两个文本的逻辑揣度在预练习文本中未呈现过?

针对GPT3变态的模型大小,咱不聊技能垄断,我更猎奇的是增长的参数究竟是怎么提高模型才能?是更多的参数能够记忆更多的知识?仍是更大的向量空间能够让模型学到愈加线性可分的空间表征,使得下流使命对信息的解码愈加简略,所以在few-shot场景有更好的体现?还没看到较谨慎的证明,有知道的盆友求答疑解惑

In-context learning

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

论文在GPT2已有的zero-shot的根底上,提出了In-Context learning的概念,也称类比学习,上下文学习或许语境学习。有one-shot和few-shot两种计划,对应不同的增强Prompt的构建方法。跟着模型参数量级的提高,few-shot,one-shot带来的作用提高愈加明显。以英翻法使命为例

  1. zero-shot: Prompt为使命描绘

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

  1. one-shot: Prompt Augmentation,使命描绘+一个带答案的样本

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

  1. few-shot: Prompt Augmentation,使命描绘+多个带答案的样本

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

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.com/facebookres…
  • 使命:NLU(实事抽取)
  • prompt: cloze + Hand Craft Prompt
  • 中心:不经过微调的Bert在知识抽取和敞开与问答上作用惊人的好,能够比肩有监督的KG基准

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

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如下

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

  1. ConceptNet

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

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

  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.com/ucinlp/auto…
  • 使命:NLU(NLI,实事抽取,联系抽取)
  • prompt: Discrete + Gradient Search Prompt

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

AutoPrompt是在LAMA上的改进,针对LAMA需求人工结构Prompt的问题,提出了一种根据梯度主动生成提示词的计划。论文针对分类使命,作者规划了通用的prompt模板如下,在原始文本输入的根底上,拼接多个触发词[T],最后一个MASK token为模型猜测[P]。

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

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

Gradient-Based Prompt Search

LAMA的一个中心问题便是人工结构Prompt的本钱和作用的不确定性,AutoPrompt借鉴了文本对抗AdvTrigger的梯度查找计划,给定样本和模型能够主动查找使命相关触发词。

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

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

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

p(y∣xprompt)=∑wp([MASK]=w∣xprompt)p(y|x_{prompt}) = \sum_w p([MASK]=w|x_{prompt})

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

Vcand=topkw∈V[winT▽logp(y∣xprompt)]V_{cand} = topk_{w \in V}[w_{in}^T \bigtriangledown log p(y|x_{prompt})]

所以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+)\begin{aligned} h = Transformer([MASK]) \\ p(y|h) \propto exp(h\odot y+\beta) \end{aligned}

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

最后咱们看下AutoPrompt查找得到的触发词和答案长啥样,能够说是完全出人意料,毫无逻辑可言,触发词和答案候选词都很离谱哈哈哈

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

至于作用AutoPrompt逾越LAMA嘛,自身AutoPrompt便是运用下流使命样本查找的Prompt和label,不好才奇怪不是~~~


Reference

  1. 苏神的必须要GPT-3吗?不,BERT的MLM模型也能小样本学习
  2. MQPN: The Natural Language Decathlon: Multitask Learning as Question Answering
  3. MT-DNN:Multi-Task Deep Neural Networks for Natural Language Understanding
  4. Why can GPT learn in-context? Language Model Secretly Perform Gradient Descent as Meta-Optimizers
  5. How does in-context learning work? A framework for understanding the differences from traditional supervised learning
  6. Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?
  7. Universal Adversarial Triggers for Attacking and Analyzing NLP
  8. In-Context-Learning_PaperList
  9. Emerging Ability of Large Language Models