home..

Prompting - 更好地将语言模型应用到NLP任务 (高天宇)

将PLM用于下游任务: pre-train + fine-tune $\rightarrow$ prompt(提示信息) + demonstration(任务示例)

why prompt?

less samples 在标准的“pre-training和fine-tuning”范式中,预训练阶段和下游任务之间的gap可能很大:它们训练目标不同。对于下游任务,我们通常需要引入新的参数——例如,对于 BERT 大小的模型和二分类任务,需要额外的一组 1,024 x 2 的参数。而prompting使得下游任务可以采用与预训练目标相同的格式,并且不需要新的参数,如上图所示。对于分类任务,我们只需要设计一个template(“It was”)以及预期的text response(我们称之为label words,例如,图中的正标签词“great”和负标签词“terrible”)。通过缩小两个阶段之间的差距,在特定任务上部署预训练模型就变得容易多了,尤其是对于小样本(few-shot)的情况——当你只有十几个训练样本来完成一项新任务时,很难有效地fine-tune预训练模型和新的task-specific 的参数,但prompting使得这个过程变得顺畅很多。Scao 和 Rush (2021)的研究表明一个prompt 可能值 100 个常规数据点,说明prompts可以带来样本效率的巨大提升。

discrete prompts

人工prompt

从GPT-1/2开始,通过设计适当的prompt,激活下游任务表现,prompt engineering 影响很大。

auto prompt / prompt optimization

soft prompts

idea:只需在输入序列中放入一些随机向量(与词汇表中的特定word embedding无关)并进行调整,同时固定预训练模型的其他部分

在大模型和大样本情况效果较好

in-context learning

GPT-3 简单地将训练集中的一些随机样本与实际查询(query,在本示例中为“cheese ⇒”)连接起来,而且由于预训练模型已经学会了从上下文中捕获模式,并且Transformers 的 self-attention 使这些实例之间可以逐token进行比较,in-context learning的效果出奇地好。GPT-3 论文将其归为“元学习(meta-learning)”,认为在阅读大量无监督文本后,语言模型可以“培养广泛的技能和模式识别的能力”。作者认为在预训练期间“有时会在单个序列中嵌入重复的子任务”,类似于in-context learning的范式。后续工作进一步完善了使用demonstration的方式:Gao等人(2021)Liu 等人(2021)认为不应该随机抽取一些样本,采用和查询近似的demonstration可以显着提高性能;Lu等人(2021)表明,即使是demonstration的顺序也很重要,并提出了一种确定“最佳”顺序的方法。

虽然in-context learning只有在不能微调模型时才是“必要”的,并且当训练样例数量增加时很难泛化(因为模型的输入长度有限),研究如何更好地使用demonstration(即如何进一步压缩 LM 学到的“元知识”)以及哪些预训练目标和数据可以提高in-context 能力,可能会进一步帮助我们了解预训练模型的内部工作机制。

校准语言模型

prompting很赞,但它也会从预训练语料库带来bias。例如,在零样本情感分类设置中,给定“N/A”作为输入,GPT-3 倾向于预测为“positive”而不是“negative”,而本应该分配50/50的概率给这两个相反的标签(赵等人,2021 )。另一个问题是同一对象的不同表示(例如,“computer”和“PC”)可能会竞争概率质量,导致任务标签上的分布不理想(Holtzman 等,2021)。赵等人(2021)和Holtzman 等人(2021)给出的解决方案是校准(calibration):对带偏token进行补偿,把他们校准为无偏状态。

© 2023 huyi   •  Powered by Soopr   •  Theme  Moonwalk