十、Calibrate Before Use[2021]

论文:《Calibrate Before Use: Improving Few-Shot Performance of Language Models》

  1. few-shot learning (用有限的样本来学习任务的能力)是智力的一个重要方面。最近的工作表明,大型神经语言模型可以在不进行微调的情况下进行 few-shot learning 。具体来说,当被提供以自然语言 prompt 描述的几个样本时,GPT-3 可以执行许多任务。例如,为了进行情感分析,人们可以将 GPT-3 以一个 prompt 为条件,如:

    其中前两行对应两个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% )变为接近 SOTA93%)。这种不稳定性意味着 GPT-3 的用户(这些用户通常是手动设计 prompts),不能期望持续获得良好的准确率。

    我们接下来分析一下造成这种不稳定性的原因。我们确定了语言模型的三个缺陷,这些缺陷导致它们在 few-shot learning 期间偏向于某些答案。具体而言,它们受到 majority label biasrecency bias 、以及 common token bias 的影响。

    • majority label biasrecency bias 导致模型会预测在 prompt 中经常出现、或接近 prompt 末尾的 training answer 。例如,一个以 negative training example 结束的 prompt 可能会偏向于 negative class

    • 另一方面,common token bias 导致模型更倾向于在模型的预训练数据中经常出现的答案,例如,它更倾向于 "United States" 而不是 "Saint Lucia" 。这对于目标任务来说可能是次优的。

    我们发现,这些 bias 通常会导致模型的输出分布发生偏移。因此,我们可以通过 "校准" 输出分布来抵消这些 bias 。具体来说,我们通过输入一个content-freedummy test input 来估计模型对某些答案的 bias 。例如,在上面的 prompt 中,如果我们用 "N/A" 字符串替换 "Amazing." ,模型就会预测出 62% Positive 。然后我们拟合 calibration parameters ,使 content-free input 对每个答案都有统一的分数。这个 contextual calibration 程序提供了一个良好的 calibration parameters setting ,而不需要额外的训练数据。

    将噪音输入的 prediction 分布作为校正参数,对 test inputprediction 分布进行校正。

    我们在一系列的任务上测试了 contextual calibration 的有效性。在不同的 prompt format 和样本的选择中,contextual calibration 一致地提高了 GPT-3GPT-2 的准确率(绝对提升高达 30.0% )(如下图所示)。它还使准确率在不同的 prompt 中更加稳定,从而减轻了对 prompt engineering 的需求。总的来说,contextual calibration 是一种简单的方法,它使语言模型成为更好的 few-shot learners :它使终端用户能够以相当少的努力获得更高的准确率。

  2. 相关工作:

    • Few-shot Learning with Language Model:最近的工作使用语言模型来解决 NLP 任务,例如,story cloze predictionknowledge base completion 、和 Winograd schema

      GPT-2GPT-3 表明,大型语言模型可以通过 in-context learning 从而以 few-shot 的方式解决无数的任务。我们的论文对他们的 setting 提供了一个简单的修改从而提高性能。要求语言模型补全 natural language prompt 也作为一种方法从而 "probe" language model ,例如,分析事实性的知识或常识性知识。我们的结果表明,这些 probing 方法可能低估了模型的准确率,我们建议未来的工作利用 contextual calibration 的优势。

    • NLPFew-shot Learning 的波动性:最近的工作表明,当使用 masked language model (如 BERT )进行 zero-shot learning 时,prompt 的格式会影响准确率。独立且同时进行的工作也表明,当在 few examples 上微调 masked language model 时,prompted examples的选择会影响结果。我们表明,类似的不稳定性发生在 left-to-right language modelin-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》)。

10.1 背景和实验设置

  1. 神经自回归语言模型将 tokens 的一个序列作为输入,并输出 next token的概率分布。大型神经语言模型可以使用 in-context learningzero-shot/few-shot 的方式执行任务(GPT-2, GPT-3 )。为此,一个自然语言的 prompt 被馈入模型。这个 prompt 包含三个部分:format 格式、一组prompted examplesprompted examples的排列顺序(ordering )。

    • Prompt Formatprompt format 是一个模板,由占位符(针对prompted examples和测试样本)和任务的自然语言描述(这个描述也可能不存在)组成。例如,前面章节中的 prompt format 是一个具有以下风格的模板: "Input:" input "Sentiment:" label。还有许多其他的格式,例如,我们可以把任务设定为问答任务。

    • Prompt Training Examplesprompted 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"

  2. 数据集和 prompt format :我们将数据集用于三个任务:文本分类、事实检索、信息提取。除非另有说明,我们对每个数据集都使用固定的 prompt format ,这些格式如下表所示。

    • 文本分类数据集:用于情感分析的 SST-2、用于问题分类的 TREC 、用于 textual entailmentCB、来自 SuperGLUERTE、用于话题分类的 AGNewsDBPedia

    • 事实检索数据集:LAMA 数据集。该数据集由 knowledge base 三元组 (subject, relation, object) 组成,这些三元组被放置在带有缺失 object 的模板中,例如 "Obama was born in" 。我们使用这些模板作为我们的 prompt ,并删除 missing answer 不在模板末端的样本( left-to-right 的语言模型只能解决 missing answer 在模版末尾的问题)。答案总是 single token ,我们报告了所有三元组的平均准确率。

    • 信息提取数据集:两个 slot filling 数据集,即 ATISMIT 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 作为我们的评估指标。

  3. 模型细节:我们在三种规模的 GPT-32.7B/13B/175B 参数)以及 GPT-21.5B 参数)上运行我们的实验。我们使用 OpenAIAPI 访问 GPT-3 。我们发布代码来复制我们的实验。

10.2 准确率在不同的 Prompts 之间差异很大

  1. 这里研究 GPT-3 的准确率如何随着我们对 prompt 的各个方面(prompted examples、排列组合、格式)的改变而改变。我们专注于数据集的一个子集,以简化我们的分析。在后续章节中,我们表明我们的发现在我们研究的所有数据集中都是成立的。

  2. GPT-3 的准确率在很大程度上取决于prompted examples选择和prompted examples排列组合。具体来说,我们使用一个固定的 prompt format 并选择不同的随机的prompted examples集合。对于每一组prompted examples,我们评估所有可能的排列组合的准确率。

    下图显示了 SST-24-shot, GPT-3 2.7B )的结果。令人惊讶的是,改变排列组合可能与选择何种prompted examples一样重要,甚至更重要。例如,改变prompted examples的排列组合可以使准确率从接近机会( 54.3% )上升到接近 SOTA93.4%)。关于对排列组合的敏感性的定性的示例,参考 Table 2。这种对样本顺序的高度重要性与标准机器学习形成了鲜明的对比,在标准机器学习中,训练期间的样本顺序通常是不太重要的。

  3. 这种方差在更多的数据和更大的模型中持续存在:在 prompt 中添加更多的prompted examples并不一定能减少准确率的方差。我们在下图中对三个不同的数据集扫描了不同数量的prompted examples(红色曲线)。即使我们使用 16prompted examples,方差仍然很高。此外,增加更多的prompted examples有时会伤害准确率(例如,DBPedia0-shot1-shot 的平均准确率从 36.0% 下降到 25.9% )。在使用较大的模型时,准确率的方差也会保持很高。

  4. GPT-3 的准确率高度依赖于 prompt format :接下来我们保持固定的prompted examples和固定的排列组合,但改变 prompt format 。我们专注于 SST-2 ,并手动设计了另外 14prompt format 。这些格式包括 question-answer 模板、对话式模板、类似网页的 prompts 、以及 label names 的变化(所有格式如 Table 7 所示)。下图显示了其中 10 种格式的准确率。我们发现,有些格式平均来说比其他格式要好。然而,所有的格式在不同的训练集中仍然存在着高方差。

10.3 是什么导致了高方差?

  1. 接下来,我们分析了为什么 GPT-3 的准确率在不同的prompted examples、排列组合、以及 prompt format 中会有所不同。具体而言,我们表明,方差的产生是因为语言模型偏向于输出以下答案:

    • (1):在 prompt format 中频繁出现的答案(majority label bias )。

    • (2):在 prompt 尾部出现的答案(recency bias )。

    • (3):在预训练数据中常见的答案(common token bias)。

  2. Majority Label Bias:我们发现 GPT-3 偏向于 prompt 中经常出现的答案。一个常见的情况是,当一个 text classification prompt 存在类别不平衡时,例如,在情感分类样本中更多的 Positive 样本。这表现在下图的 "unbalanced" 区域:当一个类别更高频时,GPT-3 2.7B 严重偏向于预测该类别。由于 SST-2 情感分类数据集是平衡的,这种 bias 会导致很大的准确率下降。 majority label bias 也解释了为什么我们经常观察到从 0-shot1-shot 的准确率下降:我们发现下降的原因是模型经常重复这个 one training example 的类别。

    majority label bias 也发生在 generation 任务中。在使用 GPT-3 2.7B4-shot LAMA 的验证集上,50.2% 的模型预测是四个训练答案之一的重复(ground truth 的重复率只有 24.7% )。总的来说,majority label bias 有助于解释为什么对prompted examples的不同选择会严重影响 GPT-3 的准确率:它改变了 model prediction 的分布。

    下图的含义:4-shot SST-2 中,选择不同的 class组合导致不同的 positive prediction 概率(纵轴)。

  3. Recency Bias:模型的 majority label bias 因其 recency bias 而加剧:倾向于重复那些出现在prompt 尾部的答案。Figure 4"balanced" 区域表明了这一点。例如,当两个Negative 样本出现在最后时(即,"PPNN" ),该模型将严重倾向于 Negative 类别。此外,recency bias 可以超过 majority label bias ,例如,"PPPN" 训练集导致近 90% 的预测是 Negative 的,尽管 34prompted examplesPositive 的。

    recency bias 也会影响 generation 任务。对于 4-shot LAMA ,更接近 prompt 尾部的答案更有可能被模型重复。具体来说,模型对第一个、第二个、第三个和第四个prompted examples的答案分别 "过度预测"了 8.5%8.3%14.3%16.1% 。总的来说,recency bias 有助于解释为什么prompted examples的排列顺序很重要:样本的排序严重影响了 model prediction 的分布。

  4. 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 预测其类别的概率之间存在适度的相关性(r=0.67)。总的来说,common token bias 有助于解释为什么 label names 的选择是重要的,以及为什么模型在罕见的答案上陷入困境。

  5. bias 对模型预测的影响:我们发现,上述三种 bias 的最终结果通常是模型输出分布的 simple shift 。例如,下图直观地显示了SST-2 sentiment prompt 的这种偏移。下图中使用的 prompt 和模型的固有 bias 导致模型对于 Positive 类别经常预测出高的信心。由于默认的 50% 阈值被用来进行预测,这导致了频繁的假阳性(false positive )。重要的是,请注意,如果我们能够最佳地设置分类阈值(在这个案例中,p(Positive)=0.68),那么分类器将是高度准确的(在验证集上是 94% )。

10.4 Contextual Calibration

  1. 到目前为止,我们已经表明,由于 prompt bias 和模型的固有 biasGPT-3 偏向于某些答案。这里,我们希望通过 "校准" 模型的输出概率来纠正这一点。调整输出概率的常见技术是应用仿射变换:

    (1)q^=softmax(Wp^+b)

    其中:W 为待学习的权重矩阵,b 为待学习的偏置向量,p^ 为原始的概率,q^ 为新的概率。

    • 对于分类任务,p^ 是与每个 label name 相关联的概率的集合,重新归一化为 1.0

    • 对于生成任务,p^ 是针对 first token 的在整个候选集合上的概率集合。

      注意,这里是 generationfirst token 上进行调整。

    在本文中,我们限制矩阵 W 为对角矩阵,即所谓的 vector scaling,从而防止参数在 p^size 上(对于生成任务,这个 size 大约是 50k )呈二次方的增长。

  2. zero-shot/few-shot setting 下,主要挑战是我们没有数据来学习 W,b 。因此,我们提出一个创新的data-free 程序来推断这些参数的一个 good setting 。关键的想法是,模型对某些答案的 bias 可以通过输入一个 content-free input来估计,比如 字符串 "N/A"。例如,考虑 two-shot prompt

    其中 "N/A" 作为 test input 。理想情况下,GPT-3 会对这个测试输入进行评分,即 50%Positive50%Negative 。然而,模型的 bias 导致模型把这个输入打分为 61.8%Positive 。请注意,这个错误是 contextual 的:对prompted examples、排列组合、prompt 格式的不同选择将导致对 content-free input 的不同预测。

    我们可以通过设置 Wb 来纠正这个错误,使 content-free inputclass scores 统一。我们首先得到 content-free inputp^,记做 p^cf。然后我们设置 W=diag(p^cf)1b为全零向量。为了进行 test prediction ,我们计算 Wp^test+0,并取其 argmax

    为什么选择这种 W ?现在假设 test input 就是 content-free input,那么 Wp^test+0=I ,为单位矩阵。这意味着将 content-free input 调整为均匀分布的输出。

  3. 实现细节:这个 contextual calibration 程序增加了微不足道的计算开销,只需几行代码就能实现(计算和保存 p^cf、调整输出概率)。对于 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" 作为输入。

    实现代码:https://www.github.com/tonyzhaozh/few-shot-learning

  4. 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 中所有任务的 baselinecontextual calibration 之间的标准差的差异。在大多数情况下,contextual calibration 大大减少了方差;在其余情况下,contextual calibration 并没有大大增加方差。

    • 减少了从 0-shot1-shotdrop:对于 baseline,有四个案例在从 0-shot1-shot 的过程中出现了准确率的下降(TREC, AGNews, DBpedia, SST-2 )。我们把这种下降归因于majority label biascontextual calibration 在四种情况中的三种情况下消除了这种下降。

    • 改善 GPT-2 :我们还测试了GPT-2 1.5B(参考 Table 4 )。我们发现,与 GPT-3 一样,GPT-2 的准确率在不同的 prompt 中也有很大的差异。这表明,我们观察到的 few-shot in-context learning 的方差是语言模型的一个普遍问题。其次,contextual calibrationGPT-2 来说是开箱即用的,它提高了大多数任务的平均准确率并减少了方差。

    • 提高不同格式的准确率:在我们的下一组实验中,我们使用固定的prompted examples集并改变 prompt format 。我们使用前面讨论的SST-215prompt format。我们还通过使用 AutoPrompt 生成的 original LAMA templates 的转述,为 LAMA 中的三个随机关系(P20, P159, P19 )各创建了 15prompt formatFigure 7SST-2 校准前后的结果, Figure 9LAMA 的结果。contextual calibration 提高了两个数据集的平均准确率和 worst-case 准确率,并降低了 SST-2 的方差。

  5. Contextual Calibration 消融研究:最后,我们对 contextual calibration 进行了两项分析。

    • 我们首先分析了 contextual calibration 在推断 W 的良好 setting 方面的有效性。为此,我们将其准确率与 "oracle calibration"方法进行比较,后者使用验证集来寻找最佳的对角矩阵 W 。我们在 AGNews 上评估了这个 oracle calibration ,发现 contextual calibration 与它惊人地接近(Figure 8)。

    • 我们还研究了 content-free input 的选择如何影响准确率。在 Table 3 中,我们显示了 SST-2AGNewscontent-free input 的不同选择的准确率。 content-free input 的选择很重要,然而,存在许多好的选择。

10.5 讨论

  1. 校准是否消除了对 Engineer Prompt 的需要?"prompt engineering" 背后的动机是,并非所有的 prompts 都能导致同样的准确率。因此,我们应该调整 prompt 的格式和样例,以达到最佳的性能。contextual calibration 并不能消除对 engineer prompts 的需要,然而,它确实减轻了这种需要:contextual calibration 使最佳 prompts 的准确率、平均prompts 的准确率、以及worst case prompts 的准确率更加相似(以及更高)。

  2. 你应该在 Few-shot Setting 中进行微调吗?我们使用一个固定的语言模型,没有微调。如前文所述,有许多理由不进行微调:它可以实现快速的原型设计;提供一个百分之百自然语言的接口;并且在为许多不同的任务 serving 时,在内存需求和系统复杂性方面更有效率。

    此外,就像没有 contextual calibrationin-context learning 一样,微调在 few-shot setting 中可能是不稳定的(PET)。然而,如果这些缺点是可以接受或可以避免的,那么在某些情况下,微调可以比 in-context learning 提高准确率。未来工作的一个有趣的方向是研究 contextual calibration 和微调之间的相互作用,例如,contextual calibration 是否缓解了微调的需要,或者反之亦然?

  3. 从大的方面来看,我们的结果启发了 NLPfew-shot learning 的两个未来研究方向。

    • 首先,在方法方面,我们表明,good few-shot learning 需要关注细节:诸如 calibration 等微小但重要的决定会极大地影响结果。这使得我们很难正确地开发和比较新的方法(如预训练方案或模型架构)。因此,我们希望使其他的 few-shot learning 方法更加稳健,也希望扩大我们的技术以涵盖更广泛的任务(例如,开放式 generation 的校准)。

    • 第二,在分析方面,我们的结果强调了了解 GPT-3prompt 中学到什么的必要性。该模型具有令人印象深刻的能力,可以通过更多的训练实例来提高。然而,我们表明该模型学习了一些表面的模式,如重复常见的答案。我们希望在未来的工作中能更好地理解和分析 in-context learningdynamics

十一、KATE [2021]

论文:《What Makes Good In-Context Examples for GPT-3?》

  1. 尽管 GPT-3 具有强大而通用的 in-context learning 能力,但它也有一些实际的挑战/模糊之处。GPT-3 利用从训练集中随机采样的 task-relevant 样本来构建上下文。在实践中,我们观察到,GPT-3 的性能往往会随着 in-context examples 的不同选择而波动。如下表所示,在不同的 in-context examples ,经验结果的差异可能是很大的。这些结果对样本高度敏感。我们的工作旨在仔细研究这个问题,以便更深入地了解如何更好地选择 in-context examples ,以释放 GPT-3few-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-3few-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 examplesbaseline 的表现。

    • 在与任务相关的数据集上对 retrieval model 进行微调,使 GPT-3 的经验结果更加强大。

    • GPT-3 的性能随着可供检索的样本数量的增加而提高。

  2. 相关工作:

    • Pre-trained Language Models:对于文本分类任务,引人注目的模型包括 BERT, RoBERTa, XLNet ;对于文本生成任务,值得注意的模型包括 BART, T5, mT5, XLM, GPT, GPT-2。这些模型可以通过微调来适应许多不同的任务。

      然而,GPT-3 可以适应许多下游任务,而不需要进行微调。只需给定几个 in-context examplesGPT-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 中检索最近的 k 个邻居来生成 next token

      • 另一项相关工作是 kNN 分类模型,他们在 fine-tuned classification model 的信心较低时使用 kNN 作为 backoff

      我们的工作与其他方法有两个关键区别:

      • 首先,其他方法使用最近的 k 个邻居来修改模型的 next token distribution 。然而,我们只使用最近的 k 个邻居来改变上下文。

      • 第二,其他方法可以访问模型的参数和 embedding ,而我们无法访问。相反,我们使用其他一些独立预训练好的模型来获得sentence embedding ,以检索最近的 k 个邻居。

11.1 方法

11.1.1 GPT-3 用于 In-Context Learning

  1. GPT-3in-context learning 场景可以被看作是一个条件文本生成问题。具体来说,生成目标 y 的概率是以上下文 C 为条件,其中 C 包括 k 个样本、以及源 x 。因此,对应于源 x 的预测 y 可以表示为:

    (2)pLM(yC,x)=t=1Tp(ytC,x,y<t)

    其中:LM 表示语言模型的参数;C={x1,y1,x2,y2,,xk,yk} 为上下文字符串。在 GPT-3 中,C 是通过将 ktraining 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 来缓解这个问题。

11.1.2 In-Context Examples 的影响

  1. 鉴于观察到GPT-3 的实证结果对所选择的 in-context examples 很敏感,我们从实证的角度来看看 in-context examples 的作用。以前的 retrieve-and-edit 文献通常会检索出在某些 embedding 空间中与 test source x 接近的邻居样本。这些邻居样本和 test source x 经常有语义上的或词汇上的相似性。这暗示了我们如何为 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 ,用于检索程序。

11.1.3 kNN-augmented In-Context Example Selection

  1. 基于上述发现,我们提出了 Knn-Augmented in-conText Example selection: KATE ,一种为 in-context learning 选择 good in-context examples 的策略。这个过程在下图中得到了可视化。

    具体来说,我们首先使用某个 sentence encoder 将训练集和测试集中的 sources 转换为 vector representations 。然后,对于每个test source x ,我们从训练集检索其最近的 k 个邻居 {x1,x2,,xk}(根据 sentence encoderembedding 空间中的距离)。给定一些预定义的相似性度量 d (如余弦相似性),邻居的排序方式是:当 i<j 时满足 d(xi,x)d(xj,x)

    即,距离从近到远的排序。

    之后,将 ksources 与它们相应的 label 拼接起来,形成上下文 C={x1,y1,x2,y2,,xk,yk},并进一步将其与 test source x 一起发送给 GPT-3 。算法图见 Alogorithm 1 。请注意,这里可以采用不同数量的 in-context examples ,我们在后面的章节中对其影响进行消融研究。

  2. 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、以及信息检索等任务上取得了很好的性能。

11.2 实验

  1. 任务:情感分类、table-to-text generation、问答。数据集和 data split 如下表所示。就 GPT-3 API 中的超参数而言,我们将温度设置为 0 。我们让 GPT-3 继续生成 tokens ,直到出现一个特殊的换行符 "\n"

    温度为零使得 generation 结果的随机性更小。

  2. 用于检索的 Sentence Embedding:为了检索语义相似的 training instances,我们考虑如下两类的 sentence embedding

    • 原始的 pre-trained RoBERTa-large 模型,记做 KATEroberta

    • 在任务相关的数据上微调的 RoBERTa-large 模型:

      • SNLIMultiNLI 上微调的模型,记做 KATEnli

      • 先在 SNLIMultiNLI 上微调、然后再在 STS-B 上微调的模型,记做 KATEnli+sts-b

    值得注意的是,所有的 sentence encoder 都有相同的结构(RoBERTa-large ),唯一不同的是用于微调的具体数据集。KATEroberta 使用的是欧氏距离,而 KATEnliKATEnli+sts-b 使用的是余弦相似度。

    • Sentiment Analysis:对于情感分类,我们在 transfer setting 下选择 in-context examples ,其中一个数据集被视为训练集,评估是在另一个数据集上进行的。这种 transfer setting 是为了模拟现实世界中的情景,即我们想利用现有的 labeled dataset 来用于一个 unlabeled dataset (一个类似的任务)。

      具体来说,我们从 SST-2 训练集中选择 in-context examples,要求 GPT-3IMDB 测试集进行预测。为了探索在类似任务上微调好的 sentence encoder 是否会有利于 KATE 的性能,我们还采用了在 SST-2 训练集上微调好的 pre-trained RoBERTa-large 模型(被称为 KATEsst-2)。性能是由整个 IMDB 测试集的准确率来衡量的。由于增加更多的样本并不能进一步提高性能,所以 in-context examples 的数量被选为 3

    • Table-to-Text Generation:给定一个 Wikipedia table 和一组 highlighted cells ,这项任务的重点是产生人类可读的文本描述。由于 ToTTo 的流行,我们利用它进行评估。我们使用 BLEUPARENT 指标进行评价。ToTTo 代码库包含评估和预处理脚本。由于 GPT-3 的输入长度限制(目前 token 数量限制为 2048 个),我们增加了一个额外的预处理步骤,即删除 </cell></table>closing 角括号以节省一些空间。in-context examples 的数量被设定为 2

    • Question Answering:给定一个事实性的问题,问答任务要求模型生成正确的答案。根据先前的研究,我们使用 Exact Match: EM 得分来衡量 GPT-3 在开放领域的问答任务中的表现。EM 得分被定义为 predicted answersground-truth answer(如果有多个 ground-truth answer,则只需要匹配其中之一即可)完全相同的比例。匹配是在字符串规范化之后进行的,其中包括去除上下文(仅保留答案部分)和标点符号。我们在三个开放领域的 QA 基准上进行了实验: Natural Questions: NQWeb Questions: WQTrivia Question Answering: TriviaQA

      对于这项任务,我们为 NQWQ 挑选了最近的 64 个邻居作为 in-context examples ,为 TriviaQA 挑选了最近的 10 个邻居。对于 TriviaQA ,如果采用 64in-context examples ,则超过了 2048tokens 的限制。为了公平比较,我们将TriviaQA 的基线和 KATE 方法的 in-context examples 数量设定为 10 个。评估是在 NQWQ 的测试集、以及 TriviaQA 的验证集上进行的。

  3. baseline 方法:

    • 随机采样:对于每个测试句子,我们从训练集中随机选择 in-context examples 。我们在实验结果中称这种方法为 Random 。为了与 KATE 进行公平的比较,这个random baseline 中的 in-context examples的数量与 KATE 相同,以确保公平的比较。在测试集上,random baseline 被重复五次,以获得平均分和相应的标准差。

    • k-Nearest Neighbor: kNN:此外,为了研究 retrieval module 是否与GPT-3few-shot learning 互补,我们进一步考虑 k-nearest neighbor baseline。具体来说:

      • 对于文本生成任务,与第一个 retrieved example 相关联的 target y1 被认为是测试样本的 predicted target

      • 对于情感分析和问答任务,利用 top k retrieved examplestarget {y1,,yk},其中 final prediction 是由 k target 的多数投票决定的。如果出现平局的情况,我们取与测试句子最相似的例子的 target 作为预测。

      为了确保公平的比较,我们在 pre-trained RoBERTa-large 模型的相同 embedding 空间下比较 baseline kNNKATE 。这个基线被缩写为 kNNroberta

11.2.1 实验结果

  1. 情感分析:我们首先在情感分析任务上评估 KATE 。结果显示在下表中。可以看出:

    • 相对于 random selection baselineKATE 始终产生更好的性能。

    • 值得注意的是,由于采用的是同一组 retrieved in-context examples ,所以获得的结果没有方差。

    • 对于 KATE 方法,当在 NLINLI+STSB 数据集上对 pre-trained sentence encoder 进行微调时,性能略有下降。由于IMDB 数据集和 NLI+STS-B 数据集的目标不同,这表明在不同的任务上进行微调会损害 KATE 的性能。

      此外,KATEnli+sts-b 的表现比 KATEnli 差,因为 sentence encoderSTS-B 数据集上被进一步微调了。 相比之下,KATEsst-2 获得了最好的准确率,表明在相似的任务上进行微调可以使 KATE 的性能受益。

    • 为了验证收益不仅仅来自于检索步骤,我们进一步比较了 KATErobertakNNroberta 。结果发现,kNNroberta 方法的性能类似于随机猜测。当检索一个邻居或三个邻居时,这一观察结果是一致的。

      值得注意的是,在 SST-2 数据集上对 RoBERTa-large 模型的 embedding 进行微调后,kNNsst-2 的准确率为 92.46 ,低于 KATEsst-2 获得的准确率。

      既然 kNNsst-2 的准确率高达 92.46,是否意味着用一个优秀的 pretrained sentence encoder 执行 kNN 就足够了?

    这些结果表明,GPT-3 模型对最终结果至关重要,而检索模块是对 GPT-3few-shot 能力的补充。

  2. Table-to-Text Generation:我们利用 ToTTo 数据集来评估 KATEtable-to-text generation 任务。结果如下表所示。根据BLEUPARENT 分数,KATE 方法比 random baseline 有了相当大的提高。

    在更细的 scale 内,可以对 overlap子集和 non-overlap 子集进行评估。overlap 验证子集与训练集共享大量的标题名称,而 non-overlap 验证子集则不共享任何标题名称。可以看出,KATE 方法改善了 overlap 子集和 non-overlap 子集的结果,这意味着检索模块对于如下的两种情形都有帮助:测试集遵循训练集的分布、测试集不遵循训练集的分布。

    与情感分析类似,从 KATErobertaKATEnliKATEnli+sts-b ,性能略有下降。这是由于 ToTTo 数据集和 NLI+STS-B 数据集的目标不同。从 KATEnliKATEnli+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" )。

  3. Questing Answering:我们还在开放领域的问答任务上评估了 KATE ,如下表所示。对于问答任务,我们与一些 SOTA 的方法进行了比较,如 RAGT5 。这两种方法都需要在特定的数据集上进行微调。KATE 方法再次提高了 GPT-3 在各种基准中的 few-shot prediction 的准确率。值得注意的是, fine-tuned transformer 模型作为更好的 sentence encoder 用于检索目的(与没有经过微调的 RoBERTa_large 模型相比)。

    KATEnliKATEnli+sts-bKATEroberta 的基础上进行了改进,因为对 NLISTS-B 数据集的微调有助于从问答数据集中检索出语义相似的问题。此外,在 NQTriviaQA 数据集上,对 STS-B 数据集的进一步微调提高了 KATE 的结果。我们还尝试减少 random 方法和 KATE 方法的 in-context examples 的数量,使其减少到 5 个,其中 KATE 的表现也优于 baseline 。因此,KATE 相对于 random baseline 的优势在少量和大量的 in-context examples 都是成立的。更多的细节可以在消融研究部分找到。

    我们通过使用 top-1 最近邻来评估其他基线 kNNroberta 。我们还探索使用 64 个最近邻( TriviaQA10 个最近邻)来确定答案(通过多数投票)。EM 的得分趋向于与检索 top-1 最近邻相似。这些 kNN baseline 结果再次表明,检索模块和 GPT-3 一起工作可以获得更好的性能。

    为了研究为什么 retrieval examples 有帮助,我们进一步提出一个案例研究。具体来说,从 NQ 数据集中检索到的 in-context examplesTable 8 所示。对于第一个和第二个案例,random baseline 提供了错误的答案,因为 GPT-3 无法 recall 确切的细节。然而,KATE 选择的 in-context examples 包含正确的细节,这有利于 GPT-3 回答问题。对于第三个测试问题,random baseline 导致GPT-3 错误地将问题解释为要求一个 specific location 。与此相反,KATE 选择了相似的问题,问的是对象的起源。利用这些 specific locationGPT-3 能够正确地解释和回答问题。

11.2.2 分析和消融研究

  1. In-context Examples 数量:我们首先研究了 in-context examples 的数量对 KATE 性能的影响。具体来说,在 NQ 数据集上,我们选择了 5/10/20/35/64in-context examples ,在不同的设置下,将 KATEnli+sts-brandom baselineKATEroberta 进行比较。

    Figure 3 左图所示,KATErandom baseline 都从利用更多的 in-context examples 中受益。然而,KATE 始终优于 random selection 方法,即使 in-context examples 数量少到 5 个。这个结果很有意思,因为在实践中,采用较少的 in-context examples 会使 GPT-3 的推理效率更高。

  2. 用于检索的训练集的大小:我们进一步研究训练集的大小如何影响 KATE 方法。在 NQ 数据集上,我们从原始训练集中创建了新的子集,其大小分别为 1k/2k/5k/10k/30k/70k 。从这些子集(而不是原始的训练集)中检索 in-context examples 。近邻的数量被设置为 64 。我们将 KATEnli+sts-brandom selection 方法和 KATEroberta 进行比较,结果见 Figure 3 的右图。对于KATErobertaKATEnli+sts-b 来说,随着用于检索的训练集大小的增加,EM 分数也在增加。相比之下,random sampling baseline 的结果变化不大。

    直观地说,随着训练集规模变大,KATE更有可能检索到相关的 in-context examples 来帮助 GPT-3 正确地回答问题。正如我们之前在 Table 8 中显示的,retrieved in-context examples 可以为 GPT-3 提供关键的详细信息,从而帮助 GPT-3 更好地回答问题。

  3. In-context Examples 的顺序:此外,我们还探讨了in-context examples 的顺序如何影响 KATE 的结果。如前所述,在标准设置下,retrieved in-context examples 都是有序的,其中当 i<j 时满足 d(xi,x)d(xj,x)。这里,我们随机地改变了 NQ 数据集中 KATEnli+sts-b 方法的 in-context examples 的顺序,并实验了三个不同的顺序。此外,我们还探索了逆序,即当 i>j 时满足 d(xi,x)d(xj,x),结果如下表所示。

    在这个特定的 NQ 数据集上,逆序表现得最好。一个可能的解释是,由于彼此相邻的 token 具有相似的 positional embedding ,将最相似的句子放在靠近测试样本的地方,可能有助于 GPT-3 利用相应信息。

    然而,我们也在 WQTriviaQA 上做了实验,发现默认顺序比逆序的表现略好。因此,顺序的选择是取决于数据的。另外,可以观察到,NQ 结果之间的变化趋于相当小(与 random baselineKATE 之间的差异相比),这表明 in-context examples 的顺序对 KATE 的性能没有重大影响。

十二、LM-BFF[2021]

论文:《Making Pre-trained Language Models Better Few-shot Learners》

  1. GPT-3 模型在 NLP 界掀起了狂澜,它在无数的语言理解任务上展示了令人震惊的 few-shot 能力。只需给出一个自然语言 prompt 和一些任务 demonstrationsGPT-3 就能做出准确的预测,而无需更新其底层语言模型的任何权重。然而,虽然引人注目,GPT-3175B 个参数组成,这使得它在大多数实际应用中具有挑战性。

    在这项工作中,我们研究了一个更实际的场景,即我们只假设能够获得一个中等规模的语言模型,如 BERTRoBERTa ,以及少量的样本(即 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 ,最近由 PETPETPET-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 的数量被模型的最大输入长度所限制。

      我们开发了一个更精细的策略,对于每一个输入,我们每次从每个类别中随机采样一个样本,以创建多个 minimaldemonstration 集合。我们还设计了一种新的采样策略,将 inputs 与相似的样本来配对,从而为模型提供更加 discriminativecomparisons

      即,更好地挑选 few-shot examples

    我们提出了一个系统性的评估,用于在 8 single-sentence7 sentence-pairNLP 任务上分析 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 来自动生成的。

  2. 相关工作:

    • language model prompting

      • GPT 系列推动了 prompt-based learning 的发展,我们遵循其许多核心概念。

      • 最近的 PET 工作(PETPET-2)也给了我们很大的启发,尽管他们主要关注的是 semi-supervised setting ,其中提供了大量的未标记样本。我们只使用少量的标记样本作为监督,并且还探索了 automatically generated promptsfine-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 。我们的重点是了解在没有任何其他优势的情况下,我们能推动多远。

12.1 Problem Setup

  1. 任务描述:在这项工作中,我们假设可以获得一个 pre-trained language model L ,我们希望在一个任务 D 上对 L 进行微调,其中任务 Dlabel spaceY 。对于这个任务,我们只假设任务的训练集 Dtrain 中每个类别有 K 个训练样本。这样,训练样本总数为 Ktot=K×|Y| ,训练集为Dtrarin={(xini,yi)}i=1Ktot。然后,我们的目标是开发与任务无关的学习策略,这些策略可以很好地泛化到 unseen 的测试集 (xintest,ytest)Dtest

    对于模型选择和超参数调优,我们假设验证集 Ddev 的大小与 few-shot 训练集相同,即 |Ddev|=|Dtrain|。这个区别是很重要的:使用较大的验证集会带来显著的优势(如下表所示),并颠覆了我们的最初目标:从有限数据中学习。

    在以下所有的实验中(除非另有说明),我们采取 L=RoBERTa-largeK=16

  2. Evaluation 数据集:来自 GLUE benchmark, SNLI, SST-5, MR, CR, MPQA, Subj, TREC 等数据集中的8single-sentence 英语任务、7sentence-pair 英语任务。具体细节如下表所示。

    • 对于single-sentence 任务,目标是根据输入句子 xin=x1 进行预测,例如电影评论是否是 positive 的。

    • 对于 sentence-pair 任务,目标是给定一对输入句子 xin=(x1,x2) 并预测它们之间的关系。

    我们也可以交替使用 <S1>(<S1>, <S2>) 来指称输入。请注意,我们主要使用 SST-2SNLI 进行实验和模型开发,使其接近于真正的 few-shot setting ,至少对于我们评估的所有其他数据集而言。

  3. 评估方式:系统地评估 few-shot 的性能可能是很棘手的。众所周知,在小数据集上的微调可能存在不稳定性:在数据的新的 split 下,结果可能发生巨大变化。为了说明这一点,我们测量了 5 个不同的随机采样的 DtrainDdev split 的平均性能。这个问题在 PET-2 中也有讨论:他们建议使用固定的训练集。我们认为,采样多个 splits 可以提供一个更鲁棒的性能度量,以及对方差的更好估计。

    我们还观察到,超参数可以产生很大的差异,因此我们为每个 data sample 扫过多个超参数,并采取在该 data sampleDdev 上获得最佳性能的 setting 设置。超参数扫描空间为:学习率 {105,2×105,5×105}batch size {2,4,8};采用早停机制;训练 1000 步,每隔 100 步在验证集上评估并选择最佳的 checkpoint

12.2 Prompt-based 微调

  1. 给定一个 masked language model L ,我们首先将输入 xin 转换为一个 token sequence x~,然后语言模型 Lx~ 映射为 hidden vectors 的序列 {hkRd}。在标准的微调过程中,我们通常取 x~single=[CLS]x1[SEP]x~pair=[CLS]x1[SEP]x2[SEP] 。对于具有 label space Y 的下游分类任务,我们通过最大化 correct label 的对数概率来训练 task-specific head

    (3)softmax(Woh[CLS])

    其中:

    • h[CLS]Rd[CLS] 的隐向量 。

    • WoR|Y|×d 为待学习的权重矩阵。

    同样地,对于回归任务,我们可以引入 woRd ,并优 woh[CLS]gold label 之间的 mean squared error: MSE 。在任何一种情况下,新参数的数量都是巨大的,例如,一个简单的二分类任务将为 RoBERTa-large 模型引入 2048 个新参数,这使得从少量的标注数据(例如,32 个样本)中学习具有挑战性。

    解决这个问题的另一种方法是 prompt-based 的微调,其中 L 直接被设置为 "auto-completing" 自然语言 prompts 的任务。例如,我们可以用包含输入 x1prompt (例如,"No reason to watch it ." )来制定一个二元情感分类任务:

    (4)xprompt=[CLS] x1 It was [MASK]. [SEP]

    并让 L 决定在 [MASK] 中填写"great"positive )还是 "terrible"negative )更合适。现在我们将这种方法正式用于分类任务和回归任务,并讨论 prompt selection 的重要性。

  2. 分类任务:令 M:YVtask label spaceL 的词表的映射。对于每个 xin ,令 xprompt=T(xin) 为一个 masked language modeling: MLP 输入,其中 xprompt 包含一个 [MASK] tokenT 为模板函数。通过这种方法,我们将我们的分类任务视为一个 MLM,并且预测类别 yY 的概率为:

    (5)p(yxin)=p([MASK]=M(y)xprompt)=exp(wM(y)h[MASK])yYexp(wM(y)h[MASK])

    其中:h[MASK]Rd[MASK]hidden vectorwvRdvVpre-softmax vectorMlabel y 映射到单个 token

    当有标记样本集合 {(xin,y)} 时,可以对 L 进行微调从而使交叉熵损失最小。值得注意的是,这种方法重用了 pre-trained weights wv 而没有引入任何新的参数。它还减少了 pre-trainingfine-tuning 之间的 gap ,使其在 few-shot 场景下更加有效。

    虽然没有引入新的参数,但是这里需要对 wv 进行微调,一共需要微调 |Y|×d 个参数。但是,微调要优于从头开始训练,因为微调采用了一个更好的 initialization (而不是随机初始化为零)。

  3. 回归任务:回归任务的配置和分类任务相同,但是回归任务将 label space Y 视为一个有界的区间 [vl,vu] 。受到 《Hyperspherical prototype networks》 的启发,我们将回归问题建模为两个点 ylyu 之间的插值,其中这两个点的取值分别为 vl,vu 。例如,我们可以把之前的情感分析任务表述为区间 [0,1] 的回归问题。这样一来,我们可以把 y 表达为一个混合模型:

    (6)y=vl×p(ylxin)+vu×p(yuxin)

    其中:p(yuxin) 为取值为 yu 的条件概率;p(ylxin)=1p(yuxin)

    然后我们定义 M:{yl,yu}V ,并且模型 p(yuxin) 为:

    (7)p(yuxin)=p([MASK]=M(yu)xprompt)=exp(wM(yu)h[MASK])y{yl,yu}exp(wM(y)h[MASK])

    我们微调 L 从而最小化 p(yuxin)yvlvuvl 之间的 KL 散度。

    这里对回归任务做了太强的假设:

    • 首先,回归任务是有界的。对于 “房价预测” 这种取值空间理论上无界的问题,无法解决。

    • 其次,要求 p(ylxin)+p(yuxin)=1 。即,要么选择端点 yl 、要么选择端点 yu 。但是实际上有可能两个端点的概率都很低。

  4. 好的和坏的Manual prompts :关键的挑战是构建模板 Tlabel words M(Y) ,我们把这两者合称为 prompt P 。以前的工作(PETPET-2)都是手工制作模板和 label words ,这通常需要领域专业知识和反复试错。Table 1 总结了我们实验中为每个数据集选择的手工模板和 label words 。这些模板和 label words 是通过直觉和考虑以前文献中使用的格式来设计的。

    为了更好地了解什么是好的模板或好的 label word ,我们对 SST-2SNLI 进行了试点研究。Table 2 显示,不同的 prompts 会导致最终准确率的巨大差异。具体而言:

    • 当模板固定时,label words 与 "语义类别" 的匹配度越高,最终准确率就越高(great/terrible > good/bad > cat/dog )。在极端的情况下,如果我们交换似是而非的 label words (例如,great/terrible ),我们会取得最差的整体表现。

    • 此外,对于同一组 label words ,即使模板的一个小变化也会产生差异。例如,对于 SNLI ,如果我们把 [MASK] 放在最后,或者交换句子的顺序,我们观察到准确率的下降幅度超过 10%

    上述证据清楚地强调了选择好的模板和好的 label words 的重要性。然而,搜索 prompts 是很难的,因为搜索空间可能非常大,特别是对模板而言。更糟糕的是,我们只有少量样本可以用来指导我们的搜索,这很容易造成过拟合。我们接下来将解决这些问题。

12.3 Automatic Prompt Generation

  1. 我们的目标是减少设计 prompts, 所需的人类参与,并找到比我们手动选择的更理想的设置。在这里,我们假设是一个分类任务,但回归的过程是类似的。

  2. label words 的自动选择:我们首先研究如何在给定一个固定的模板 T 的情况下,构建一个 label word mapping M ,使其在微调后对 Ddev 的准确率最大化。然而,直接搜索所有可能的分配存在两个问题:

    • 首先,一般来说是难以实现的,因为搜索空间是类别数量的指数级。

    • 其次,容易过拟合,因为在给定少量标注样本的情况下,我们将倾向于发现虚假的相关性。

    作为一个简单的解决方案,对于每一个类别 cY ,我们使用初始化的 L 从而基于单词的条件概率来获得 top k 的单词集合,这些单词构建了裁剪后的词表 VcV。换句话说,令 DtraincDtrain 为所有的类别为 c 的样本的子集,我们选择 Vc 为:

    (8)TopkvV{xinDtrainclogPL([MASK] = vT(xin))}

    其中:PLL 的输出概率分布。

    物理含义:针对训练集中类别为 c 的所有样本,寻找它们最可能输出的 label words

    为了进一步缩小搜索空间,我们并没有在 V 中检索 top k ,而是在裁剪后的空间中去检索。裁剪方式为:选择使得使 Dtrainzero-shot accuracy 最大化的 ntokens ,即 top n assignmentsnk 都是超参数,见论文附录 C.2 。然后,我们微调所有的 top n assignments ,并使用 Ddev 进行 rerank 以找到最佳的 assignment 。这种方法类似于PETPET-2 中的 automatic verbalizer search 方法,只是我们使用了一个简单得多的搜索过程(暴力搜索),并且还应用了 re-ranking :我们发现re-ranking 对我们很有帮助。

    rerank 即利用验证集来挑选最佳的 assignment

    实验部分表明:label words 的自动选择上,效果不佳。因此这个算法的意义何在?

  3. 模板的自动生成:接下来,我们研究如何从一组固定的 label words M(Y) 中自动生成一组多样化的模板 {T}。为了解决这个具有挑战性的问题,我们建议使用 T5 模型,一个大型的 pre-trained text-to-text TransformerT5 经过预训练,可以在其输入中补全 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 :我们可以简单地从 Dtrain 中获取输入句子,让 T5 模型构建模板 T ,而不需要为其指定预定的 tokens 数量。

    这里利用语言模型来生成模板,因此这里依赖于预训练好的语言模型(如 T5 )。

    给定一个输入样本 (xin,y)Dtrain ,我们考虑以下简单的转换,记做 Tg(xin,y) ,用于制定 T5模型的输入:

    (9)<S1>⟶<X>M(y)<Y><S1><S1>⟶<S1><X>M(y)<Y><S1><S2>⟶<S1><X>M(y)<Y><S2>

    <X><Y> 代表语言模型需要生成的内容。第一行以模板内容作为 prompt 的开始、第二行以训练样本作为 prompt 的开始。

    如下图所示,我们依靠 T5 模型来填充占位符。在解码时,我们的目标是找到一个能对 Dtrain 中的所有样本都能很好工作的输出,即使 (xin,y)DtrainlogPT5(TTg(xin,y)) 最大化的输出模板 T,其中 PT5 表示 T5 的输出概率分布。它可以分解为:

    (10)j=1|T|(xin,y)DtrainlogPT5(tjt1,,tj1,Tg(xin,y))

    其中:(t1,,t|T|)template tokens

    我们使用 beam search 来解码多个模板候选。具体而言,我们使用一个 wide beam width (例如,beam width = 100 )来低成本地获得一大批多样化的模板。然后,我们在 Dtrain 上对每个所生成的模板进行微调,并使用 Ddev 来挑选出性能最好的单个模板(如 Table 3 所示),或者挑选出 top-k 模板作为 ensemble 使用( table 4 )。尽管在每个模板上微调模型可能显得很昂贵,但由于 Dtrain 的规模较小,这在实践中是很快的,而且也是完全自动化的:与手动调优每个数据集的 prompts 相比,它很容易使用。

12.4 用 Demonstrations 进行微调

注意:这一节仅说明如何挑选 demonstrations,并没有说如何利用 demonstrations 来微调。

  1. 这里我们研究:当我们微调中等规模的语言模型时,我们是否能够利用 demonstrations ,并找到更好的方法来利用 demonstrations

  2. 训练样本作为 demonstrationsGPT-3in-context learning 的朴素做法只是将输入与从训练集中随机采样的多达 32 个样本连接起来。这种方法是次优的,因为:

    • (1):可用的 demonstrations 数量受模型的最大输入长度限制。

    • (2):将来自不同类别的众多随机样本混合在一起,会产生极长的、难以利用的上下文,特别是对于较小的模型。

    为了解决这些问题,我们提出了一个更简单的解决方案:在每个 training step 中,我们从每个类别中随机采样一个样本 (xin(c),y(c))Dtrain,将其转换为 T(xin(c)),其中用 M(y(c)) 代替[MASK] ,记做 T~(xin(c),y(c))。 然后将 T~xin 拼接起来(如图 Figure 1(c)):

    (11)T(xin)T~(xin(1),y(1))T~(xin(|Y|),y(|Y|))

    这里 表示输入序列的拼接操作。

    在训练和推理过程中,我们为每个 xin 采样多个 demonstration 集合。请注意,在训练期间,xindemonstratio 样本都是从同一个集合 Dtrain 中采样的。在测试时,我们仍然从 Dtrain 中采样 demonstration 集合,并在所有的 demonstration 集合中 ensemble 预测结果。

  3. 采样相似的 demonstrations:我们观察到,控制 demonstration 样本 {(xin(c),y(c))} 的构建对于良好的最终性能至关重要。例如,如果一组 contrastive demonstrations xin(c) 都有很大的不同(彼此之间的不同,或者与 query xin 的不同),那么语言模型要破译有意义的模式就会变得很困难。因此,该模型可能会简单地忽略上下文,甚至被额外的样本所迷惑。为了解决这个问题,我们设计了一个简单的策略,即我们仅仅采样语义上接近 xin 的样本。

    具体而言,我们使用 pre-trained SBERT 模型来获得所有输入句子的 embedding (对于 sentence-pair 任务,我们使用两个句子的拼接)。在这里,我们只是将不带模板的原始句子馈入 SBERT 。对于每个 query xin 和每个标签 cY ,我们按照与 query 的相似度得分 cos(e(xin),e(x)) 对所有的带标签的训练实例 xDtrain(c) 进行排序,并且只从每个类别的top r = 50% 的实例中采样从而作为 demonstrations 使用。

    类似于 KATE 思路:对于测试样本,选择最相似的训练样本作为 few-shot examples

    这里依赖于外部的、预训练好的 sentence encoder

12.5 实验

  1. 超参数调优:

    • 对于网格搜索,我们选择学习率为 {1e-5, 2e-5, 5e-5}batch size{2, 4, 8}

    • 我们使用早停来避免过拟合。

    • 每次实验,我们训练模型 1000 steps,每隔 100 steps 验证一次验证集,然后选择最佳的 checkpoint

  2. Prompt-based fine-tuning 的实现细节:Table 1 显示了我们在实验中使用的所有人工模板和 label words

    • 对于自动的模板生成,我们采用了 T5-3B 模型,这是在单个 GPU 上能适应的最大的公开可用模型。

    • 对于自动搜索 label words ,除了SST-5TREC ,我们将所有任务的 k 设置为 100

      • 对于 SST-5 ,我们设置了一个较小的 k=30 ,因为它是一个五分类任务。

      • 对于 TREC ,我们观察到仅仅使用条件似然来过滤 Vc 仍然是有噪声的,因此我们设置 k=1000 ,然后通过原始 manual label words 的最近邻来重排 Vc ,并在每个类别中取 top 30

    • 在所有的实验中,我们将 n 设置为 100

    • 由于自动搜索中的大量试验,我们在这部分采取了一组固定的超参数:batch size = 8 ,学习率为 1e-5

    • 由于 prompt-based 微调的想法是使输入和输出的分布接近于预训练,所以实施细节是至关重要的。

      • 对于模板,如果句子不是在输入的开头,我们会在句子前加上额外的空格。

      • 另外,如果句子与前缀(如Table 1 中的 <S2>)拼接,我们会小写句子的第一个字母。

      • 另外,如果一个句子附加了任何标点符号(如 Table 1 中的 <S1> ),那么原句的最后一个字符将被丢弃。

      • 最后,我们为 M(Y) 中的 label words 前置了一个空格。例如,在 RoBERTa 词表中,我们用 " great " 代替"great" ,其中 " " 代表空格。

  3. Fine-tuning with demonstrations 的实现细节:当使用 demonstrations 时,我们对每个输入采样demonstrations16 个不同的集合,并在推理过程中对每个类别的预测对数概率进行平均。我们发现,进一步增加样本的数量并没有带来实质性的改善。此外,我们还尝试了不同的聚合方法,如取最大置信度的结果,但我们没有发现有意义的改进。

    为了选择 demonstrations ,我们将 SBERTroberta-large-nli-stsb mean-tokens 作为我们的 sentence embedding 模型。

12.5.1 实验结果

  1. 我们在实验中使用 RoBERTa-large 模型,并设置 K=16 。使用 RoBERTaBERT 的比较可以在附录 D 中找到(见 Table D.1)。对于 automatic prompt search ,在我们的主要结果中,我们只报告了automatic template search (它一直表现得最好,见 Table 5 )。为了正确看待我们的结果,我们与一些 baseline进行了比较,即:

    • 在我们的 few-shot setting 中的标准微调。

    • 使用完整训练集的标准微调。

    • 简单地采取最高频的类(在完整的训练集上测量)。

    • prompt-based zero-shot prediction ,我们采用我们的手动 prompts 并使用 L "开箱即用",而不使用任何训练实例。

    • "GPT-3" in-context learning ,我们使用相同的 prompt-based zero-shot setting, ,但用随机采样的 32 demonstrationsaugment 上下文(仍然使用 RoBERTa-large ,而不是 GPT-3 )。

    Pretrained BERT 为输入的不同部分提供了两个segment embeddings (A/B) 。在对 BERT 进行微调时,通常的做法是,在单句任务中只使用 segment A ,而在 sentence-pair 任务中使用segment A/B 来处理两个句子。然而,在我们纳入 demonstrations 的案例中,我们有两个以上的句子。因此,我们探索了以下不同的segments 策略:

    • 对所有句子使用segment A1-seg )。

    • 对原始输入使用 segment A、对 demonstrations 使用 segment B2-seg )。

    • 对每个句子使用不同的 segment embeddingn-seg ),这就引入了新的 segment embedding (在微调期间随机初始化和学习),因为 pre-trained BERT 只有两个 segment embedding

  2. single-prompt 的结果: Table 3 显示了我们使用单一 prompt 的主要结果,无论是从我们手动设计的 prompt ,还是从最佳生成的prompt

    • 首先,prompt-based zero-shot prediction 取得了比 majority class 好得多的性能,显示了 RoBERTapre-encoded knowledge 。另外,"GPT-3" in-context learning 并不总是比 zero-shot prediction 好,可能是因为较小的语言模型没有足够的表达能力,不能像 GPT-3 那样开箱即用。

    • 第二,prompt-based 微调可以大大超过标准的微调,无论是在使用手动prompt 还是生成的prompt 时。CoLA 是一个有趣的例外,因为输入可能是一个不符合 L 分布的非语法句子。一般来说,我们自动搜索的模板可以达到与人工模板相当甚至更高的结果,特别是对于那些构建强大的人工模板不太直观的任务(如 TRECQNLIMRPC )。

    • 最后,在大多数任务中,在上下文中使用 demonstrations 会带来一致的收益。

    总之,我们的综合解决方案(用自动搜索的模板和采样的 demonstration 集合进行微调)与标准微调相比,在 SNLI 上实现了 30% 的收益,平均收益为 11%

  3. ensemble-prompt 的结果:automatic prompt search 的一个优点是,我们可以生成我们想要的 prompts ,训练单个模型,并创建大型 ensemblesPET 也对用人工 prompts 训练的多个模型进行了 ensemble 。在Table 4 中,我们对我们 searched promptsPET’s manual prompts ,在 MNLIRTE (我们共同评估的两个数据集)上进行了直接比较。

    如结果所示,具有多个模板的 ensemble 总是能提高性能。由相同数量的自动模板组成的 ensemble 取得了与 PET’s manual promptsensemble 相当或更好的性能。增加自动模板的数量会带来进一步的收益。

    如何 ensemble 多个模板?作者这里未说明。读者猜测:采用 PET 相同的方式,对每个模板微调得到一个 finetuned model,然后所有 finetuned modelensemble 给测试集打上 soft label

12.5.2 generated prompts 的分析

  1. Table 5 给出了使用manual promptsautomatic 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 LTRECMRPC 上的表现优于 manual prompts ,但在 SNLI上 的表现却差很多。

  2. Table 6 显示了 Auto TAuto L 的例子(完整列表见 Table E.1 )。

    • Auto T 模板一般都能很好地适应上下文和 label words ,但也可能包含有偏见的怪癖(例如,SNLI 中的"{Yes/No}, no")。

    • 对于 Auto L 的单词来说,情况是复杂的:虽然大多数看起来直观合理,但也有一些神秘的异常情况(例如,SNLI"entailment" 类的 "Hi" )。

12.5.3 demonstration sampling 的分析

  1. Table 7 比较了使用均匀采样、以及 SBERT 的选择性采样的demonstrations 的性能。我们承认 SBERT 是在 SNLIMNLI 数据集上训练的,因此我们也尝试了一个简单的 sentence encoder ,使用 RoBERTa-largehidden representations 的均值池化。我们发现,无论在哪种情况下,使用选择性采样都优于均匀抽样,这突出了采样相似的样本对于纳入上下文中的 demonstrations 的重要性。

12.5.4 样本效率

  1. Figure 3 说明了随着 K 的增加,标准微调和我们的 LM-BFF 比较的结果如何。

    • 对于像 SST-2 这样的简单任务(也见 Table 3 中的 MR, CR, MPQA ),尽管总共只用了 32 个样本,LMBFF 的性能已经接近饱和,在整个数据集上与标准微调相媲美。

    • 在更难的 SNLI 任务上,LMBFF 随着 K 的增加而继续提高,同时仍然保持着对比标准微调的性能优势,直到两者在 K=256 左右趋于一致。

12.6 讨论

  1. 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) 是更基本的。我们把它作为一个开放的问题留给未来的工作。

十三、EPR[2021]

论文:《Learning To Retrieve Prompts for In-Context Learning》

  1. 大型预训练语言模型中蕴含的出色语言技能和世界知识最近引发了自然语言理解中的新范式: 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 进行评分的语言模型)。对于每个训练样本 (x,y),我们遍历其他候选训练样本,并根据 scoring LM 估计在给定 x 和候选 prompts 的条件下,y 的概率。我们将导致高概率的候选训练样本标记为正样本、低概率的标记为负样本,并使用对比学习从这些数据中训练一个 prompt retriever 。我们认为,与先前提出的表面相似性启发式方法相比,使用 LM 对样本进行标记更好地代表了训练 retriever 的过程。重要的是,在创建训练数据时,我们可以访问 gold label y ,这可以用于获得高质量的候选 prompts 集合。这会产生良好的正样本和 hard negative 样本,有助于使用 contrastive objective 进行训练。

    在训练一个高效的 retriever 时使用 scoring LM ,在测试期间该 retriever 可能用不同的 inference LM ,有两种情况下是有益的:

    • 首先,当 scoring LMinference LM 更小并作为其代理时。这导致 retriever 的数据生成是廉价的、高效的,适用于广泛的研究人员。

    • 其次,即使 scoring LMinference LM 相同(例如,都是 GPT-3 ),我们的方法也可以使用。

    当我们无法访问模型参数,只能将其作为一个 service 来使用时,这是有益的,而这种情况越来越普遍。在这种情况下,我们使用LM 训练一个轻量级的 retriever ,该 retriever 只负责学习相似性函数。更一般地说,考虑到 LM 的规模在可预见的未来可能会继续增加,我们可以将我们的 Efficient Prompt Retrieval: RPR 方法视为一种与大型语言模型进行接口和交互学习的方法。

    我们在三个结构化的 sequence-to-sequence 任务上对 EPR 进行了实证测试,这些任务涉及将输入的自然语言话语映射到语义表示:MTOPSMCALFLOW 专注于面向任务的对话、而 BREAK 则是一个将问题映射到基于语言的语义表示的 benchmark 。我们观察到,与先前的prompt retrieval 方法相比,EPR 在性能上有显著提升:

    • scoring LMinference 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

    这里面包含四个模型:

    • 一个无监督模型,用于检索候选训练样本集合(即,图中的 Ru)。

    • 一个评分模型,用于为候选训练样本集合打分(即,图中的 g^)。

    • 一个对比学习模型(基于 BERT 的模型),用于学习一个相似性度量。

    • 一个inference 模型,用于执行推断。

    训练期间最终得到的是这个对比学习模型。在推断期间使用对比学习模型、inference 模型。无监督模型、评分模型主要用于生成 label 从而用于训练期间的对比学习。

    核心思想是:如何判断样本之间的相似性。可以基于无监督的 sentence embedding 来得到。也可以通过监督学习来得到。对于监督学习,最重要的是如何得到针对相似性的标签。

  2. 相关工作:

    • 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 learningbias 的预训练方案,取得了显著的改进。

      • 最近,《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 patternsdecoding methods 、以及自动提取 hard promptssoft 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 中受益。

13.1 方法

  1. Prompt Retrieval

    • 问题介绍:给定一个由 input-output 序列组成的训练集 D={(xi,yi)}i=1n 、以及一个测试样本 xtest,我们的目标是训练一个 retriever R(xtest,D) ,使得该 retriever 能够检索一组训练样本 P={(xj,yj)}j=1mD,其中 mn 。我们简洁地称 Pprompt

      给定 inference LM g ,一个好的 prompt 应该在将测试样本 xtest 拼接到 prompt P 并传递给 g 时,导致生成 target output sequence 。具体而言,从 LM g([P;xtest]) 进行解码应该得到 ytest。在这项工作中,我们关注的是结构化任务,例如语义解析(semantic parsing),其中 x 是一个自然语言语句,y 是该表达式的语义表示(meaning representation)。

    • 先前工作:

      • KATE研究了不同 promptsGPT-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-3few-shot semantic parsing 选择prompt 的样本。然而,他们并没有训练一个 retriever, ,而是随机从训练集中抽取大量的 utterance-program pairs ,并根据GPT-3 来选择与 target instance question 相似的 pair 。这导致了一个昂贵的推理过程,对于每个测试样本,需要运行数百次 GPT-3 ,而不像我们的方法,它基于一个轻量级的亚线性 retriever

  2. 我们现在描述一种用于训练 EPR 的方法,即一种用于in-context learningefficient prompt retriever 。首先,我们描述如何生成带标签的训练数据,然后介绍如何使用训练数据进行训练和推理。Figure 2 概述了训练过程。

    这个 retriever 的核心是如何对训练样本进行编码。

13.1.1 生成训练数据

  1. 我们的方法依赖于找到哪些训练样本可以作为其他训练样本的 good prompts 。对所有 training examplespairs 进行打分的计算复杂度是 |D| 的二次方,因此是不可行的。因此,我们提出了一种方法用于选择一组候选样本 E¯D,从这组候选样本中我们将选择正负样本进行训练。重要的是,由于我们不是在测试时,而是仅仅生成用于训练的数据,我们可以使用 target 序列 y 来检索一个好的候选集合。鉴于我们的目标是检索与 input 在输出序列方面相似的样本,这可以通过简单的检索方法来实现。

    为了生成高质量的候选训练样本集合,我们利用了一个无监督 retriever ,即 E¯=Ru((x,y),D)。对于无监督 retriever 的选择,我们尝试了基于表面文本相似性的 sparse retriever BM25、以及 SBERT ,并发现使用 y 微弱地提高了性能。

  2. 对候选集合打分:一旦对于训练样本 (x,y) 检索到了候选集合 E¯={e¯1,,e¯L} ,我们就利用一个 scoring LM g^ 来独立地对每个候选 e¯lE¯ 进行打分。g^ 作为 inference LM g 的一个代理。具体而言,candidate prompt 的得分为:

    (12)s(e¯l)=Probg^(ye¯l,x)

    其中:s(e¯l) 是在LM g^ 下,给定候选 prompt e¯l 和输入序列 x 的条件下,输出序列的概率。这表示该候选 prompt 在解码目标时的帮助程度(独立于其他候选 prompt )。我们认为这个评分相比先前的方法更好地代表了训练样本在 inference 时的效用。

    我们将这个评分函数应用于所有的训练样本,并为每个训练样本定义了一组正样本 Epos,其中包括根据 s(e¯l)E¯ 中排名靠前的 top-k 个候选样本;以及一组负样本 Eneg ,其中包括根据 s(e¯l)E¯ 中排名靠后的 bottom-k 个候选样本。这样做应该会得到 relevant positive examples ,假设候选集 E¯ 包含了 good prompt candidateshard negatives ,因为根据 Ru(y,D),所有的候选样本与(x,y) 都具有很高的相似性。有了 positive examplesnegative examples ,我们现在可以应用对比学习,接下来我们将描述这个过程。

13.1.2 Training and Inference

  1. 训练:我们的训练过程与 DPR (《Dense passage retrieval for open-domain question answering》) 中的对比学习过程完全相同。该过程得到一个接收 input tokens 序列 xinput encoder EX() 、以及一个接收 condidate promptprompt encoder EP()。两个编码器都以 BERT-base 进行初始化,并且通常情况下,输出向量表示由 CLS token 给出。训练的目标是学习一个相似度度量,使得对于给定的测试样本 xtest ,它与生成 ytest 的其它训练样本相似。

    我们的训练样本的形式为 xi,ei+,ei,1,,ei,2B1。其中,正例 ei+ 是从集合 Epos(i) 中采样的;我们的负例由一个来自 Eneg(i)hard negative 、同一个 mini-batch 中其他样本的 B1 个正例,以及其它样本的 B1hard negative 所组成。我们将 inputinput-output pair 之间的相似度得分定义为内积 sim(x,e)=EX(x)EP(e) 。现在我们可以定义典型的 contrastive learning objective ,并对每个样本最小化 positive exam 的负对数似然:

    (13)L(xi,ei+,ei,1,,ei,2B1)=logexp(sim(xi,ei+))exp(sim(xi,ei+))+j=12B1exp(sim(xi,ei,j))

    这种方法的一个优点是,在 batch-size = B 的情况下,利用 in-batch negatives 技巧 (《Efficient natural language response suggestion for smartreply》),有效 batch size 的数量级为 B2

  2. Inference:训练 input encoderprompt encoder 之后,我们使用 FAISS 在预处理步骤中对整个训练样本集进行编码。在测试时,给定输入序列 xtest ,我们计算其编码 EX(xtest),然后在训练数据上进行最大内积搜索,以找到内积最高的 L 个最相似的训练样本,按内积顺序从大到小排序: P=(e1,,eL)final prompt Pinference LM g 支持的最大上下文大小 C 决定。具体而言, LL 是满足 i=1L|ei|+|xtest|+|y|C 的最大 L,其中 |y| 是所生成的输出的期望最大长度。最后,我们对g([eL;eL1;,;e1;xtest]) 应用贪婪解码,并返回生成的输出。

    最相似的训练样本距离 xtest 最近。

    需要注意的是,在训练时,我们独立地对每个训练样本进行评分;而在测试时,我们使用训练样本的集合。关于不同训练样之间的依赖关系建模留待将来研究。

13.2 实验

  1. 数据集:我们专注于将言语( 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 包括 15Kdevelopment 集合的样本、 134K 个训练样本,我们从训练集中随机抽取了 44K 个样本用于训练。

  2. baseline

    • 首先我们考虑无监督的 baseline,它们都仅在测试期间使用:

      • RANDOM:我们从训练集 D 中随机抽取样本。

      • SBERT:我们使用 SentenceTransformers 库提供的 BERT-based sentence embeddinngs 。具体地,我们使用 paraphrase-mpnet-base-v2 ,一个包含 110M 参数的模型,来编码测试语句 xtest ,并检索与其最相似的语句作为 in-context examples

        这就是 KATE 的思想。

      • BM25 :我们使用经典的sparse retrieval 方法 BM25,它是TF-IDF 的一种扩展,用于检索与每个测试语句 xtest 最相似的训练样本。

      • BRUTEFORCE:我们应用了 《Constrained language models yield few-shot semantic parsers》提出的用于 few-shot semantic parsingprompt selection 方法。给定一个测试样本 xtest ,我们随机采样 200 个训练样本。对于每个训练样本 (xi,yi),计算 Probg(xtestxi),并选择得分最高的样本作为 prompt 。与我们类似,这种方法使用 inference LM 来选择 prompts 。然而,它是在测试时进行的,这导致推理速度较慢。

  1. 实验细节:

    • 语言模型:在这项工作中,我们只训练了一个 dense retriever ,但使用了 scoring LMinference LM 。对于 scoring LM g^ ,我们使用 GPT-NEO ,一个在 The Pile (由各种高质量资源构建而成的 825 GB 英文文本语料库)上训练的 2.7B 参数的语言模型。

      此外,我们考虑了以下inference LMGPT-J600M 参数)、GPT-3175B 参数)、CODEX (在 GitHub 的代码上进行微调的 GPT-3 175B 参数模型)。由于我们的任务涉及从话语到程序或 meaning representations 的映射,CODEXin-context learning 方面可能表现出色。

      对于所有语言模型,我们使用最大上下文大小 C=2048tokens

      注意:还有两个模型也很重要: unsupervised retriever Ru(y,D) 、对比学习模型(基于 BERT 的模型)。

    • 评估:

      • BREAK 上,我们使用 LF-EM《Question decomposition with dependency graphs》)在开发集上评估性能。LF-EM 是一种比官方指标 Normalized Exact Match: NEM 更好的指标,因为它衡量两个 meaning representations 是否在语义上等价。在测试集上,我们使用NEM 进行评估。

      • MTOPSMCALFLOW 上,我们使用 Exact Match: EM 进行评估,即 inference LM 生成的字符串是否与 reference 字符串完全相同。

      我们在两种设置下评估 EPRLM-as-a-service 、和 LM-as-a-proxy

      • LM-as-a-service :我们将 GPT-NEO 用作 scoring LMinference-LM 。在此设置中,我们在 BREAK、MTOP、SMCALFLOW 的完整开发集上进行评估。

      • LM-as-a-proxy:由于我们通过付费 API 访问 GPT-3CODEX ,我们从每个数据集中随机抽取 1000 个开发集样本的子集,并对每个模型在此子集上进行一次评估。

  2. LM-as-a-service

    • Table 2 报告了在开发集上, scoring LMinference LM 相同的结果。EPR 在所有其他基线方法中表现出色。具体而言,与最佳基线相比,它将 BREAK 上的性能从 26.0 提高到 31.9 ,将 MTOP 上的性能从 57.0 提高到 64.2 ,将 SMCALFLOW 上的性能从 51.4 提高到 54.3 。这表明使用 LM 本身来标注样本是获得强大的 prompt retriever 的有效方法。

    • Table 3 显示了BREAKMTOP 上的测试集结果,证实 EPR 相对于 BM25CBR 显著提高了性能。

    • 对于无监督方法:

      • RANDOM 基线表明随机抽样训练样本导致性能较差。

      • BM25prompt retrieval 中优于 SBERT ,因此我们在所有监督方法中使用 BM25 来检索候选集合 E¯

      • 最后,BRUTEFORCE 的性能不如 BM25 。我们认为这是因为训练集很大(约 14K-120K 个样本),抽取 200 个样本无法涵盖对 GPT-NEO 有用的样本。

    • 有趣的是,EPRMTOPSMCALFLOW 上优于 BM25-ORACLE ,在BREAK 上与 BM25-ORACLE 相当。这令人惊讶,因为 BM25-ORACLE 在测试时可以访问输出序列 ytest ,这说明 scoring LM 提供的训练信号超出了表面文本相似性。

      LM-ORACLE 的性能远高于 EPR ,表明 scoring LM 提供的监督很强,通过从该信号中训练更好的 retriever 可以显著提高性能。

    我们进一步在 one-shot setup 中评估我们的模型,即当提供给 inference LMprompts 仅包含最高得分的样本时。在这种设置下,inference LM 的应用方式与生成 labeled data 时相同,其中我们独立地处理每个 prompt 候选。由于训练时和测试时更加一致,我们可以预期 EPR 的优势更加明显。

    Table 4 显示了结果。确实,EPR 的性能优于最佳基线 8.5% 、优于 BM25-ORACLE 5% 。此外,我们还研究了 ANYCORRECT-ORACLE ,它测试由 BM25 返回的任何候选是否导致正确输出。ANYCORRECT-ORACLE 达到了 53.6% ,比 LM-ORACLE20 个百分点。这表明 BM25 提供的候选样本的高质量,因为只需单个 prompt 就可以达到超过 50%LF-EM 。此外,这也暗示一个更好的评分函数有可能进一步提高性能。

  3. LM-as-a-proxyTable 5 显示了当 scoring LMGPT-NEO 、而 inference LM 为更大的语言模型时的结果。

    首先,趋势与 LM-as-a-service 设置相似,即 EPR 在所有数据集和预训练模型上均比先前的基线(包括最佳无监督基线 BM25 和最佳有监督基线CBR )提高了 2-8 个百分点。因此,GPT-NEO 时选择训练样本的良好代理。

    为了进一步验证这一发现,我们评估了 GPT-JBREAK 上的性能,其中 GPT-NEO 作为 scoring LM ,与使用 GPT-J 本身作为 scoring LM 进行比较。我们发现性能略有改善,从 31.5 提高到 33.6 。类似地,当使用 CODEX 作为 scoring LMinference LM 时,性能基本保持不变:29.5 -> 29.3 。因此,使用较小的语言模型(GPT-NEO )是训练一个将应用于其他语言模型的 retriever 的有效策略。在不同的 inference LM 中,由于 GPT-J 是使用与 GPT-NEO 相同的数据和相同的过程进行训练的,因此在所有方面表现略好于 GPT-NEOCODEX 优于GPT-3 的原因可能是它是使用代码进行训练的,而我们的数据集涉及到将输入映射到程序或 meaning representations 。令人惊讶的是,尽管体积较小30 倍,GPT-J 在除 MTOP 以外的所有数据集上都优于 CODEXGPT-3 。这可能可以解释为 GPT-J 是在不同的数据集(The Pile)上进行训练的。

  4. 分析:Table 6 显示了来自 BREAK 的一个样本,其中 EPR 解码出了正确的输出,而 CBR 没有。EPR 检索到的所有训练样本都执行了 argmax (原始 utterance 中的 argmin ),并在最后一步返回 "a code" ,而CBR 检索到的第三个样本既没有执行 argmaxargmin ,也没有涉及 "a code" 。我们在附录 A 中提供了其他例子。

    Figure 3 显示了 EPR 学到的 BREAK 训练样本的 embeddingt-SNE投影(其网页交互版本参考网址 https://anonymous.4open.science/w/Learning-to-retrieve-prompts-for-in-context-learning-1C4F/),我们在其中应用了 OPTICS 聚类算法。检查聚类显示 EPR 捕捉到了词汇相似性和结构相似性。附录 A 中还提供了一些聚类的例子。

  5. Prompt copying:我们分析语言模型如何利用 in-context prompts 。具体而言,我们想知道 target output 是直接从 prompts 中复制的还是由不同 prompt 片段组合而成,从而实现对新结构的泛化。

    为了实现这一点,我们定义了两种类型的复制行为:

    • 精确复制:用于衡量生成的输出是否与 prompt 中的任何样本完全匹配。

    • 抽象复制:用于量化生成的输出结构是否与 prompt 中的任何结构相匹配。

      具体而言,我们消除了逻辑形式中的非结构元素(如实体和函数参数)的影响。我们将输入中出现的每个单词序列替换为字符串[MASKED] ,包括 target utterancein-context examples 。如果语言模型解码的掩码逻辑形式(masked logical form)出现在 prompt 定义的掩码样本集合中,我们就说语言模型复制了该抽象模式。

    Table 7 展示了我们在验证集上对三个数据集的结果,以及每个子集上的准确率。我们观察到,在 MTOPSMCALFLOW 中,复制的率要高得多,抽象复制达到 80% 以上。此外,在发生复制的样本中,准确率要比未发生复制的样本高得多。例如,在 MTOP 上,有84.5% 的样本进行了抽象复制,在这些样本中,EPREM71.6% ,而在整个验证集上的 EM64.2% 。然而,即使在没有发生复制的情况下,准确率也不可忽视(23.4%),这表明模型在对新结构进行某种形式的泛化。

    另一个后续的问题是模型是否均匀地从 prompts 中复制模式,还是主要关注检索分数较高的 prompts 。为了回答这个问题,我们观察发生复制的样本子集。然后,我们为每个样本确定被复制的排名最高的 prompt ,并定义该 promptdistance 指标为:该排名除以拟合该样本的 prompts 数目。Figure 4 显示了BREAK 数据集上的 distance 分布情况。我们观察到,复制主要来自排名较高的 prompts

十四、ADAPET[2021]

论文 《Improving and Simplifying Pattern Exploiting Training》

  1. 近年来,pretrained 语言模型在各种自然语言处理任务上显示出显著的进步(BERTGPTT5 )。这些进步的大部分是通过在特定任务的标记数据上微调语言模型获得的。然而,当下游任务的标记数据非常有限时,性能可能会受到影响(《Unsupervised data augmentation for consistency training》《Mix-Text: Linguistically-informed interpolation of hidden space for semi-supervised text classification》)。

    最近,GPT-3 展示了当语言模型扩展到千亿级参数时,它们可以在仅用少量标记样本来 prompted 的情况下学习得很好。然而,GPT-3175B 参数)的规模使其难以研究。因此,需要开发更小的语言模型,这些模型即使在标记数据有限的情况下也能同样好地工作。

    Pattern-Exploiting Training: PETPETPET-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 的概率。

14.1 背景知识

  1. 完形填空风格的问题和 MLM:完形填空任务是一种问题,其中,文本中的某些部分被删除,而任务的目标是根据上下文填补缺失的部分。这里,被删除了某些部分的文本被认为是一个完形填空风格的问题。受完形填空任务的启发,BERT 引入了 MLM objective ,该 objective 试图预测完形填空问题中 masked position 的原始单词。

  2. 符号:令 G 表示语言模型,x 表示转换为完形填空风格问题的输入样本,y 表示 masked location m 处的标签。我们关心 [Gm(x)]z ,它表示特定 token zmasked location m 处的logit 值。

  3. Unlabeled Data AccessPETPET-2 假设可以访问task-specific 的未标记数据。对于某些应用程序(如情感分析),未标记数据可以便宜地获取。 但对于 SuperGLUE ,其中样本是带标签的 text pairs ,其中样本是被构建用来测试模型的自然语言理解能力,则获取未标记数据可能更昂贵。 例如,BoolQ 的构建要求标注员在分配标签之前过滤 good question-article pairs 。 因此,在我们的设置中,我们不假设可以访问 task-specific 的未标记数据,这与 GPT-3 的设置一致。

  4. PET:我们的工作主要建立在 PETPETPET-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 从模型 Gm(x) 获得 logit (在 single-token label 的情况下)。给定 output tokens 的空间 Y ,(在 Figure 2(a) 中为 {"Yes", "No"}),PETyY 上使用 Gm(x)logit 来计算 softmaxfinal loss 如下所示:

    (14)q(yx)=exp([Gm(x)]y)yYexp([Gm(x)]y)L=CE(q(yx),y)

    其中:yground-truthCE 为交叉熵损失函数。

    PET 还从不同模型的 ensemble 中蒸馏知识,这些模型从具有不同模式的标记数据和未标记数据上训练而来。iPETPET 的迭代式变体,它在迭代中训练模型:根据前一轮迭代的标签,每次迭代的训练集规模逐渐增大。 有关跨任务使用的不同 patterns 的描述,请参阅附录 A.1

14.2 方法

  1. 我们提出的方法称为 ADAPET ,它修改了PETobjective ,以便在没有 task-specific 的未标记数据的情况下提供更多的监督并且学习。

  2. 解耦 Label LossesPETspecific 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 ),以便每个概率都受到词表中所有 tokenslogit 的影响。然后,我们最大化 correct class tokens 的概率、最小化 incorrect class tokens 的概率。这相当于二元交叉熵,如 Figure 2(a) 所示。

    正式地,如果 y 是样本的真实标签,那么损失函数为:

    (15)q(yx)=exp([Gm(x)]y)yYexp([Gm(x)]y)LD=logq(yx)yylogq(yx)

    该损失函数可以重写为使用二元交叉熵:

    (16)LD=BCE(q(yx),1)+yyBCE(q(yx),0)

    LD 的物理意义:softmax 交叉熵的近似。

  3. 为不同任务统一损失函数:对于标签正好是 one token 的常规任务,PET 使用公式 L=CE(q(yx),y) 。对于 WSC,它没有incorrect class labelsPET 使用原始的 MLM objective 而不是 L=CE(q(yx),y) 。这在 ADAPET 中等效于没有第二项的 LD

    对于其他具有 multi-token labels 的任务( COPA, ReCoRD ),PET 将类别概率计算为单个 token 的对数概率之和。但是,如何将这些 label 概率转换为有效的概率分布,这还不是很清晰。PET 没有归一化概率,而是使用 hinge loss 来确保 correct labelincorrect labels之间有间隔。

    ADAPET 中,对于标签中的每个 tokenLDcorrect tokens 与每个其他 tokens 区分开来,这是通过以下损失:

    (17)LD=zyBCE(q(zx),1)+yyzyBCE(q(zx),0)

    这个目标函数将 single loss based on multiple tokens拆分为 multiple losses over single tokens 。因此,我们不需要将单个 tokens 的概率相乘,也就不会遇到归一化问题。

    类似于 bag-of-words,这里认为多个 tokens 之间是独立的。

  4. Label ConditioningPET objective包含问题:"Given the input, what is the right label?"。但是,由于输入空间和输出空间都由 tokens 组成,我们也可以问逆问题:"Given the answer, what is the correct context?"。模型被训练来预测给定标签的输入。

    正式地,设 x 为通过从原始输入 x 中随机掩码 tokens 而来,xmx 中被掩码的原始 tokens 。在 label conditioning objective 中,我们关注量 P(xmx,y),它鼓励模型在给定 label 的条件下预测输入中的 masked tokens

    在训练期间,如果标签是正确的,模型必须预测 original token,如 Figure 2(b) 所示。另外,如果标签是错误的,模型会被迫不预测 original token 。我们最大化 P(xmx,y) 并最小化 P(xmx,y),yy。这个目标 decoupling label losses 方法相同,只是输入和输出不同:

    (18)q(xmx,y)=exp([Gm(x,y)]xm)vVexp([Gm(x,y)]v)LM=BCE(q(xmx,y),1)+yyBCE(q(xmx,y),0)

    ADAPETfinal lossdecoupled label losslabel-conditioned MLM loss 的总和。

    Label ConditioningLabel Losses 可以统一起来:

    • 首先将输入和 correct label 拼接起来:掩码 label 并预测 label token 、掩码输入并预测输入,最大化这两个概率。

    • 然后将输入和 incorrect label 拼接起来:掩码 label 并预测 non-label token 、掩码输入并预测输入,最小化这两个概率。

    注意:在训练的时候考虑 q(yx),q(yx),q(xmx,y),q(xmx,y) ,而在推断期间仅考虑 q(yx)

14.3 实验

  1. 我们在SuperGLUE 上运行实验,遵循 PET-2 的相同 data split ,其中每个任务包含 32 个标记样本。

    我们的代码使用 PytorchHuggingFace 上的实现。 我们使用与 PET 相同的预训练模型和超参数,但将 training batches 的数量增加到 1k ,并在开发集上选择最佳 checkpoint,因为训练steps 数量更长的效果更好,即使是少量样本(《Revisiting few sample BERT fine-tuning》)。 对于所有消融实验,我们仅使用 first pattern 训练 250batches 。 更多详细信息请参阅附录 B

    由于我们不假设可以访问未标记数据,我们不对 ADAPET 应用 PETiPETthree-step 训练过程。我们仍然假设可以访问完整的开发集来选择最佳掩码比例、以及最佳 checkpoint ,因为 PET 可能使用完整的开发集来选择超参数(我们直接复用它的超参数)。

  2. Table 1Table 2 显示了我们在验证集和测试集上的结果。我们与 GPT-3PET/iPET 进行了比较。请注意,PET/iPET 使用未标记数据和 three-step 训练过程。为了公平比较,我们训练 PET with a single pattern: sPET 共计 1kbatches,并报告验证集上表现最好的模式的分数。我们在附录 A.2 中进一步分析了模型在每个模式下的表现。

    • 在开发集上,ADAPET 优于所有不使用未标记数据的模型,甚至优于 PET 的迭代式变体 iPET0.5 分(绝对提升)。令人惊讶的是,sPET 优于 PET ,但仍以 2.6 分落后于 iPET 。但是,这与 PET-2 的消融结果一致,该结果显示仅使用标记数据训练 sPET 模型的 ensembling 优于PET 。此外,LM-BFF 表明,具有最佳性能模式的模型优于ensembling sPET 模型。

    • 在测试集上,ADAPET 优于所有其他模型,包括 iPET ,这是在没有未标记样本(每个任务平均 9k )的情况下实现的,并在SuperGLUE 上的 few-shot learning 中取得了 SOTA 结果。

  3. 损失消融实验:Table 3 显示了我们在本文中引入的损失函数的消融分析。从结果中可以看出:

    • label conditioning: LCADAPET 非常有利,尤其是在 CB 上。

    • 将我们修改的 decoupled label objectiveADAPET W/O LC )与 sPET 进行比较,我们看到它在 CB 上的 F1 得分较差,但在 RTEMultiRC 上的表现要好得多。

    • 接下来,我们与仅在 correct label 上条件化的 LC 进行比较。我们看到这在 BoolQ 上有下降,但在 CB 上有帮助。

    我们在附录 C 中对模型选择进行了消融实验。

十五、Noisy Channel Prompt Tuning [2021]

论文:《Noisy Channel Language Model Prompting for Few-Shot Text Classification》

  1. few-shot learning 中,通过在输入前添加自然语言文本或连续向量(称作 prompts )来引导大型语言模型,已经显示出很大的潜力(GPT-3 )。先前的研究提出了寻找更好 prompt 的方法(AutoPromptPrefix-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 tuningchannel 模型(称为 channel prompt tuning )明显优于所有的 direct baselines

    总结起来,我们的贡献有三个方面:

    • 我们引入了一种 noisy channel 方法来进行 language model promptingfew-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 tuningdemonstration 就是传统的 prompts 方法。

  2. 相关工作:

    • Channel Model :设 xy 分别为输入和输出。最常用的模型,称为 direct models ,计算 P(y|x) 。相反,noisy channel models 最大化 P(xy)P(y) 。虽然 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 calibrationscoring 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 的输入 x 的条件下输出 y 的概率。

      我们的工作与两篇最近的论文密切相关:

      • 《Improving and simplifying pattern exploiting training》 (即,ADAPET )研究了面向 masked language modelslabel-conditioning objective ;虽然这不是严格的 generative channel model ,但是以输出 y 为条件,这类似于我们的工作。然而,他们仍然在优化一个 discriminative objective ,并且在测试时的推理与 direct model 相同。

      • 《Surface form competition: Why the highest probability answer isn’t always right》 探索了一种 zero-shot 模型,该模型基于 Pointwise Mutual Information 来计算给定 y 的条件下 x 的概率,但限制是输入和输出是可互换的。

      据我们所知,我们的工作是第一个使用 noisy channel model 从而在分类任务中用于语言模型 prompting ,并且首次将其与 noisy channel 文献联系起来。

15.1 方法

  1. 我们聚焦于文本分类任务。我们的目标是学习一个 task function f:XC,其中 X 为输入空间(自然语言文本)、C 为标签空间(即,所有候选标签集合 C={c1,,cm} )。我们考虑三种形式:

    • Direct:直接计算在给定输入 xX 的条件下输出 ciC 的概率,即 P(cix) 。这是在现代神经网络中最常用的方法。

    • 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》,它计算 P(cix)P(ciNULL) 而不是 P(cix)

      这种方法的动机是:语言模型可能存在校准不佳的问题,并且在具有相同含义的不同字符串之间存在竞争。这种方法被用于本文稍后的 demonstration 方法中。

      这里 NULL 表示无效的输入,如空字符串、"NULL" 字符串、或者任何其它的随机字符串。

    • Channel:使用贝叶斯公式来重新参数化 P(cix)P(xci)P(ci)P(x) 。由于我们通常关心的是 argmaxciCP(xci)P(ci)P(x) ,而 P(x)ci 相互独立,因此我们只需要计算 argmaxcicP(xci)P(ci)。此外,我们假设 P(ci)=1|C| ,因此我们只需要计算 P(xci)

      是否可以让 P(ci) 不遵从均匀分布,而是每个类别在训练集中出现的概率?可以试一试。

  2. 我们使用因果语言模型(causal language modelPLM 来探索 direct modelchannel model ,其中因果语言模型给出了在给定文本 x 的条件下继续输出文本 y 的概率。更具体地说,给定文本 x=x1xtxy=y1yty(其中 xi,yjVV 为词表),PLM(yx) 表示 j=1tyPLM(yjx1xtxy1yj1)

    在学习 task function f:XC 时,我们还假设预定义的 verbalizer v:CX 将每个标签映射到自然语言表达中。例如,如果任务是情感分析,其中 C={c+,c},一个样本输入文本 x 可能是 "A three-hour cinema master class",而一个 verbalizer v 可能是 v(c+)= "It was great" 、和 v(c)= "It was terrible" 。在 few-shot 设置中,我们还给定了一组 K 个训练样本 D={(x1,c1),,(xK,cK)}

    我们感兴趣的是这样的方法:没有可训练参数、或者可训练参数的数量非常小(通常小于总参数量的 0.01% )。这是根据之前的观察结果得出的,即为每个任务更新和保存大量参数是昂贵且常常不可行的。

  3. Demonstration 方法:在 demonstration 方法中,没有可训练参数。我们探索了三种预测方式,如 Table 1 所总结的。

    • zero-shot:我们遵循 GPT-3 的方法,计算 P(cix)PLM(v(ci)x) 、计算 P(xci)PLM(xv(ci))。例如,给定 x"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-3few-shot learning 方法。关键思想是将 K 个训练样本的拼接放到输入之前,以便语言模型可以从输入中学习 task setup 。最初的方法是用于 direct model ,但可以自然地扩展为 channel model 。具体而言:

      • direct model 中的 P(cix) 通过 PLM(v(ci)x1,v(c1),,xK,v(cK),x) 来获得。

      • channel model 中的 P(xci) 通过 PLM(xv(c1),x1,,v(cK),xK,v(ci)) 来获得。

    • ensemble-based demonstrations:我们提出了一种新的方法作为concat-based demonstrations 的替代方案,我们发现这个新方法是一个更强大的 direct model 。与将 K 个训练样本作为一个序列进行拼接并从语言模型中一次性获取输出概率不同,我们运行语言模型 K 次,每次获取一个训练样本(来自 K 个训练样本,并且每次样本不重复)为条件的输出概率,并将 K 次结果的概率相乘。

      具体而言:

      • direct model 中的 P(cix) 通过 j=1KPLM(v(ci)xj,v(cj),x) 来获得。

      • channel model 中的 P(xci) 通过 j=1KPLM(xv(cj),xj,v(ci)) 来获得。

      这种方法还降低了内存消耗:基于拼接的方法的内存复杂度为 O(K2),而这种方法为 O(K) 。此外,这种方法消除了对训练样本排序的依赖,而训练样本排序这对模型性能有显著影响(《Calibrate before use: Improving few-shot performance of language models》《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》)。

  4. Tuning 方法:我们还探索了仅调优少量模型参数的方法,如 Figure 2 所总结的。我们研究了 direct modelshead tuning 和变 transformation tuning 。我们还考虑了针对 direct modelschannel modelsprompt tuning 方法,分别称为 direct prompt tuningchannel prompt tuning 。在训练和推理过程中,所有模型与 Table 1 中的 zero-shot setup 共享相同的 input-output 接口。

    • head tuninghead tuning 是对 head 进行微调的过程,head 是语言模型的一个矩阵,该矩阵将最后一个 Transformer layerhidden representation 转换为 logit values 。设 OR|V|×hhead 矩阵,hxRh 为给定 x 时最后一个 Transformer layerhidden representation 。对于 token viV ,通过 Softmax(Ohx) 的第 i 个元素来计算PLM(vix) 。我们在保持语言模型的所有其他参数不变的同时对 O 进行微调。尽管在语言模型预训练期间 O 与语言模型的 embedding 矩阵相绑定,但在 head tuning 过程中我们将它们独立开来。

    • transformation tuning :作为 head tuning 的替代方法,我们使用一个新的变换矩阵 UO 进行变换,其中 URh×h 。具体而言,对于 token viV ,通过 Softmax(OUhx) 的第 i 个元素来计算PLM(vix) 。我们冻结其他所有参数(包括 O 并训练 U ,其中 U 从一个单位矩阵初始化。

    • prompt tuningprompt tuning 是最近引起了广泛关注的方法。其核心思想是将语言模型视为一个黑盒模型,然后学习 continuous prompt embeddings 。我们遵循 《The power of scale for parameter-efficient prompt tuning》 的方法,将 nprompt tokens u1,un 放到输入之前,并学习 u1unembedding 。换句话说:

      • direct models 计算 P(cix)=PLM(v(ci)u1,,un,x)

      • channel models 计算 P(xci)=PLM(xu1,,un,v(ci))

      在语言模型中的参数除了 u1,,unembedding 之外都被冻结。

      这里是 zero-shot 的格式。是否可以引入 few-shot

15.2 实验

  1. 数据集:十一个文本分类数据集,包括 SST-2SST-5MRCRAmazonYelpTRECAGNewsYahooDBPediaSubj 。这些数据集每个任务包含不同数量的类别,从 2 个类别到 14 个类别。数据集的统计如 Table 2 所示。

  2. 训练数据:对于 few-shot learning ,我们主要使用训练集大小 K=16 ,但在消融实验中探索了 K={4,16,64,Full} 。我们均匀地从训练数据的真实分布中采样 K 个样本。我们放宽了之前工作中每个标签的训练样本数相等的假设(《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》)。

  3. 语言模型:我们使用 GPT-2 作为语言模型。我们主要使用 GPT-2 Large ,但在附录 C 的消融实验中还尝试了不同大小(Small, Medium, Large, XLarge )。虽然我们只在 GPT-2 上进行了实验,但我们的实验很容易扩展到其他因果语言模型上。

  4. 评估:我们使用准确率作为所有数据集的评估指标。

    我们尝试了 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 进行复现。

  5. Demonstration Methods 的实验结果:Table 3 显示了 demonstration 方法的性能。

    • Direct vs. Direct++ :在所有设置中,Direct++ 明显优于朴素的 direct model ,这表明使用 P(cix)P(ciNULL) 而不是 P(cix) 对于性能是非常有益的,正如《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 11Table 12 中报告。它们表明 channel models 的强大性能可以归因于其低方差。大多数数据集上 Direct++ 实现了最高的 best-case 准确率,但它具有更高的方差,平均准确率和 worst-case 准确率低于 channel models

    • Zero-shot vs. Few-shotdirect modelsfew-shot 设置中的性能有时会下降,这也是之前的研究所观察到的(《Calibrate before use: Improving few-shot performance of language models》 )。这可能是因为训练数据提供的demonstrations. 导致模型校准错误,并容易受到 demonstrations 选择的偏见。然而,channel models 在所有数据集上实现了明显优于 zero-shot 方法的 few-shot 性能。

  6. 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 ,特别是在 TRECSubj 数据集上显著优于channel prompt tuning 。对于这些数据集,任务(如,找到问题的答案类型、或识别陈述句 subjectivity )与语言建模本质上不同,可能受益于直接更新语言模型的参数,而不是将语言模型作为黑盒使用。

      然而,channel prompt tuning 在大多数数据集上优于 direct head tuning 。最大的收益出现在 YahooDBPedia 数据集上。事实上,在这些数据集上,channel prompt tuning 甚至优于 all funetuning (对语言模型的所有参数进行微调),在Yahoo 上达到 48.9/43.8 ,在 DBPedia 上达到 66.3/50.4 。我们推测,在这些数据集上使用 K=16 自然地需要对 unseen labels 进行泛化,因为类别数目较大( |C| 分别为 1014 ),在这些情况下,channel prompt tuning 在显著优于direct models

  7. 消融研究:对于消融实验,我们在 SST-2MRTRECAGNews 数据集上报告了实验结果,使用一个训练种子(而不是四个)、四个 verbalizers、和五个数据种子(与 main experiments 相同)。

    • 改变训练样本数量:我们改变训练样本数量(K )并报告平均准确率,结果如 Figure 3 所示。所有方法中,随着 K 的增加准确率都有提升。

      • 我们确认了 channel prompt tuningK16 时的强大性能,但当 K=64 时,head tuning 的性能优于 channel head tuning

      • K=Full 时,direct prompt tuningdirect head tuning 都优于 channel prompt tuning 。我们认为这是因为:

        • 首先,channel models 放大的训练信号(《Generative question answering: Learning to answer the whole question》)在 K 较小时更明显。

        • 其次,channel models 在标签分布不平衡时对结果更有裨益(在下一个消融实验中得到证实),这在较小的 K 时更容易发生。

      值得注意的是,我们的 K=Full 实验确认了 《The power of scale for parameter-efficient prompt tuning》 的发现,即 direct prompt tuning 的性能与 all finetuning (对语言模型的所有参数进行微调)相媲美,而参数效率更高。这只有在 K=Full 时才成立;在 few-shot setup 中,all finetuning 明显优于其他方法。这与传统分析相矛盾,传统分析认为当训练数据稀少时,可训练参数更少的表现会更好(《On discriminative vs. generative classifiers: A comparison of logistic regression and naive bayes》)。这可能是因为这样的分析没有考虑到语言模型预训练,其中预训练为模型提供了监督,但不是终端任务的训练数据。

    • 标签不平衡的影响:在二分类数据集(SST-2MR )上,我们用 K={16,64} 改变训练数据中的标签不平衡。具体来说,令 C={c+,c}p=|{(x,c)Dc=c}||D| (即,训练数据中的类别为 c 的样本的占比)。我们使 p 的取值为{0,0.125,0.250,0.375,0.5}p=0.5 意味着标签完全平衡,p=0 意味着训练数据中的标签仅包含 c+ 。我们还与 upsampling baselines 进行了比较,其中我们对 infrequent 标签的训练样本进行上采样,以便模型在训练期间看到每个标签的训练样本数相等。结果在 Figure 4 中报告。

      • 所有 direct models 对训练数据的不平衡都很敏感,即使在 p 很小时,它们也从上采样中受益。

      • channel prompt tuning 对不平衡不敏感,在 p 很小时明显优于 direct models ;当 p<0.25 时,它甚至优于 all finetuning

      • p 接近 0.5 时,direct head tuningchannel prompt tuning 相当或优于后者。

      • 值得注意的是,在 p 很小时,具有上采样的 direct prompt tuningall finetuninghead tuning 相当或优于后者。

  8. 泛化到 unseen labels:我们在一个具有挑战性的场景下进行实验,其中模型必须泛化到未见的标签。尽管这可能看起来是一个极端的场景,但这通常是一个实际的设置,例如,问题是用一组标签定义的,但以后可能需要添加新标签。

    • 首先,我们像 main experiments 一样采样 K 个训练样本,但随机地排除一个标签,以便测试时至少有一个标签在训练期间未见过。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 的增益较小。

      我们认为需要做更多工作,使跨任务迁移更好,并发现何时可能进行跨任务迁移。

15.3 讨论

  1. 我们在 11 个数据集上的实验表明,channel models 明显优于它们的 direct counterparts ,主要是因为channel models 的稳定性,即较低的方差和较好的 worst-case 准确率。我们还发现 direct head tuning 比以前工作认为的更具竞争力,并且不同的情况下倾向于选择不同的方法。具体来说,在以下方面首选 channel prompt tuning

    • K 很小:当训练样本更少时, channel prompt tuning 更具竞争力。我们推测有两个原因:

      • 首先,channel models 更稳定(即,实现低方差和高 worst-case 准确率),而 direct modelsK 很小时非常不稳定。

      • 其次,channel models 通过要求模型逐字解释输入来提供更多信号(《Generative question answering: Learning to answer the whole question》 的说法),这在低数据的情况下是有利的。

    • 数据不平衡或 |C| 很大:当训练数据即使略微不平衡时, direct models 没有竞争力。我们认为这是因为 LM head 过于依赖标签的 unconditional distributions 。训练数据的标签不平衡是一个现实世界的问题,特别是当 K 很小且 |C| 很大时。因此,我们认为这是未来工作的一个重要领域。

    • 需要泛化到 unseen 标签:所有 direct models 都无法预测在训练期间 unseen 标签,这表明它们在标签空间中过拟合。相比之下,channel models 可以预测 unseen 标签,可能是因为标签空间是被间接建模的。这与先前的工作一致,该工作表明 channel modelsdistribution shift 下更具竞争力 (《Generative and discriminative text classification with recurrent neural networks》《Generative question answering: Learning to answer the whole question》)。

    • 任务更接近语言建模:即使采用仔细选择的 verbalizer ,如果任务与语言建模也差异太大(例如,TRECSubj ),head tuning 优于 prompt tuning 。这可能是因为 head tuning 受益于直接更新语言模型的参数。这可能意味着因果语言模型不适合所有任务,或者我们需要更复杂的方法在不更新语言模型参数的情况下,来应用因果语言模型进行此类任务。

  2. 局限性和未来工作:虽然我们表明 channel modelsfew-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 modelcausal 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【2021】

论文:《True Few-Shot Learning with Language Models》

  1. 语言模型预训练的主要进展导致了语言模型可以只用少量的样本来学习一个新的任务,也就是 few-shot learningfew-shot learning 克服了数据丰富的监督学习的许多挑战:收集标记的数据是昂贵的、往往需要专家、而且关于任务数量的 scale 很差。然而,语言模型的 few-shot 对文本任务的描述(即,"prompt")、训练样本的顺序、解码策略、其他超参数、以及学习算法本身非常敏感。因此,有效的模型选择(model selection )对于获得良好的 few-shot 性能至关重要。

    然而,最近的工作在 few-shot learning 的模型选择方面存在一些问题。之前的工作使用了大量的训练样本或 held-out examples 来选择 promptsGPT-3ADAPET《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 (一种 SOTAfew-shot 方法)在 8 个任务中的性能下降 2-10% 。此外,true few-shot 模型选择在性能上有很高的方差;所选择的模型往往比随机选择的模型差很多。我们发现在改变所使用的样本数量、计算量和我们的选择准则的保守性(conservativeness)时也有类似的结果。总的来说,我们的结果表明,模型选择是 true few-shot learning 的一个基本障碍。

    结合这篇论文的观点,一个自然的想法是:既然验证集那么重要,那么是否可以始终拆分一部分样本作为验证集?

    进一步的思考是:对于不同的算法,应该在相同数据量(训练集 + 验证集)的条件下进行比较。

16.1 Can We Do Model Selection in Few-Shot Learning?

  1. 我们把 few-shot learning 分为三种不同的情况,每一种情况都假定了对不同数据的访问。在此,我们对这些环境进行了正式的区分,以帮助未来的工作避免无意中比较在不同 settings 下执行的 few-shot 方法。

    考虑到监督学习的情况,我们有一个由输入 x1:N 和标签 y1:N 组成的数据集(数据集大小为 N) ,其中该数据集从集合 D 的分布中采样。我们的目标是确定 learning 算法 AA1,,AA,在训练集 DtrainD 上学习后,A 在未见过的验证集 DvaD 上给定 x 来预测 y 时,具有最小的泛化损失 L 。我们说一个算法 A(Dtrain,R) 将训练集 Dtrain 和影响训练的各种随机因素 R 映射到一个函数上,这个函数可以在给定 x 的条件下预测 yA 指定了模型结构、超参数、以及 promptsR 包括影响学习算法结果的随机因素,如参数初始化、以及在线学习算法(如随机梯度下降)的训练样本的顺序。我们说 A 在一个给定的验证集 Dval 上获得了泛化损失 L(A(Dtrain,R),Dval)。我们的目标是找到在训练集和验证集上期望损失最小的 A

    (19)EL(A,R)=EDtrain,Dval[L(A(Dtrain,R),Dval)]
    • data-rich supervised learning:在 data-rich supervised learning setting 下,EL(A,R) 通常用单个的 train-validatin split (Dtrain,Dval) 进行评估。

    • multi-distribution few-shot learning:由于大的 DtrainDval 并不总是可用的,传统的 few-shot setting 用许多小的 (Dtrain,Dval) (它们从不同的分布 D 中采样而来)来评估 EL(A,R) 。每个分布 D 都是 D 中采样而来,其中 D 是分布的分布。我们称这种 settingmulti-distribution few-shot learning

    • tuned few-shot learning:最近的工作并不假定可以从其他分布中获取数据,只使用单个分布中的几个样本来更新 pretrained LMGPT-3ADAPET)从而进行 few-shot learning 。这些论文使用一个大的验证集 Dval 来调优 learning 算法 A ,这种设置我们称之为 tuned few-shot learning

      例如,GPT-3 尝试用不同的措辞和训练样例数量来提高 GPT-3 的验证准确率。ADAPET 根据验证结果选择 early stopping iterationprompt 和其他特定模型的超参数。

      tuned few-shot learning 依赖于许多标记样本,所以我们认为 tuned few-shot learning 并不符合 few-shot learning 的要求。如果有许多验证样本,它们可以被纳入训练集,并使用 data-rich supervised learning 进行训练。tuned few-shot learning 算法应该与使用相同数量的总数据 |Dtrain|+|Dval|data-rich supervised learning 算法进行比较。

  2. 在这项工作中,我们评估了在没有大的 Dval 的情况下,tuned few-shot learning 方法的成功,我们称之为 true few-shot learning 。从形式上看,我们的目标是选择一种具有低的期望损失 EL(A,R) 的学习算法 A ,只使用从单个分布中采样的小型训练集 Dtrain 。在这里,我们必须通过近似 EL(A,R) 来选择 A ,例如,使用交叉验证。

    有几篇论文声称,通过选择基于有根据的猜测的超参数,可以避免评估 EL(A,R)PETPET-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 方法。

  3. Cross-validation: CV:交叉验证是估计泛化损失的最广泛使用的方法之一。交叉验证也被用于先前的 multi-distribution few-shot learning 的工作中。

    交叉验证将 Dtrain 随机划分为 K 个同等大小的 folds F(Dtrain)1,,F(Dtrain)K,并在其中一个 fold F(Dtrain)k 上评估平均损失,而在剩余的 folds F(Dtrain)¬k 上进行训练:

    (20)CV(A,R,F)=EkU(1,K)[L(A(F(Dtrain)¬k,R),F(Dtrain)k)]

    其中 U(1,K) 表示 1K 之间的均匀分布。

    这样一来,交叉验证从标记样本集合中形成了 Ktrain-validation splits 。 每个 fold 刚好只有有一个样本的 CV 通常被称为leave-one-out CV: LOOCV

  4. Minimum description length: MDLMDL 可以通过评估在前面的 folds F(D)1:k1 上进行训练时对 fold F(D)k 的平均损失来估计:

    (21)MDL(A,R,F)=EkU(1,K)[L(A(F(Dtrain)1:(k1),R),F(Dtrain)k)]

    这个过程被称为 "在线编码" (《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 衡量泛化,因为它评估了一个学习算法在输入 x1:N 的情况下对标签 y1:N 的压缩程度,而且更好的压缩意味着更好的泛化(《Occam’s razor》)。最近的工作使用 MDL 来确定哪些学习算法在解释给定数据方面最为有效。

  5. 方差问题:我们评估 CV (或者 MDL )所选择的算法的泛化损失:

    (22)L(ACV(Dtrain,R),Dval), where ACV=argminAER,F[CV(A,R,F)]

    ACV 表示:考虑所有可能的 folds 拆分、以及所有可能的随机性之后,使得平均验证集最小的那个模型。通俗地讲, ACV 就是通过 K 折交叉验证得到的 final model

    注意:Dval 并不会参与到 K 折交叉验证的过程中。

    • 该损失的期望应该是低的,其中期望跨不同的数据 DtrainD,DvalD 、随机因子 R 、以及 splits F

    (23)EDtrain,Dval,R,F[L(ACV(Dtrain,R),Dval)]

     

    • 该损失的方差也应该是低的:

      (24)VDtrain,Dval,R,F[L(ACV(Dtrain,R),Dval)]

    低方差意味着 CV/MDL 可以可靠地选择一种算法:当用给定的 Dtrain 、随机因子 RF 训练时,可以泛化到 Dval 。可靠性对于许多实际的应用或商业应用是很重要的,在这些应用中,最坏情况下的性能很重要,如图像识别、对话系统、机器人。

    我们还尝试在模型选择过程中显式地考虑算法的方差,选择 ACV 来最小化 CV 的保守估计,即 CVα(A),使得概率 PrR,F[CV(A,R,F)<CVα(A)] 是高的:

    (25)CVα(A)=ER,F[CV(A,R,F)]+αVR,F[CV(A,R,F)]

    其中:α 是一个超参数,基于预期的概率来设置。

    物理含义:选择模型时,不是选择 dev 损失最小的,而是选择 dev 损失加上 α 倍标准差最小的。

    具体而言,如果当采样 R,F 时, CV(A,R,F) 遵循一个正态分布 N ,那么 CV(A,R,F)<CVα(A) 对于给定的 R,F 具有概率 αN(μ=0,σ=1)CVα(A) 类似于 Watanabe Akaike Information《Asymptotic equivalence of bayes cross validation and widely applicable information criterion in singular learning theory》) ,它将模型(用 A 训练而来)的泛化误差估计为:该模型(用 A 训练而来)的期望损失 + 一组模型(它们都用 A 训练而来)的训练损失的方差。

    超参数 α 怎么调?本来验证集的规模就不足,这又引入了一个新的超参数。

  6. 其它的 model selection 准则:之前的工作已经开发了其他的 model selection 准则,如:Akaike Information Criterion: AICWatanabe-Akaike Information Criterion: WAIC、以及 Mallows’ Cp 。 这些方法往往依赖于深度学习中没有的假设或数值(AIC, Mallows' Cp ),或者是 LOOCV 的近似值(WAIC )。由于 SOTAfew-shot learning 方法往往是基于深度学习的,我们专注于 CVMDL 作为我们的 model selection 准则。在附录 B 中,我们还测试了其他几个适用于深度学习方法的准则。

    selection 准则可以自动优化,例如用贝叶斯优化、进化方法、强化学习、或梯度下降。这类方法的目的是与穷举搜索的性能相匹配,这是最佳方法(在我们的工作中使用)。

16.2 True Few-Shot Prompt Selection

  1. 下面,我们对 LAMA 进行测试。LAMA 是一个用语言模型来检索事实的 benchmark ,之前的工作已经为其开发了许多 designing prompts 的策略。我们使用 "TREx" split ,其中包括 41 种关系,每种关系最多有 1k 个样本。我们只使用 LAMA-UnHelpfulNames 子集中的样本,该子集过滤掉了容易猜测的样本(例如,"The Apple Watch was created by _" ,答案是苹果)。

    我们测试了 9 个不同规模的热门语言模型的 5-shot accuracyGPT-3175B, 13B, 6.7B, 2.7B 参数)、GPT-21.5B, 782M, 345M, 117M 参数)、以及 DistilGPT-2GPT-2 117M 的知识蒸馏版本,包含 82M 参数)。

  2. Prompts:为了形成我们的候选 prompts 集合 A1,,AA ,我们依赖于 LAMA 以及 LM Prompt And Query Archive: LPAQA 。对于每种关系,我们使用来自 LAMA 的手工写的 prompts ,再加上 LPAQApromptsLPAQAprompts 来自于:用 back-translation 的方式 paraphrasing manual prompt 、从 Wikipedia 中挖掘、从 top mined promptparaphrasing

    对于每种关系,我们最多使用 16prompts ,平均为 12prompts (关于我们使用的 prompts 的细节,见附录 E.1 )。

  3. 计算 CVMDL :我们在所有 held-out 样本上计算负对数似然从而作为损失函数 L

    我们使用 K=NN 为训练样本的总数。

  4. 边际化(marginalizing )样本顺序:训练样本的顺序影响到语言模型的泛化(《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》),因此我们将样本顺序视为一个随机因子 R ,我们对其进行边际化,以评估 prompt A 的泛化。

    我们通过对所有 N! 个顺序进行平均,计算出准确的 ER,F[CV(A,R,F)]ER,F[MDL(A,R,F)] 。我们使用 N=5 个样本来约束 N! 不能太大。

    为了进行比较,我们展示了各种情况下的 test accuracy

    • 总是选择最好的 prompts ,像以前的工作一样使用 held-out accuracy 来选择。

    • 最差的 prompt 作为一个下限。

    • 随机 prompts (我们展示了所有 prompts 的平均准确率)。

  5. true few-shot learning 中,prompt selection 的表现如何:Figure 1(left) 显示了结果:

    • 在不同的模型规模下(横跨三个数量级),prompt selectionrandom selection 获得了 marginal improvement

    • 通过 CVMDL 选择的 prompts 平均比 best prompt (根据 held-out 数据来选择的)在绝对值上少5-7% 。事实上,根据 held-out performance 选择的 prompts 往往优于那些以 true few-shot 选择 prompts 的大型模型。如 Figure 1(right) 所示,CVMDL 确实倾向于选择比平均水平更好的 prompts ,但只能将平均水平和 best prompts 之间的差距缩小 20-40% 。我们发现其他几个任务(参考后面的实验章节)和选择准则(参考附录 B )也有类似结果。

    Figure 2(left) 显示,CV/MDL 在选择具有最高 test accuracyprompts 时很费劲。对于像 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 高估了语言模型的能力。

  6. prompt selectionaverage prompt 有多大的可靠改进:如果 prompt selection 的平均改进很小,那么对于一个给定的任务和训练集,我们至少能以高概率获得改进吗? Figure 1(left) 显示,最差的 prompts 比平均水平差得多,因此,如果 prompt selection 有助于避免最差的 prompts ,那将是非常有用的。我们研究了 prompt selectionaverage prompt 获得各种 accuracy gains 的概率,并在 Figur2 (middle) 中显示了 CV 的结果(在附录 C 中显示了 MDL 的类似结果)。

    • 相对于 average promptCV/MDL 所选择的 promptstest accuracy 方面显示出很高的方差。

    • 对于大多数模型的大小(0.1B-6.7B ),CVMDL 比平均的、随机选择的 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 examplestrue expected loss ;我们可能需要随着模型的大小的增加来扩展验证集。在后续内容中,我们展示了其他几个任务的类似结果。总的来说,在 true few-shot setting 中,不能以任何合理的信心预期来自 prompt selection 的有限的 average-case gains ,这个问题只会随着更大的模型而变得更糟。

  7. 我们能不能提高 prompt selection 带来的性能改善的概率: 正如我们所表明的,CVMDL 并不能可靠地选择比平均水平更好的prompts 。在此,我们探讨了通过明确地倾向于低方差的 prompts ,我们可以在多大程度上减少 generalization loss 的方差。对于最大的模型(GPT-3 175B ),我们根据 generalization loss的保守估计 CVα 来选择 prompts 。我们展示了以不同的置信度 α{1,2,3} 和以 CVα=0 )选择的 promptstest accuracy

    Figure 2(right) 所示,所有的 α 都导致了与 CV 相似的性能增益分布。例如,CV50% 的时间内优于 average prompt ,而 α=251% 的时间内优于 average prompt 。这些结果表明,当明确地将 generalization loss 的方差降到最低时,选择可靠地表现得比随机选择更好的 prompts 也是有意义的。

  8. prompt selection 是否随着更多的标记样本而改善:prompt selection 的不良表现可能是由于使用了如此少数量的标记样本。随着标记样本的数量的增加,我们期望 prompt selection 能够得到改善。因此,true few-shot prompt selection 可能会在几十个样本中实现(尽管由于 GPT 等语言模型的输入长度限制,并不总是能够使用更多的样本)。因此,当我们使用越来越多的标记样本 N{5,10,15,20,30,40} 时,我们考察了 CV/MDL 选择的 promptstest accuracy

    对于 N10 来说,对所有可能的训练样本的排列组合进行边际化是不可行的,所以我们随机采样 120 种排列组合(以匹配 N=5 ),使每个样本在每个位置出现的次数相同(即,使每个样本作为 held-out CV fold 的次数相同)。我们对 6.7B 的参数模型进行实验,因为通过 OpenAI API 运行更大的模型,成本太高。

    Figure 3 所示,无论是从任务表现(左图)还是从 highest accuracy prompt (右图)来看,prompt selection 的表现没有一致的趋势。

    即使在更高的数据区域(40 个样本),CV/MDL 也很难选择有效的 prompts ;而且在不同的模型规模下,也没有一致的表现,比基于 5 个样本的选择更好。我们的发现是令人惊讶的,因为由于训练数据的稀缺性,true-few shot settingprompt design 被认为最有希望的地方(《How many data points is a prompt worth?》)。然而,true few-shot setting 也是 prompt selection 最困难的地方,大大削弱了 prompts 的潜在价值。

  9. prompt selection 是否随着更多的计算而改善:在前面的章节中,我们使用固定数量的 R 的采样来计算 ER,F[CV(A,R,F)],我们是否可以通过使用更多的采样来改善 prompt selection ,但代价是增加计算量?为了回答这个问题,我们改变了用于计算上述期望值的 R 的采样数(以及 LMforward passes ),并选择 prompts 。为了用单次 forward pass 来估计 CV ,我们采样单个 fold k (这里是单个样本),并评估在所有其他 folds 上为条件的 LM 时,fold k 的准确率。Figure 4 显示了在 N{5,15,30} 的训练样本中使用 GPT-3 6.7B 的结果。

    计算并不是 prompt selection 的瓶颈,因为 MDLtest accuracy 在一次forward pass 后大致趋于平稳, CVtest accuracyNforward pass 后也是如此。这一观察结果在所有的 N 、以及所有小于 6.7B 参数的模型都成立(因篇幅关系省略)。我们的结果表明,true few-shot prompt selection 从根本上受到可用样本数量的限制。

  10. Prompt Selection 在其他任务中是否具有挑战性:我们现在研究我们在 LAMA 任务上的结果在其他类型的NLP 任务上的适用程度。我们研究了三个分类任务,之前的工作已经为其设计了各种promptsRecognizing Textual Entailment: RTECommitmentBank: CBWord-in-Context: WiCRTECB 涉及检测一个句子是否蕴含或矛盾另一个句子,而 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 的手动编写的 promptsRTE/CB3promptsWiC4promptsPET-2 为双向语言模型设计了 prompts ,因此在必要时,我们将他们的 prompts 修改为适合从左到右的语言模型(见附录E.2prompts )。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 的准确率的差异。在这里,我们选择了使用 Nforward passesCVprompts (每个 fold 评估一次),因为它代表了计算和准确率之间的一个很好的权衡,很可能会在实践中使用。如 Figure 6 所示,forward passes 又是高度分散的,往往是负面的,而且没有持续地实现提高。对于 CBGPT-3 175B20% 的机会使得准确率下降 15% 。模型大小在 CV 选择的 prompts 导致改善的机会上有很大的不同,例如,对于 WiC 来说,从 38-82% ,对于 CB 来说,从 1-83%

    总的来说,我们先前的发现可以延续到其他类型的任务中,这表明 prompt selection 在总体上是具有挑战性的。

16.3 True Few-Shot Hyperparameter Selection

  1. 在证明了 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

    • 在给定 labelunmasked input tokens ,预测被随机掩码的 input tokens ,类似于 Masked LM《BERT: Pre-training of deep bidirectional transformers for language understanding》)。

    ADAPET 是在 tuned few-shot learning 的背景下开发的,因为 ADAPET 的超参数是用 validation examples 来选择的。我们研究了 ADAPETtrue few-shot setting 中的表现。

  2. 我们以 true few-shot 的方式选择了两个超参数:early stopping checkpoint 、用于 masked LM objective 的被掩码的单词的比例。ADAPETbatch size = 16 上执行 T = 1000 个梯度更新,并在 T{250,500,750,1000} 处选择具有最高 validation accuracycheckpointADAPET 还选择了最佳掩码比例 M{0.075,0.10,0.105,0.15}。遵从 ADAPET ,我们对 SuperGLUE 进行了评估。SuperGLUE 包括四个问答任务(BoolQ、COPA、MultiRC、ReCoRD )、一个共指解析任务(WSC )、两个蕴含性检测任务(RTE、CV )和一个常识性推理任务(WiC );任务细节见附录 E.2

    我们使用 CV/MDL 来选择 TM (总共 16 种组合),然后用所选的 TM 在整个数据集上训练模型。我们使用 FewGLUE,这是 SuperGLUE32-example 子集,在之前的工作中用于 few-shot learning 。我们还使用了另外 3 个从 SuperGLUE 中随机采样的 32-example 子集,以估计不同训练集的性能方差。

    ADAPET 在微调过程中使用了一个 prompt ,这是根据 validation examples 来选择的 prompt 。为了避免使用 validation-tuned prompts ,我们对每个任务使用第一个 prompt ,就像作者对消融研究所做的那样。由于训练 ADAPET 是昂贵的,我们用 K=8 fold 来评估 CV/MDL 。我们在 Table 1 中显示了结果。可以看到:

    • 在所有的 SuperGLUE 任务中,CV/MDLhyperparameter selection 的表现与平均(随机选择的)超参数相似或更差,比最佳超参数差几个点。

    • true few-shot setting 中,ADAPET 的平均 SuperGLUE 性能低于早期的方法(PETiPET ),突出了使用 validation examples 如何在 few-shot learning 中给人以进步的假象。

    • MultiRC 上,CV/MDL 选择的超参数与最差的超参数有相似的性能,这也说明 model selection 方法在 true few-shot setting 中并不能始终如一地防止最差情况的发生。

    • 附录 D 的初步分析表明,选择优于平均水平的超参数需要几千个样本。

    总的来说,我们的结果表明,在数据量非常少的情况下,不仅是 prompt selection ,而且是一般的 model selection ,都具有挑战性。

16.4 结论和未来工作

  1. 我们的工作表明,只用几个标记样本来对 few-shot learning 算法做出最基本的决定也是有难度的。相反,做出额外的假设可能更有希望。

    • meta-learning setting 假定可以从许多其他任务中获取数据,以便进行 learning selectionmodel selection

    • 迁移学习和多任务学习假设能够获得与任务直接相关的有限数据。

    • 数据增强技术假定有一种可行的方法可以从有限的数据中创造更多的数据。

    • 其他的方法是假设没有标记的数据,并开发无监督的 model selection 技术。

    当标记的数据很便宜时,最简单的方法是假设有更多的样本用于验证。在这种情况下,我们可能更好地在额外的样本上进行训练。除非我们明确提出这样的假设,否则我们无法在 few-shot learning 算法之间进行有意义的比较。考虑到model selection 的挑战,我们发现上述途径是比 true few-shot learning 更有希望的未来方向。

  2. 受先前工作的启发,我们对未来 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 算法在真实的、低数据环境中的使用方式。为了确保研究人员遵守这种严格的协议,未来的基准可能需要保持大型测试集的私密性,而只公布少量的标记的样本。

  3. 考虑到我们在 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 selectiontrue few-shot learning 的一个主要障碍。