编者按:自 GPT- 3 以来,大语言模型进入了新的训练范式,即“预训练模型 +Promp learning”。在这一新的范式下,大语言模型呈现出惊人的 zero-shot 和 few-shot 能力,应用较少的训练数据来适应新的工作模式。最近火爆出圈的 ChatGPT 是利用这一形式。
简略了解 Prompt learning,其外围就是以特定的模板,将上游工作的数据转成自然语言模式,充沛开掘预训练模型自身的能力,以适应不同的上游工作。
本期 IDP Inspiration,咱们将和大家一起深刻走进 Prompt learning 技术,理解其倒退停顿。
以下是译文,Enjoy!
作者 | Tianyu Gao, Princeton University
编译 | 岳扬
从 BERT(Devlin et al., 2019)[1]开始,在上游利用上用 task-specific heads 对预训练语言模型(LMs)进行微调曾经成为 NLP 的规范做法。然而,具备 175B 参数的 GPT- 3 模型(Brown et al., 2020)[2]为上游利用带来了应用 LMs 的新形式:GPT- 3 利用自然语言提醒词 (prompt)和工作演示(task demonstrations) 作为上下文(context),只应用大量的例子就能很好地解决各种工作,并且不须要更新底层模型中的参数。GPT- 3 的模型规模很大是其胜利的一个重要因素,而 提醒词 (prompts) 和 演示(demonstrations) 也给咱们提供了对于如何更好地应用语言模型的新见解。
所以什么是提醒词 (prompt)?
它是插入到输出示例中的一段文字,可能将原始工作 (original task) 表述为语言模型问题 (language modeling problem)。例如,如果咱们要对上面这条电影评论“不值得看(No reason to watch)”进行分类,咱们能够将 prompt“It was”插入到句子中,失去“No reason to watch. It was ____”。很天然的,语言模型产生“terrible(可怕)”的概率比“great(平凡)”的概率高。本文会介绍大型语言模型中 prompt 的最新进展。
在 GPT- 3 公布后,呈现了许多与 prompt 无关的论文,其中许多论文都探讨了基于提醒词的学习 (prompt-based learning) 用于中等规模的预训练模型,如 BERT(BERT-base 有 110M 参数,比最大的 GPT- 3 小 1000 倍)。
在这篇博文中,我将概述最近的 prompt-based 办法和我的认识。
Why Prompts?
以情感分类工作为例,对预训练、规范的微调和基于提醒的微调进行了阐明(from Gao et al., 2021)
在传统的“预训练和微调(fine-tuning)”模式中,预训练阶段和上游工作之间存在微小差距。
首先是指标不同。对于上游工作,通常须要引入新的参数,例如对于一个 BERT 大型模型和一个二元分类工作,须要额定的 1,024 x 2 个参数。
另一方面,通过应用 prompt,上游工作有可能采纳与预训练指标雷同的格局(如上图所示),而不须要引入新的参数。对于分类工作,只须要设计一个模板(例如“It was”)和预期的文本(也称为标签词,例如图中的侧面标签为“great”,负面标签为“terrible”)。放大两个阶段之间的差距能够使在特定工作上部署预训练模型变得更加容易,特地是在只有大量新工作训练案例的状况下,无效地微调预训练模型和新工作的特定参数是很艰难的。Scao 和 Rush(2021)[3]的钻研表明,一个 prompt 可能抵得上 100 个惯例数据点,这表明 prompt 能够带来采样效率的微小晋升。
在对 prompt 的钻研中,有两种不同的范式,它们有着不同的观点。受 PET 论文(Schick and Schütze,2021a,b)[4]的启发,基于 prompt 的微调(关键点是依然须要进一步优化参数)被认为是对小型语言模型(这里说的小型是指数百万而不是数十亿的参数,如 BERT 或 RoBERTa)实现更好的小样本学习的路径;对于超大型模型,如 175B 参数的 GPT- 3 和 11B 参数的 T5(Raffel et al., 2020)[5],微调它们是艰难的(这只是我的猜想,我素来没有机会这样做),而且老本很高,因而以人们冀望通过不同的 prompt(无论是离散提醒 /discrete prompt)还是软提醒 /soft)来固定它们的参数并将它们利用于不同的工作。
离散提醒词 Discrete prompts
应用 prompt 进行预训练模型的钻研最早能够追溯到 GPT-1/2(Radford et al., 2018, 2019)[6]。这些钻研表明,通过设计适当的 prompt,语言模型(LMs)能够在情感分类和浏览了解工作中实现和零样本学习一样的体现。
随后,Petroni 等人(2019)[7];Davison 等人(2019)[8];Jiang 等人(2020)[9];Talmor 等人(2020)[10]摸索了如何利用 prompt 从 LMs 中开掘事实和常识性常识(factual and commonsense knowledge)。
在 GPT- 3 采纳 prompt 和固定参数之后,基于 prompt 的办法被引入到较小的 LMs 中(Schick 和 Schütze,2021a,b[11];咱们的工作 LM-BFF,Gao 等人,2021[12])。
这些办法与 GPT- 3 的不同之处在于,它们采纳了双向掩码(bidirectional masked)LMs,而不是单向(unidirectional)LMs,并对残缺的模型进行微调。最近的几篇论文也沿用了这一思路,调整了工作指标(Tam 等人,2021[13])或以对立的模式制订工作,如问题答复(Zhong 等人,2021[14])或文本蕴涵(Wang 等人,2021[15])。
在所有这些模型中,prompt 都是自然语言,由离散的词汇标记组成。综合钻研不同变体的后果,Logan 等人(2021)[16]表明,当采纳基于 prompt 的微调办法(而不是解冻所有参数)时,模型能够取得比规范微调更好的性能(但好的提醒依然会产生显著的差别)。而只调整局部模型参数——例如,采纳最近提出的 bias tuning method(Ben-Zaken 等人,2021)在 few-shot setting 中与 full model fine-tuning 相当。
大多数工作都须要人工设计的 prompt,提醒工程是不简略的,因为一个小的扰动就会极大地影响模型的性能,而创立一个完满的 prompt 须要理解 LMs 的外部工作原理和一直试错。
除了人工设计的 prompt,人们还能够主动生成或优化 prompt。Guo 等人在 2021 年展现了一种 soft Q-learning 办法,在生成 prompt 时成果很好。
AutoPrompt(Shin et al., 2020)[17]提议采取基于梯度的搜寻(该想法来自 Wallace et al., 2019[18],旨在搜寻一个通用的对抗性触发器,使模型产生特定的预测),为特定工作找出最佳 prompt。AutoPrompt 的设置是不同的,因为它固定了模型:它假如所有的货色都被编码在预训练的模型中,咱们须要的只是”prompt”进去;另一个起因是,AutoPrompt 的指标也是 LAMA(LAnguage Model Analysis)(Petroni et al., 2019[19]),这是一种常识探测工作,它被要求不涉及模型参数。
上面是一个用于情感分类的 AutoPrompt 的例子:
An illustration of AutoPrompt (Shin et al., 2020)
搜寻到的 templates 大大改善了 LAMA 的性能;它们在应用残缺数据集的情感分类和自然语言推理工作中也获得了非常惊人的准确性(不过依然低于微调范本)。查看搜寻到的 discrete(但不再是自然语言)prompt,能够找到对一些“trigger tokens“的解释,但很多只是非凡状况。
目前还不分明,AutoPrompt 是否真的能帮忙 LMs 回忆起外面的”knowledge“,或者它只是优化的另一种形式,在预训练模型中从“彩票”中挑选出“中奖彩票”(对于彩票假说,见 Frankle 和 Carbin,2019[20])。
软提醒 / 间断提醒 Soft prompts
咱们真的须要在 prompt 中应用离散单词吗?
既然 AutoPrompt 曾经做了基于梯度的提醒搜寻,为什么不从 discrete tokens 转向间断的“soft prompts”?例如,Zhong 等人(2021)[21]和 Qin、Eisner(2021)[22]提出将 soft prompts 用于常识探测工作(LAMA 等),并获得了比 discrete prompts 更大的晋升。这个想法非常简单:只是在输出序列中放入一些随机向量(不与词汇中的特定词嵌入相分割),并对其进行调整,而预训练模型的其余局部则固定不变。
还有一些人是将 soft prompts 部署在常识探测工作之外。Li 和 Liang(2021)[23]将这一想法扩大到了生成式工作(generation tasks),并表明它的性能晋升与进行微调相当,然而只调整了 0.1% 的参数。Han 等人(2021)[24]将 soft prompts 与 manual templates 联合起来,在关系抽取(关系抽取)方面获得了极佳的性能。
至今为止,我所看到的对于 soft prompts 最全面的钻研来自于 Lester 等人(2021)[25]:他们在 T5 上利用了 soft prompts,并表明通过调整 prompt(只占总参数的一小部分),T5 能够在 NLU(自然语言了解)工作中获得与微调整个模型雷同的性能。我很喜爱这篇论文,因为它进行了充沛的 ablation study(融化试验),并展现了 soft prompts 的几个要害的教训抉择,包含从词嵌入初始化,足够数量的 soft prompt tokens,以及一个 aligned pre-training objective。除了参数效率,Lester 等人(2021)[25]还证实了 soft prompts 提供了比全模型微调更好的可传递性。
让咱们回顾一下 soft prompts:它的成果十分好,当你不能(探测工作)或不愿(模型太大,或你心愿有一个实用于所有工作的通用模型)触摸模型的参数时,它特地无效。
调整 soft prompts 与基于 prompt 的微调有很大不同,后者容许人们优化残缺的模型,更重要的是,比规范的微调更适宜解决小样本案例。
与人工设计的不同,AutoPrompt 在某些状况下不能很好地工作,据我所知,没有任何 soft prompts 论文认为所有状况下它都能获得极好的性能(只管 Liu 等人(2021)[26]通过从 discrete manual prompts 开始,对整个模型进行微调,极其状况下也呈现了令人满意的后果)。
另外,正如 Lester 等人(2021)[25]所证实的,在应用超过 100 亿个参数的预训练模型之前,soft prompts 从未在 SuperGLUE 上实现与全微调雷同的性能。我认为将来值得钻研的是如何进一步推动 soft prompts 在极其状况和较小的语言模型中更无效地工作。
GPT-3 (blue) vs full model fine-tuning (orange) vs soft-prompt tuning (green). Credit to Lester et al. (2021).
上下文学习 In-context learning:新型的元学习
在本文的结尾,我把 GPT- 3 的胜利归功于两个模型设计:prompts 和 demonstrations(或 in-context learning),但在这一节之前我还没有谈到 in-context learning。因为 GPT- 3 的参数没有在上游工作中进行微调,它必须以另一种形式——通过 context(上下文)”学习”新工作。
GPT-3 “learns” about new tasks through demonstrations in the context (Brown et al., 2020).
如上图所示,GPT- 3 只是将一些随机训练样本与理论查问(本例中为”cheese⇒“)串联起来,因为预训练的模型曾经学会了从上下文中捕获 patterns,而且 Transformer 的自注意力机制容许在这些实例中逐个进 token 比拟,因而上下文中的学习效果出奇地好。GPT- 3 论文称其为”元学习 meta-learning”,认为在浏览大量无监督的文本后,语言模型能够“训练出多样的技能和 patterns 辨认能力“。
作者假如在预训练期间有时会有反复的子工作嵌入到一个序列中,相似于上下文学习 (in-context learning) 的范式。后续的工作进一步欠缺了应用 demonstrations 的形式。Gao et al., 2021[12]; Liu et al. (2021)[27] 说,与其随机抽取一些例子,不如采取在与查问类似的语境中 demonstrations,能够大幅提高性能;Lu et al. (2021) 表明,demonstrations 的程序也很重要,并提出了一种确定”最佳”程序的办法。
尽管 in-context learning 只有在无奈调整模型时才是必要的,并且当训练实例的数量减少时很难进行泛化(因为模型的输出长度是无限的),但钻研如何更好地应用 demonstrations(即如何进一摄取 LMs 学到的”meta-knowledge”)以及哪些预训练指标和数据能够晋升 in-context 能力,可能会进一步帮忙咱们理解预训练 LMs 的外部运行原理。
校准语言模型 Calibrating language models
Prompting 是十分无效的,但它也可能会引入来自预训练语料的偏见。例如,在零样本情感分类设置中,如果输出为“N/A”,GPT- 3 可能会谬误地将其认为是“侧面”而不是“负面”,而实际上这两个标签应该被调配相等的概率(Zhao 等人,2021)[29]。
另外,同一个物体的不同词语形容(如“computer”和“PC”)可能会相互竞争概率调配,导致工作标签散布不现实(Holtzman 等人,2021)[30]。为了解决这些问题,Zhao 等人(2021)[29]和 Holtzman 等人(2021)[30]提出了校准 (Calibrating) 的解决方案,即通过为有偏差的 token 增加弥补来纠正偏差,使其变得无偏差。
什么是正确的小样本设置(few-shot setting)?
对于小样本设置(few-shot setting)自身有很多探讨:在小数据集上进行微调会呈现不稳固的状况(Dodge et al., 2020[31]; Zhang et al., 2021[32]),不同的数据宰割可能会对性能产生很大的影响。
以前的工作中采取了各种设置,但为了思考到 few-shot 的微小差别,须要对小样本数据的数据宰割进行屡次采样和应用不同 seeds 进行屡次试验,以进行严格的小样本评估(这就是咱们以前工作中的做法)。
然而有一个常常被忽视的问题是,在只有几张照片的状况下,咱们不能假如一个大的 development set。为了解决这个问题,Schick 和 Schütze(2021)[33]没有采纳 development set,而是采纳固定的超参数(在这样一个充斥变动的环境中,这相似于“在光明中射击”,可能会产生不直观的后果),而在咱们的工作中,咱们对一个与训练集雷同大小的小样本 development set 进行采样,所以咱们能够在放弃小样本的同时调整超参数。
Perez 等人(2021 年)[34]认为,先前的工作高估了 LMs 的小样本性能,因为他们或多或少地采取了许多已有的例子来进行超参数调整、模型开发或 prompt 设计,他们提倡“true few-shot learning”设置。这与咱们的观点是统一的,即你只能假如小样本的 dev 案例。
然而,在事实世界中,咱们很难实现”真正的小样本学习“,因为你须要足够多的例子来验证你的模型至多在一个或两个工作上是无效的。只有设计的模型可能很好地泛化到其余的小样本工作,它就是一个好的小样本模型。在咱们的工作中,咱们用 SST- 2 和 SNLI 进行试验,表明咱们的办法能够很好地推广到其余 13 种 NLU 工作。(对于这一部分技术创新感兴趣的小伙伴,能够关注 ACL’21 paper, “Making Pre-trained Language Models Better Few-shot Learners”)。
参考资料
https://arxiv.org/abs/2105.11447
https://arxiv.org/abs/2005.14165
https://arxiv.org/abs/2103.08493
https://arxiv.org/abs/2001.07676
https://arxiv.org/abs/1910.10683
https://cdn.openai.com/resear…
https://arxiv.org/abs/1909.01066
https://arxiv.org/abs/1909.00505
https://arxiv.org/abs/1911.12543
https://arxiv.org/abs/1912.13283
https://arxiv.org/abs/2001.07676
https://arxiv.org/abs/2012.15723
https://arxiv.org/abs/2103.11955
https://arxiv.org/abs/2104.04670
https://arxiv.org/abs/2104.14690
https://arxiv.org/pdf/1909.04…
https://arxiv.org/abs/2010.15980
https://arxiv.org/abs/1908.07125
https://arxiv.org/abs/1909.01066
https://arxiv.org/abs/1803.03635
https://arxiv.org/abs/2104.05240
https://arxiv.org/abs/2104.06599
https://arxiv.org/abs/2101.00190
https://arxiv.org/abs/2105.11259
https://arxiv.org/abs/2104.08691
https://arxiv.org/abs/2103.10385
https://arxiv.org/abs/2101.06804
https://arxiv.org/abs/2104.08786
https://arxiv.org/abs/2102.09690
https://arxiv.org/abs/2104.08315
https://arxiv.org/abs/2002.06305
https://arxiv.org/abs/2006.05987
https://arxiv.org/abs/2009.07118
https://arxiv.org/abs/2105.11447
本文经原作者受权,由 Baihai IDP 编译。如需转载译文,请分割获取受权。(原文链接:https://thegradient.pub/promp…)