论文:
《Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning》
预训练语言模型已成为自然语言处理的基石,因为它们可以在感兴趣的任务上显著提高数据效率,即:使用预训练语言模型进行初始化通常会产生更好的结果,并且所需的标记数据更少。历史上常用的方法是在感兴趣的下游任务上使用梯度微调,以 pre-trained
参数作为初始化。尽管微调产生了许多 SOTA
的结果(《Multitask prompted training enables zero-shot task generalization》
),但它会导致模型专门针对单个任务采用全新的参数值集合,当在许多下游任务上进行微调时,这种方法可能变得不切实际。
GPT-2, GPT-3
提出的另一种替代方法是 in-context learning: ICL
,它通过输入 prompted examples
诱导模型执行下游任务。few-shot prompting
将少量的 input-target pair
转换为(通常是)人类可以理解的指令和示例,同时包含一个需要进行预测的单个 unlabeled example
。值得注意的是,ICL
不需要基于梯度的训练,因此允许单个模型立即执行各种任务。因此,ICL
的执行完全依赖于模型在预训练期间学到的能力。这些特点导致了对 ICL
方法的最近广泛关注。
尽管 ICL
具有实际的优势,但它也有一些主要缺点:
首先,每次模型进行预测时,处理所有 prompted
的 input-target pair
都会带来重大的计算成本。
假设
few-shot examples
数量为,那么推断成本增加了 倍。
其次,与微调相比,ICL
通常表现出较差的性能(GPT-3
)。
最后,prompt
的确切格式,包括措辞(《Do prompt-based models really understand the meaning of their prompts? 》
)和示例排序(《Calibrate before use: Improving few-shot performance of language models》
),对模型的性能产生重大且难以预测的影响,远超过微调的不同运行之间的差异。最近的研究还表明,即使提供错误的标签,ICL
也能表现出良好的性能,这引发了关于实际学习程度的问题(《Rethinking the role of demonstrations: What makes in-context learning work?》
)。
parameter-efficient fine-tuning: PEFT
是一种额外的范式,它使模型能够通过仅更新一小部分新增的、或选择的参数来执行新任务。最近的方法在仅更新或新增全模型参数的一小部分(例如 0.01%
)的情况下,达到了与对整个模型进行微调相当的性能(《LoRA: Low-rank adaptation of large language models》
、《The power of scale for parameter-efficient prompt tuning》
)。此外,某些 PEFT
方法允许 mixed-task batches
,其中 batch
中的不同示例被以不同的方式处理(《The power of scale for parameter-efficient prompt tuning》
),使得 PEFT
和 ICL
都适用于多任务模型。
尽管 PEFT
的优点解决了微调的一些缺点(与 ICL
相比),但在只有少量的标记数据可用时,对于 PEFT
方法是否能够良好运作,关注较少。本文的主要目标是通过提出一种配方,即:一个模型、一个 PEFT
方法、以及一组固定的超参数,在只更新模型的极小部分参数的情况下,在新的、未知的任务上实现强大的性能。具体而言,我们基于 T0
模型,这是 T5
模型在 multitask mixture of prompted datasets
上进行微调的一个变种。为了提高分类任务和多项选择任务的性能,我们添加了 unlikelihood-based
(《Improving and simplifying pattern exploiting training》
、《Neural text generation with unlikelihood training》
)和 length normalization-based
(GPT-3
)的损失项。此外,我们开发了 learned vectors
的 PEFT
方法。 10,000
倍的参数的情况下,实现了比全模型微调更强的性能。最后,我们证明了在微调之前预训练 《PPT: Pre-trained prompt tuning for few-shot learning》
、《SPoT: Better frozen model adaptation through soft prompt transfer》
)。我们的整体配方被称为 T-Few
,在 RAFT
这个真实世界的 few-shot learning
基准中,T-Few
的性能显著优于 ICL
(甚至对比于 16
倍更大的模型),并且首次超越了人类,同时大大减少计算量,并允许在推理过程中进行 mixed-task batches
。为了方便在新问题上使用 T-Few
并进行有关 PEFT
的未来研究,我们发布了我们的代码。
IA3
的核心思想:将free vector
以乘法的方式作用在activations
上,而不是以加法的方式。
相关工作:
目前,prompt tuning
是大型语言模型中最参数有效的方法之一(《Prefix-Tuning: Optimizing continuous prompts for generation》
、《The power of scale for parameter-efficient prompt tuning》
、《Learning how to ask: Querying LMs with mixtures of soft prompts》
)。
《P-Tuning v2:Prompt tuning can be comparable to fine-tuning universally across scales and tasks》
提出了一些技巧来改善prompt tuning
。
《Input-Tuning: Adapting unfamiliar inputs to frozen pretrained models》
通过调优 prompts
和 input embeddings
来提升性能
《AdaPrompt: Adaptive model training for prompt-based NLP》
通过持续的预训练来改进 prompt embeddings
。
鉴于在训练 prompt embeddings
时存在优化困难,《Black-box prompt learning for pre-trained language models》
最近使用黑盒优化来训练 prompt embeddings
,无需梯度。
有几项研究从可解释性的角度分析了prompt tuning
(《Prompt waywardness: The curious case of discretized interpretation of continuous prompts》
)、以及与其他 PEFT
方法的相似性(《Towards a unified view of parameter-efficient transfer learning》
)。
prompt tuning
已经应用于包括continual learning
、模型鲁棒性、摘要、机器翻译、co-training
、探索语言模型、inverse prompting
、以及迁移学习在内的各种自然语言处理应用中。《HyperPrompt: Prompt-based task-conditioning of transformers》
最近提出使用 hypernetwork
来预测新任务的 prompts
(而不是通过梯度下降训练prompt parameters
)。prompt tuning
和其它 PEFT
方法也在语言模型之外的领域得到了探索(如视觉模型、vision-and-language
模型)。
另外,各种研究考虑了使用 discrete prompts
进行 few-shot full-model fine-tuning
(《Exploiting cloze questions for few shot text classification and natural language inference》
)。最近的研究分析了使用 discrete prompts
进行训练的情况:
一些研究表明在训练不同数量的示例时,使用 prompting
可以提高性能(《How many data points is a prompt worth?》
)。
另一些研究发现模型在 good prompts
和 bad prompts
上训练时表现相似(《Do prompt-based models really understand the meaning of their prompts?》
)。
还有一些研究探索哪些 prompts
对于 few-shot setting
和 full-shot setting
有效(《Do prompts solve NLP tasks using natural language?》
)。
还有一些努力开发找到 discrete prompts
的方法(《Auto-Prompt: Eliciting knowledge from language models with automatically generated prompts》
、《Making pre-trained language models better few-shot learners》
),并使用类似于 prompt tuning
的方法训练prompts
(《Differentiable prompt makes pre-trained language models better few-shot learners》
)。
对于 ICL
的改进也进行了大量的研究。
《Meta-learning via language model in-context tuning》
、《Metaicl: Learning to learn in context》
使用 ICL
进行 meta-learning
,以在新任务上进行 few-shot learning
。
《Can language models learn from explanations in context? 》
表明,在提供解释的情况下,ICL
可以得到改进,并且 《Internet-augmented language models through few-shot prompting for open-domain question answering》
使用从 web
检索到的文本进行开放域问答的 ICL
。
与此同时,《Rethinking the role of demonstrations: What makes in-context learning work?》
分析了 ICL
的工作原理,并显示即使为 in-context examples
提供不正确的标签,ICL
仍然可以表现良好。
随着百亿级参数语言模型的出现,近年来对于 PEFT
方法及其在 few-shot setting
中的兼容性引起了广泛关注。
《Compacter: Efficient low-rank hypercomplex adapter layers》
发现在 low-resource setting
中 PEFT
优于标准微调。
在同时进行的工作中,《PERFECT: Prompt-free and efficient few-shot learning with language models》
发现PEFT
在 few-shot fine-tuning
中与discrete prompts
(如 PET
)相比具有竞争力。
同时,《Adaptable adapters》
提出了一个框架,引入了适应不同任务的 adapters
,展示了在 few-shot settings
中改进的结果。
《PPT: Pre-trained prompt tuning for few-shot learning》
和 《SPoT: Better frozen model adaptation through soft prompt transfer》
都探索了当有限标记数据可用时,pre-training prompt tuning parameters
的改进。
对于 few-shot learning
,《Learning a universal template for few-shot dataset generalization》
探索了学习通用的参数和数据集相关参数,以进行泛化。
《Fast and flexible multi-task classification using conditional neural adaptive processes》
使用条件神经自适应过程(conditional neural adaptive processes
),《Universal representation learning from multiple domains for few-shot classification》
利用多个特征提取器的蒸馏来学习 few-shot learning
中的新类别或领域。
在本节中,我们重点介绍 ICL
和 PEFT
,并描述进行 prediction
所需的计算成本、内存成本、以及存储成本。实际成本取决于实现和硬件,因此我们以 FLOPs
(浮点操作次数)来报告计算成本、以字节数来报告计算成本、内存成本。
In-Context Learning: ICL
旨在通过馈入 concatenated and prompted input-target examples
(称为 shots
)以及一个未标记的 query example
,从而引导模型执行任务。以 GPT-3
的循环字母任务(cycled letter task
)为例,一个 4-shot
的输入或上下文可能是 "Please unscramble the letters into a word, and write that word: asinoc = casino, yfrogg = froggy, plesim = simple, iggestb = biggest, astedro ="
,期望的输出是 "roasted"
。ICL
通过 feeding in the context
并从模型中采样,来引导自回归语言模型执行该任务。对于分类任务,每个标签与一个字符串相关联(例如,情感分析中的 "positive"
和"negative"
),通过选择模型赋予最高概率的 label string
来分配标签。对于多项选择任务(例如,在问题的
ICL
的主要优势是它使得单个模型能够立即执行多个任务,无需进行微调。这也使得可以使用 mixed-task batches
,其中通过在输入中使用不同的上下文,数据 batch
中的不同示例对应于不同的任务。ICL
通常仅使用有限数量的 labeled examples
进行操作,也就是所谓的少样本学习(few-shot learning
),因此具有 data-efficient
的特点。
尽管具有这些优势,ICL
也存在显著的实际缺点:
首先,进行预测的计算成本大幅增加,因为模型需要处理所有的 in-context labeled examples
。具体而言,忽略Transformer
语言模型中自注意力操作的二次复杂度(与模型的其他部分相比通常较小,《Scaling laws for neural language models》
),对于 k-shot ICL
,处理 unlabeled example
。
其次,内存成本也以大约以
此外,对于给定任务,还需要一小部分磁盘存储空间来存储 in-context examples
。例如,对于每个示例的 prompted input and target
长度为 512 tokens
的任务,存储 32
个示例在磁盘上大约需要 66
千字节的存储空间( 32 examples °ø 512 tokens °ø 32 bits
)。
实际上,推断成本相对于训练成本而言几乎可以忽略不计。大型语言模型的训练甚至微调都需要耗费巨大的显存、以及大量的时间。
除了上述成本之外,ICL
还表现出令人难以理解的行为。《Calibrate before use: Improving few-shot performance of language models》
显示示例在上下文中的顺序会极大地影响模型的预测结果。《Rethinking the role of demonstrations: What makes in-context learning work?》
表明,即使 in-context example labels
发生互换(即 label
变为不正确)的情况下,ICL
仍然可以表现良好,这引发了关于 ICL
是否真正从 labeled examples
中 “学习” 的问题。
已经提出了多种方法来缓解这些问题。降低计算成本的一种方法是缓存 in-context examples
的键向量和值向量。这是可能的,因为 decoder-only Transformer
语言模型具有 causal masking pattern
,因此模型对 context
的激活不依赖于 unlabeled example
。在极端情况下,对于 32-shot ICL
,其中每个 in-context example
具有 512 tokens
,将导致 GPT-3
模型的键向量和值向量缓存超过 144 GB
(对于每个键向量和值向量,缓存规模为
对于给定的任务,所有的
unlabeled example
共享了相同的一组in-context examples
,因此可以把这些in-context examples
的activations
缓存起来。
另外, 《Noisy channel language model prompting for few-shot text classification》
提出了 ensemble ICL
,其中不是使用 concatenating the k training examples
的输出概率,而是将模型在每个训练示例上的输出概率(即每个示例的 1-shot ICL
)相乘。这降低了non-parameter
内存成本约为 《Noisy channel language model prompting for few-shot text classification》
发现 ensemble ICL
优于标准的拼接的变体。
标准微调会更新 pre-trained
模型的所有参数,但研究表明,可以只更新或添加相对较少的参数。
早期的方法提出添加 adapters
(《Learning multiple visual domains with residual adapters》
、《Parameter-efficient transfer learning for NLP》
、《Simple, scalable adaptation for neural machine translation》
),这些 adapters
是插入到 fixed pre-trained model
的层之间的小型可训练前馈网络。
此后,提出了各种复杂的 PEFT
方法,包括选择稀疏参数子集来训练(《Parameter-efficient transfer learning with diff pruning》
、《Training neural networks with fixed sparse masks》
)、产生低秩更新(《LoRA: Low-rank adaptation of large language models》
)、在较低维子空间中进行优化(《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
)、使用超复数乘法(hypercomplex multiplication
)添加低秩适配器(《Compacter: Efficient low-rank hypercomplex adapter layers》
)等等。
相关地,prompt tuning
(《The power of scale for parameter-efficient prompt tuning》
)和 prefix tuning
(《Prefix-Tuning: Optimizing continuous prompts for generation》
)通过将 learned continuous embeddings
拼接到模型的输入或模型的激活中从而诱导模型执行任务;这可以看作是一种 PEFT
方法(《Towards a unified view of parameter-efficient transfer learning》
)。
SOTA
的 PEFT
方法可以在仅更新模型参数的极小比例(例如 0.01%
的比例)的情况下达到微调所有模型参数的性能。
PEFT
极大地减少了训练模型和保存模型所需的内存和存储空间。此外,某些 PEFT
方法直接支持 mixed-task batches
。例如,prompt tuning
对于 batch
中的每个示例拼接不同的 prompt embeddings
,使单个模型能够执行多个任务(《The power of scale for parameter-efficient prompt tuning》
)。另一方面,对模型进行重新参数化的PEFT
(例如 《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
、《LoRA: Low-rank adaptation of large language models》
)对于 mixed-task batches
来说成本高或繁重。此外,不同的 PEFT
方法增加了执行推断所需的计算量和内存量的不同程度。例如,adapters
实际上为模型添加了额外的(小型)层,从而导致计算成本和内存的小幅增加。PEFT
还产生了额外的成本,即微调的成本,该成本必须执行一次,并且在模型用于推断时分摊。然而,我们将展示 PEFT
在考虑微调和推断时可以极大地提高计算效率,同时实现比 ICL
更好的准确性。
鉴于 PEFT
允许模型在相对较小的存储需求和计算成本下适应新任务,我们认为 PEFT
是 ICL
的一个有前景的替代方案。因此,我们的目标是开发一种配方,使模型能够在有限的 labeled examples
上实现高准确性,同时在推断期间允许 mixed-task batches
,并且计算和存储成本最小化。通过配方(配方指的是一种具体的模型和超参数设置),在任何新任务上都能提供强大的性能,无需手动调优或 per-task adjustments
。通过这种方式,我们可以确保我们的方法是在 few-shot settings
中的一个实际选项(realistic option
),其中有限的标记数据可用于评估(《True few-shot learning with language models》
、《Realistic evaluation of deep semi-supervised learning algorithms》
)。
作为第一步,我们必须选择一个 pre-trained
模型。理想情况下,模型在有限数量的 labeled examples
上微调后应在新任务上达到高性能。在将 PEFT
方法应用于不同的 pre-trained
模型的初步实验中,我们发现 T0
的性能最佳。T0
基于 T5
,T5
是一种 encoder-decoder Transformer
模型,通过 masked language modeling objective
在大量未标记文本数据上进行了预训练。为了实现 zero-shot
泛化能力,即在没有任何额外基于梯度的训练的情况下执行任务的能力,T0
是通过对 T5
在多任务混合数据集上进行微调而创建的。用于训练 T0
的数据集中的样本是通过应用来 Public Pool of Prompts: P3
的 prompt templates
来生成的,这些模板将每个数据集中的每个样本转换为 prompted text-to-text format
格式,其中每个标签对应于不同的字符串。为简洁起见,我们省略了对 T0
和 T5
的详细描述;有兴趣的读者可以参考论文 《Multitask prompted training enables zero-shot task generalization》
和 《Exploring the limits of transfer learning with a unified text-to-text transformer》
。T0
发布了 3B
参数和 11B
参数的变体,分别称为 "T0-3B"
和 "T0"
。在本节中(我们的目标是通过大量实验设计 T-Few
配方),为了减少计算成本,我们使用 T0-3B
。对于所有的模型和实验,我们使用 Hugging Face Transformers
库。
虽然 T0
被设计用于 zero-shot
泛化,但我们将展示它在仅有少量标记示例进行微调后也能达到强大的性能。为了测试 T0
的泛化能力,《Multitask prompted training enables zero-shot task generalization》
选择了一组任务(及相应的数据集),这组任务从 multitask training mixture
中 hold out
,具体来说,包括句子补全(COPA, H-SWAG, Story Cloze
数据集)、自然语言推断(ANLI, CB, RTE
数据集)、共指消解(WSC, Winogrande
数据集)以及词义消歧(WiC
数据集)等任务。通过在这些 held-out
数据集上测量性能,可以直接评估泛化能力。我们还将在后续正文中在 RAFT
基准测试中测试 T-Few
在未见过的 "real-world" few-shot tasks
上的能力,该基准测试没有验证集而只有一个 held-out
的测试集。
为了便于比较,对于每个数据集我们使用与 GPT-3
相同数量的 few-shot training examples
,数量从 20
到 70
不等。不幸的是,GPT-3
使用的 few-shot dataset
的子集尚未公开披露。为了进行更鲁棒的比较,我们使用不同随机数种子进行抽样构建了五个 few-shot datasets
,并报告了中位数和四分位数范围。我们使用 P3
(《PromptSource: An integrated development environment and repository for natural language prompts》
)prompt template
为每个示例的每个步骤生成 prompt
。除非另有说明,我们将模型训练 1K
步,batch size = 8
,并在训练结束时报告性能。
在评估中,我们使用 "rank classification"
,即所有可能的标签字符串的对数概率进行排名,如果排名最高的选择是正确答案,则认为模型的预测是正确的。rank classification evaluation
适用于分类任务和多选题任务。由于模型的性能可能根据使用的 prompt template
而有显著差异,我们报告了来自 P3
的所有 prompt templates
以及各个数据集的 few-shot data subsets
的中位数准确率。对于所有数据集,我们报告测试准确率、或者验证准确率(当测试标签不公开时,例如 SuperGLUE
数据集)。在本文中,我们报告了上述九个数据集的中位数准确率。每个数据集的详细结果在附录中提供。
在研究 PEFT
方法之前,我们首先探索了两个额外的损失项(few-shot fine-tuning
性能。语言模型通常使用交叉熵损失 target sequence
unlikelihood loss
:在评估中,我们使用 rank classification
,它依赖于模型对正确选项和错误选项的概率。为了在训练过程中考虑这一点,我们添加了一个 unlikelihood loss
(《Improving and simplifying pattern exploiting training》
、《Neural text generation with unlikelihood training》
):
其中, target sequence
,一共有 target sequences
。我们假设添加 rank classification
的结果,因为模型将被训练为将更低的概率分配给错误选项,从而提高正确选项为排名最高的选项的概率。
例如,对于二分类任务,假设
label = 1
(即,positive
),那么模型可能在"positive"
字符串上具有较高的logits
、在"negative"
字符串上具有较低的logits
。然而,由于decoder
的输出可以是任意字符串,它也可能输出{"positive", "negative"}
之外的字符串,因此需要对这种情况进行抑制。这就是的作用:采样 个 non-positive
字符串,并计算它们的平均损失并使这个损失最小化。
表示不输出 的概率。上式物理含义:”不输出 non-positive
字符串的概率“ 最大化。
长度归一化(length normalization
):对于给定的训练样本,可能的target sequences
长度可以有显著差异,尤其是在多项选择任务中。基于概率对每个选项进行排名可能会 “偏向” 于较短的选项,因为模型分配给每个 token
的概率小于等于 1.0
。为了纠正这一点,我们考虑在执行 rank classification
时使用长度归一化(length normalization
),即将模型对每个候选答案选项的分数除以该选项中的 token
数量(与 GPT-3
中使用的方法相同)。在评估期间使用长度归一化时,我们在训练过程中引入了一个额外的损失项使得更接近于长度归一化的评估:
首先,我们计算给定输出序列的长度归一化的对数概率(length-normalized log probability
)
然后,我们通过最小化 softmax
交叉熵损失来最大化正确答案选项的长度归一化对数概率:
物理含义:
gold sequence
的长度归一化的对数概率,要比incorrect sequence
的长度归一化的对数概率要大得多。
当使用 few-shot setting
中调优超参数(这是一个问题,因为实际上具有合理大小的验证集非常小)。
我们在附录B
中报告了在所有数据集上使用带有长度归一化和不带有长度归一化的 T0-3B
所有参数的微调结果。我们发现:
添加 60.7%
提高到 62.71%
。
同时添加 63.3%
。
由于这些损失项在不引入任何额外的超参数的情况下改善了性能,我们将它们包含在我们的方法中,并在后续的所有实验中使用它们。
为了能够与 few-shot ICL
相比较,我们需要一个 PEFT
方法具备以下特点:
首先,它必须添加或更新尽可能少的参数,以避免存储和内存成本。
其次,在新任务的 few-shot training
后,它应该在这个新任务上获得较高的准确率。
最后,它必须允许 mixed-task batches
,因为这是 ICL
的一个能力。为了轻松实现 mixed-task batches
,PEFT
方法理想情况下不应修改模型本身。否则,batch
中的每个样本实际上需要由不同的模型或计算图进行处理。更方便的替代方法是直接修改模型的 activations
,因为可以根据样本对应的任务独立且廉价地对 batch
中的每个样本进行操作。
prompt tuning
(《The power of scale for parameter-efficient prompt tuning》
)和prefix tuning
(《Prefix-Tuning: Optimizing continuous prompts for generation》
)方法通过将 learned vectors
与 activation or embedding sequences
进行拼接来实现,因此它们是 activation-modifying PEFT
方法的例子从而允许 mixed-task batches
。然而,正如我们后面将讨论的,我们无法通过 prompt tuning
获得合理的准确率,并且发现更高性能的 PEFT
方法不允许 mixed-task batches
。因此,我们开发了一个满足我们要求的新的 PEFT
方法。
作为替代方案,我们探索了模型 activations
与一个 learned vector
的逐元素乘法(即 rescaling
)。具体而言,我们考虑形式为 learned task-specific vector
,activations
序列。注意,这里进行了 broadcasting
,即运算期间将
在初步实验中,我们发现在 Transformer
模型的每组 activations
中引入一个 learned rescaling vector
是不必要的。相反,我们发现在自注意力机制、 encoder-decoder
注意力机制中的 keys
和 values
上引入 rescaling vectors
,以及 position-wise feed-forward networks
的中间激活上引入 rescaling vectors
,这就足够了。具体来说,使用 Transformer
的符号表示法,我们引入了三个 learned vectors
以及被引入到 position-wise feed-forward networks
中:
为什么引入这三个
learned vectors
而不是更多或更少?论文并没有进行消融实验从而给出说明。
我们在每个 Transformer
层块中引入了单独的 L-layer-block Transformer encoder
增加了 L-layer-block decoder
增加了 encoder-decoder
注意力,所以因子为 2
),block
数量。 1
进行初始化,以确保在添加它们时模型计算的整体函数不发生变化。我们将我们的方法称为 "Infused Adapter by Inhibiting and Amplifying Inner Activations"
。
注意:
是 task-level
的,即不同的任务采用不同的rescaling vector
;相同的任务下,所有的样本共享相同的一组rescaling vector
。
mixed-task batches
成为可能,因为 batch
中的每个 activations
序列都可以与其对应的 learned task vector
进行独立且廉价的逐元素乘法。我们还注意到,如果模型只用于单个任务,
在推断过程中可以固化。而在训练过程中还是需要单独处理,因为涉及到梯度更新。
为了验证 adaptation methods
)进行了比较,我们的 setting
是在来自于 held-out tasks
的 few-shot datasets
上对 T0-3B
进行微调。具体而言,我们与 9
种强大的 PEFT
方法进行比较:
BitFit
(《BitFit: Simple parameter-efficient fine-tuning for transformer-based masked language-models》
)只更新 bias
参数。
Adapters
(《Parameter-efficient transfer learningfor NLP》
)在自注意力和 position-wise feed-forward networks
之后引入了任务特定的层。
Compacter
和 Compacter++
(《Compacter: Efficient low-rank hypercomplex adapter layers》
)通过使用低秩矩阵和超复数乘法 (hypercomplex multiplication
)改进了 Adapters
。
prompt tuning
(《The power of scale for parameter-efficient prompt tuning》
)学习了与任务相关的 prompt embeddings
,其中 prompt embeddings
与模型的输入进行连接;
FISH Mask
(《Training neural networks with fixed sparse masks》
)根据近似 Fisher
信息选择要更新的参数子集。
Intrinsic SAID
(《Intrinsic dimensionality explains the effectiveness of language model fine-tuning》
)在低维子空间中执行优化。
prefix-tuning
(《Prefix-Tuning: Optimizing continuous prompts for generation》
)学习了 task-specific vectors
,将其与模型的 activations
进行拼接。
LoRA
(《LoRA: Low-rank adaptation of large language models》
)将低秩更新分配给参数矩阵。
此外,我们还包括完整模型微调(fUll-model-fine-tuning
)、以及仅更新 layer normalization
参数的基线方法。对于某些允许更改 parameter efficiency
的方法,我们报告了不同预算的结果:FISH Mask
的0.2%
和 0.02%
稀疏度、prompt tuning
的 10
个和 100
个 learned prompt vectors
,以及 Intrinsic SAID
的 20,000
维或 500,000
维子空间。
结果显示在 Figure 2
中,详细的每个数据集结果在附录 C
中。我们发现, PEFT
方法(如 Intrinsic SAID
和 prompt tuning
)更新或引入的参数较少,但
我们的结果和 setting
与一些我们进行比较的 PEFT
方法的过去研究有所不同:
《Compacter: Efficient low-rank hypercomplex adapter layers 》
报告Compacter
和 Compacter++
在包括 few-shot setting
在内场景下,超越了全模型微调。
《The power of scale for parameter-efficientprompt tuning》
发现 prompt tuning
可以与全模型微调相媲美。并且在随后的研究中,《Finetuned language models are zero-shot learners》
发现在 few-shot setting
下将 prompt tuning
应用于多任务微调模型时表现良好。
在这两种情况下,我们尝试了各种超参数选择来尝试匹配过去的结果。我们假设这种不一致可能是因为我们使用了不同的模型和数据集。特别是对于 prompt tuning
,我们注意到验证集性能在训练过程中可能会大幅波动,这暗示可能存在优化问题。
在最近的研究中,《PPT: Pre-trained prompt tuning for few-shot learning》
和 《SPoT: Better frozen modeladaptation through soft prompt transfer 》
表明,在对下游 few-shot tasks
进行微调时,对 prompt tuning
中的 prompt embeddings
进行预训练可以提高性能。在预训练中:
《PPT: Pre-trained prompt tuning for few-shot learning》
使用一组自监督任务应用于未标记文本数据。
《SPoT: Better frozen modeladaptation through soft prompt transfer 》
考虑使用来自单独任务或 multitask mixture
的 embedding
。
我们遵循 《SPoT: Better frozen modeladaptation through soft prompt transfer 》
的方法,简单地在与训练 T0
时使用的相同 multitask mixture
上预训练 batch size = 16
进行 100,000
步的预训练。关于 with/without pre-training (IA)3
的准确率的完整比较,详见附录 D
。我们发现预训练将微调准确率从 64.6
提高到 65.8
,因此将预训练
总而言之,T-Few
的配方如下所述:
我们使用 T0
模型作为骨干。
我们添加 multitask mixture
上预训练的
对于 objective
,我们使用标准的语言模型损失 unlikelihood loss
我们使用 batch size = 8
、学习率为 Adafactor
优化器进行 1000
步的训练,并使用线性衰减调度和 60-step
预热。
我们在训练和推断过程中对下游数据集应用 prompt
模板,将每个样本转换为指令性的 text-to-text
格式。
重要的是,我们以完全相同的方式将此配方应用于每个下游数据集,而不进行特定于数据集的超参数调优或修改。这使得该配方成为 few-shot learning settings
(根据定义,此时的验证集非常非常小)中的一个实际可行选择。
在 T0-3B
上设计并建立了 T-Few
的配方后,我们现在将其应用于 T0
模型(拥有 11B
参数),并将性能与强的 few-shot ICL
基线进行比较。从这一点开始,我们在所有任务中使用完全相同的配方和超参数。
在 T0
任务上的性能:首先,我们评估 T-Few
在 T0 held out
数据集上的性能(这些 held out
数据集不在 T0
的 training mixture
中)。baseline
方法为:
T0
的 zero-shot learning
(《Multitask prompted training enables zero-shot task generalization》
),因为我们发现对于 T0
而言,few-shot ICL
效果比 zero-shot
更差。
使用 T5+LM
的 few-shot ICL
方法(《The power of scale for parameter-efficient prompt tuning》
)。
使用 GPT-3
的 6.7B、13B、175B
参数版本的 few-shot ICL
。
更多关于这些基线的详细信息请参见附录 E
。 Table 1
和 Figure 3
显示了在 held-out T0
数据集上的准确率,每个数据集的结果在附录 E
中报告。我们发现:
T-Few
在准确率上大大超过了所有其他方法。值得注意的是,尽管 T-Few
的规模约为 GPT-3 175B
的 1/16
,但其准确率比 GPT-3 175B
高出 6%
。
T-Few
的准确率也远高于使用较小的 GPT-3
版本的方法。
T-Few
的准确率还显著高于T0
的 zero-shot learning
和 T5+LM
的 few-shot ICL
。
计算成本的比较:在确定了 T-Few
明显优于 ICL-based
的模型之后,我们现在比较每种 few-shot learning
方法的相对成本。为简单起见,我们使用 《Scaling laws for neural language models》
引入的 Transformer-based
的语言模型的 FLOPs-per-token
估计值。
具体而言,我们估计具有 decoder-only Transformer
(例如 GPT
系列)在推理时每个 token
使用 FLOPs
,在训练时每个 token
使用 FLOPs
。像 T0
和 T5
这样的 encoder-decoder
模型(其中编码器和解码器具有相同数量的层和层大小)仅使用编码器或解码器处理每个标记(encoder
和 decoder
的参数各自大约为完整模型的一半),因此每个 token
的 FLOPs
估计值减半,即 FLOPs
用于推理、FLOPs
用于训练。
我们注意到,FLOPs
不是真实世界计算成本的直接测量,因为延迟、功耗和其他成本可能因硬件和其他因素而有显著差异(《The efficiency misnomer》
)。然而,我们关注 FLOPs
,因为它是一种与硬件无关的度量,与真实世界成本非常接近。我们在 Table 1
中总结了这些成本并进行了讨论。对于所有估计,我们使用我们考虑的数据集中的 shots
数量的中位数(41-shots
)。rank evaluation
和我们的 unlikelihood loss
都需要处理每个可能的输出选择以获得未标记样本的预测。我们考虑的数据集中输入和所有可能 targets
的 combined tokenized sequence length
的中位数组合长度为 103
。对于few-shot ICL
中处理的上下文示例,仅需要正确的 target
,产生的序列长度的中位数为 98
。因此,假设缓存了 key vectors
和 value vectors
,使用 ICL
处理单个示例涉及处理 41*98+103
个 tokens
。我们在 table 1
中提供了我们的成本估计摘要。
推理成本:除了提高准确性外,避免 few-shot ICL
的主要优势是显著降低推理成本。使用 T-Few
处理 single input and all target choices
需要 FLOPs
,而使用 GPT-3 175B
的 few-shot ICL
则需要 FLOPs
——超过 3
个数量级。使用较小的 GPT-3
变体的 ICL
的推理成本也远高于 T-Few
的推理成本。
如前所述,缓存 in-context examples
的 key and value vectors
可以降低 ICL
的计算成本。然而,这只能导致大约 41
倍的减少,这远远不足以使任何 GPT-3 ICL
的成本与 T-Few
相当。
训练成本:由于 T-Few
是唯一涉及参数更新的方法,因此它是唯一产生训练成本的方法。对于一个具有 11B
参数的 encoder-decoder
模型进行 1000
步训练,其中 batch size = 8
、序列长度为 103
,大约需要 FLOPs
。虽然不容忽视,但这只是使用 GPT-3 175B
的 few-shot ICL
处理单个样本所需 FLOPs
的大约 20
倍。换句话说,训练 T-Few
的成本相当于使用 GPT-3 175B
来处理 20
个 few-shot ICL
的样本的成本。我们还发现,在单个数据集上使用 T-Few
对 T0
进行微调仅需要约半小时,在单个 NVIDIA A100 GPU
上进行。截至目前,这将花费约 2
美元的 Microsoft Azure
。
存储成本:T-Few
还产生最大的存储成本。以单精度浮点数存储时, 4.2 MB
空间。相比之下,ICL
方法只需要存储 tokenized in-context examples
(通常以 32-bit
整数来存储),导致较小的 41*98*32 bits = 16 kB
的磁盘空间需求。然而,我们注意到 4.2 MB
与 model checkpoints
本身的磁盘大小相比微不足道——存储 10,000
个任务的 adaptation vectors
所需的空间与 T0 checkpoint
(41.5 GB
)大致相同。
内存使用:在推理过程中,主要的内存成本是由模型的参数产生的。唯一比 T0
(T-Few
使用的模型)更小的模型是 GPT-3 6.7B
;否则,T-Few
在推理过程中将产生更低的内存成本。训练 T-Few
时会产生额外的内存成本,因为需要缓存用于反向传播的 intermediate activations
、以及 Adafactor
中的 gradient accumulator variables
。然而,正如上面提到的,一个80GB
的 A100 GPU
足以应对 T-Few
的需求。
Real-world Few-shot Tasks (RAFT)
上的性能:到目前为止,我们在一系列并非专门设计用于 benchmarking few-shot learning
的数据集上进行了评估。为了更好地评估 T-Few
在现实世界中的表现,我们将我们的方法应用于 RAFT benchmark
。RAFT
包括 11
个 “经济上有价值” 的任务,反映了真实世界的应用。重要的是,每个 RAFT
数据集只有 50
个训练示例,没有验证集,只有一个(更大的)没有公开标签的测试集,因此不可能通过在一个不切实际的大型验证集上进行调优或窥探测试集来 “作弊”。我们使用与数据集一起发布的标准 prompts
将 T-Few
应用于 RAFT
。当前五个最佳模型的准确率显示在 Table 2
中,详细信息请参见附录 G
。
T-Few
达到了 75.8%
的 SOTA
准确率,首次超过了人类基准(73.5%
的准确率)。
第二好的模型(来自 《True few-shot learning with prompts -- a real-world perspective》
)的准确率低了 6%
,而 GPT-3 175B
仅达到 62.7%
。
这些结果验证了 T-Few
可以直接应用于新的真实世界任务,并具有出色的性能。
消融实验:鉴于我们的 T-Few
设计实验是在 T0-3B
上进行的,我们对 T0
上的一些 T-Few
要素进行消融实验。结果显示在附录 F
中。尽管添加每个要素并不总是显著提高每个单独数据集的准确率,但每个要素在不同数据集之间一致提高了平均性能:去除预训练将准确率降低了 1.6%
、去除 unlikelihood training
损失和长度归一化损失将准确率降低了 4.1%
、同时去除预训练和其他额外损失项将准确率降低了 2.5%
。
作者这里写反了?感觉正确的应该是:”去除预训练将准确率降低了
1.6%
、去除unlikelihood training
损失和长度归一化损失将准确率降低了2.5%
、同时去除预训练和其他额外损失项将准确率降低了4.1%
。“
论文:
《MetaICL: Learning to Learn In Context》
近年来,大型语言模型已经展示出能够进行 in-context learning
(GPT-3
)的能力,即它们通过:以少量训练样本为条件从而预测 test input
的补全的 tokens
。这种学习方式具有吸引力,因为模型仅通过推理就可以学习新任务,而无需进行任何参数更新。然而, in-context learning
的性能明显落后于监督微调,而且结果往往具有很大的方差(《Calibrate before use: Improving few-shot performance of language models》
、《True few-shot learning with language models》
),并且很难设计模版从而将现有任务转化为这种格式。
在本文中,我们通过引入 Meta-training for In-Context Learning: MetaICL
来应对这些挑战。MetaICL
在大量任务上对 pretrained
语言模型进行微调,以学习如何进行 in-context learn
,并在严格的全新任务上进行评估。每个 meta-training example
都匹配 test setup
,它包括来自一个任务的 few-shot examples
),这些样本将作为一个序列一起呈现给语言模型,并且第 in-context learning
,模型学会从给定样本中恢复任务的语义(对于测试期间新任务的 in-context learning
,这是必须要做到的)。这种方法与最近的一些工作相关,这些工作使用多任务学习来提高 zero-shot
性能。然而,MetaICL
是独特的,因为它允许仅从 task reformatting
(例如,将所有内容简化为问答任务)或 task-specific
模板(例如,将不同任务转化为语言建模问题)。
我们在取自 《Crossfit: A few-shot learning challenge for cross-task generalization in nlp》
和 《UnifiedQA: Crossing format boundaries with a single qa system》
的大量不同任务上进行实验,包括 142
个文本分类、问答、自然语言推理、paraphrase detection
数据集。我们报告了七种不同的设置,其中 meta-training
任务和目标任务之间没有重叠。据我们所知,这是目前所有相关工作中最多的目标任务数量,共有 52
个 uninque
的目标任务。
核心就是
few-shot
格式的模板的多任务微调。这和T0
非常相似,T0
是zero-shot
格式的模板;而这里是few-shot
格式的模板。
实验结果表明,MetaICL
一致地超越了多个 baselines
,包括:
没有 metatraining
的各种LM in-context learning baselines
(GPT-3
、《Calibrate before use: Improving few-shot performance of language models》
、《Surface form competition: Why the highest probability answer isn’t always right》
、《Noisy channel languag emodel prompting for few-shot text classification》
)。
多任务学习后的 zero-shot transfer
(《Adapting language models for zero-shot learning by meta-tuning on dataset and prompt collections》
、《Finetuned language models are zero-shot learners》
、《Multitask prompted training enables zero-shot task generalization》
)。
当 meta-training
任务和目标任务不相似时(例如任务格式、领域、或所需技能存在较大差异时),MetaICL
对于 multi-task zero-shot transfer
的提升尤为显著。这表明 MetaICL
使得模型能够在推理过程中恢复任务的上下文语义,即使目标任务与 meta-training
任务没有相似之处。MetaICL
通常接近(有时甚至超过)使用监督微调在目标数据集上训练的模型的性能,并且与参数增加 8
倍的模型的表现相当。我们还进行了大量实验分析,以确定 MetaICL
成功的关键因素,例如 meta-training
任务的数量和多样性。
最后,我们展示了没有任何模板的 MetaICL
比使用人工编写的自然语言指令的最新工作更好,同时结合两种方法可以获得最佳性能。代码和数据已公开发布在 github.com/facebookresearch/MetaICL
。
相关工作:
In-context learning
:
GPT-3
提出使用一个语言模型基于 training examples
拼接来进行 few-shot learning
,而无需参数更新。
后续的研究(《Calibrate before use: Improving few-shot performance of language models》
、《Surface form competition: Why the highest probability answer isn’t always right》
、《Noisy channel language model prompting for few-shot text classification》
)进一步改进了该方法,在各种任务上展现出了有希望的结果。
然而,当目标任务与语言建模的性质非常不同、或语言模型的规模不够大时,语言模型进行 in-context learning
的性能较差。此外,它可能具有较高的方差、以及较低的 worst-case accuracy
(《True few-shot learning with language models》
、《Fantastically ordered prompts and where to find them: Overcoming few-shot prompt order sensitivity》
)。
我们的论文基于以训练样本为条件的 in-context learning
的核心思想。我们展示了通过显式地训练 in-context learning objective
,MetaICL
即使在较小的语言模型上也能取得显著改进。
通过 multi-task learning
的 meta-training
:我们的工作在很大程度上受到元学习(meta-learning
)和多任务学习(multi-task learning
)领域的大量研究的启发。先前的研究表明,在大量任务上进行多任务学习可以提高在新任务上的性能,无论是在 zero-shot
测试时,还是在进一步微调时(《Muppet: Massive multi-task representations with pre-finetuning》
、《Crossfit: A few-shot learning challenge for cross-task generalization in nlp》
)。特别是前者与我们的工作密切相关,因为它消除了对目标任务进行参数更新的需求。然而,这些 zero-shot
模型要么仅限于与训练任务共享相同格式的任务(例如,问答格式),要么严重依赖任务特定的模板,这些模板由于性能的高方差从而难以设计(《Reframing instructional prompts to gptk’s language》
)。
在本文中,我们提出了一种用于改进 few-shot
性能的 in-context learning
的元训练(meta-training
)方法。我们展示了它能够有效地学习新任务的语义,无需人工努力,并且明显优于 zero-shot transfer
方法。此外,虽然 《Finetuned language models are zero-shot learners》
表明元训练仅在模型具有 68B
或更多参数时才有效果,但我们的实验证明了即使在规模小得多的模型( 770M
)上也能取得改进。
同时进行的研究工作 《Meta-learning via language model in-context tuning》
提出了面向 in-context learning
的元训练方法。我们的方法在几个方面有所不同:我们消除了对人工编写模板或指令的要求,并包括了更多样的任务、更强的 baseline
模型、以及更大规模的广泛实验。
我们引入了 Meta-training for In-Context Learning: MetaICL
。Table 1
概述了这种方法。关键思想是使用多任务学习方案在 meta-traning tasks
的大型集合上进行训练,以使模型学习如何基于少量的训练样本进行条件学习,恢复任务的语义,并基于此进行输出预测。根据以前的文献(GPT-3
),训练样本被拼接起来并作为单个输入提供给模型,这对于 k-shot learning
(例如,unseen target task
上进行评估,推断过程直接遵循与元训练中相同的数据格式。
这需要对每个下游任务都有大量的标记样本。
Meta-training
:模型在我们称之为 meta-training tasks
的任务集合上进行元训练。对于每次迭代,随机选择一个 meta-training task
,并从所选任务的训练数据中采样 negative log likelihood objective
)来训练模型生成 in-context learning
,其中前
如何拼接?参考实验部分:
[P][H]
的方式。
推断:对于一个新的目标任务,模型给出
Channel MetaICL
:我们介绍了 MetaICL
的一种噪声通道变体(noisy channel variant
),称为 Channel MetaICL
,参考了 《Noisy channel language model prompting for few-shot text classification》
的方法。在噪声channel models
中, 《Noisy channel language model prompting for few-shot text classification》
的做法,使用
具体而言,在元训练时,
数据集:我们使用了从 CROSSFIT
和 UNIFIEDQA
中获取的大量任务。总共有 142
个 unique
的任务,涵盖了各种问题,包括文本分类、问答、自然语言推理和 paraphrase detection
等任务。所有任务都是英文任务。
我们在 Table 2
中展示了七个不同的设置进行实验,其中 meta-training tasks
和目标任务之间没有重叠。总共有 52
个 unique
的目标任务,这比其他相关工作要大得多。每个目标任务都是分类任务或多项选择任务,其中给出了一组候选选项(Table 1
中的
HR --> LR
(High resource to low resource
):我们在一个设置中使用具有 10,000
个或更多训练样本的数据集作为元训练任务,其余数据集作为目标任务。我们认为将高资源数据集用于元训练,将低资源数据集用作目标任务是一种现实的和实用的few-shot learning
设置。
X --> X
( X= {Classification, QA}
):我们在两个设置中进行实验,其中元训练任务和目标任务共享任务格式(二者都是分类、或者都是问答),但是元训练任务和目标任务没有重叠。
Non-X --> X
(X = {Classification, QA, NLI, Paraphase}
):最后,我们在四个设置中进行实验,其中元训练任务在任务格式上和所需能力上与目标任务不重叠。这些设置需要更具挑战性的泛化能力。
每个设置中都有一部分目标任务与任何元训练任务没有领域重叠(例如金融、诗歌、气候或医学)。我们报告了所有目标任务的结果,或者只报告没有领域重叠的目标任务的结果。settings
和数据集的详细信息及引文详见附录 A
。
baseline
:我们将 MetaICL
和 Channel MetaICL
与一系列 baseline
方法进行比较,如 Table 3
所总结的。
注意:
In context learning
方法没有梯度更新,通常而言它的效果要比有梯度更新的方法更差。
0-shot
:我们直接使用 pretrained
语言模型,并进行 zero-shot
推理,遵循 GPT-3
的方法。
In-context
:我们直接使用 pretrained
的语言模型,并通过在训练样本的拼接上进行 in-context learning
,遵循 GPT-3
的方法。
PMI 0-shot, PMI In-context
:我们使用 (《Surface form competition: Why the highest probability answer isn’t always right》
)和 《Calibrate before use: Improving few-shot performance of language models》
的 PMI
方法进行 0-shot learning
和 In-context learning
。
Channel 0-shot, Channel In-context
:我们使用《Noisy channel language model prompting for few-shot text classification》
的 noisy channel
模型进行 0-shot learning
和 In-context learning
。
Multi-task 0-shot
:我们在相同的元训练任务上训练语言模型,但没有 in-context learning objective
,即在没有其他 zero-shot transfer
。这相当于 MetaICL
。这是先前工作中的典型的多任务学习方法。
当
时,对于所有任务,只有测试样本 被输入,模型完全不知道需要执行的任务是什么。这个时候是否增加 prompt
会更好?论文的实验证明,确实增加prompt
会更好。
Channel Multi-task 0-shot
:我们有Multi-task 0-shot
的 channel
变体。
Fine-tune
:我们在单个目标任务上对语言模型进行微调。由于需要为每个目标任务进行参数更新,因此无法直接与其他方法进行比较。
Fine-tune w/ meta-train
:我们首先在元训练任务上对语言模型进行训练,然后进一步在目标任务上进行微调。由于与 Fine-tune
相同的原因,这也无法直接与其他方法进行比较。
评估:我们使用 Macro-F1
和 Macro-Accuracy
作为分类任务和非分类任务的评估指标。
对于目标任务,我们使用 《Noisy channel language model prompting for few-shot text classification》
的方法。由于已知 in-context learning
具有高方差性,我们使用了 5
组不同的 k training examples
。我们首先计算每个目标任务的平均性能和 worst-case
性能,然后报告所有目标任务的 macro-average
性能。
实验细节:
作为基础的语言模型,我们使用了 GPT-2 Large
,它由 770M
个参数组成。对于没有元训练的baseline
(原始语言模型),我们还与 GPT-J
进行比较,它是目前最大的公开的因果语言模型,由 6B
个参数组成。
模型不够大,因此实验结论不太可靠。众所周知,当模型规模足够大时,会发生能力的涌现。因此小模型上得出的结论无法推广到大模型。
模板的消除:先前的研究使用人工编写的模板将 input-output pair
转换为自然语言句子。这些模板需要昂贵的人工工作(本文中的 136
个任务需要 136
个不同的模板),并且由于多种不同的写作方式,会导致模型性能不稳定(《Reframing instructional prompts to gptk’s language》
)。我们消除了模板,使用原始数据集中提供的给定输入(如果有多个输入,则使用拼接)和 label words
。先前研究中的 input-output
方案与我们的方法的比较如 Table 4
所示。
训练细节:所有实现均使用 PyTorch
和 Transformers
。对于元训练,我们每个任务使用最多 16,384
个训练样本。我们使用batch size = 8
、学习率为 1024
。对于 multi-task 0-shot
基线(无 in-context learning
的基线),我们使用序列长度为 256
。我们训练模型 30,000
个 steps
。为了在元训练期间节省内存,我们使用 Adam
优化器的8-bit
近似(《8-bit optimizers via block-wise quantization》
)和混合精度训练(《Mixed precision training》
)。训练使用了 8
块 32GB
的 GPU
,共计 4.5
小时。这比先前的研究效率大大提高,例如 《Multitask prompted training enables zero-shot task generalization》
中使用 512GB
的 TPU
训练了 270
小时。
有关预处理和训练的更多细节,请参阅附录 B
。
实验结果:Table 5
报告了使用 GPT-2 Large
的完整结果,我们计算了每个目标任务的平均性能和 worst-case
性能,并报告了它们的 macro-average
。顶部和底部分别评估了所有的目标任务、以及仅评估 unseen domains
的目标任务。
我们的 baselines
很强:首先讨论我们的 baselines
结果。
在没有元训练的原始语言模型中(Table 5
的前六行),我们观察到 channel in-context baselines
是最有竞争力的,与《Noisy channel language model prompting for few-shot text classification》
的研究结果一致。
然后我们发现,在大多数设置中,Multi-task 0-shot baselines
并没有超过最佳的原始语言模型基线,尽管前者在大量元训练任务上进行了监督。这在一定程度上与 《Finetuned language models are zero-shot learners》
和 《Multitask prompted training enables zero-shot task generalization》
的发现相矛盾。这可能有两个原因:
首先,我们的模型比他们的模型小得多(770M vs. 11B–137B
)。事实上, 《Finetuned language models are zero-shot learners》
报告了只有在模型大小为 68B
或更大时,Multi-task 0-shot
才能优于原始语言模型。
其次,我们与更强大的 channel baselines
进行了比较,而他们没有这样做;Multi-task 0-shot
优于 non-channel LM baselines
,但不优于 channel LM baselines
。
MetaICL
优于 baselines
:MetaICL
和 Channel MetaICL
在一系列 strong baselines
上始终表现优异。具体而言,在 7
个设置中,Channel MetaICL
在 6
个设置中达到了最佳性能。在 HR --> LR
、non-NLI --> NLI
和 non-Para --> Para
设置中,增益尤其显著(6-15%
的绝对增益)。这值得注意,因为 HR --> LR
针对的是常见的低资源情况,新任务只有很少的标记样本;而另外两个设置代表了数据分布的巨大变化,测试任务与元训练任务相对而言不相似。这证明了即使没有密切相关的训练任务,MetaICL
也能够在上下文中推断出新任务的语义。
虽然 MetaICL
在大多数设置中明显优于 baselines
,但在 QA --> QA
设置中,它只略微优于 Multi-task 0-shot
。这可能是因为元训练任务和目标任务相对而言相似,使得 Multi-task 0-shot baseline
能够达到非常强的性能。尽管如此,当模型在 non-QA
任务训练时,Multi-task 0-shot
在 QA
上的性能显著下降,而 MetaICL
的性能下降要少得多。
在 unseen domains
上的增益要更大:在 unseen domains
上,MetaICL
相对于 Multi-task 0-shot
的提升更为显著。具体而言, Multi-task 0-shot
相对于原始语言模型baselines
通常竞争力较弱,可能是因为它们需要更具挑战性的泛化能力。MetaICL
在这个问题上受到的影响较小,在所有设置中始终优于或与原始语言模型 baselines
相媲美。
与微调的比较:MetaICL
与没有元训练的微调模型相媲美,甚至有时表现更好。这是一个有前景的信号,因为以前的研究没有显示 no parameter updates on the target
的模型可以与或超过有监督模型。
这里需要注意:
MetaICL
也进行了参数更新,只是MetaICL
在non-target
任务上进行了参数更新(而不是target
任务上)。这并不会降低训练代价,但是这大大降低了
target data
的数据需求。
然而,通过元训练的微调模型在性能上超过了 MetaICL
和没有元训练的微调模型,因为元训练对于有监督学习和 in-context learning
都有帮助。这表明在允许 learning without parameter updates
的方法中仍有改进的空间。
与 GPT-J
的比较:在 Table 6
中,我们将基于 GPT-2 Large
的模型与基于 GPT-J
的原始语言模型 baselines
进行比较,后者包含 6B
个参数。尽管 MetaICL
的规模较小(小 8
倍),但其在性能上优于或与 GPT-J baselines
相匹配。
消融研究:
不同数量的训练样本:我们将训练样本的数量(0、4、8、16
变化到 32
。在 in-context learning
等同于zero-shot
方法。结果如 Figure 1
所示。
增加 Channel MetaICL
优于原始的 in-context learning
。
我们还发现,当 16
时,性能往往趋于饱和,这可能是因为语言模型的序列长度限制,使得编码许多训练样本变得困难。
元训练任务的数量:为了观察元训练任务数量的影响,我们从 HR --> LR
设置中的 61
个元训练任务中随机抽取 {7, 15, 30}
个任务。对于每个任务,我们使用十个不同的随机数种子从而额外地观察元训练任务选择的影响。Figure 2
显示了结果。
平均而言,性能随着元训练任务数量的增加而增加,这与 《Cross-task generalization via natural language crowdsourcing instructions》
和 《Finetuned language models are zero-shot learners》
的结果一致。
在不同数量的元训练任务中,Channel MetaICL
始终优于其他模型。
然而,在不同的元训练任务的选择中存在着相当大的方差(Figure 2
底部),这表明元训练任务的选择对性能有重要影响。
元训练任务的多样性:我们假设元训练任务的多样性可能会影响 MetaICL
的性能。为了验证这一假设,我们从 HR --> LR
设置的 61
个元训练数据集中随机选择 13
个数据集,并创建了两个设置:
一个设置具有多样性的任务格式和所需能力,包括问答、自然语言推理、关系抽取、情感分析、主题分类、仇恨言论检测等。
另一个设置不太多样化,仅包括与情感分析、主题分类和仇恨言论检测相关的任务。
附录 A
中报告了数据集的完整列表。使用这两个设置,我们比较了 multi-task zero-shot transfer baseline
和 MetaICL
的结果。结果如 Table 7
所示。我们发现,具有多样性元训练任务的 MetaICL
明显优于具有非多样性元训练任务的 MetaICL
。这表明元训练任务的多样性是 MetaICL
成功的一个重要因素之一。
在附录 C.3
中,我们提供了更多关于选择元训练任务的洞察,例如:
高质量数据和多样化的领域往往有帮助(例如,GLUE
系列数据集)
对抗性收集的数据往往没有帮助。
然而,还需要进行系统性的研究:关于如何选择最佳元训练任务、以及它们与特定的 target tasks
的关系。这是我们留给未来的工作。
是否需要指令?最近的研究在 zero-shot learning
或 few-shot learning
中使用了人工撰写的自然语言执行(《Cross-task generalization via natural language crowdsourcing instructions》
、《Finetuned language models are zero-shot learners》
、《Multitask prompted training enables zero-shot task generalization》
)。虽然我们主张不使用指令来避免人工的工程和高方差,但我们也要问:在 MetaICL
中是否仍然有用?一方面,学习以
为了回答这个问题,我们使用了 32
个元训练任务和 12
个目标任务,这些任务来自于 HR --> LR
设置,其中 《Multitask prompted training enables zero-shot task generalization》
提供了人工撰写的指令。我们有两个变种:
(a)
:每个元训练任务使用一条指令。
(b)
:使用所有可用的指令,总共包括 267
条指令(每个元训练任务平均 8.3
条指令)。
《Multitask prompted training enables zero-shot task generalization》
发现 (b)
比 (a)
更好。然后,我们将MetaICL
和一系列 with/without
指令的 baselines
进行比较。结果如 Table 8
所示。
与《Finetuned language models are zero-shot learners》
和 《Multitask prompted training enables zero-shot task generalization》
一样,Multi-task 0-shot
优于 raw-LM 0-shot baseline
基线。
然而,没有指令的 MetaICL
优于具有指令的 Multi-task 0-shot
。
此外,当 MetaICL
联合使用指令时,MetaICL
进一步提高了性能,显著优于所有 baseline
。实际上,当将每个任务的指令数量从 0、1
增加到 8.3
时,MetaICL
的性能提升要远远超过 Multi-task 0-shot does
的性能提升。
总结如下:
(1)
: in-context learn
(即,MetaICL
)优于从指令中学习。
(2)
:MetaICL
和使用指令在很大程度上是互补的。
(3)
:MetaICL
实际上比 Multi-task 0-shot
更能从使用指令中获益。
值得注意的是,即便在可用任务和指令下进行训练的 Channel MetaICL
的性能,仍然低于没有模板/指令的 Channel MetaICL
(根据 Table 8
的 46.9
与 Table 5
的 49.1
)。这可能是因为具有指令的模型训练过程中使用了更少的元训练任务,这是不可避免的,因为指令仅在 61
个元训练任务中的 32
个任务上可用。这支持我们之前选择不使用人工撰写的模板/指令的决策,因为为每个任务编写模板和指令需要大量的工作量。
值得注意的是,由于存在许多变动的因素,例如语言模型的大小、类型(例如因果语言模型、掩码语言模型)、元训练任务与目标任务的划分等等,因此很难与《Finetuned language models are zero-shot learners》
和 《Multitask prompted training enables zero-shot task generalization》
直接进行比较。
我们的工作在多个方面存在局限性。
首先,通常情况下,in-context learning
在元训练阶段和推理阶段都需要更长的上下文,因为需要将训练样本进行拼接,因此与不使用 in-context learning
的 baseline
方法相比,in-context learning
方法的效率较低。
其次,我们的工作使用了一个中等规模的因果语言模型(GPT-2 Large
,770M
参数)进行实验。未来的工作可以探索将我们的方法扩展到掩码语言模型、以及更大的模型。
第三,我们的实验侧重于具有候选选项集合的分类任务和多项选择任务。未来的工作可以研究将我们的方法应用于更广泛的任务范围,包括自由形式的生成。
其他未来工作的方向包括进一步改进 MetaICL
以超越带有元训练的监督模型、确定哪些元训练任务对目标任务有帮助、以及如何更好地将 MetaICL
结合人工撰写的指令。