论文:
《Calibrate Before Use: Improving Few-Shot Performance of Language Models》
few-shot learning
(用有限的样本来学习任务的能力)是智力的一个重要方面。最近的工作表明,大型神经语言模型可以在不进行微调的情况下进行 few-shot learning
。具体来说,当被提供以自然语言 prompt
描述的几个样本时,GPT-3
可以执行许多任务。例如,为了进行情感分析,人们可以将 GPT-3
以一个 prompt
为条件,如:
Input: Subpar acting. Sentiment: Negative
Input: Beautiful film. Sentiment: Positive
Input: Amazing. Sentiment:
其中前两行对应两个prompted examples
,最后一行是一个测试样本。为了进行预测,该模型预测的后续 token
更有可能是单词 "Positive"
或 "Negative"
。
这种 few-shot "in-context" learning
的方式很有趣,因为它表明模型可以在没有参数更新的情况下学习。而且,更重要的是,与现在标准的微调方法相比,它有许多实际的优势:
首先,它允许从业者 "快速制作" NLP
模型的原型:改变 prompt
会立即导致一个新的模型。
其次,它为机器学习模型提供了一个百分之百自然语言的接口,这使得用户(甚至那些不是技术专家的人)可以创建 NLP
系统。
最后,由于 in-context learning
在每个任务中都重复使用相同的模型,它在为许多不同的任务在 serving
时减少了内存需求和系统复杂性。
然而,尽管有这些承诺,我们表明,GPT-3
的准确率在不同的 prompts
中可能非常不稳定的。一个 prompt
包含三个部分:prompt
格式、一组prompted examples
、以及这些样本的排列组合(ordering
)。我们表明,对这些因素的不同选择会导致高度不同的准确率。例如,在情感分析 prompt
中改变prompted examples
的排列方式会使准确率从接近随机(54%
)变为接近 SOTA
(93%
)。这种不稳定性意味着 GPT-3
的用户(这些用户通常是手动设计 prompts
),不能期望持续获得良好的准确率。
我们接下来分析一下造成这种不稳定性的原因。我们确定了语言模型的三个缺陷,这些缺陷导致它们在 few-shot learning
期间偏向于某些答案。具体而言,它们受到 majority label bias
、recency bias
、以及 common token bias
的影响。
majority label bias
和 recency bias
导致模型会预测在 prompt
中经常出现、或接近 prompt
末尾的 training answer
。例如,一个以 negative training example
结束的 prompt
可能会偏向于 negative class
。
另一方面,common token bias
导致模型更倾向于在模型的预训练数据中经常出现的答案,例如,它更倾向于 "United States"
而不是 "Saint Lucia"
。这对于目标任务来说可能是次优的。
我们发现,这些 bias
通常会导致模型的输出分布发生偏移。因此,我们可以通过 "校准" 输出分布来抵消这些 bias
。具体来说,我们通过输入一个content-free
的 dummy test input
来估计模型对某些答案的 bias
。例如,在上面的 prompt
中,如果我们用 "N/A"
字符串替换 "Amazing."
,模型就会预测出 62% Positive
。然后我们拟合 calibration parameters
,使 content-free input
对每个答案都有统一的分数。这个 contextual calibration
程序提供了一个良好的 calibration parameters setting
,而不需要额外的训练数据。
将噪音输入的
prediction
分布作为校正参数,对test input
的prediction
分布进行校正。
我们在一系列的任务上测试了 contextual calibration
的有效性。在不同的 prompt format
和样本的选择中,contextual calibration
一致地提高了 GPT-3
和 GPT-2
的准确率(绝对提升高达 30.0%
)(如下图所示)。它还使准确率在不同的 prompt
中更加稳定,从而减轻了对 prompt engineering
的需求。总的来说,contextual calibration
是一种简单的方法,它使语言模型成为更好的 few-shot learners
:它使终端用户能够以相当少的努力获得更高的准确率。
相关工作:
Few-shot Learning with Language Model
:最近的工作使用语言模型来解决 NLP
任务,例如,story cloze prediction
、knowledge base completion
、和 Winograd schema
。
GPT-2
和 GPT-3
表明,大型语言模型可以通过 in-context learning
从而以 few-shot
的方式解决无数的任务。我们的论文对他们的 setting
提供了一个简单的修改从而提高性能。要求语言模型补全 natural language prompt
也作为一种方法从而 "probe" language model
,例如,分析事实性的知识或常识性知识。我们的结果表明,这些 probing
方法可能低估了模型的准确率,我们建议未来的工作利用 contextual calibration
的优势。
NLP
中 Few-shot Learning
的波动性:最近的工作表明,当使用 masked language model
(如 BERT
)进行 zero-shot learning
时,prompt
的格式会影响准确率。独立且同时进行的工作也表明,当在 few examples
上微调 masked language model
时,prompted examples
的选择会影响结果。我们表明,类似的不稳定性发生在 left-to-right language model
的 in-context learning
(即,没有微调)中。我们还显示了一个与 example ordering
有关的令人惊讶的不稳定性。此外,与过去的工作不同,我们分析了这些不稳定性发生的原因,并利用这一分析的见解来缓解这些问题。
语言模型的失败:当语言模型被用于 in-context learning
时,我们发现了失败的情况(例如,recency bias
)。过去的工作发现,当语言模型被用于文本生成时也有类似的失败。例如,神经语言模型经常重复自己(《The curious case of neural text degeneration》
)、遭受过度自信、遭受 recency bias
、喜欢通用的 response
而不是稀有文本。过去的工作通过修改模型的输出概率或生成方案来缓解这些退化,例如,显式地地防止重复(《A deep reinforced model for abstractive summarization》
)、或使用采样而不是贪婪解码(《The curious case of neural text degeneration》
)。
神经自回归语言模型将 tokens
的一个序列作为输入,并输出 next token
的概率分布。大型神经语言模型可以使用 in-context learning
以 zero-shot/few-shot
的方式执行任务(GPT-2, GPT-3
)。为此,一个自然语言的 prompt
被馈入模型。这个 prompt
包含三个部分:format
格式、一组prompted examples
、prompted examples
的排列顺序(ordering
)。
Prompt Format
:prompt format
是一个模板,由占位符(针对prompted examples
和测试样本)和任务的自然语言描述(这个描述也可能不存在)组成。例如,前面章节中的 prompt format
是一个具有以下风格的模板: "Input:" input "Sentiment:" label
。还有许多其他的格式,例如,我们可以把任务设定为问答任务。
Prompt Training Examples
:prompted examples
是用来教导语言模型如何解决手头的任务。前面章节中的 prompt
由两个prompted examples
组成;我们把这称为 "two-shot" learning
。我们也考虑 "zero-shot" learning
,即不存在任何prompted examples
。
Training Example Permutation
:当prompted examples
被使用时,prompted examples
之间有一个特定的排列方式,例如,在前面章节的 prompt
中,"Subpar acting"
的样本排在第一位。这种排列方式很重要,因为神经语言模型是以从左到右的方式更新其 hidden states
。
为了对一个输入进行预测,我们把它放入 test placeholder
中,并从语言模型中生成。例如,请看前面章节的 prompt
中的 "Amazing."
测试样本。
对于 generation
任务,我们从语言模型中贪婪地生成,直到它产生一个换行符。
对于分类任务,每个类别的概率是由分配给该类别的 label name
的概率给出的,例如,情感分类中的 "Negative"
和 "Positive"
。
数据集和 prompt format
:我们将数据集用于三个任务:文本分类、事实检索、信息提取。除非另有说明,我们对每个数据集都使用固定的 prompt format
,这些格式如下表所示。
文本分类数据集:用于情感分析的 SST-2
、用于问题分类的 TREC
、用于 textual entailment
的 CB
、来自 SuperGLUE
的 RTE
、用于话题分类的 AGNews
和 DBPedia
。
事实检索数据集:LAMA
数据集。该数据集由 knowledge base
三元组 (subject, relation, object)
组成,这些三元组被放置在带有缺失 object
的模板中,例如 "Obama was born in"
。我们使用这些模板作为我们的 prompt
,并删除 missing answer
不在模板末端的样本( left-to-right
的语言模型只能解决 missing answer
在模版末尾的问题)。答案总是 single token
,我们报告了所有三元组的平均准确率。
信息提取数据集:两个 slot filling
数据集,即 ATIS
、MIT Movies trivia10k13
。我们为每个数据集使用两个随机槽,ATIS
使用 airline
和出发日期、而 MIT Movies
使用导演姓名和电影类型。两个数据集的答案都是输入文本的 span
,例如,ATIS airline task
是在给出 "list a flight on american airlines from toronto to san diego"
的句子时预测 "american airlines"
。我们使用模型所生成的输出和 ground-truth span
之间的 Exact Match
作为我们的评估指标。
模型细节:我们在三种规模的 GPT-3
( 2.7B/13B/175B
参数)以及 GPT-2
( 1.5B
参数)上运行我们的实验。我们使用 OpenAI
的 API
访问 GPT-3
。我们发布代码来复制我们的实验。
这里研究 GPT-3
的准确率如何随着我们对 prompt
的各个方面(prompted examples
、排列组合、格式)的改变而改变。我们专注于数据集的一个子集,以简化我们的分析。在后续章节中,我们表明我们的发现在我们研究的所有数据集中都是成立的。
GPT-3
的准确率在很大程度上取决于prompted examples
选择和prompted examples
排列组合。具体来说,我们使用一个固定的 prompt format
并选择不同的随机的prompted examples
集合。对于每一组prompted examples
,我们评估所有可能的排列组合的准确率。
下图显示了 SST-2
(4-shot, GPT-3 2.7B
)的结果。令人惊讶的是,改变排列组合可能与选择何种prompted examples
一样重要,甚至更重要。例如,改变prompted examples
的排列组合可以使准确率从接近机会( 54.3%
)上升到接近 SOTA
(93.4%
)。关于对排列组合的敏感性的定性的示例,参考 Table 2
。这种对样本顺序的高度重要性与标准机器学习形成了鲜明的对比,在标准机器学习中,训练期间的样本顺序通常是不太重要的。
这种方差在更多的数据和更大的模型中持续存在:在 prompt
中添加更多的prompted examples
并不一定能减少准确率的方差。我们在下图中对三个不同的数据集扫描了不同数量的prompted examples
(红色曲线)。即使我们使用 16
个prompted examples
,方差仍然很高。此外,增加更多的prompted examples
有时会伤害准确率(例如,DBPedia
的 0-shot
到 1-shot
的平均准确率从 36.0%
下降到 25.9%
)。在使用较大的模型时,准确率的方差也会保持很高。
GPT-3
的准确率高度依赖于 prompt format
:接下来我们保持固定的prompted examples
和固定的排列组合,但改变 prompt format
。我们专注于 SST-2
,并手动设计了另外 14
种 prompt format
。这些格式包括 question-answer
模板、对话式模板、类似网页的 prompts
、以及 label names
的变化(所有格式如 Table 7
所示)。下图显示了其中 10
种格式的准确率。我们发现,有些格式平均来说比其他格式要好。然而,所有的格式在不同的训练集中仍然存在着高方差。
接下来,我们分析了为什么 GPT-3
的准确率在不同的prompted examples
、排列组合、以及 prompt format
中会有所不同。具体而言,我们表明,方差的产生是因为语言模型偏向于输出以下答案:
(1)
:在 prompt format
中频繁出现的答案(majority label bias
)。
(2)
:在 prompt
尾部出现的答案(recency bias
)。
(3)
:在预训练数据中常见的答案(common token bias
)。
Majority Label Bias
:我们发现 GPT-3
偏向于 prompt
中经常出现的答案。一个常见的情况是,当一个 text classification prompt
存在类别不平衡时,例如,在情感分类样本中更多的 Positive
样本。这表现在下图的 "unbalanced"
区域:当一个类别更高频时,GPT-3 2.7B
严重偏向于预测该类别。由于 SST-2
情感分类数据集是平衡的,这种 bias
会导致很大的准确率下降。 majority label bias
也解释了为什么我们经常观察到从 0-shot
到 1-shot
的准确率下降:我们发现下降的原因是模型经常重复这个 one training example
的类别。
majority label bias
也发生在 generation
任务中。在使用 GPT-3 2.7B
的 4-shot LAMA
的验证集上,50.2%
的模型预测是四个训练答案之一的重复(ground truth
的重复率只有 24.7%
)。总的来说,majority label bias
有助于解释为什么对prompted examples
的不同选择会严重影响 GPT-3
的准确率:它改变了 model prediction
的分布。
下图的含义:
4-shot SST-2
中,选择不同的class
组合导致不同的positive prediction
概率(纵轴)。
Recency Bias
:模型的 majority label bias
因其 recency bias
而加剧:倾向于重复那些出现在prompt
尾部的答案。Figure 4
的 "balanced"
区域表明了这一点。例如,当两个Negative
样本出现在最后时(即,"PPNN"
),该模型将严重倾向于 Negative
类别。此外,recency bias
可以超过 majority label bias
,例如,"PPPN"
训练集导致近 90%
的预测是 Negative
的,尽管 prompted examples
是 Positive
的。
recency bias
也会影响 generation
任务。对于 4-shot LAMA
,更接近 prompt
尾部的答案更有可能被模型重复。具体来说,模型对第一个、第二个、第三个和第四个prompted examples
的答案分别 "过度预测"了 8.5%
、8.3%
、14.3%
和 16.1%
。总的来说,recency bias
有助于解释为什么prompted examples
的排列顺序很重要:样本的排序严重影响了 model prediction
的分布。
Common Token Bias
:最后,我们发现 GPT-3
偏向于输出其预训练分布中常见的 tokens
,这对于下游任务的答案分布来说可能是次优的。这种情况的一个简单案例发生在 LAMA
事实检索数据集上,其中模型经常预测常见的实体(如 "America"
),而 ground-truth answer
却是一个罕见的实体。
在文本分类中,出现了一个更细微的 common token bias
的案例。回顾一下,该模型是通过生成与每个类别相关的 label name
来进行预测的。因为某些 label name
称在预训练数据中出现的频率较高,所以模型会对预测某些类别有固有的 bias
。例如,在DBPedia
(一个平衡的14-way
主题分类数据集)上,GPT-3
预测 "book"
类别的频率比 "artist"
类别高 11
倍。事实上,DBPedia label name
的频率与 GPT-3
预测其类别的概率之间存在适度的相关性(common token bias
有助于解释为什么 label names
的选择是重要的,以及为什么模型在罕见的答案上陷入困境。
bias
对模型预测的影响:我们发现,上述三种 bias
的最终结果通常是模型输出分布的 simple shift
。例如,下图直观地显示了SST-2 sentiment prompt
的这种偏移。下图中使用的 prompt
和模型的固有 bias
导致模型对于 Positive
类别经常预测出高的信心。由于默认的 50%
阈值被用来进行预测,这导致了频繁的假阳性(false positive
)。重要的是,请注意,如果我们能够最佳地设置分类阈值(在这个案例中,94%
)。
到目前为止,我们已经表明,由于 prompt bias
和模型的固有 bias
,GPT-3
偏向于某些答案。这里,我们希望通过 "校准" 模型的输出概率来纠正这一点。调整输出概率的常见技术是应用仿射变换:
其中:
对于分类任务,label name
相关联的概率的集合,重新归一化为 1.0
。
对于生成任务,first token
的在整个候选集合上的概率集合。
注意,这里是
generation
的first token
上进行调整。
在本文中,我们限制矩阵 vector scaling
,从而防止参数在 size
上(对于生成任务,这个 size
大约是 50k
)呈二次方的增长。
在 zero-shot/few-shot setting
下,主要挑战是我们没有数据来学习 data-free
程序来推断这些参数的一个 good setting
。关键的想法是,模型对某些答案的 bias
可以通过输入一个 content-free input
来估计,比如 字符串 "N/A"
。例如,考虑 two-shot prompt
:
xxxxxxxxxx
Input: Subpar acting. Sentiment: Negative
Input: Beautiful film. Sentiment: Positive
Input: N/A Sentiment:
其中 "N/A"
作为 test input
。理想情况下,GPT-3
会对这个测试输入进行评分,即 50%
为 Positive
、50%
为 Negative
。然而,模型的 bias
导致模型把这个输入打分为 61.8%
的 Positive
。请注意,这个错误是 contextual
的:对prompted examples
、排列组合、prompt
格式的不同选择将导致对 content-free input
的不同预测。
我们可以通过设置 content-free input
的 class scores
统一。我们首先得到 content-free input
的 test prediction
,我们计算 argmax
。
为什么选择这种
?现在假设 test input
就是content-free input
,那么,为单位矩阵。这意味着将 content-free input
调整为均匀分布的输出。
实现细节:这个 contextual calibration
程序增加了微不足道的计算开销,只需几行代码就能实现(计算和保存 content-free input
,存在许多好的选择,包括 "N/A"
字符串、空字符串、以及一些杂乱的 tokens
。在我们所有的实验中,我们对三种 content-free
的概率进行平均:"N/A"
、"[MASK]"
、以及空字符串。我们还可以以一种 task-specific
的方式制作 content-free input
。我们对 LAMA
进行了探索,我们用 content-free input
来代替 subject
,例如,我们用 "N/A was born in"
作为输入。
Contextual Calibration
的结果:在这里,我们评估了 contextual calibration
在我们所有的数据集和语言模型中的有效性。我们首先使用一个固定的 prompt format
,并选择prompted examples
的五个不同的随机的集合,将它们以任意的顺序放在 prompt
中。我们没有人为地平衡分类任务中prompted examples
的类别比例。我们在基线(无calibration
的标准解码)和 contextual calibration
中使用相同的prompted examples
集合。我们使用 0-8
个样本的 labeling budget
,因为使用超过 8- shot
会导致查询 OpenAI API
的成本变得过于昂贵。
结果如下表所示。Figure 1
对于一部分任务绘制了下表中的数据。
提高了平均准确率、以及 worst-case
准确率:contextual calibration
极大地提高了 GPT-3
的平均准确率、以及 worst-case
准确率,提升幅度(绝对值)高达 30.0%
。这些提高对分类任务和生成任务都适用。contextual calibration
有时还允许 GPT-3 2.7B
的性能优于 GPT-3 175B baseline
高达 19.3%
,尽管前者的体积比后者小了 50
多倍。
可以减少整个训练集的方差:Figure 6
显示了 Table 1
中所有任务的 baseline
和 contextual calibration
之间的标准差的差异。在大多数情况下,contextual calibration
大大减少了方差;在其余情况下,contextual calibration
并没有大大增加方差。
减少了从 0-shot
到 1-shot
的 drop
:对于 baseline
,有四个案例在从 0-shot
到 1-shot
的过程中出现了准确率的下降(TREC, AGNews, DBpedia, SST-2
)。我们把这种下降归因于majority label bias
。contextual calibration
在四种情况中的三种情况下消除了这种下降。
改善 GPT-2
:我们还测试了GPT-2 1.5B
(参考 Table 4
)。我们发现,与 GPT-3
一样,GPT-2
的准确率在不同的 prompt
中也有很大的差异。这表明,我们观察到的 few-shot in-context learning
的方差是语言模型的一个普遍问题。其次,contextual calibration
对 GPT-2
来说是开箱即用的,它提高了大多数任务的平均准确率并减少了方差。
提高不同格式的准确率:在我们的下一组实验中,我们使用固定的prompted examples
集并改变 prompt format
。我们使用前面讨论的SST-2
的 15
种 prompt format
。我们还通过使用 AutoPrompt
生成的 original LAMA templates
的转述,为 LAMA
中的三个随机关系(P20, P159, P19
)各创建了 15
种 prompt format
。Figure 7
是 SST-2
校准前后的结果, Figure 9
是 LAMA
的结果。contextual calibration
提高了两个数据集的平均准确率和 worst-case
准确率,并降低了 SST-2
的方差。
Contextual Calibration
消融研究:最后,我们对 contextual calibration
进行了两项分析。
我们首先分析了 contextual calibration
在推断 setting
方面的有效性。为此,我们将其准确率与 "oracle calibration"
方法进行比较,后者使用验证集来寻找最佳的对角矩阵 AGNews
上评估了这个 oracle calibration
,发现 contextual calibration
与它惊人地接近(Figure 8
)。
我们还研究了 content-free input
的选择如何影响准确率。在 Table 3
中,我们显示了 SST-2
和 AGNews
对 content-free input
的不同选择的准确率。 content-free input
的选择很重要,然而,存在许多好的选择。
校准是否消除了对 Engineer Prompt
的需要?"prompt engineering"
背后的动机是,并非所有的 prompts
都能导致同样的准确率。因此,我们应该调整 prompt
的格式和样例,以达到最佳的性能。contextual calibration
并不能消除对 engineer prompts
的需要,然而,它确实减轻了这种需要:contextual calibration
使最佳 prompts
的准确率、平均prompts
的准确率、以及worst case prompts
的准确率更加相似(以及更高)。
你应该在 Few-shot Setting
中进行微调吗?我们使用一个固定的语言模型,没有微调。如前文所述,有许多理由不进行微调:它可以实现快速的原型设计;提供一个百分之百自然语言的接口;并且在为许多不同的任务 serving
时,在内存需求和系统复杂性方面更有效率。
此外,就像没有 contextual calibration
的 in-context learning
一样,微调在 few-shot setting
中可能是不稳定的(PET
)。然而,如果这些缺点是可以接受或可以避免的,那么在某些情况下,微调可以比 in-context learning
提高准确率。未来工作的一个有趣的方向是研究 contextual calibration
和微调之间的相互作用,例如,contextual calibration
是否缓解了微调的需要,或者反之亦然?
从大的方面来看,我们的结果启发了 NLP
的 few-shot learning
的两个未来研究方向。
首先,在方法方面,我们表明,good few-shot learning
需要关注细节:诸如 calibration
等微小但重要的决定会极大地影响结果。这使得我们很难正确地开发和比较新的方法(如预训练方案或模型架构)。因此,我们希望使其他的 few-shot learning
方法更加稳健,也希望扩大我们的技术以涵盖更广泛的任务(例如,开放式 generation
的校准)。
第二,在分析方面,我们的结果强调了了解 GPT-3
从 prompt
中学到什么的必要性。该模型具有令人印象深刻的能力,可以通过更多的训练实例来提高。然而,我们表明该模型学习了一些表面的模式,如重复常见的答案。我们希望在未来的工作中能更好地理解和分析 in-context learning
的 dynamics
。
论文:
《What Makes Good In-Context Examples for GPT-3?》
尽管 GPT-3
具有强大而通用的 in-context learning
能力,但它也有一些实际的挑战/模糊之处。GPT-3
利用从训练集中随机采样的 task-relevant
样本来构建上下文。在实践中,我们观察到,GPT-3
的性能往往会随着 in-context examples
的不同选择而波动。如下表所示,在不同的 in-context examples
,经验结果的差异可能是很大的。这些结果对样本高度敏感。我们的工作旨在仔细研究这个问题,以便更深入地了解如何更好地选择 in-context examples
,以释放 GPT-3
的 few-shot
能力并进一步提高其性能。
一个粗暴的方法是在整个数据集上进行 combinatorial search
。不幸的是,这种策略在计算上是昂贵的,因此在许多情况下是不切实际的。为此,我们研究了采用不同的 in-context examples
对经验结果的影响。有趣的是,我们发现,在 embedding
空间中更接近测试样本的 in-context examples
始终能产生更强的性能(相对于更远的 in-context examples
)。受这一观察和最近 retrieval-augmented model
的成功启发,我们建议利用给定测试样本的最近邻(在所有可用的 training instances
中)作为相应的 in-context examples
。被检索到的样本与测试样本一起被提供给 GPT-3
进行最终预测。
核心思想:
few-shot examples
不是随机选择的,而是选择和test input
最相似的。根据
《Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?》
的结论,即使用随机的out of distribution
输入和随机的标签的组合(这种组合甚至不是一个有效的样本)作为context
,效果也比no demostrations
要好。这个结论和本文不冲突,因为本文重点在说明:选择与test input
最相似的训练样本,要比选择随机的训练样本,在few-shot learning
中效果更好。
为了验证所提出的方法的有效性,我们在几个自然语言理解任务和自然语言生成任务上对其进行了评估,包括情感分析、table-to-text
的生成、以及开放域的问答。我们观察到,retrieval-based in-context examples
比随机采样的 baseline
更有效地释放了 GPT-3
的 few-shot
。即使 in-context examples
的数量较少,所提出的策略也能使 GPT-3
获得更强的性能。此外,我们发现,在检索过程中所采用的特定的 sentence encoders
起着关键作用。因此,我们对不同的 pre-trained encoders
进行了广泛的探索,结果表明,在 natural language matching
任务中微调的编码器在 QA
任务中作为更有效的 in-context examples selector
。详细的分析和案例研究进一步验证了所提方法的有效性。综上所述,我们在本文中的贡献如下:
据我们所知,我们迈出了第一步,了解了 GPT-3
针对不同的 in-context examples
选择的few-shot
能力。
为了缓解敏感性问题,引入了一个额外的检索模块来寻找与测试实例的语义相似的 in-context examples
,以构建其相应的输入,这大大超过了基于 random sampled examples
的 baseline
的表现。
在与任务相关的数据集上对 retrieval model
进行微调,使 GPT-3
的经验结果更加强大。
GPT-3
的性能随着可供检索的样本数量的增加而提高。
相关工作:
Pre-trained Language Models
:对于文本分类任务,引人注目的模型包括 BERT, RoBERTa, XLNet
;对于文本生成任务,值得注意的模型包括 BART, T5, mT5, XLM, GPT, GPT-2
。这些模型可以通过微调来适应许多不同的任务。
然而,GPT-3
可以适应许多下游任务,而不需要进行微调。只需给定几个 in-context examples
,GPT-3
就能迅速掌握模式,并在答案风格和内容上产生类似的答案。因此,GPT-3
可以被认为是一个模式识别器来进行 in-context learning
。人们刚刚开始尝试从不同的角度来理解 GPT-3
。正如引言部分提到的,《Measuring massive multitask language understanding》
研究 GPT-3
更能够回答哪些类别的问题。我们的工作重点是如何选择好的 in-context examples
。
基于检索的文本生成:其中心思想是将检索到的样本作为典范/原型,并对其进行一些编辑。GPT-3
在一个角度上可以被自然地视为一个通用的编辑器,适应于广泛的任务。我们的工作独特地研究了如何在不进行微调的情况下最大限度地发挥 GPT-3
的优势。例如,我们为 GPT-3
提供的 context
的语义相似度越高,该模型能产生的结果就越好。其他编辑器或生成器则没有这种能力。
用 kNN
改进 NLP
系统:
最近的一个工作方向是试图结合 nonparametric
方法来提高一个给定模型的性能。这些方法首先访问测试样本的 hidden representation
,并在数据库中寻找该测试样本的最近邻。一旦找到最近邻,最近邻的标签就被用来增强模型的预测。例如,新引入的 kNN-LM, kNN-MT, BERT-kNN
通过从 data-store
中检索最近的 next token
。
另一项相关工作是 kNN
分类模型,他们在 fine-tuned classification model
的信心较低时使用 kNN
作为 backoff
。
我们的工作与其他方法有两个关键区别:
首先,其他方法使用最近的 next token distribution
。然而,我们只使用最近的
第二,其他方法可以访问模型的参数和 embedding
,而我们无法访问。相反,我们使用其他一些独立预训练好的模型来获得sentence embedding
,以检索最近的
GPT-3
的 in-context learning
场景可以被看作是一个条件文本生成问题。具体来说,生成目标
其中:LM
表示语言模型的参数;GPT-3
中,training instances
和它们相应的标签拼接起来而创建的。如下图所示,GPT-3
被要求根据输入的三个样本从而将 "mountain"
翻译成德语版本。
对于 GPT-3
,这个生成过程是通过一个巨大的 transformer-based
的模型架构实现的。鉴于 GPT-3
模型的巨大规模,在 task-specific samples
上对其进行微调将是计算量巨大。因此,GPT-3
通常是以上述的 in-context learning
方式来利用的。事实证明,GPT-3
具有强大的 few-shot
能力,只需提供少量的 demonstrations
就可以表现得相当好。不幸的是,如 Table 1
所示,GPT
的结果往往会随着选择不同的 in-context examples
而出现明显的波动。在这里,我们旨在通过明智地选择 in-context examples
来缓解这个问题。
鉴于观察到GPT-3
的实证结果对所选择的 in-context examples
很敏感,我们从实证的角度来看看 in-context examples
的作用。以前的 retrieve-and-edit
文献通常会检索出在某些 embedding
空间中与 test source
test source
GPT-3
选择 in-context examples
。
为此,我们研究了 in-context example
和测试样本之间的距离对 GPT-3
的性能的影响。具体来说,我们在 Natural Questions: NQ
数据集上对两种 in-context example
选择策略进行了比较。对于每个测试样本,第一种方法利用最远的 10
个训练实例来构建上下文从而馈入 GPT-3
,而第二种方法则采用最近的 10
个邻居来构建上下文。我们使用 pre-trained RoBERTa-large
模型的CLS embedding
作为 sentence representation
来衡量两个句子的临近程度(使用欧氏距离)。
我们随机抽取了 100
道测试题来进行评估,下表中报告了两种不同策略的平均 Exact Match: EM
得分。可以看出,最近邻作为 in-context examples
,相对于最远的训练样本,产生了更好的结果。此外,pre-trained RoBERTa
模型作为有效的 sentence embedding
,用于检索程序。
基于上述发现,我们提出了 Knn-Augmented in-conText Example selection: KATE
,一种为 in-context learning
选择 good in-context examples
的策略。这个过程在下图中得到了可视化。
具体来说,我们首先使用某个 sentence encoder
将训练集和测试集中的 sources
转换为 vector representations
。然后,对于每个test source
sentence encoder
的 embedding
空间中的距离)。给定一些预定义的相似性度量
即,距离从近到远的排序。
之后,将 sources
与它们相应的 label
拼接起来,形成上下文 test source
GPT-3
。算法图见 Alogorithm 1
。请注意,这里可以采用不同数量的 in-context examples
,我们在后面的章节中对其影响进行消融研究。
Retrieval Module
的选择:我们的 context selection
方法的一个核心步骤是将句子映射到潜在语义空间中,这就留下了一个问题,即我们应该选择什么样的 sentence encoder
。我们在现有的 pre-trained text encoder
中进行了比较,发现它们足以检索出语义相似的句子。这些 sentence encoder
可以分为两类。
第一类包括最通用的 pretrained sentence encoder
,如 pre-trained BERT, RoBERTa, or XLNet
模型。这些模型已经在大量的无监督任务中进行了训练,并在许多自然语言任务中取得了良好的表现。相应的 embedding
包含来自原始句子的丰富语义信息。
第二类包括在特定任务或数据集上微调后的 sentence encoder
。例如,在 STS
基准数据集上训练好的 sentence encoder
应该能够比通用的 pre-trained sentence encoder
更好地评估不同问题之间的相似性。SentenceBert
已经表明,这些经过微调的编码器在句子聚类、paraphrase mining
、以及信息检索等任务上取得了很好的性能。
任务:情感分类、table-to-text generation
、问答。数据集和 data split
如下表所示。就 GPT-3 API
中的超参数而言,我们将温度设置为 0
。我们让 GPT-3
继续生成 tokens
,直到出现一个特殊的换行符 "\n"
。
温度为零使得
generation
结果的随机性更小。
用于检索的 Sentence Embedding
:为了检索语义相似的 training instances
,我们考虑如下两类的 sentence embedding
:
原始的 pre-trained RoBERTa-large
模型,记做
在任务相关的数据上微调的 RoBERTa-large
模型:
在 SNLI
和 MultiNLI
上微调的模型,记做
先在 SNLI
和 MultiNLI
上微调、然后再在 STS-B
上微调的模型,记做
值得注意的是,所有的 sentence encoder
都有相同的结构(RoBERTa-large
),唯一不同的是用于微调的具体数据集。
Sentiment Analysis
:对于情感分类,我们在 transfer setting
下选择 in-context examples
,其中一个数据集被视为训练集,评估是在另一个数据集上进行的。这种 transfer setting
是为了模拟现实世界中的情景,即我们想利用现有的 labeled dataset
来用于一个 unlabeled dataset
(一个类似的任务)。
具体来说,我们从 SST-2
训练集中选择 in-context examples
,要求 GPT-3
对 IMDB
测试集进行预测。为了探索在类似任务上微调好的 sentence encoder
是否会有利于 KATE
的性能,我们还采用了在 SST-2
训练集上微调好的 pre-trained RoBERTa-large
模型(被称为 IMDB
测试集的准确率来衡量的。由于增加更多的样本并不能进一步提高性能,所以 in-context examples
的数量被选为 3
。
Table-to-Text Generation
:给定一个 Wikipedia table
和一组 highlighted cells
,这项任务的重点是产生人类可读的文本描述。由于 ToTTo
的流行,我们利用它进行评估。我们使用 BLEU
和 PARENT
指标进行评价。ToTTo
代码库包含评估和预处理脚本。由于 GPT-3
的输入长度限制(目前 token
数量限制为 2048
个),我们增加了一个额外的预处理步骤,即删除 </cell>
和 </table>
等 closing
角括号以节省一些空间。in-context examples
的数量被设定为 2
。
Question Answering
:给定一个事实性的问题,问答任务要求模型生成正确的答案。根据先前的研究,我们使用 Exact Match: EM
得分来衡量 GPT-3
在开放领域的问答任务中的表现。EM
得分被定义为 predicted answers
与 ground-truth answer
(如果有多个 ground-truth answer
,则只需要匹配其中之一即可)完全相同的比例。匹配是在字符串规范化之后进行的,其中包括去除上下文(仅保留答案部分)和标点符号。我们在三个开放领域的 QA
基准上进行了实验: Natural Questions: NQ
、Web Questions: WQ
、Trivia Question Answering: TriviaQA
。
对于这项任务,我们为 NQ
和 WQ
挑选了最近的 64
个邻居作为 in-context examples
,为 TriviaQA
挑选了最近的 10
个邻居。对于 TriviaQA
,如果采用 64
个 in-context examples
,则超过了 2048
个 tokens
的限制。为了公平比较,我们将TriviaQA
的基线和 KATE
方法的 in-context examples
数量设定为 10
个。评估是在 NQ
和 WQ
的测试集、以及 TriviaQA
的验证集上进行的。
baseline
方法:
随机采样:对于每个测试句子,我们从训练集中随机选择 in-context examples
。我们在实验结果中称这种方法为 Random
。为了与 KATE
进行公平的比较,这个random baseline
中的 in-context examples
的数量与 KATE
相同,以确保公平的比较。在测试集上,random baseline
被重复五次,以获得平均分和相应的标准差。
k-Nearest Neighbor: kNN
:此外,为了研究 retrieval module
是否与GPT-3
的 few-shot learning
互补,我们进一步考虑 k-nearest neighbor baseline
。具体来说:
对于文本生成任务,与第一个 retrieved example
相关联的 target
predicted target
。
对于情感分析和问答任务,利用 top k retrieved examples
的 target
final prediction
是由 target
的多数投票决定的。如果出现平局的情况,我们取与测试句子最相似的例子的 target
作为预测。
为了确保公平的比较,我们在 pre-trained RoBERTa-large
模型的相同 embedding
空间下比较 baseline kNN
和 KATE
。这个基线被缩写为
情感分析:我们首先在情感分析任务上评估 KATE
。结果显示在下表中。可以看出:
相对于 random selection baseline
,KATE
始终产生更好的性能。
值得注意的是,由于采用的是同一组 retrieved in-context examples
,所以获得的结果没有方差。
对于 KATE
方法,当在 NLI
或 NLI+STSB
数据集上对 pre-trained sentence encoder
进行微调时,性能略有下降。由于IMDB
数据集和 NLI+STS-B
数据集的目标不同,这表明在不同的任务上进行微调会损害 KATE
的性能。
此外,sentence encoder
在 STS-B
数据集上被进一步微调了。 相比之下,KATE
的性能受益。
为了验证收益不仅仅来自于检索步骤,我们进一步比较了
值得注意的是,在 SST-2
数据集上对 RoBERTa-large
模型的 embedding
进行微调后,92.46
,低于
既然
的准确率高达 92.46
,是否意味着用一个优秀的pretrained sentence encoder
执行kNN
就足够了?
这些结果表明,GPT-3
模型对最终结果至关重要,而检索模块是对 GPT-3
的 few-shot
能力的补充。
Table-to-Text Generation
:我们利用 ToTTo
数据集来评估 KATE
的 table-to-text generation
任务。结果如下表所示。根据BLEU
和 PARENT
分数,KATE
方法比 random baseline
有了相当大的提高。
在更细的 scale
内,可以对 overlap
子集和 non-overlap
子集进行评估。overlap
验证子集与训练集共享大量的标题名称,而 non-overlap
验证子集则不共享任何标题名称。可以看出,KATE
方法改善了 overlap
子集和 non-overlap
子集的结果,这意味着检索模块对于如下的两种情形都有帮助:测试集遵循训练集的分布、测试集不遵循训练集的分布。
与情感分析类似,从 ToTTo
数据集和 NLI+STS-B
数据集的目标不同。从 KATE
的性能。对于 kNN baseline
,它的表现比 random selection
方法和 KATE
方法差得多,这再次表明检索过程和 GPT-3
协同工作从而取得更好的结果。
为了了解检索机制如何帮助 GPT-3
的预测,我们对 retrieved examples
进行了一个案例研究(见 Table 6
)。通过从训练集中检索相关的样本,KATE
提供了有用的关于 table
的详细信息(例如,得分、篮板、以及助攻的数量),从而给 GPT-3
以更准确的描述。另一方面,random selection
方法有幻觉的问题,所生成的序列包含了表格中不存在的信息(例如,"senior year"
和 "University of Texas"
)。
Questing Answering
:我们还在开放领域的问答任务上评估了 KATE
,如下表所示。对于问答任务,我们与一些 SOTA
的方法进行了比较,如 RAG
和 T5
。这两种方法都需要在特定的数据集上进行微调。KATE
方法再次提高了 GPT-3
在各种基准中的 few-shot prediction
的准确率。值得注意的是, fine-tuned transformer
模型作为更好的 sentence encoder
用于检索目的(与没有经过微调的 RoBERTa_large
模型相比)。
NLI
或 STS-B
数据集的微调有助于从问答数据集中检索出语义相似的问题。此外,在 NQ
和 TriviaQA
数据集上,对 STS-B
数据集的进一步微调提高了 KATE
的结果。我们还尝试减少 random
方法和 KATE
方法的 in-context examples
的数量,使其减少到 5
个,其中 KATE
的表现也优于 baseline
。因此,KATE
相对于 random baseline
的优势在少量和大量的 in-context examples
都是成立的。更多的细节可以在消融研究部分找到。
我们通过使用 top-1
最近邻来评估其他基线 64
个最近邻( TriviaQA
为 10
个最近邻)来确定答案(通过多数投票)。EM
的得分趋向于与检索 top-1
最近邻相似。这些 kNN baseline
结果再次表明,检索模块和 GPT-3
一起工作可以获得更好的性能。
为了研究为什么 retrieval examples
有帮助,我们进一步提出一个案例研究。具体来说,从 NQ
数据集中检索到的 in-context examples
如 Table 8
所示。对于第一个和第二个案例,random baseline
提供了错误的答案,因为 GPT-3
无法 recall
确切的细节。然而,KATE
选择的 in-context examples
包含正确的细节,这有利于 GPT-3
回答问题。对于第三个测试问题,random baseline
导致GPT-3
错误地将问题解释为要求一个 specific location
。与此相反,KATE
选择了相似的问题,问的是对象的起源。利用这些 specific location
,GPT-3
能够正确地解释和回答问题。
In-context Examples
数量:我们首先研究了 in-context examples
的数量对 KATE
性能的影响。具体来说,在 NQ
数据集上,我们选择了 5/10/20/35/64
个 in-context examples
,在不同的设置下,将 random baseline
和
如 Figure 3
左图所示,KATE
和 random baseline
都从利用更多的 in-context examples
中受益。然而,KATE
始终优于 random selection
方法,即使 in-context examples
数量少到 5
个。这个结果很有意思,因为在实践中,采用较少的 in-context examples
会使 GPT-3
的推理效率更高。
用于检索的训练集的大小:我们进一步研究训练集的大小如何影响 KATE
方法。在 NQ
数据集上,我们从原始训练集中创建了新的子集,其大小分别为 1k/2k/5k/10k/30k/70k
。从这些子集(而不是原始的训练集)中检索 in-context examples
。近邻的数量被设置为 64
。我们将 random selection
方法和 Figure 3
的右图。对于EM
分数也在增加。相比之下,random sampling baseline
的结果变化不大。
直观地说,随着训练集规模变大,KATE
更有可能检索到相关的 in-context examples
来帮助 GPT-3
正确地回答问题。正如我们之前在 Table 8
中显示的,retrieved in-context examples
可以为 GPT-3
提供关键的详细信息,从而帮助 GPT-3
更好地回答问题。
In-context Examples
的顺序:此外,我们还探讨了in-context examples
的顺序如何影响 KATE
的结果。如前所述,在标准设置下,retrieved in-context examples
都是有序的,其中当 NQ
数据集中 in-context examples
的顺序,并实验了三个不同的顺序。此外,我们还探索了逆序,即当
在这个特定的 NQ
数据集上,逆序表现得最好。一个可能的解释是,由于彼此相邻的 token
具有相似的 positional embedding
,将最相似的句子放在靠近测试样本的地方,可能有助于 GPT-3
利用相应信息。
然而,我们也在 WQ
和 TriviaQA
上做了实验,发现默认顺序比逆序的表现略好。因此,顺序的选择是取决于数据的。另外,可以观察到,NQ
结果之间的变化趋于相当小(与 random baseline
和 KATE
之间的差异相比),这表明 in-context examples
的顺序对 KATE
的性能没有重大影响。
论文:
《Making Pre-trained Language Models Better Few-shot Learners》
GPT-3
模型在 NLP
界掀起了狂澜,它在无数的语言理解任务上展示了令人震惊的 few-shot
能力。只需给出一个自然语言 prompt
和一些任务 demonstrations
,GPT-3
就能做出准确的预测,而无需更新其底层语言模型的任何权重。然而,虽然引人注目,GPT-3
由 175B
个参数组成,这使得它在大多数实际应用中具有挑战性。
在这项工作中,我们研究了一个更实际的场景,即我们只假设能够获得一个中等规模的语言模型,如 BERT
或 RoBERTa
,以及少量的样本(即 few-shot setting
),我们可以用它来微调语言模型的权重。这种 setting
很有吸引力,因为:
(1)
:这种模型可以在典型的 research hardware
上进行训练。
(2)
:few-shot settings
是现实的,因为通常既容易获得一些标注(如 32
个样本),又能有效地进行训练。
(3)
:参数更新通常会导致更好的性能。
受 GPT-3
研究结果的启发,我们提出了几个新的策略,将其 few-shot learning
能力扩展到我们的 setting
中,同时考虑分类问题、以及回归问题。
首先,我们遵循 prompt-based prediction
的路线。其中,prompt-based prediction
首先由 GPT
系列研发从而用于 zero-shot prediction
,最近由 PET
(PET
、PET-2
)研究从而用于微调。
prompt-based prediction
将下游任务视为一个 language modeling / masked language modeling
问题,其中模型针对给定的 prompt
(通过一个 task-specific
模板来定义)直接生成文本式的响应(见 Figure 1 (c)
)。然而,寻找正确的 prompts
是一门艺术:需要领域的专业知识、以及对语言模型内部工作原理的理解。即使投入了大量的精力,手动的 prompts
也可能是次优的。
我们通过引入 automatic prompt generation
来解决这个问题,包括一个 pruned brute-force search
来识别最佳的 working label words
、以及一个新的解码目标从而使用生成式 T5
模型自动生成模板。所有这些都只需要 few-shot
训练数据。这使我们能够低成本地获得有效的 prompts
,这些 prompts
媲美甚至超越于我们手动选择的 prompts
。
即,用语言模型来生成
prompt
的模板、verbalizer
。
第二,我们采用了将 demonstrations
作为 additional context
的想法。GPT-3
的朴素的 "in-context learning"
范式最多挑选了 32
个随机采样的样本,并将它们与 input
拼接起来。这种方法不能保证优先考虑 most informative demonstrations
,而且将不同类别的随机样本混合在一起会产生很长的上下文,很难从这个很长的上下文中学习。此外,可用demonstrations
的数量被模型的最大输入长度所限制。
我们开发了一个更精细的策略,对于每一个输入,我们每次从每个类别中随机采样一个样本,以创建多个 minimal
的 demonstration
集合。我们还设计了一种新的采样策略,将 inputs
与相似的样本来配对,从而为模型提供更加 discriminative
的 comparisons
。
即,更好地挑选
few-shot examples
。
我们提出了一个系统性的评估,用于在 8 single-sentence
和 7 sentence-pair
的 NLP
任务上分析 few-shot
性能。我们观察到,在给定少量训练样本的情况下:
(1)
: prompt-based fine-tuning
在很大程度上优于标准微调。
(2)
:我们的 automatic prompt search
方法媲美甚至超越了人工 prompts
。
(3)
:引入 demonstrations
对微调是有效的,并能提高 few-shot
性能。
这些简单而有效的方法加在一起,使我们在所评估的任务中获得了巨大的改善,与标准微调相比,我们获得了高达 30%
的绝对改善(平均改善为 11%
)。例如,我们发现 RoBERTa-large
模型在大多数二元句子分类任务中取得了约 90%
的准确率,而只依赖于 32
个训练样本。我们把我们的方法称为 better few-shot fine-tuning of language models: LM-BFF
:一种强大的、与任务无关的 few-shot learning
方法。
LM-BFF
是一种基于微调的方法,它需要微调模型从而适配给定的模版,模板是由另一个pretrained LM
来自动生成的。
相关工作:
language model prompting
:
GPT
系列推动了 prompt-based learning
的发展,我们遵循其许多核心概念。
最近的 PET
工作(PET
、PET-2
)也给了我们很大的启发,尽管他们主要关注的是 semi-supervised setting
,其中提供了大量的未标记样本。我们只使用少量的标记样本作为监督,并且还探索了 automatically generated prompts
和 fine-tuning with demonstrations
。此外,我们通过提供一个更加严格的框架从而偏离了他们的evaluation
,我们将在正文部分讨论。
最后,有大量关于 prompting
的工作用于从 pre-trained models
中挖掘知识。与这些工作不同,我们专注于利用 prompting
从而用于对下游任务进行微调。
automatic prompt search
:
PET
以及 《Automatically identifying words that can serve as labels for few-shot text classification》
探索了自动识别 label words
的方法。然而,与手工挑选的 label words
相比,这些结果都没有导致更好的性能。相比之下,我们的方法对模板和 label words
都进行了搜索,并且能够媲美甚至超越我们的人工 prompts
。
此外,还有其他一些尝试。然而这些方法要么是在有限的领域内操作,如寻找表达特定关系的模式(LPAQA
),要么需要大量的样本来进行 gradient-guided
搜索(AutoPrompt
、《Factual probing is [MASK]: Learning vs. learning to recall》
)。我们的方法旨在开发只依赖少量 annotations
的通用搜索方法。
语言模型的微调:最近的一些研究关注于更好的语言模型微调方法(《Universal language model fine-tuning for text classification》
、《Fine-tuning pretrained language models: Weight initializations, data orders, and early stopping》
、《Mixout: Effective regularization to finetune large-scale pretrained language models》
、《Revisiting few sample BERT fine-tuning》
)。这些工作主要集中在优化和正则化技术上,以稳定微调工作。在这里,我们使用了标准的优化技术,而主要是将我们的努力聚焦在更极端的 few-shot setting
中更好的 prompt-based fine-tuning
方面。我们预计,这些研究的结果在很大程度上是对我们的补充。
few-shot learning
:广义上讲,我们的 setting
也与 NLP
中的其他 few-shot learning
范式有关,包括:半监督学习(给出一组未标记样本)、元学习(给出了一组辅助任务)、few-shot learning
(给出了一个相关的中间任务)。我们偏离了这些 setting
,对可用的资源做了最小的假设:我们只假设有几个标注样本、以及一个 pre-trained language model
。我们的重点是了解在没有任何其他优势的情况下,我们能推动多远。
任务描述:在这项工作中,我们假设可以获得一个 pre-trained language model
label space
为 unseen
的测试集
对于模型选择和超参数调优,我们假设验证集 few-shot
训练集相同,即
在以下所有的实验中(除非另有说明),我们采取
Evaluation
数据集:来自 GLUE benchmark, SNLI, SST-5, MR, CR, MPQA, Subj, TREC
等数据集中的8
个 single-sentence
英语任务、7
个 sentence-pair
英语任务。具体细节如下表所示。
对于single-sentence
任务,目标是根据输入句子 positive
的。
对于 sentence-pair
任务,目标是给定一对输入句子
我们也可以交替使用 <S1>
或 (<S1>, <S2>)
来指称输入。请注意,我们主要使用 SST-2
和 SNLI
进行实验和模型开发,使其接近于真正的 few-shot setting
,至少对于我们评估的所有其他数据集而言。
评估方式:系统地评估 few-shot
的性能可能是很棘手的。众所周知,在小数据集上的微调可能存在不稳定性:在数据的新的 split
下,结果可能发生巨大变化。为了说明这一点,我们测量了 5
个不同的随机采样的 split
的平均性能。这个问题在 PET-2
中也有讨论:他们建议使用固定的训练集。我们认为,采样多个 splits
可以提供一个更鲁棒的性能度量,以及对方差的更好估计。
我们还观察到,超参数可以产生很大的差异,因此我们为每个 data sample
扫过多个超参数,并采取在该 data sample
在 setting
设置。超参数扫描空间为:学习率 batch size
1000
步,每隔 100
步在验证集上评估并选择最佳的 checkpoint
。
给定一个 masked language model
token sequence
hidden vectors
的序列 label space
correct label
的对数概率来训练 task-specific head
:
其中:
[CLS]
的隐向量 。
同样地,对于回归任务,我们可以引入 gold label
之间的 mean squared error: MSE
。在任何一种情况下,新参数的数量都是巨大的,例如,一个简单的二分类任务将为 RoBERTa-large
模型引入 2048
个新参数,这使得从少量的标注数据(例如,32
个样本)中学习具有挑战性。
解决这个问题的另一种方法是 prompt-based
的微调,其中 "auto-completing"
自然语言 prompts
的任务。例如,我们可以用包含输入 prompt
(例如,"No reason to watch it ."
)来制定一个二元情感分类任务:
并让 [MASK]
中填写"great"
(positive
)还是 "terrible"
(negative
)更合适。现在我们将这种方法正式用于分类任务和回归任务,并讨论 prompt selection
的重要性。
分类任务:令 task label space
到 masked language modeling: MLP
输入,其中 [MASK] token
,MLM
,并且预测类别
其中:[MASK]
的 hidden vector
,pre-softmax vector
,label
token
。
当有标记样本集合 pre-trained weights
pre-training
和 fine-tuning
之间的 gap
,使其在 few-shot
场景下更加有效。
虽然没有引入新的参数,但是这里需要对
进行微调,一共需要微调 个参数。但是,微调要优于从头开始训练,因为微调采用了一个更好的 initialization
(而不是随机初始化为零)。
回归任务:回归任务的配置和分类任务相同,但是回归任务将 label space
《Hyperspherical prototype networks》
的启发,我们将回归问题建模为两个点
其中:
然后我们定义
我们微调 KL
散度。
这里对回归任务做了太强的假设:
首先,回归任务是有界的。对于 “房价预测” 这种取值空间理论上无界的问题,无法解决。
其次,要求
。即,要么选择端点 、要么选择端点 。但是实际上有可能两个端点的概率都很低。
好的和坏的Manual prompts
:关键的挑战是构建模板 label words
prompt
PET
、PET-2
)都是手工制作模板和 label words
,这通常需要领域专业知识和反复试错。Table 1
总结了我们实验中为每个数据集选择的手工模板和 label words
。这些模板和 label words
是通过直觉和考虑以前文献中使用的格式来设计的。
为了更好地了解什么是好的模板或好的 label word
,我们对 SST-2
和 SNLI
进行了试点研究。Table 2
显示,不同的 prompts
会导致最终准确率的巨大差异。具体而言:
当模板固定时,label words
与 "语义类别" 的匹配度越高,最终准确率就越高(great/terrible > good/bad > cat/dog
)。在极端的情况下,如果我们交换似是而非的 label words
(例如,great/terrible
),我们会取得最差的整体表现。
此外,对于同一组 label words
,即使模板的一个小变化也会产生差异。例如,对于 SNLI
,如果我们把 [MASK]
放在最后,或者交换句子的顺序,我们观察到准确率的下降幅度超过 10%
。
上述证据清楚地强调了选择好的模板和好的 label words
的重要性。然而,搜索 prompts
是很难的,因为搜索空间可能非常大,特别是对模板而言。更糟糕的是,我们只有少量样本可以用来指导我们的搜索,这很容易造成过拟合。我们接下来将解决这些问题。
我们的目标是减少设计 prompts,
所需的人类参与,并找到比我们手动选择的更理想的设置。在这里,我们假设是一个分类任务,但回归的过程是类似的。
label words
的自动选择:我们首先研究如何在给定一个固定的模板 label word mapping
首先,一般来说是难以实现的,因为搜索空间是类别数量的指数级。
其次,容易过拟合,因为在给定少量标注样本的情况下,我们将倾向于发现虚假的相关性。
作为一个简单的解决方案,对于每一个类别 top k
的单词集合,这些单词构建了裁剪后的词表
其中:
物理含义:针对训练集中类别为
的所有样本,寻找它们最可能输出的 label words
。
为了进一步缩小搜索空间,我们并没有在 top k
,而是在裁剪后的空间中去检索。裁剪方式为:选择使得使 zero-shot accuracy
最大化的 tokens
,即 top n assignments
。 C.2
。然后,我们微调所有的 top n assignments
,并使用 rerank
以找到最佳的 assignment
。这种方法类似于PET
、PET-2
中的 automatic verbalizer search
方法,只是我们使用了一个简单得多的搜索过程(暴力搜索),并且还应用了 re-ranking
:我们发现re-ranking
对我们很有帮助。
rerank
即利用验证集来挑选最佳的assignment
。实验部分表明:
label words
的自动选择上,效果不佳。因此这个算法的意义何在?
模板的自动生成:接下来,我们研究如何从一组固定的 label words
T5
模型,一个大型的 pre-trained text-to-text Transformer
。T5
经过预训练,可以在其输入中补全 missing spans
(由 T5 mask tokens
取代,例如 <X>
或 <Y>
)。例如,给定输入 "Thank you <X> me to your party <Y> week"
,T5
被训练从而生成"<X> for inviting <Y> last <Z>"
,这意味着 "for inviting"
是 <X>
的替换,"last"
是 <Y>
的替换。这很适合于 prompt generation
:我们可以简单地从 T5
模型构建模板 tokens
数量。
这里利用语言模型来生成模板,因此这里依赖于预训练好的语言模型(如
T5
)。
给定一个输入样本 T5
模型的输入:
和 代表语言模型需要生成的内容。第一行以模板内容作为 prompt
的开始、第二行以训练样本作为prompt
的开始。
如下图所示,我们依靠 T5
模型来填充占位符。在解码时,我们的目标是找到一个能对 T5
的输出概率分布。它可以分解为:
其中:template tokens
。
我们使用 beam search
来解码多个模板候选。具体而言,我们使用一个 wide beam width
(例如,beam width = 100
)来低成本地获得一大批多样化的模板。然后,我们在 Table 3
所示),或者挑选出 top-k
模板作为 ensemble
使用( table 4
)。尽管在每个模板上微调模型可能显得很昂贵,但由于 prompts
相比,它很容易使用。
注意:这一节仅说明如何挑选
demonstrations
,并没有说如何利用demonstrations
来微调。
这里我们研究:当我们微调中等规模的语言模型时,我们是否能够利用 demonstrations
,并找到更好的方法来利用 demonstrations
。
训练样本作为 demonstrations
:GPT-3
对 in-context learning
的朴素做法只是将输入与从训练集中随机采样的多达 32
个样本连接起来。这种方法是次优的,因为:
(1)
:可用的 demonstrations
数量受模型的最大输入长度限制。
(2)
:将来自不同类别的众多随机样本混合在一起,会产生极长的、难以利用的上下文,特别是对于较小的模型。
为了解决这些问题,我们提出了一个更简单的解决方案:在每个 training step
中,我们从每个类别中随机采样一个样本 [MASK]
,记做 Figure 1(c)
):
这里
在训练和推理过程中,我们为每个 demonstration
集合。请注意,在训练期间,demonstratio
样本都是从同一个集合 demonstration
集合,并在所有的 demonstration
集合中 ensemble
预测结果。
采样相似的 demonstrations
:我们观察到,控制 demonstration
样本 contrastive demonstrations
query
具体而言,我们使用 pre-trained SBERT
模型来获得所有输入句子的 embedding
(对于 sentence-pair
任务,我们使用两个句子的拼接)。在这里,我们只是将不带模板的原始句子馈入 SBERT
。对于每个 query
query
的相似度得分 top r = 50%
的实例中采样从而作为 demonstrations
使用。
类似于
KATE
思路:对于测试样本,选择最相似的训练样本作为few-shot examples
。这里依赖于外部的、预训练好的
sentence encoder
。
超参数调优:
对于网格搜索,我们选择学习率为 {1e-5, 2e-5, 5e-5}
、batch size
为 {2, 4, 8}
。
我们使用早停来避免过拟合。
每次实验,我们训练模型 1000 steps
,每隔 100 steps
验证一次验证集,然后选择最佳的 checkpoint
。
Prompt-based fine-tuning
的实现细节:Table 1
显示了我们在实验中使用的所有人工模板和 label words
。
对于自动的模板生成,我们采用了 T5-3B
模型,这是在单个 GPU
上能适应的最大的公开可用模型。
对于自动搜索 label words
,除了SST-5
和 TREC
,我们将所有任务的 100
。
对于 SST-5
,我们设置了一个较小的
对于 TREC
,我们观察到仅仅使用条件似然来过滤 manual label words
的最近邻来重排 top 30
。
在所有的实验中,我们将 100
。
由于自动搜索中的大量试验,我们在这部分采取了一组固定的超参数:batch size = 8
,学习率为 1e-5
。
由于 prompt-based
微调的想法是使输入和输出的分布接近于预训练,所以实施细节是至关重要的。
对于模板,如果句子不是在输入的开头,我们会在句子前加上额外的空格。
另外,如果句子与前缀(如Table 1
中的 <S2>
)拼接,我们会小写句子的第一个字母。
另外,如果一个句子附加了任何标点符号(如 Table 1
中的 <S1>
),那么原句的最后一个字符将被丢弃。
最后,我们为 label words
前置了一个空格。例如,在 RoBERTa
词表中,我们用 " great "
代替"great"
,其中 " "
代表空格。
Fine-tuning with demonstrations
的实现细节:当使用 demonstrations
时,我们对每个输入采样demonstrations
的 16
个不同的集合,并在推理过程中对每个类别的预测对数概率进行平均。我们发现,进一步增加样本的数量并没有带来实质性的改善。此外,我们还尝试了不同的聚合方法,如取最大置信度的结果,但我们没有发现有意义的改进。
为了选择 demonstrations
,我们将 SBERT
的 roberta-large-nli-stsb mean-tokens
作为我们的 sentence embedding
模型。
我们在实验中使用 RoBERTa-large
模型,并设置 RoBERTa
与 BERT
的比较可以在附录 D
中找到(见 Table D.1
)。对于 automatic prompt search
,在我们的主要结果中,我们只报告了automatic template search
(它一直表现得最好,见 Table 5
)。为了正确看待我们的结果,我们与一些 baseline
进行了比较,即:
在我们的 few-shot setting
中的标准微调。
使用完整训练集的标准微调。
简单地采取最高频的类(在完整的训练集上测量)。
prompt-based zero-shot prediction
,我们采用我们的手动 prompts
并使用
"GPT-3" in-context learning
,我们使用相同的 prompt-based zero-shot setting,
,但用随机采样的 32 demonstrations
来 augment
上下文(仍然使用 RoBERTa-large
,而不是 GPT-3
)。
Pretrained BERT
为输入的不同部分提供了两个segment embeddings (A/B)
。在对 BERT
进行微调时,通常的做法是,在单句任务中只使用 segment A
,而在 sentence-pair
任务中使用segment A/B
来处理两个句子。然而,在我们纳入 demonstrations
的案例中,我们有两个以上的句子。因此,我们探索了以下不同的segments
策略:
对所有句子使用segment A
(1-seg
)。
对原始输入使用 segment A
、对 demonstrations
使用 segment B
(2-seg
)。
对每个句子使用不同的 segment embedding
(n-seg
),这就引入了新的 segment embedding
(在微调期间随机初始化和学习),因为 pre-trained BERT
只有两个 segment embedding
。
single-prompt
的结果: Table 3
显示了我们使用单一 prompt
的主要结果,无论是从我们手动设计的 prompt
,还是从最佳生成的prompt
。
首先,prompt-based zero-shot prediction
取得了比 majority class
好得多的性能,显示了 RoBERTa
的 pre-encoded knowledge
。另外,"GPT-3" in-context learning
并不总是比 zero-shot prediction
好,可能是因为较小的语言模型没有足够的表达能力,不能像 GPT-3
那样开箱即用。
第二,prompt-based
微调可以大大超过标准的微调,无论是在使用手动prompt
还是生成的prompt
时。CoLA
是一个有趣的例外,因为输入可能是一个不符合 TREC
,QNLI
和MRPC
)。
最后,在大多数任务中,在上下文中使用 demonstrations
会带来一致的收益。
总之,我们的综合解决方案(用自动搜索的模板和采样的 demonstration
集合进行微调)与标准微调相比,在 SNLI
上实现了 30%
的收益,平均收益为 11%
。
ensemble-prompt
的结果:automatic prompt search
的一个优点是,我们可以生成我们想要的 prompts
,训练单个模型,并创建大型 ensembles
。PET
也对用人工 prompts
训练的多个模型进行了 ensemble
。在Table 4
中,我们对我们 searched prompts
和 PET’s manual prompts
,在 MNLI
和 RTE
(我们共同评估的两个数据集)上进行了直接比较。
如结果所示,具有多个模板的 ensemble
总是能提高性能。由相同数量的自动模板组成的 ensemble
取得了与 PET’s manual prompts
的ensemble
相当或更好的性能。增加自动模板的数量会带来进一步的收益。
如何
ensemble
多个模板?作者这里未说明。读者猜测:采用PET
相同的方式,对每个模板微调得到一个finetuned model
,然后所有finetuned model
的ensemble
给测试集打上soft label
。
Table 5
给出了使用manual prompts
与 automatic prompts
的结果。对于automatic prompts
,我们比较了模板搜索(Auto T
)、label word
搜索(Auto L
)、以及联合搜索( Auto T + L
)。在 Auto T + L
中,我们从 manual label words
开始,应用 Auto T
,然后是Auto L
。
在大多数情况下,Auto T
取得了与 manual prompts
相当或更高的性能,并且一直表现最佳。
Auto L
在 TREC
和 MRPC
上的表现优于 manual prompts
,但在 SNLI上
的表现却差很多。
Table 6
显示了 Auto T
和 Auto L
的例子(完整列表见 Table E.1
)。
Auto T
模板一般都能很好地适应上下文和 label words
,但也可能包含有偏见的怪癖(例如,SNLI
中的"{Yes/No}, no"
)。
对于 Auto L
的单词来说,情况是复杂的:虽然大多数看起来直观合理,但也有一些神秘的异常情况(例如,SNLI
中 "entailment"
类的 "Hi"
)。
Table 7
比较了使用均匀采样、以及 SBERT
的选择性采样的demonstrations
的性能。我们承认 SBERT
是在 SNLI
和 MNLI
数据集上训练的,因此我们也尝试了一个简单的 sentence encoder
,使用 RoBERTa-large
的 hidden representations
的均值池化。我们发现,无论在哪种情况下,使用选择性采样都优于均匀抽样,这突出了采样相似的样本对于纳入上下文中的 demonstrations
的重要性。
Figure 3
说明了随着 LM-BFF
比较的结果如何。
对于像 SST-2
这样的简单任务(也见 Table 3
中的 MR, CR, MPQA
),尽管总共只用了 32
个样本,LMBFF
的性能已经接近饱和,在整个数据集上与标准微调相媲美。
在更难的 SNLI
任务上,LMBFF
随着
将 NLP
任务重新表述为 MLM
,对 few-shot learning
有令人兴奋的意义,但也有局限性。
首先,虽然 LM-BFF
大大超过了标准的微调,但 Table 3
显示,总体而言,其性能仍然大大落后于有数千个样本的微调,特别是对于较难的任务。
此外,就像标准微调一样, LM-BFF
的结果也受到高方差的影响。正如相关工作中所述,最近有几项研究试图解决 few-shot fine-tuning
的不稳定性,我们希望这些方法在这里也能有所帮助。
关于 automatic prompt generation
,尽管它很有效,但我们仍然发现:扩大搜索空间、或者在只有大约 32
个样本的基础上很好地泛化,这实际上是一个挑战。这部分地是由于我们对一些 manual design
的依赖,无论是 manual templates
(用于 label word search
)还是 manual label words
(用于模板搜索),这使我们的搜索得以启动,但也使它偏向于我们可能已经想象过的搜索空间的区域。
最后,必须澄清的是,LM-BFF
倾向于某些任务:
(1)
:可以自然地被视作 "fill-in-the-blank"
的问题。
(2)
:有相对较短的输入序列。
(3)
:不包含多个输出类别。
问题 (2)
和 (3)
可以通过更长上下文的语言模型得到改善(例如 Longformer
)。对于无法在 prompting
中直接形式化的任务,如 structured prediction
,问题 (1)
是更基本的。我们把它作为一个开放的问题留给未来的工作。
论文:
《Learning To Retrieve Prompts for In-Context Learning》
大型预训练语言模型中蕴含的出色语言技能和世界知识最近引发了自然语言理解中的新范式: in-context learning
。在这种范式下,语言模型接收一个 prompt
作为输入,该 prompt
通常包含几个训练样本,以及一个测试样本,并直接为测试样本生成输出而不对模型参数进行任何更新。这种方法首先在 GPT-3
中引入,但很快传播到其他语言模型中。
in-context learning
的一个吸引人的特点是它为多种语言理解任务提供了单个模型。然而,KATE
表明,下游性能可以根据 in-context examples
的选择而大相径庭。这引发了对 prompt retrieval
的兴趣(参见 Figure 1
),在其中根据某些相似性度量选择训练样本作为 prompts
。最近的研究要么使用现成的无监督相似性度量,要么训练一个 prompt retriever
根据表面相似性(surface similarity
)来选择样本(《Case-based reasoning for natural language queries over knowledge bases》
)。
在这项工作中,我们建议使用语言模型本身来标注那些可以作为良好 prompts
的样本,并从中训练一个 prompt retriever
。为了训练 retriever
(参见 Figure 2
),我们假设可以访问 input-output pairs
的训练集和一个 scoring LM
(一个用于对 prompts
进行评分的语言模型)。对于每个训练样本 scoring LM
估计在给定 prompts
的条件下,prompt retriever
。我们认为,与先前提出的表面相似性启发式方法相比,使用 LM
对样本进行标记更好地代表了训练 retriever
的过程。重要的是,在创建训练数据时,我们可以访问 gold label
prompts
集合。这会产生良好的正样本和 hard negative
样本,有助于使用 contrastive objective
进行训练。
在训练一个高效的 retriever
时使用 scoring LM
,在测试期间该 retriever
可能用不同的 inference LM
,有两种情况下是有益的:
首先,当 scoring LM
比 inference LM
更小并作为其代理时。这导致 retriever
的数据生成是廉价的、高效的,适用于广泛的研究人员。
其次,即使 scoring LM
和 inference LM
相同(例如,都是 GPT-3
),我们的方法也可以使用。
当我们无法访问模型参数,只能将其作为一个 service
来使用时,这是有益的,而这种情况越来越普遍。在这种情况下,我们使用LM
训练一个轻量级的 retriever
,该 retriever
只负责学习相似性函数。更一般地说,考虑到 LM
的规模在可预见的未来可能会继续增加,我们可以将我们的 Efficient Prompt Retrieval: RPR
方法视为一种与大型语言模型进行接口和交互学习的方法。
我们在三个结构化的 sequence-to-sequence
任务上对 EPR
进行了实证测试,这些任务涉及将输入的自然语言话语映射到语义表示:MTOP
和 SMCALFLOW
专注于面向任务的对话、而 BREAK
则是一个将问题映射到基于语言的语义表示的 benchmark
。我们观察到,与先前的prompt retrieval
方法相比,EPR
在性能上有显著提升:
当 scoring LM
和 inference LM
相同(使用 GPT-NEO
)时,与最佳 baseline
相比,在 BREAK
任务上的性能从 26%
提高到31.9%
、在 MTOP
任务上从 57%
提高到 64.2%
、在 SMCALFLOW
任务上从 51.4%
提高到 54.3%
。
当将 GPT-NEO
作为更大的语言模型(GPT-J, GPT-3, CODEX
)的代理时,我们观察到类似的收益,在所有情况下性能都有显著提高。
总之,我们提出了一种在大型语言模型中检索用于 in-context learning
的训练样本的方法,并展示了它在性能上显著优于先前的方法。鉴于最近在 scaling
语言模型方面的发展,设计与语言模型交互的高效方法是未来研究的重要方向。我们的代码和数据公开于 https://github.com/OhadRubin/EPR
。
这里面包含四个模型:
一个无监督模型,用于检索候选训练样本集合(即,图中的
)。 一个评分模型,用于为候选训练样本集合打分(即,图中的
)。 一个对比学习模型(基于
BERT
的模型),用于学习一个相似性度量。一个
inference
模型,用于执行推断。训练期间最终得到的是这个对比学习模型。在推断期间使用对比学习模型、
inference
模型。无监督模型、评分模型主要用于生成label
从而用于训练期间的对比学习。核心思想是:如何判断样本之间的相似性。可以基于无监督的
sentence embedding
来得到。也可以通过监督学习来得到。对于监督学习,最重要的是如何得到针对相似性的标签。
相关工作:
In-context learning
:最近,incontext learning
的工作显著增长。
《A mathematical exploration of why language models help solve down stream tasks》
指出,通过以 prompt
为条件,预测 next word
的任务接近线性可分性。
《An explanation of in-context learning as implicit bayesian inference》
提出,在 in-context learning
中,模型推断出 prompt
中样本之间的共享潜在概念(shared latent concept
)。
《Rethinking pretraining example design》
提出了一种理论上基于 in-context learning
的 bias
的预训练方案,取得了显著的改进。
最近,《Rethinking the role of demonstrations: What makes in-context learning work?》
表明,模型并不像之前认为的那样严重依赖于示范中提供的 ground truth input-label mapping
。
Retrieval
:近期对训练 dense retrievers
的研究大幅增加,这得益于对开放域问答的兴趣。基于检索的方法的研究也在其他知识密集型任务中得到广泛应用(《Retrieval-augmented generation for knowledge-intensive NLP tasks》
),例如 fact verification
(《Improving evidence retrieval for automated explainable fact-checking》
)。
类似于我们,《Controllable semantic parsing via retrieval augmentation》
提出在 semantic parsing
中使用检索。然而,他们侧重于控制模型所生成的输出。检索方法也在语言建模和机器翻译(《Nearest Neighbor Machine Translation》
)中取得了成功应用。
Prompts
:开发用于语言模型的交互以及提取期望行为的方法已经引起了广泛关注,这些方法统称为 prompting
。在这项工作中, prompts
是一组 in-context training examples
,但也有相当多的工作致力于通过用自然语言表述目标任务从而将自然语言任务转化为语言建模的形式(参见 《Pretrain, prompt, and predict: A systematic survey of prompting methods in natural language processing》
)。这些方法包括通过 manual patterns
、 decoding methods
、以及自动提取 hard prompts
或 soft prompts
的方法进行 prompt engineering
。
用于监督模型的 prompt retrieval
:与此工作并行进行的是,对于监督模型而言,添加训练样本作为额外输入也被证明是有用的。 《Training data is more valuable than you think: A simple and effective method by retrieving from training data》
和 《Human parity on commonsense qa: Augmenting self-attention with external attention》
使用 BM25
并利用来自训练集的相似样本来检索和 augment
input
。使用额外 inputs
对模型进行微调可以提高摘要和问答等任务的性能。这样的方法也有可能从更强的 retriever
中受益。
Prompt Retrieval
:
问题介绍:给定一个由 input-output
序列组成的训练集 retriever
retriever
能够检索一组训练样本 prompt
。
给定 inference LM
prompt
应该在将测试样本 prompt
target output sequence
。具体而言,从 LM
semantic parsing
),其中 meaning representation
)。
先前工作:
KATE
研究了不同 prompts
对 GPT-3
性能的影响,并证明了 in-context examples
的选择对下游性能有很大影响。他们使用了一个无监督的 sentence encoder
对训练样本进行编码,并为每个测试样本检索了其最近邻。
《Case-based reasoning for natural language queries over knowledge bases》
针对知识库问答训练了一个监督的prompt retriever
。该 retriever
通过监督信号来训练,这个监督信号针对知识库 query
来定制并依赖于 query
之间的表面相似性(surface similarity
)。相反,我们的方法利用了生成式语言模型本身,因此更加通用。
《Constrained language models yield few-shot semantic parsers》
使用 GPT-3
为 few-shot semantic parsing
选择prompt
的样本。然而,他们并没有训练一个 retriever,
,而是随机从训练集中抽取大量的 utterance-program pairs
,并根据GPT-3
来选择与 target instance question
相似的 pair
。这导致了一个昂贵的推理过程,对于每个测试样本,需要运行数百次 GPT-3
,而不像我们的方法,它基于一个轻量级的亚线性 retriever
。
我们现在描述一种用于训练 EPR
的方法,即一种用于in-context learning
的 efficient prompt retriever
。首先,我们描述如何生成带标签的训练数据,然后介绍如何使用训练数据进行训练和推理。Figure 2
概述了训练过程。
这个
retriever
的核心是如何对训练样本进行编码。
我们的方法依赖于找到哪些训练样本可以作为其他训练样本的 good prompts
。对所有 training examples
的 pairs
进行打分的计算复杂度是 target
序列 input
在输出序列方面相似的样本,这可以通过简单的检索方法来实现。
为了生成高质量的候选训练样本集合,我们利用了一个无监督 retriever
,即 retriever
的选择,我们尝试了基于表面文本相似性的 sparse retriever
BM25
、以及 SBERT
,并发现使用
对候选集合打分:一旦对于训练样本 scoring LM
inference LM
candidate prompt
的得分为:
其中:LM
prompt
prompt
在解码目标时的帮助程度(独立于其他候选 prompt
)。我们认为这个评分相比先前的方法更好地代表了训练样本在 inference
时的效用。
我们将这个评分函数应用于所有的训练样本,并为每个训练样本定义了一组正样本 top-k
个候选样本;以及一组负样本 bottom-k
个候选样本。这样做应该会得到 relevant positive examples
,假设候选集 good prompt candidates
和 hard negatives
,因为根据 positive examples
和 negative examples
,我们现在可以应用对比学习,接下来我们将描述这个过程。
训练:我们的训练过程与 DPR
(《Dense passage retrieval for open-domain question answering》
) 中的对比学习过程完全相同。该过程得到一个接收 input tokens
序列 input encoder
condidate prompt
的 prompt encoder
BERT-base
进行初始化,并且通常情况下,输出向量表示由 CLS token
给出。训练的目标是学习一个相似度度量,使得对于给定的测试样本
我们的训练样本的形式为 hard negative
、同一个 mini-batch
中其他样本的 hard negative
所组成。我们将 input
和 input-output pair
之间的相似度得分定义为内积 contrastive learning objective
,并对每个样本最小化 positive exam
的负对数似然:
这种方法的一个优点是,在 batch-size = B
的情况下,利用 in-batch negatives
技巧 (《Efficient natural language response suggestion for smartreply》
),有效 batch size
的数量级为
Inference
:训练 input encoder
和 prompt encoder
之后,我们使用 FAISS
在预处理步骤中对整个训练样本集进行编码。在测试时,给定输入序列 final prompt
inference LM
最相似的训练样本距离
最近。
需要注意的是,在训练时,我们独立地对每个训练样本进行评分;而在测试时,我们使用训练样本的集合。关于不同训练样之间的依赖关系建模留待将来研究。
数据集:我们专注于将言语( utterances
)映射到 meaning representations
的任务,其中 in-context examples
可用于学习从输入到输出的映射。每个数据集的样本数量如 Table 1
所示。
BREAK
:这是一个将复杂自然语言问题映射为基于语言的 meaning representation
的数据集,其中问题被分解为有序的原子步骤的列表。我们使用 low-level BREAK subset
,其中 training/development/test
集合分别包含 44K/7K/8K
个样本。
MTOP
:这是一个语义解析数据集,专注于面向任务的对话,将命令映射为跨越 11
个领域的复杂嵌套 query
。我们使用 MTOP
的英语子集,其中 training/development/test
集合分别包含 16K/2K/4K
个样本。
SMCALFLOW
:这是一个涵盖日历、天气、地点和人物等任务的大型英文的面向任务数据集。其 meaning representation
是一个数据流程序,包含 API
调用、函数组合、以及复杂约束。SMCALFLOW
包括 15K
个 development
集合的样本、 134K
个训练样本,我们从训练集中随机抽取了 44K
个样本用于训练。
baseline
:
首先我们考虑无监督的 baseline
,它们都仅在测试期间使用:
RANDOM
:我们从训练集
SBERT
:我们使用 SentenceTransformers
库提供的 BERT-based sentence embeddinngs
。具体地,我们使用 paraphrase-mpnet-base-v2
,一个包含 110M
参数的模型,来编码测试语句 in-context examples
。
这就是
KATE
的思想。
BM25
:我们使用经典的sparse retrieval
方法 BM25
,它是TF-IDF
的一种扩展,用于检索与每个测试语句
BRUTEFORCE
:我们应用了 《Constrained language models yield few-shot semantic parsers》
提出的用于 few-shot semantic parsing
的 prompt selection
方法。给定一个测试样本 200
个训练样本。对于每个训练样本 prompt
。与我们类似,这种方法使用 inference LM
来选择 prompts
。然而,它是在测试时进行的,这导致推理速度较慢。
接下来,我们描述使用训练集 prompt retriever
的基线方法。所有监督方法都共享以下模板。
首先,使用 unsupervised retriever
BM25
作为 unsupervised retriever
,因为它在性能上优于SBERT
(参见后面的实验部分)。然后,对每个候选prompt
top-k prompts
标记为 positive examples
,bottom-k examples
作为负例(
DR-BM25
:我们使用原始的 BM25
分数对正例和负例进行标记,并训练一个dense retriever
。
CASE-BASED REASONING (CBR)
:我们改编了 《Case-based reasoning for natural language queries over knowledge bases》
的评分函数,他们专注于知识库问答。他们定义了关于两个逻辑形式的权重,该权重是这两个逻辑形式中出现的关系集合之间的 F1
分数,并使用该权重对数据进行软标记。由于在我们的设置中,我们不假设逻辑形式,所以我们将输出序列 tokens
集合之间的 F1
分数,忽略停用词。
EFFICIENT PROMPT RETRIEVAL (EPR)
:我们提出的完整方法。
最后,我们考虑两个 oracle
模型:
BM25-ORACLE
:我们使用gold output sequence
DR-BM25
能够学习到的上限。EPR
有可能胜过这个 oracle
模型,因为它的训练信号超出了表面文本相似性。
LM-ORACLE
:我们在测试时使用针对训练数据标记的过程。给定一个测试样本 scoring LM
prompts
的情况下生成 EPR
提供了一个上限,因为 EPR
的训练目标是模仿这种行为。
实验细节:
语言模型:在这项工作中,我们只训练了一个 dense retriever
,但使用了 scoring LM
和 inference LM
。对于 scoring LM
GPT-NEO
,一个在 The Pile
(由各种高质量资源构建而成的 825 GB
英文文本语料库)上训练的 2.7B
参数的语言模型。
此外,我们考虑了以下inference LM
:GPT-J
( 600M
参数)、GPT-3
( 175B
参数)、CODEX
(在 GitHub
的代码上进行微调的 GPT-3 175B
参数模型)。由于我们的任务涉及从话语到程序或 meaning representations
的映射,CODEX
在 in-context learning
方面可能表现出色。
对于所有语言模型,我们使用最大上下文大小 tokens
。
注意:还有两个模型也很重要:
unsupervised retriever
、对比学习模型(基于 BERT
的模型)。
评估:
在 BREAK
上,我们使用 LF-EM
(《Question decomposition with dependency graphs》
)在开发集上评估性能。LF-EM
是一种比官方指标 Normalized Exact Match: NEM
更好的指标,因为它衡量两个 meaning representations
是否在语义上等价。在测试集上,我们使用NEM
进行评估。
在 MTOP
和 SMCALFLOW
上,我们使用 Exact Match: EM
进行评估,即 inference LM
生成的字符串是否与 reference
字符串完全相同。
我们在两种设置下评估 EPR
:LM-as-a-service
、和 LM-as-a-proxy
。
LM-as-a-service
:我们将 GPT-NEO
用作 scoring LM
和 inference-LM
。在此设置中,我们在 BREAK、MTOP、SMCALFLOW
的完整开发集上进行评估。
LM-as-a-proxy
:由于我们通过付费 API
访问 GPT-3
和 CODEX
,我们从每个数据集中随机抽取 1000
个开发集样本的子集,并对每个模型在此子集上进行一次评估。
LM-as-a-service
:
Table 2
报告了在开发集上, scoring LM
和 inference LM
相同的结果。EPR
在所有其他基线方法中表现出色。具体而言,与最佳基线相比,它将 BREAK
上的性能从 26.0
提高到 31.9
,将 MTOP
上的性能从 57.0
提高到 64.2
,将 SMCALFLOW
上的性能从 51.4
提高到 54.3
。这表明使用 LM
本身来标注样本是获得强大的 prompt retriever
的有效方法。
Table 3
显示了BREAK
和 MTOP
上的测试集结果,证实 EPR
相对于 BM25
和 CBR
显著提高了性能。
对于无监督方法:
RANDOM
基线表明随机抽样训练样本导致性能较差。
BM25
在 prompt retrieval
中优于 SBERT
,因此我们在所有监督方法中使用 BM25
来检索候选集合
最后,BRUTEFORCE
的性能不如 BM25
。我们认为这是因为训练集很大(约 14K-120K
个样本),抽取 200
个样本无法涵盖对 GPT-NEO
有用的样本。
有趣的是,EPR
在 MTOP
和 SMCALFLOW
上优于 BM25-ORACLE
,在BREAK
上与 BM25-ORACLE
相当。这令人惊讶,因为 BM25-ORACLE
在测试时可以访问输出序列 scoring LM
提供的训练信号超出了表面文本相似性。
LM-ORACLE
的性能远高于 EPR
,表明 scoring LM
提供的监督很强,通过从该信号中训练更好的 retriever
可以显著提高性能。
我们进一步在 one-shot setup
中评估我们的模型,即当提供给 inference LM
的 prompts
仅包含最高得分的样本时。在这种设置下,inference LM
的应用方式与生成 labeled data
时相同,其中我们独立地处理每个 prompt
候选。由于训练时和测试时更加一致,我们可以预期 EPR
的优势更加明显。
Table 4
显示了结果。确实,EPR
的性能优于最佳基线 8.5%
、优于 BM25-ORACLE 5%
。此外,我们还研究了 ANYCORRECT-ORACLE
,它测试由 BM25
返回的任何候选是否导致正确输出。ANYCORRECT-ORACLE
达到了 53.6%
,比 LM-ORACLE
高 20
个百分点。这表明 BM25
提供的候选样本的高质量,因为只需单个 prompt
就可以达到超过 50%
的 LF-EM
。此外,这也暗示一个更好的评分函数有可能进一步提高性能。
LM-as-a-proxy
:Table 5
显示了当 scoring LM
为 GPT-NEO
、而 inference LM
为更大的语言模型时的结果。
首先,趋势与 LM-as-a-service
设置相似,即 EPR
在所有数据集和预训练模型上均比先前的基线(包括最佳无监督基线 BM25
和最佳有监督基线CBR
)提高了 2-8
个百分点。因此,GPT-NEO
时选择训练样本的良好代理。
为了进一步验证这一发现,我们评估了 GPT-J
在 BREAK
上的性能,其中 GPT-NEO
作为 scoring LM
,与使用 GPT-J
本身作为 scoring LM
进行比较。我们发现性能略有改善,从 31.5
提高到 33.6
。类似地,当使用 CODEX
作为 scoring LM
和 inference LM
时,性能基本保持不变:29.5 -> 29.3
。因此,使用较小的语言模型(GPT-NEO
)是训练一个将应用于其他语言模型的 retriever
的有效策略。在不同的 inference LM
中,由于 GPT-J
是使用与 GPT-NEO
相同的数据和相同的过程进行训练的,因此在所有方面表现略好于 GPT-NEO
。CODEX
优于GPT-3
的原因可能是它是使用代码进行训练的,而我们的数据集涉及到将输入映射到程序或 meaning representations
。令人惊讶的是,尽管体积较小30
倍,GPT-J
在除 MTOP
以外的所有数据集上都优于 CODEX
和 GPT-3
。这可能可以解释为 GPT-J
是在不同的数据集(The Pile
)上进行训练的。
分析:Table 6
显示了来自 BREAK
的一个样本,其中 EPR
解码出了正确的输出,而 CBR
没有。EPR
检索到的所有训练样本都执行了 argmax
(原始 utterance
中的 argmin
),并在最后一步返回 "a code"
,而CBR
检索到的第三个样本既没有执行 argmax
或argmin
,也没有涉及 "a code"
。我们在附录 A
中提供了其他例子。
Figure 3
显示了 EPR
学到的 BREAK
训练样本的 embedding
的 t-SNE
投影(其网页交互版本参考网址 https://anonymous.4open.science/w/Learning-to-retrieve-prompts-for-in-context-learning-1C4F/
),我们在其中应用了 OPTICS
聚类算法。检查聚类显示 EPR
捕捉到了词汇相似性和结构相似性。附录 A
中还提供了一些聚类的例子。
Prompt copying
:我们分析语言模型如何利用 in-context prompts
。具体而言,我们想知道 target output
是直接从 prompts
中复制的还是由不同 prompt
片段组合而成,从而实现对新结构的泛化。
为了实现这一点,我们定义了两种类型的复制行为:
精确复制:用于衡量生成的输出是否与 prompt
中的任何样本完全匹配。
抽象复制:用于量化生成的输出结构是否与 prompt
中的任何结构相匹配。
具体而言,我们消除了逻辑形式中的非结构元素(如实体和函数参数)的影响。我们将输入中出现的每个单词序列替换为字符串[MASKED]
,包括 target utterance
和 in-context examples
。如果语言模型解码的掩码逻辑形式(masked logical form
)出现在 prompt
定义的掩码样本集合中,我们就说语言模型复制了该抽象模式。
Table 7
展示了我们在验证集上对三个数据集的结果,以及每个子集上的准确率。我们观察到,在 MTOP
和 SMCALFLOW
中,复制的率要高得多,抽象复制达到 80%
以上。此外,在发生复制的样本中,准确率要比未发生复制的样本高得多。例如,在 MTOP
上,有84.5%
的样本进行了抽象复制,在这些样本中,EPR
的 EM
为 71.6%
,而在整个验证集上的 EM
为 64.2%
。然而,即使在没有发生复制的情况下,准确率也不可忽视(23.4%
),这表明模型在对新结构进行某种形式的泛化。
另一个后续的问题是模型是否均匀地从 prompts
中复制模式,还是主要关注检索分数较高的 prompts
。为了回答这个问题,我们观察发生复制的样本子集。然后,我们为每个样本确定被复制的排名最高的 prompt
,并定义该 prompt
的 distance
指标为:该排名除以拟合该样本的 prompts
数目。Figure 4
显示了BREAK
数据集上的 distance
分布情况。我们观察到,复制主要来自排名较高的 prompts
。
论文
《Improving and Simplifying Pattern Exploiting Training》
。
近年来,pretrained
语言模型在各种自然语言处理任务上显示出显著的进步(BERT
、GPT
、T5
)。这些进步的大部分是通过在特定任务的标记数据上微调语言模型获得的。然而,当下游任务的标记数据非常有限时,性能可能会受到影响(《Unsupervised data augmentation for consistency training》
、《Mix-Text: Linguistically-informed interpolation of hidden space for semi-supervised text classification》
)。
最近,GPT-3
展示了当语言模型扩展到千亿级参数时,它们可以在仅用少量标记样本来 prompted
的情况下学习得很好。然而,GPT-3
(175B
参数)的规模使其难以研究。因此,需要开发更小的语言模型,这些模型即使在标记数据有限的情况下也能同样好地工作。
Pattern-Exploiting Training: PET
(PET
、PET-2
)将自然语言理解任务重新表述为完形填空风格的问题,并进行 gradient-based fine-tuning
。通过这种方式,PET
使用仅少量标记样本的 ALBERT
就优于 GPT-3
。然而,PET
使用额外的 task-specific
的未标记数据。
我们提出了 A Densely-supervised Approach to Pattern Exploiting Training: ADAPET
,它通过解耦 label tokens
的损失、以及作用在整个原始输入的 label-conditioned masked language modeling objective
来提供更多的监督。 在SuperGLUE
上,每个任务有 32
个标记样本,ADAPET
优于 iPET
,并且没有任何未标记数据。
核心思想:更多的掩码、更多的损失项。
当拼接正确的
label
时,可以掩码label
使得最大化correct label
的概率、掩码input token
使得最大化input token
的概率。当拼接错误的
label
时,可以掩码label
使得最小化incorrect label
的概率、掩码input token
使得最小化input token
的概率。
完形填空风格的问题和 MLM
:完形填空任务是一种问题,其中,文本中的某些部分被删除,而任务的目标是根据上下文填补缺失的部分。这里,被删除了某些部分的文本被认为是一个完形填空风格的问题。受完形填空任务的启发,BERT
引入了 MLM objective
,该 objective
试图预测完形填空问题中 masked position
的原始单词。
符号:令 masked location
token
masked location
logit
值。
Unlabeled Data Access
:PET
、PET-2
假设可以访问task-specific
的未标记数据。对于某些应用程序(如情感分析),未标记数据可以便宜地获取。 但对于 SuperGLUE
,其中样本是带标签的 text pairs
,其中样本是被构建用来测试模型的自然语言理解能力,则获取未标记数据可能更昂贵。 例如,BoolQ
的构建要求标注员在分配标签之前过滤 good question-article pairs
。 因此,在我们的设置中,我们不假设可以访问 task-specific
的未标记数据,这与 GPT-3
的设置一致。
PET
:我们的工作主要建立在 PET
(PET
、PET-2
)的基础上。PET
将样本转换为完形填空风格的问题,类似于预训练期间使用的输入格式。PET
中的 query
格式由 Pattern-Verbalizer Pair: PVP
来定义。每个 PVP
由以下两部分组成:
一个 pattern
:描述如何将输入转换为带有 masked tokens
的完形填空风格的问题。我们在 Figure 2(a)
中为 entailment
任务进行了说明。这里,我们使用模式 <premise>? <mask>, <hypothesis>
将前提 "Oil prices fall back"
和假设 "Oil prices rise"
转换为完形填空风格的问题。
一个 verbalizer
:描述如何将 classes
转换为 tokens
的输出空间。在 Figure 2(a)
中,verbalizer
将 "Not Entailment/Entailment"
映射到 "No/Yes"
。
在为给定任务设计 PVP
之后,PET
从模型 logit
(在 single-token label
的情况下)。给定 output tokens
的空间 Figure 2(a)
中为 {"Yes", "No"}
),PET
在 logit
来计算 softmax
。 final loss
如下所示:
其中:ground-truth
,CE
为交叉熵损失函数。
PET
还从不同模型的 ensemble
中蒸馏知识,这些模型从具有不同模式的标记数据和未标记数据上训练而来。iPET
是 PET
的迭代式变体,它在迭代中训练模型:根据前一轮迭代的标签,每次迭代的训练集规模逐渐增大。 有关跨任务使用的不同 patterns
的描述,请参阅附录 A.1
。
我们提出的方法称为 ADAPET
,它修改了PET
的 objective
,以便在没有 task-specific
的未标记数据的情况下提供更多的监督并且学习。
解耦 Label Losses
:PET
为 specific task
使用 labels
相对应的 logits
来计算 class
概率。这丢弃了词表中的所有其他与 label
无关的 logits
的信息。例如,在 Figure 2(a)
中,"oil"
不是一个 class token
,所以 LM head
应该赋予 "oil"
一个低概率。但是,因为 PET
只提取与 labels
对应的 token logits
,所以 non-label tokens
永远不会有任何梯度信号。
一个解决方案是将 objective
改为常规的 MLM objective
。在这种情况下,incorrect classes
对应的 tokens
与词表中的任何其他 tokens
之间没有区别。例如,在 Figure 2(a)
中,模型将被训练为把 "Yes"
(incorrect token
)与其它任何 tokens
(如"oil"
)同等对待。虽然我们希望模型抑制 "oil"
,但 training objective
仍应更加抑制 "Yes"
。
在 ADAPET
中,我们惩罚 incorrect class tokens
并鼓励 correct class tokens
。具体而言,模型在所有 tokens
上计算每个token
的概率(归一化的 softmax
),以便每个概率都受到词表中所有 tokens
的 logit
的影响。然后,我们最大化 correct class tokens
的概率、最小化 incorrect class tokens
的概率。这相当于二元交叉熵,如 Figure 2(a)
所示。
正式地,如果
该损失函数可以重写为使用二元交叉熵:
的物理意义: softmax
交叉熵的近似。
为不同任务统一损失函数:对于标签正好是 one token
的常规任务,PET
使用公式 WSC
,它没有incorrect class labels
,PET
使用原始的 MLM objective
而不是 ADAPET
中等效于没有第二项的
对于其他具有 multi-token labels
的任务( COPA, ReCoRD
),PET
将类别概率计算为单个 token
的对数概率之和。但是,如何将这些 label
概率转换为有效的概率分布,这还不是很清晰。PET
没有归一化概率,而是使用 hinge loss
来确保 correct label
和 incorrect labels
之间有间隔。
在 ADAPET
中,对于标签中的每个 token
,correct tokens
与每个其他 tokens
区分开来,这是通过以下损失:
这个目标函数将 single loss based on multiple tokens
拆分为 multiple losses over single tokens
。因此,我们不需要将单个 tokens
的概率相乘,也就不会遇到归一化问题。
类似于
bag-of-words
,这里认为多个tokens
之间是独立的。
Label Conditioning
:PET objective
包含问题:"Given the input, what is the right label?"
。但是,由于输入空间和输出空间都由 tokens
组成,我们也可以问逆问题:"Given the answer, what is the correct context?"
。模型被训练来预测给定标签的输入。
正式地,设 tokens
而来,tokens
。在 label conditioning objective
中,我们关注量 label
的条件下预测输入中的 masked tokens
。
在训练期间,如果标签是正确的,模型必须预测 original token
,如 Figure 2(b)
所示。另外,如果标签是错误的,模型会被迫不预测 original token
。我们最大化 decoupling label losses
方法相同,只是输入和输出不同:
ADAPET
的 final loss
是 decoupled label loss
和 label-conditioned MLM loss
的总和。
Label Conditioning
和Label Losses
可以统一起来:
首先将输入和
correct label
拼接起来:掩码label
并预测label token
、掩码输入并预测输入,最大化这两个概率。然后将输入和
incorrect label
拼接起来:掩码label
并预测non-label token
、掩码输入并预测输入,最小化这两个概率。注意:在训练的时候考虑
,而在推断期间仅考虑 。
我们在SuperGLUE
上运行实验,遵循 PET-2
的相同 data split
,其中每个任务包含 32
个标记样本。
我们的代码使用 Pytorch
在 HuggingFace
上的实现。 我们使用与 PET
相同的预训练模型和超参数,但将 training batches
的数量增加到 1k
,并在开发集上选择最佳 checkpoint
,因为训练steps
数量更长的效果更好,即使是少量样本(《Revisiting few sample BERT fine-tuning》
)。 对于所有消融实验,我们仅使用 first pattern
训练 250
个 batches
。 更多详细信息请参阅附录 B
。
由于我们不假设可以访问未标记数据,我们不对 ADAPET
应用 PET
和 iPET
的 three-step
训练过程。我们仍然假设可以访问完整的开发集来选择最佳掩码比例、以及最佳 checkpoint
,因为 PET
可能使用完整的开发集来选择超参数(我们直接复用它的超参数)。
Table 1
和 Table 2
显示了我们在验证集和测试集上的结果。我们与 GPT-3
和 PET/iPET
进行了比较。请注意,PET/iPET
使用未标记数据和 three-step
训练过程。为了公平比较,我们训练 PET with a single pattern: sPET
共计 1k
个 batches
,并报告验证集上表现最好的模式的分数。我们在附录 A.2
中进一步分析了模型在每个模式下的表现。
在开发集上,ADAPET
优于所有不使用未标记数据的模型,甚至优于 PET
的迭代式变体 iPET
达 0.5
分(绝对提升)。令人惊讶的是,sPET
优于 PET
,但仍以 2.6
分落后于 iPET
。但是,这与 PET-2
的消融结果一致,该结果显示仅使用标记数据训练 sPET
模型的 ensembling
优于PET
。此外,LM-BFF
表明,具有最佳性能模式的模型优于ensembling sPET
模型。
在测试集上,ADAPET
优于所有其他模型,包括 iPET
,这是在没有未标记样本(每个任务平均 9k
)的情况下实现的,并在SuperGLUE
上的 few-shot learning
中取得了 SOTA
结果。
损失消融实验:Table 3
显示了我们在本文中引入的损失函数的消融分析。从结果中可以看出:
label conditioning: LC
对 ADAPET
非常有利,尤其是在 CB
上。
将我们修改的 decoupled label objective
(ADAPET W/O LC
)与 sPET
进行比较,我们看到它在 CB
上的 F1
得分较差,但在 RTE
和 MultiRC
上的表现要好得多。
接下来,我们与仅在 correct label
上条件化的 LC
进行比较。我们看到这在 BoolQ
上有下降,但在 CB
上有帮助。
我们在附录 C
中对模型选择进行了消融实验。
论文:
《Noisy Channel Language Model Prompting for Few-Shot Text Classification》
。
在 few-shot learning
中,通过在输入前添加自然语言文本或连续向量(称作 prompts
)来引导大型语言模型,已经显示出很大的潜力(GPT-3
)。先前的研究提出了寻找更好 prompt
的方法(AutoPrompt
、Prefix-Tuning
、《The power of scale for parameter-efficient prompt tuning》
),或者对模型输出进行更好评分的方法(《Calibrate before use: Improving few-shot performance of language models》
、《Surface form competition: Why the highest probability answer isn’t always right》
)。这些研究直接预测 target tokens
以确定终端任务的预测结果。尽管结果看起来很有希望,但是在不同的 verbalizers
(用于表示 label
的文本表达)和种子之间,它们可能不稳定且方差很大,worst-case
性能通常接近于随机(《True few-shot learning with language models》
、《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》
)。
在本文中,我们介绍了一种针对大型语言模型的 prompted few-shot text classification
的另一种 channel
模型,受到机器翻译中的 noisy channel
模型以及它们对其他任务的扩展的启发。与直接建模给定输入的 label token
的条件概率不同,channel
模型计算给定输出的输入的条件概率( Figure 1
)。直观地说,channel
模型需要解释输入中的每个单词,从而在低数据情况下可能增强训练信号。我们研究了 channel
模型对语言模型 prompting
的影响,其中语言模型的参数被冻结。具体而言,我们在以下方法中比较了channel
模型和其 direct counterparts
:
用于 demonstration
方法,无论是基于拼接的方法(GPT-3
),还是我们提出的 ensemble-based
方法。
用于 prompt tuning
。
我们在十一个文本分类数据集上的实验结果表明,channel
模型的性能显著优于其 direct counterparts
。我们将 channel
模型的强大性能归因于其稳定性:在不同的 verbalizers
和随机数种子下,channel
模型相比较于其 direct counterparts
,具有更低的方差、显著更高的 worst-case accuracy
。此外,我们还发现 direct model with head tuning
(即,在固定其他参数的同时调优语言模型的 head
参数),效果出奇地好,通常优于其他形式调优的 direct model
。虽然在不同的条件下可以选择不同的方法,但是在训练数据不平衡、或需要泛化到 unseen labels
时,具有 prompt tuning
的 channel
模型(称为 channel prompt tuning
)明显优于所有的 direct baselines
。
总结起来,我们的贡献有三个方面:
我们引入了一种 noisy channel
方法来进行 language model prompting
在 few-shot text classification
中的应用,表明它们在 demonstration
方法和 prompt tuning
方面明显优于其 direct counterparts
。
我们发现在训练数据不平衡、或需要泛化到 unseen labels
时,channel
模型相较于 direct models
表现出特别强的性能。
基于大量的消融实验,我们根据给定的条件(如目标任务、训练数据的大小、类别的数量、训练数据中标签的平衡性、以及是否需要泛化到 unseen labels
),提供了在不同模型(direct vs. channel ; prompt tuning vs. head tuning
)之间的选择建议。
head tuning
就是微调,prompt tuning
就是continus prompt tuning
,demonstration
就是传统的prompts
方法。
相关工作:
Channel Model
:设 direct models
,计算 noisy channel models
最大化 noisy channel
方法在机器翻译领域取得了最大的成功,但它也在更一般的自然语言处理任务中进行了研究。先前的研究提供了 channel
模型比它们的 direct counterparts
更快地接近其渐近误差的理论分析 (《On discriminative vs. generative classifiers: A comparison of logistic regression and naive bayes》
),并通过实验证明在文本分类、问答以及 few-shot
设置中,channel
模型对 distribution shift
更具鲁棒性。
本文使用大型语言模型在广泛的文本分类任务中探索 channel
模型,重点是 prompt-based few-shot learning
。
Few-shot Learning
:在 few-shot learning
中,先前的研究采用了不同的方法,包括具有数据增强或一致性训练的半监督学习、以及元学习。最近的工作引入了对大型语言模型的 prompting
(或 priming)
)。例如, GPT-3
提出使用训练样本的拼接作为 demonstration
,这样当其被放到输入之前并馈入模型时,模型将按照训练样本中的模式返回输出。这种方法特别有吸引力,因为它消除了更新语言模型参数的需要,而更新参数通常是昂贵的和不切实际的。随后的研究提出了通过更好的 model calibration
来 scoring labels
的替代方法 (《Calibrate before use: Improving few-shot performance of language models》
、《Surface form competition: Why the highest probability answer isn’t always right》
),或者学习更好的prompts,
,无论是在离散空间还是连续空间。几乎所有这些方法都是 direct models
,计算在给定具有 prompts
的输入
我们的工作与两篇最近的论文密切相关:
《Improving and simplifying pattern exploiting training》
(即,ADAPET
)研究了面向 masked language models
的 label-conditioning objective
;虽然这不是严格的 generative channel model
,但是以输出 discriminative objective
,并且在测试时的推理与 direct model
相同。
《Surface form competition: Why the highest probability answer isn’t always right》
探索了一种 zero-shot
模型,该模型基于 Pointwise Mutual Information
来计算给定
据我们所知,我们的工作是第一个使用 noisy channel model
从而在分类任务中用于语言模型 prompting
,并且首次将其与 noisy channel
文献联系起来。
我们聚焦于文本分类任务。我们的目标是学习一个 task function
Direct
:直接计算在给定输入
Direct++
:更强的 direct model
,遵从 《Surface form competition: Why the highest probability answer isn’t always right》
和 《Calibrate before use: Improving few-shot performance of language models》
,它计算
这种方法的动机是:语言模型可能存在校准不佳的问题,并且在具有相同含义的不同字符串之间存在竞争。这种方法被用于本文稍后的 demonstration
方法中。
这里
NULL
表示无效的输入,如空字符串、"NULL"
字符串、或者任何其它的随机字符串。
Channel
:使用贝叶斯公式来重新参数化
是否可以让
不遵从均匀分布,而是每个类别在训练集中出现的概率?可以试一试。
我们使用因果语言模型(causal language model
)direct model
和 channel model
,其中因果语言模型给出了在给定文本
在学习 task function
verbalizer
"A three-hour cinema master class"
,而一个 verbalizer
"It was great"
、和 "It was terrible"
。在 few-shot
设置中,我们还给定了一组
我们感兴趣的是这样的方法:没有可训练参数、或者可训练参数的数量非常小(通常小于总参数量的 0.01%
)。这是根据之前的观察结果得出的,即为每个任务更新和保存大量参数是昂贵且常常不可行的。
Demonstration
方法:在 demonstration
方法中,没有可训练参数。我们探索了三种预测方式,如 Table 1
所总结的。
zero-shot
:我们遵循 GPT-3
的方法,计算 "A three-hour cinema master class"
:
direct model
计算 "A three-hour cinema master class"
之后分别跟随 "It was great"
的概率、以及 "It was terrible"
的概率。
channel model
计算 "It was great"
之前是 "A three-hour cinema master class"
的概率,以及 "It was terrible"
之前是 "A three-hour cinema master class"
的概率。
concat-based demonstrations
:我们遵循 GPT-3
的 few-shot learning
方法。关键思想是将 task setup
。最初的方法是用于 direct model
,但可以自然地扩展为 channel model
。具体而言:
direct model
中的
channel model
中的
ensemble-based demonstrations
:我们提出了一种新的方法作为concat-based demonstrations
的替代方案,我们发现这个新方法是一个更强大的 direct model
。与将
具体而言:
direct model
中的
channel model
中的
这种方法还降低了内存消耗:基于拼接的方法的内存复杂度为 《Calibrate before use: Improving few-shot performance of language models》
、《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》
)。
Tuning
方法:我们还探索了仅调优少量模型参数的方法,如 Figure 2
所总结的。我们研究了 direct models
的 head tuning
和变 transformation tuning
。我们还考虑了针对 direct models
和 channel models
的 prompt tuning
方法,分别称为 direct prompt tuning
和 channel prompt tuning
。在训练和推理过程中,所有模型与 Table 1
中的 zero-shot setup
共享相同的 input-output
接口。
head tuning
: head tuning
是对 head
进行微调的过程,head
是语言模型的一个矩阵,该矩阵将最后一个 Transformer layer
的 hidden representation
转换为 logit values
。设 head
矩阵,Transformer layer
的 hidden representation
。对于 token
embedding
矩阵相绑定,但在 head tuning
过程中我们将它们独立开来。
transformation tuning
:作为 head tuning
的替代方法,我们使用一个新的变换矩阵 token
prompt tuning
: prompt tuning
是最近引起了广泛关注的方法。其核心思想是将语言模型视为一个黑盒模型,然后学习 continuous prompt embeddings
。我们遵循 《The power of scale for parameter-efficient prompt tuning》
的方法,将 prompt tokens
embedding
。换句话说:
direct models
计算
channel models
计算
在语言模型中的参数除了 embedding
之外都被冻结。
这里是
zero-shot
的格式。是否可以引入few-shot
?
数据集:十一个文本分类数据集,包括 SST-2
、SST-5
、MR
、CR
、Amazon
、Yelp
、TREC
、AGNews
、Yahoo
、DBPedia
、Subj
。这些数据集每个任务包含不同数量的类别,从 2
个类别到 14
个类别。数据集的统计如 Table 2
所示。
训练数据:对于 few-shot learning
,我们主要使用训练集大小 《Making pre-trained language models better few-shot learners》
、《Cutting down on prompts and parameters: Simple few-shot learning with language models》
),以进行更真实的和具有挑战性的评估。
我们遵循之前工作中的所有超参数和细节(附录 B
),这样就不需要 held-out validation set
。非常有限的数据更适合用于训练而不是验证,当验证集非常小的时候,交叉验证的效果较差(《True few-shot learning with language models》
)。
语言模型:我们使用 GPT-2
作为语言模型。我们主要使用 GPT-2 Large
,但在附录 C
的消融实验中还尝试了不同大小(Small, Medium, Large, XLarge
)。虽然我们只在 GPT-2
上进行了实验,但我们的实验很容易扩展到其他因果语言模型上。
评估:我们使用准确率作为所有数据集的评估指标。
我们尝试了 4
种不同的 verbalizers
(取自《Making pre-trained language models better few-shot learners》
;完整列表请参见附录 A
),使用 5
个不同的随机种子进行训练数据采样,并使用 4个
不同的随机种子进行训练。然后我们报告平均准确率和worst-case
准确率。鉴于 few-shot learning
模型的显着高方差(如前期工作所示),worst-case
准确率与平均准确率同样重要。在高风险应用中,worst-case
准确率可能更受关注。
其他实现细节请参见附录 B
。所有实验都可以从 github.com/shmsw25/Channel-LM-Prompting
进行复现。
Demonstration Methods
的实验结果:Table 3
显示了 demonstration
方法的性能。
Direct vs. Direct++
:在所有设置中,Direct++
明显优于朴素的 direct model
,这表明使用 《Surface form competition: Why the highest probability answer isn’t always right》
和 《Calibrate before use: Improving few-shot performance of language models》
所声称的那样。
Concat vs. Ensemble
:我们提出的 ensemble-based
方法在 direct model
中优于 concat-based
的方法,平均准确率和 worst-case
准确率分别提高了 7%
绝对值,这是在所有数据集上进行 macro-averaged
的结果。
相反,在 channel models
中,ensemble-based
方法并不总是更好;它只在输入较长的数据集上表现更好。我们推测, ensemble-based
方法在训练数据中的标签不平衡时可能会受到影响,而 Direct++
则明确考虑了这一点,正如 《Calibrate before use: Improving few-shot performance of language models》
所描述的那样。
Direct++ vs. Channel
:在 few-shot setting
中,channel models
在几乎所有情况下优于 direct models
。最强的channel models
相对于最强的 direct models
,平均准确率和 worst-case
准确率分别提高了 3.1%
和 7.2%
绝对值。
标准差和 best-case
准确率在 Table 11
和 Table 12
中报告。它们表明 channel models
的强大性能可以归因于其低方差。大多数数据集上 Direct++
实现了最高的 best-case
准确率,但它具有更高的方差,平均准确率和 worst-case
准确率低于 channel models
。
Zero-shot vs. Few-shot
:direct models
在 few-shot
设置中的性能有时会下降,这也是之前的研究所观察到的(《Calibrate before use: Improving few-shot performance of language models》
)。这可能是因为训练数据提供的demonstrations.
导致模型校准错误,并容易受到 demonstrations
选择的偏见。然而,channel models
在所有数据集上实现了明显优于 zero-shot
方法的 few-shot
性能。
Tuning Methods
的实验结果:Table 4
显示了 tuning
方法的性能。
prompt tuning
的比较:在使用 prompt tuning
时,channel models
在所有数据集上始终以较大的优势优于direct models
。平均准确率和worst-case
准确率的改进分别为 13.3%
和 23.5%
的绝对值。
标准差和 best-case
准确率在 Table 13
中报告。与前面的发现一致,channel prompt tuning
的强大性能可以通过其低方差来解释:direct prompt tuning
通常可以实现更高的 best-case
准确率;然而,由于其高方差,其整体准确率较低,worst-case
准确率显著降低。
head tuning vs. prompt tuning
:我们发现,head tuning
是一种非常强大的方法,尽管在以前的工作中通常被忽略从而未被作为一个基准。它在所有情况下明显优于 direct prompt tuning
。它在一些数据集上也优于 channel prompt tuning
,特别是在 TREC
和 Subj
数据集上显著优于channel prompt tuning
。对于这些数据集,任务(如,找到问题的答案类型、或识别陈述句 subjectivity
)与语言建模本质上不同,可能受益于直接更新语言模型的参数,而不是将语言模型作为黑盒使用。
然而,channel prompt tuning
在大多数数据集上优于 direct head tuning
。最大的收益出现在 Yahoo
和 DBPedia
数据集上。事实上,在这些数据集上,channel prompt tuning
甚至优于 all funetuning
(对语言模型的所有参数进行微调),在Yahoo
上达到 48.9/43.8
,在 DBPedia
上达到 66.3/50.4
。我们推测,在这些数据集上使用 unseen labels
进行泛化,因为类别数目较大( 10
和 14
),在这些情况下,channel prompt tuning
在显著优于direct models
。
消融研究:对于消融实验,我们在 SST-2
、MR
、TREC
和AGNews
数据集上报告了实验结果,使用一个训练种子(而不是四个)、四个 verbalizers
、和五个数据种子(与 main experiments
相同)。
改变训练样本数量:我们改变训练样本数量(Figure 3
所示。所有方法中,随着
我们确认了 channel prompt tuning
在 head tuning
的性能优于 channel head tuning
。
当 direct prompt tuning
和 direct head tuning
都优于 channel prompt tuning
。我们认为这是因为:
首先,channel models
放大的训练信号(《Generative question answering: Learning to answer the whole question》
)在
其次,channel models
在标签分布不平衡时对结果更有裨益(在下一个消融实验中得到证实),这在较小的
值得注意的是,我们的 《The power of scale for parameter-efficient prompt tuning》
的发现,即 direct prompt tuning
的性能与 all finetuning
(对语言模型的所有参数进行微调)相媲美,而参数效率更高。这只有在 few-shot setup
中,all finetuning
明显优于其他方法。这与传统分析相矛盾,传统分析认为当训练数据稀少时,可训练参数更少的表现会更好(《On discriminative vs. generative classifiers: A comparison of logistic regression and naive bayes》
)。这可能是因为这样的分析没有考虑到语言模型预训练,其中预训练为模型提供了监督,但不是终端任务的训练数据。
标签不平衡的影响:在二分类数据集(SST-2
和 MR
)上,我们用 upsampling baselines
进行了比较,其中我们对 infrequent
标签的训练样本进行上采样,以便模型在训练期间看到每个标签的训练样本数相等。结果在 Figure 4
中报告。
所有 direct models
对训练数据的不平衡都很敏感,即使在
channel prompt tuning
对不平衡不敏感,在 direct models
;当 all finetuning
。
当 0.5
时,direct head tuning
与channel prompt tuning
相当或优于后者。
值得注意的是,在 direct prompt tuning
与 all finetuning
和 head tuning
相当或优于后者。
泛化到 unseen labels
:我们在一个具有挑战性的场景下进行实验,其中模型必须泛化到未见的标签。尽管这可能看起来是一个极端的场景,但这通常是一个实际的设置,例如,问题是用一组标签定义的,但以后可能需要添加新标签。
首先,我们像 main experiments
一样采样 Table 5
报告了结果。
所有 direct models
都无法预测在训练时未见的标签。
然而,channel prompt tuning
可以预测未见的标签,并且其性能明显优于 zero-shot
。它在二分类数据集上优于 all finetuning
,在五个数据集上优于 head tuning
(除了在 TREC
数据集上head tuning
对见过的标签取得了非常强的性能)。
接下来,我们进行 zero-shot transfer learning
,其中模型在一个数据集上训练,并在另一个数据集上测试。在这里,当标签在两个数据集之间不共享时,head tuning
不适用。Figure 5
显示了结果。channel prompt tuning
在除了 TREC
的所有数据集上优于所有 direct models
,包括 all finetuning
。
当任务本质上相似时,channel prompt tuning
特别具有竞争力,例如,在Figure 5
中的前三个图中,在二分类情感分析和五分类情感分析之间的迁移。实际上,在这种情况下,性能接近在 in-domain
数据上训练的模型。
当任务本质上不同时,例如 Figure 5
中的其余图,性能相对于 zero-shot
的增益较小。
我们认为需要做更多工作,使跨任务迁移更好,并发现何时可能进行跨任务迁移。
我们在 11
个数据集上的实验表明,channel models
明显优于它们的 direct counterparts
,主要是因为channel models
的稳定性,即较低的方差和较好的 worst-case
准确率。我们还发现 direct head tuning
比以前工作认为的更具竞争力,并且不同的情况下倾向于选择不同的方法。具体来说,在以下方面首选 channel prompt tuning
:
channel prompt tuning
更具竞争力。我们推测有两个原因:
首先,channel models
更稳定(即,实现低方差和高 worst-case
准确率),而 direct models
在
其次,channel models
通过要求模型逐字解释输入来提供更多信号(《Generative question answering: Learning to answer the whole question》
的说法),这在低数据的情况下是有利的。
数据不平衡或 direct models
没有竞争力。我们认为这是因为 LM head
过于依赖标签的 unconditional distributions
。训练数据的标签不平衡是一个现实世界的问题,特别是当
需要泛化到 unseen
标签:所有 direct models
都无法预测在训练期间 unseen
标签,这表明它们在标签空间中过拟合。相比之下,channel models
可以预测 unseen
标签,可能是因为标签空间是被间接建模的。这与先前的工作一致,该工作表明 channel models
在 distribution shift
下更具竞争力 (《Generative and discriminative text classification with recurrent neural networks》
、《Generative question answering: Learning to answer the whole question》
)。
任务更接近语言建模:即使采用仔细选择的 verbalizer
,如果任务与语言建模也差异太大(例如,TREC
和 Subj
),head tuning
优于 prompt tuning
。这可能是因为 head tuning
受益于直接更新语言模型的参数。这可能意味着因果语言模型不适合所有任务,或者我们需要更复杂的方法在不更新语言模型参数的情况下,来应用因果语言模型进行此类任务。
局限性和未来工作:虽然我们表明 channel models
在 few-shot
文本分类中具有竞争力,但仍有一些局限性。
首先,将 channel models
用于非分类任务并不那么简单,因为建模先验分布是困难的。我们认为未来的工作可以通过一个单独的模型获得先验分布,并将其融入 conditional LM
,就像 《Generative question answering: Learning to answer the whole question》
那样做的,可能与 beam search decoding
相结合(如,《The neural noisy channel》
、《Simple and effective noisy channel modeling for neural machine translation》
)。
其次,虽然本文重点介绍了因果语言模型,但如何与 masked LM
一起使用 channel models
是一个开放性问题。虽然我们认为 channel model
与 causal LM
没有固有的限制,但现有的 masked LM
的特定预训练方式使其难以在不更新语言模型的参数的情况下使用 channel models
,例如,masked LM
没有被训练用于生成长句子。最近的一种方法( ADAPET
) 使用 label-conditioning objective
作为巧妙的方式将 channel-like model
引入现有的 masked LM
。扩展和进一步整合这些不同的方法对于在更广泛的场景中使用 channel models
非常重要。
论文:
《True Few-Shot Learning with Language Models》
语言模型预训练的主要进展导致了语言模型可以只用少量的样本来学习一个新的任务,也就是 few-shot learning
。few-shot learning
克服了数据丰富的监督学习的许多挑战:收集标记的数据是昂贵的、往往需要专家、而且关于任务数量的 scale
很差。然而,语言模型的 few-shot
对文本任务的描述(即,"prompt
")、训练样本的顺序、解码策略、其他超参数、以及学习算法本身非常敏感。因此,有效的模型选择(model selection
)对于获得良好的 few-shot
性能至关重要。
然而,最近的工作在 few-shot learning
的模型选择方面存在一些问题。之前的工作使用了大量的训练样本或 held-out examples
来选择 prompts
(GPT-3
、ADAPET
、《Learning transferable visual models from natural language supervision》
)和超参数(《Improving and simplifying pattern exploiting training》
)。其他工作声称没有使用验证集来选择超参数(ADAPET
、《Few-shot text generation with pattern-exploiting training》
、《Entailment as few-shot learner》
),但没有描述他们如何设计学习算法的其他方面(如 training objectives
)。考虑到所提出的算法的复杂性质,不太可能不使用验证集。在这项工作中,我们研究了当只使用所提供的样本进行模型选择时,先前的 few-shot learning
方法是否仍然表现良好,我们称这种设置为 true few-shot learning
。
我们发现,true few-shot model selection
产生的 prompts
略微优于随机选择,而大大低于基于 held-out examples
的选择。我们的结果表明,之前的工作可能大大高估了语言模型的 few-shot
。换句话说,prompts
如此有效的一个原因是它们经常使用许多样本进行调优(《How many data points is a prompt worth?》
)。我们评估了两个标准的模型选择准则:交叉验证(cross-validation: CV
)和最小描述长度(minimum description length :MDL
)。我们发现这两个准则与随机选择相比只获得了有限的改进,而且比使用 held-out examples
进行模型选择要差很多。对于 prompt selection
,我们的观察结果对 9
个语言模型(模型规模横跨 3
个数量级)在 3
个分类任务和 LAMA
基准的 41
个任务中都是成立的。对于选择超参数来说,true few-shot selection
会导致 ADAPET
(一种 SOTA
的 few-shot
方法)在 8
个任务中的性能下降 2-10%
。此外,true few-shot
模型选择在性能上有很高的方差;所选择的模型往往比随机选择的模型差很多。我们发现在改变所使用的样本数量、计算量和我们的选择准则的保守性(conservativeness
)时也有类似的结果。总的来说,我们的结果表明,模型选择是 true few-shot learning
的一个基本障碍。
结合这篇论文的观点,一个自然的想法是:既然验证集那么重要,那么是否可以始终拆分一部分样本作为验证集?
进一步的思考是:对于不同的算法,应该在相同数据量(训练集 + 验证集)的条件下进行比较。
我们把 few-shot learning
分为三种不同的情况,每一种情况都假定了对不同数据的访问。在此,我们对这些环境进行了正式的区分,以帮助未来的工作避免无意中比较在不同 settings
下执行的 few-shot
方法。
考虑到监督学习的情况,我们有一个由输入 learning
算法 prompts
。
data-rich supervised learning
:在 data-rich supervised learning setting
下,train-validatin split
multi-distribution few-shot learning
:由于大的 few-shot setting
用许多小的 setting
为 multi-distribution few-shot learning
。
tuned few-shot learning
:最近的工作并不假定可以从其他分布中获取数据,只使用单个分布中的几个样本来更新 pretrained LM
(GPT-3
、ADAPET
)从而进行 few-shot learning
。这些论文使用一个大的验证集 learning
算法 tuned few-shot learning
。
例如,GPT-3
尝试用不同的措辞和训练样例数量来提高 GPT-3
的验证准确率。ADAPET
根据验证结果选择 early stopping iteration
、prompt
和其他特定模型的超参数。
tuned few-shot learning
依赖于许多标记样本,所以我们认为 tuned few-shot learning
并不符合 few-shot learning
的要求。如果有许多验证样本,它们可以被纳入训练集,并使用 data-rich supervised learning
进行训练。tuned few-shot learning
算法应该与使用相同数量的总数据 data-rich supervised learning
算法进行比较。
在这项工作中,我们评估了在没有大的 tuned few-shot learning
方法的成功,我们称之为 true few-shot learning
。从形式上看,我们的目标是选择一种具有低的期望损失
有几篇论文声称,通过选择基于有根据的猜测的超参数,可以避免评估 PET
、PET-2
、《Entailment as few-shot learner》
)。然而,所提出的学习算法本身是相当复杂的,如果不是通过使用 validation
性能,还不清楚它们是如何设计的。
其他的工作是先用一个或多个其他数据集来选择学习算法和超参数,然后再对目标数据集进行评估(LM-BFF
、《Few-shot text generation with pattern-exploiting training》
)。这类方法属于multi-distribution few-shot learning
,不能直接与试图进行 true few-shot learning
的方法进行比较,尽管之前的工作已经进行了这种比较(《Entailment as few-shot learner》
)。
接下来,我们将描述两个模型选择准则:交叉验证、最小描述长度。我们用这两个准则来评估 true few-shot setting
中的 tuned few-shot
方法。
Cross-validation: CV
:交叉验证是估计泛化损失的最广泛使用的方法之一。交叉验证也被用于先前的 multi-distribution few-shot learning
的工作中。
交叉验证将 folds
fold
folds
其中 1
到 K
之间的均匀分布。
这样一来,交叉验证从标记样本集合中形成了 train-validation splits
。 每个 fold
刚好只有有一个样本的 CV
通常被称为leave-one-out CV: LOOCV
。
Minimum description length: MDL
:MDL
可以通过评估在前面的 folds
fold
这个过程被称为 "在线编码" (《Universal coding, information, prediction, and estimation》
、《Present position and potential developments: Some personal views: Statistical theory: The prequential approach》
),因为它评估了算法的泛化损失,因为它从越来越多的数据中 "在线"学习。我们使用在线编码,因为它已经被证明是估计 MDL
的有效方法,特别是对于深度学习方法(《The description length of deep learning models》
)。
MDL
衡量泛化,因为它评估了一个学习算法在输入 《Occam’s razor》
)。最近的工作使用 MDL
来确定哪些学习算法在解释给定数据方面最为有效。
方差问题:我们评估 CV
(或者 MDL
)所选择的算法的泛化损失:
表示:考虑所有可能的 folds
拆分、以及所有可能的随机性之后,使得平均验证集最小的那个模型。通俗地讲,就是通过 折交叉验证得到的 final model
。注意:
并不会参与到 折交叉验证的过程中。
该损失的期望应该是低的,其中期望跨不同的数据 splits
该损失的方差也应该是低的:
低方差意味着 CV/MDL
可以可靠地选择一种算法:当用给定的
我们还尝试在模型选择过程中显式地考虑算法的方差,选择 CV
的保守估计,即
其中:
物理含义:选择模型时,不是选择
dev
损失最小的,而是选择dev
损失加上倍标准差最小的。
具体而言,如果当采样 Watanabe Akaike Information
(《Asymptotic equivalence of bayes cross validation and widely applicable information criterion in singular learning theory》
) ,它将模型(用
超参数
怎么调?本来验证集的规模就不足,这又引入了一个新的超参数。
其它的 model selection
准则:之前的工作已经开发了其他的 model selection
准则,如:Akaike Information Criterion: AIC
、Watanabe-Akaike Information Criterion: WAIC
、以及 Mallows’ Cp
。 这些方法往往依赖于深度学习中没有的假设或数值(AIC, Mallows' Cp
),或者是 LOOCV
的近似值(WAIC
)。由于 SOTA
的 few-shot learning
方法往往是基于深度学习的,我们专注于 CV
和 MDL
作为我们的 model selection
准则。在附录 B
中,我们还测试了其他几个适用于深度学习方法的准则。
selection
准则可以自动优化,例如用贝叶斯优化、进化方法、强化学习、或梯度下降。这类方法的目的是与穷举搜索的性能相匹配,这是最佳方法(在我们的工作中使用)。
下面,我们对 LAMA
进行测试。LAMA
是一个用语言模型来检索事实的 benchmark
,之前的工作已经为其开发了许多 designing prompts
的策略。我们使用 "TREx" split
,其中包括 41
种关系,每种关系最多有 1k
个样本。我们只使用 LAMA-UnHelpfulNames
子集中的样本,该子集过滤掉了容易猜测的样本(例如,"The Apple Watch was created by _"
,答案是苹果)。
我们测试了 9
个不同规模的热门语言模型的 5-shot accuracy
:GPT-3
(175B, 13B, 6.7B, 2.7B
参数)、GPT-2
(1.5B, 782M, 345M, 117M
参数)、以及 DistilGPT-2
(GPT-2 117M
的知识蒸馏版本,包含 82M
参数)。
Prompts
:为了形成我们的候选 prompts
集合 LAMA
以及 LM Prompt And Query Archive: LPAQA
。对于每种关系,我们使用来自 LAMA
的手工写的 prompts
,再加上 LPAQA
的 prompts
。 LPAQA
的 prompts
来自于:用 back-translation
的方式 paraphrasing manual prompt
、从 Wikipedia
中挖掘、从 top mined prompt
中 paraphrasing
。
对于每种关系,我们最多使用 16
个 prompts
,平均为 12
个 prompts
(关于我们使用的 prompts
的细节,见附录 E.1
)。
计算 CV
和 MDL
:我们在所有 held-out
样本上计算负对数似然从而作为损失函数
我们使用
边际化(marginalizing
)样本顺序:训练样本的顺序影响到语言模型的泛化(《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》
),因此我们将样本顺序视为一个随机因子 prompt
我们通过对所有
为了进行比较,我们展示了各种情况下的 test accuracy
:
总是选择最好的 prompts
,像以前的工作一样使用 held-out accuracy
来选择。
最差的 prompt
作为一个下限。
随机 prompts
(我们展示了所有 prompts
的平均准确率)。
在 true few-shot learning
中,prompt selection
的表现如何:Figure 1(left)
显示了结果:
在不同的模型规模下(横跨三个数量级),prompt selection
比 random selection
获得了 marginal improvement
。
通过 CV
和 MDL
选择的 prompts
平均比 best prompt
(根据 held-out
数据来选择的)在绝对值上少5-7%
。事实上,根据 held-out performance
选择的 prompts
往往优于那些以 true few-shot
选择 prompts
的大型模型。如 Figure 1(right)
所示,CV
和 MDL
确实倾向于选择比平均水平更好的 prompts
,但只能将平均水平和 best prompts
之间的差距缩小 20-40%
。我们发现其他几个任务(参考后面的实验章节)和选择准则(参考附录 B
)也有类似结果。
Figure 2(left)
显示,CV/MDL
在选择具有最高 test accuracy
的 prompts
时很费劲。对于像 GPT-3 175B
这样的大型模型来说,糟糕的 top-prompt selection
尤其普遍,这些模型激发了人们对 prompt design
的兴趣( CV
只有 21%
的准确率,而随机选择只有 9%
的准确率)。在附录 A
中,我们表明,CV/MDL
选择的 prompts
不仅在准确率上与 best prompts
不同,而且在它们如何有效地迁移到不同大小的模型上也不同。总的来说,我们的研究结果表明,在 true few-shot setting
中,optimal prompt selection
是困难的,而且以前的工作通过使用 held-out examples
来进行 prompt selection
高估了语言模型的能力。
prompt selection
比 average prompt
有多大的可靠改进:如果 prompt selection
的平均改进很小,那么对于一个给定的任务和训练集,我们至少能以高概率获得改进吗? Figure 1(left)
显示,最差的 prompts
比平均水平差得多,因此,如果 prompt selection
有助于避免最差的 prompts
,那将是非常有用的。我们研究了 prompt selection
比 average prompt
获得各种 accuracy gains
的概率,并在 Figur2 (middle)
中显示了 CV
的结果(在附录 C
中显示了 MDL
的类似结果)。
相对于 average prompt
,CV/MDL
所选择的 prompts
在 test accuracy
方面显示出很高的方差。
对于大多数模型的大小(0.1B-6.7B
),CV
和 MDL
比平均的、随机选择的 prompt
提高的机会只有大约 56%
,MDL
只有大约 55%
。
prompt selection
的性能形成了一个长尾分布:对于所有的模型大小和 CV/MDL
,有大约 27%
的机会使得 prompt selection
导致 ~ 13%
的 accuracy drop
。此外,随着模型大小的增加,尾巴也越来越重。
对于最大的模型(GPT-3 175B
),CV/MDL
选择的 prompts
有时比平均水平差得多,例如,有 5%
的时间差 40%
。
我们的结果表明了一个令人不安的趋势:随着模型越来越大,泛化性越来越好,我们可靠地选择 good prompts
的能力就会下降。一个可能的解释是,更大的模型有能力画出更复杂的决策边界,需要更多的样本来估计 unseen examples
的 true expected loss
;我们可能需要随着模型的大小的增加来扩展验证集。在后续内容中,我们展示了其他几个任务的类似结果。总的来说,在 true few-shot setting
中,不能以任何合理的信心预期来自 prompt selection
的有限的 average-case gains
,这个问题只会随着更大的模型而变得更糟。
我们能不能提高 prompt selection
带来的性能改善的概率: 正如我们所表明的,CV
和 MDL
并不能可靠地选择比平均水平更好的prompts
。在此,我们探讨了通过明确地倾向于低方差的 prompts
,我们可以在多大程度上减少 generalization loss
的方差。对于最大的模型(GPT-3 175B
),我们根据 generalization loss
的保守估计 prompts
。我们展示了以不同的置信度 CV
(prompts
的 test accuracy
。
如 Figure 2(right)
所示,所有的 CV
相似的性能增益分布。例如,CV
在 50%
的时间内优于 average prompt
,而 51%
的时间内优于 average prompt
。这些结果表明,当明确地将 generalization loss
的方差降到最低时,选择可靠地表现得比随机选择更好的 prompts
也是有意义的。
prompt selection
是否随着更多的标记样本而改善:prompt selection
的不良表现可能是由于使用了如此少数量的标记样本。随着标记样本的数量的增加,我们期望 prompt selection
能够得到改善。因此,true few-shot prompt selection
可能会在几十个样本中实现(尽管由于 GPT
等语言模型的输入长度限制,并不总是能够使用更多的样本)。因此,当我们使用越来越多的标记样本 CV/MDL
选择的 prompts
的 test accuracy
。
对于 120
种排列组合(以匹配 held-out CV fold
的次数相同)。我们对 6.7B
的参数模型进行实验,因为通过 OpenAI API
运行更大的模型,成本太高。
如 Figure 3
所示,无论是从任务表现(左图)还是从 highest accuracy prompt
(右图)来看,prompt selection
的表现没有一致的趋势。
即使在更高的数据区域(40
个样本),CV/MDL
也很难选择有效的 prompts
;而且在不同的模型规模下,也没有一致的表现,比基于 5
个样本的选择更好。我们的发现是令人惊讶的,因为由于训练数据的稀缺性,true-few shot setting
是 prompt design
被认为最有希望的地方(《How many data points is a prompt worth?》
)。然而,true few-shot setting
也是 prompt selection
最困难的地方,大大削弱了 prompts
的潜在价值。
prompt selection
是否随着更多的计算而改善:在前面的章节中,我们使用固定数量的 prompt selection
,但代价是增加计算量?为了回答这个问题,我们改变了用于计算上述期望值的 LM
的 forward passes
),并选择 prompts
。为了用单次 forward pass
来估计 CV
,我们采样单个 fold
folds
上为条件的 LM
时,fold
Figure 4
显示了在 GPT-3 6.7B
的结果。
计算并不是 prompt selection
的瓶颈,因为 MDL
的 test accuracy
在一次forward pass
后大致趋于平稳, CV
的 test accuracy
在 forward pass
后也是如此。这一观察结果在所有的 6.7B
参数的模型都成立(因篇幅关系省略)。我们的结果表明,true few-shot prompt selection
从根本上受到可用样本数量的限制。
Prompt Selection
在其他任务中是否具有挑战性:我们现在研究我们在 LAMA
任务上的结果在其他类型的NLP
任务上的适用程度。我们研究了三个分类任务,之前的工作已经为其设计了各种prompts
: Recognizing Textual Entailment: RTE
、CommitmentBank: CB
、Word-in-Context: WiC
。RTE
和 CB
涉及检测一个句子是否蕴含或矛盾另一个句子,而 WiC
涉及确定一个多义词是否在两个句子中使用相同的意义(例如,"Room and board"
和 "He nailed boards across the windows"
中的 "board"
)。进一步的任务细节见附录 E.2
。
当使用由 CV、MDL、test accuracy
选择的 prompts
时,我们评估GPT
模型的准确率,正如我们对 LAMA
所做的那样。对于每个任务,我们在使用从任务训练集随机采样的 5
个训练样本时,使用完整的验证集来评估 hold-out accuracy
,同时确保每个类别至少包括一个样本。我们评估了 5
个训练集的误差均值和方差。作为我们的 prompts
集合,我们使用来自 GPT-3
原始论文和 PET-2
的手动编写的 prompts
:RTE/CB
的 3
个 prompts
、WiC
的 4
个 prompts
。PET-2
为双向语言模型设计了 prompts
,因此在必要时,我们将他们的 prompts
修改为适合从左到右的语言模型(见附录E.2
的 prompts
)。Figure 5
显示了在每个任务中所选择的 prompts
的准确率。
我们观察到与之前类似的趋势,即在不同的任务和模型大小中,CV/MDL
所选择的 prompts
几乎总是获得比根据 test accuracy
选择更低的平均准确率。即使在更少的 prompts
中进行选择(这里是 3 ~ 4
个),这一趋势也保持不变。CV/MDL
所选择的 prompts
在不同的任务和模型大小中的 test accuracy
差异很大,经常选择比平均水平差的 prompts
(例如,在CB
上)。
通过显示prompt selection
获得比 average prompt
更多的各种 accuracy gains
的概率,我们更详细地检查所选 prompt
的准确率的差异。在这里,我们选择了使用 forward passes
的 CV
的 prompts
(每个 fold
评估一次),因为它代表了计算和准确率之间的一个很好的权衡,很可能会在实践中使用。如 Figure 6
所示,forward passes
又是高度分散的,往往是负面的,而且没有持续地实现提高。对于 CB
,GPT-3 175B
有 20%
的机会使得准确率下降 15%
。模型大小在 CV
选择的 prompts
导致改善的机会上有很大的不同,例如,对于 WiC
来说,从 38-82%
,对于 CB
来说,从 1-83%
。
总的来说,我们先前的发现可以延续到其他类型的任务中,这表明 prompt selection
在总体上是具有挑战性的。
在证明了 true few-shot prompt selection
是困难的之后,我们现在更普遍地研究在 hyperparameter selection
背景下的模型选择的有效性。我们研究了 ADAPET
模型(《Improving and simplifying pattern exploiting training》
),因为它是开源的,而且根据 SuperGLUE
,它是目前表现最好的 few-shot
模型。ADAPET
对预训练的 pretrained ALBERT_xxlarge-v2 LM
进行了微调,从而:
在给定的 input
条件下,将每个 label
分类为 correct/incorrect
。
在给定 label
和 unmasked input tokens
,预测被随机掩码的 input tokens
,类似于 Masked LM
(《BERT: Pre-training of deep bidirectional transformers for language understanding》
)。
ADAPET
是在 tuned few-shot learning
的背景下开发的,因为 ADAPET
的超参数是用 validation examples
来选择的。我们研究了 ADAPET
在 true few-shot setting
中的表现。
我们以 true few-shot
的方式选择了两个超参数:early stopping checkpoint
、用于 masked LM objective
的被掩码的单词的比例。ADAPET
在 batch size = 16
上执行 T = 1000
个梯度更新,并在 validation accuracy
的 checkpoint
。ADAPET
还选择了最佳掩码比例 ADAPET
,我们对 SuperGLUE
进行了评估。SuperGLUE
包括四个问答任务(BoolQ、COPA、MultiRC、ReCoRD
)、一个共指解析任务(WSC
)、两个蕴含性检测任务(RTE、CV
)和一个常识性推理任务(WiC
);任务细节见附录 E.2
。
我们使用 CV/MDL
来选择 16
种组合),然后用所选的 FewGLUE
,这是 SuperGLUE
的 32-example
子集,在之前的工作中用于 few-shot learning
。我们还使用了另外 3
个从 SuperGLUE
中随机采样的 32-example
子集,以估计不同训练集的性能方差。
ADAPET
在微调过程中使用了一个 prompt
,这是根据 validation examples
来选择的 prompt
。为了避免使用 validation-tuned prompts
,我们对每个任务使用第一个 prompt
,就像作者对消融研究所做的那样。由于训练 ADAPET
是昂贵的,我们用 fold
来评估 CV/MDL
。我们在 Table 1
中显示了结果。可以看到:
在所有的 SuperGLUE
任务中,CV/MDL
的 hyperparameter selection
的表现与平均(随机选择的)超参数相似或更差,比最佳超参数差几个点。
在 true few-shot setting
中,ADAPET
的平均 SuperGLUE
性能低于早期的方法(PET
和 iPET
),突出了使用 validation examples
如何在 few-shot learning
中给人以进步的假象。
在 MultiRC
上,CV/MDL
选择的超参数与最差的超参数有相似的性能,这也说明 model selection
方法在 true few-shot setting
中并不能始终如一地防止最差情况的发生。
附录 D
的初步分析表明,选择优于平均水平的超参数需要几千个样本。
总的来说,我们的结果表明,在数据量非常少的情况下,不仅是 prompt selection
,而且是一般的 model selection
,都具有挑战性。
我们的工作表明,只用几个标记样本来对 few-shot learning
算法做出最基本的决定也是有难度的。相反,做出额外的假设可能更有希望。
meta-learning setting
假定可以从许多其他任务中获取数据,以便进行 learning selection
和 model selection
。
迁移学习和多任务学习假设能够获得与任务直接相关的有限数据。
数据增强技术假定有一种可行的方法可以从有限的数据中创造更多的数据。
其他的方法是假设没有标记的数据,并开发无监督的 model selection
技术。
当标记的数据很便宜时,最简单的方法是假设有更多的样本用于验证。在这种情况下,我们可能更好地在额外的样本上进行训练。除非我们明确提出这样的假设,否则我们无法在 few-shot learning
算法之间进行有意义的比较。考虑到model selection
的挑战,我们发现上述途径是比 true few-shot learning
更有希望的未来方向。
受先前工作的启发,我们对未来 true few-shot learning
工作提出了建议:
报告所有考虑的超参数(prompts
)和超参数选择的准则。
将 validation examples
包括在 few-shot learning
算法所使用的样本数量中。 validation examples
包括所有的样本用于决定学习的任何方面:超参数、prompts
、训练目标、解码策略、模型结构等。
一旦你决定了 learning
算法,就直接提交你的模型进行测试评估,而不用先在 validation
数据上进行评估。汇报所进行的测试评估的总数量(理想情况下,只需一次)。只有在测试评估之后才使用验证集来报告任何消融实验,以避免用验证集对你的算法做出决定。
不要依赖以前的工作中的超参数,这些超参数是用同一 benchmark
(例如,SuperGLUE
)的 validation examples
来调优的,以避免间接受益于 validation examples
。相反,只用给定的 few-shot examples
来重新调优这种超参数。
上述协议是严格的,但却模仿了 true few-shot learning
算法在真实的、低数据环境中的使用方式。为了确保研究人员遵守这种严格的协议,未来的基准可能需要保持大型测试集的私密性,而只公布少量的标记的样本。
考虑到我们在 true few-shot learning
方面的负面结果,一个主要的问题仍然存在:在 true zero-shot setting
下,是否有可能选择模型?
之前的工作是通过选择一个任意的 prompt
(《Language models as knowledge bases?》
、《Lessons from a new suite of psycholinguistic diagnosticsfor language models》
)将语言模型用于 zero-shot learning
,这不需要数据,但却是次优的(《How can we know what language models know? 》
)。其他工作尝试多个 prompts
,并通过试错和人工评估从而在它们之间进行选择(《Language models are unsupervised multitask learners》
),有效地利用了人类监督。
正如我们从开源代码中注意到的,CLIP
在使用 ImageNet
的训练集( 1.28M
个样本)广泛地调优 prompts
和标签名称后,在 ImageNet
上实现了高的 zero-shot accuracy
。作者报告说,仅通过调优 prompts
就获得了 5% accuracy gain
,但是用于调优的训练样本在 true zero-shot learning
中是不可用的。
在没有任何标记数据的情况下,model selection
的问题甚至比真正的 true few-shot
更具挑战性。总的来说,我们的工作通过澄清 true few-shot setting
的假设,为未来的 few-shot learning
工作提供了指导,并从经验上证明了 model selection
是 true few-shot learning
的一个主要障碍。