三十五、T-Few[2022]

论文:《Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning》

  1. 预训练语言模型已成为自然语言处理的基石,因为它们可以在感兴趣的任务上显著提高数据效率,即:使用预训练语言模型进行初始化通常会产生更好的结果,并且所需的标记数据更少。历史上常用的方法是在感兴趣的下游任务上使用梯度微调,以 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 具有实际的优势,但它也有一些主要缺点:

    • 首先,每次模型进行预测时,处理所有 promptedinput-target pair 都会带来重大的计算成本。

      假设 few-shot examples 数量为 N ,那么推断成本增加了 N 倍。

    • 其次,与微调相比,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》),使得 PEFTICL 都适用于多任务模型。

    尽管 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-basedGPT-3 )的损失项。此外,我们开发了 (IA)3,一种将中间激活乘以 learned vectorsPEFT 方法。 (IA)3 在仅更新减少 10,000 倍的参数的情况下,实现了比全模型微调更强的性能。最后,我们证明了在微调之前预训练 (IA)3 参数的好处(《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 上,而不是以加法的方式。

  2. 相关工作:

    • 目前,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》 通过调优 promptsinput 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 promptsbad prompts 上训练时表现相似(《Do prompt-based models really understand the meaning of their prompts?》)。

      • 还有一些研究探索哪些 prompts 对于 few-shot settingfull-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 settingPEFT 优于标准微调。

      • 在同时进行的工作中,《PERFECT: Prompt-free and efficient few-shot learning with language models》 发现PEFTfew-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 中的新类别或领域。

35.1 背景知识

  1. 在本节中,我们重点介绍 ICLPEFT ,并描述进行 prediction 所需的计算成本、内存成本、以及存储成本。实际成本取决于实现和硬件,因此我们以 FLOPs (浮点操作次数)来报告计算成本、以字节数来报告计算成本、内存成本。

35.1.1 Few-shot in-context learning (ICL)

  1. 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 来分配标签。对于多项选择任务(例如,在问题的 N 个可能的答案之间进行选择),模型的预测方式类似于确定分配最高概率的选项。

    ICL 的主要优势是它使得单个模型能够立即执行多个任务,无需进行微调。这也使得可以使用 mixed-task batches ,其中通过在输入中使用不同的上下文,数据 batch 中的不同示例对应于不同的任务。ICL 通常仅使用有限数量的 labeled examples 进行操作,也就是所谓的少样本学习(few-shot learning ),因此具有 data-efficient 的特点。

  2. 尽管具有这些优势,ICL 也存在显著的实际缺点:

    • 首先,进行预测的计算成本大幅增加,因为模型需要处理所有的 in-context labeled examples。具体而言,忽略Transformer 语言模型中自注意力操作的二次复杂度(与模型的其他部分相比通常较小,《Scaling laws for neural language models》),对于 k-shot ICL ,处理 k 个训练示例将使计算成本增加约 k+1 倍,相比仅处理 unlabeled example

    • 其次,内存成本也以大约以 k 的线性而增加,尽管在推断过程中,内存成本通常由存储模型参数所主导。

    • 此外,对于给定任务,还需要一小部分磁盘存储空间来存储 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 中 “学习” 的问题。

  3. 已经提出了多种方法来缓解这些问题。降低计算成本的一种方法是缓存 in-context examples 的键向量和值向量。这是可能的,因为 decoder-only Transformer 语言模型具有 causal masking pattern ,因此模型对 context 的激活不依赖于 unlabeled example 。在极端情况下,对于 32-shot ICL,其中每个 in-context example 具有 512 tokens ,将导致 GPT-3 模型的键向量和值向量缓存超过 144 GB (对于每个键向量和值向量,缓存规模为 32 examples×512 tokens× 96 layers×12288dmodel× bits)。

    对于给定的任务,所有的 unlabeled example 共享了相同的一组 in-context examples ,因此可以把这些 in-context examplesactivations 缓存起来。

    另外, 《Noisy channel language model prompting for few-shot text classification》 提出了 ensemble ICL ,其中不是使用 concatenating the k training examples 的输出概率,而是将模型在每个训练示例上的输出概率(即每个示例的 1-shot ICL )相乘。这降低了non-parameter 内存成本约为 k/2 倍,但计算成本增加了 2 倍。在任务性能方面,, 《Noisy channel language model prompting for few-shot text classification》 发现 ensemble ICL 优于标准的拼接的变体。

35.1.2 Parameter-efficient fine-tuning

  1. 标准微调会更新 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》)。

    SOTAPEFT 方法可以在仅更新模型参数的极小比例(例如 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 更好的准确性。

35.2 T-Few

  1. 鉴于 PEFT 允许模型在相对较小的存储需求和计算成本下适应新任务,我们认为 PEFTICL 的一个有前景的替代方案。因此,我们的目标是开发一种配方,使模型能够在有限的 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》)。

35.2.1 模型和数据集

  1. 作为第一步,我们必须选择一个 pre-trained 模型。理想情况下,模型在有限数量的 labeled examples 上微调后应在新任务上达到高性能。在将 PEFT 方法应用于不同的 pre-trained 模型的初步实验中,我们发现 T0 的性能最佳。T0 基于 T5T5 是一种 encoder-decoder Transformer 模型,通过 masked language modeling objective 在大量未标记文本数据上进行了预训练。为了实现 zero-shot 泛化能力,即在没有任何额外基于梯度的训练的情况下执行任务的能力,T0 是通过对 T5 在多任务混合数据集上进行微调而创建的。用于训练 T0 的数据集中的样本是通过应用来 Public Pool of Prompts: P3prompt templates 来生成的,这些模板将每个数据集中的每个样本转换为 prompted text-to-text format 格式,其中每个标签对应于不同的字符串。为简洁起见,我们省略了对 T0T5 的详细描述;有兴趣的读者可以参考论文 《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 库。

  2. 虽然 T0 被设计用于 zero-shot 泛化,但我们将展示它在仅有少量标记示例进行微调后也能达到强大的性能。为了测试 T0 的泛化能力,《Multitask prompted training enables zero-shot task generalization》 选择了一组任务(及相应的数据集),这组任务从 multitask training mixturehold out ,具体来说,包括句子补全(COPA, H-SWAG, Story Cloze 数据集)、自然语言推断(ANLI, CB, RTE 数据集)、共指消解(WSC, Winogrande 数据集)以及词义消歧(WiC 数据集)等任务。通过在这些 held-out 数据集上测量性能,可以直接评估泛化能力。我们还将在后续正文中在 RAFT 基准测试中测试 T-Few 在未见过的 "real-world" few-shot tasks 上的能力,该基准测试没有验证集而只有一个 held-out 的测试集。

  3. 为了便于比较,对于每个数据集我们使用与 GPT-3 相同数量的 few-shot training examples ,数量从 2070 不等。不幸的是,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 ,并在训练结束时报告性能。

  4. 在评估中,我们使用 "rank classification",即所有可能的标签字符串的对数概率进行排名,如果排名最高的选择是正确答案,则认为模型的预测是正确的。rank classification evaluation 适用于分类任务和多选题任务。由于模型的性能可能根据使用的 prompt template 而有显著差异,我们报告了来自 P3 的所有 prompt templates 以及各个数据集的 few-shot data subsets 的中位数准确率。对于所有数据集,我们报告测试准确率、或者验证准确率(当测试标签不公开时,例如 SuperGLUE 数据集)。在本文中,我们报告了上述九个数据集的中位数准确率。每个数据集的详细结果在附录中提供。

35.2.2 Unlikelihood Training and Length Normalization

  1. 在研究 PEFT 方法之前,我们首先探索了两个额外的损失项(LULLLN ),以改善语言模型的 few-shot fine-tuning 性能。语言模型通常使用交叉熵损失 LLM=1Ttlogp(ytx,y<t) 进行训练,其中模型被训练以增加给定输入序列 x 的正确 target sequence y=(y1,y2,,yT) 的概率。

  2. unlikelihood loss:在评估中,我们使用 rank classification ,它依赖于模型对正确选项和错误选项的概率。为了在训练过程中考虑这一点,我们添加了一个 unlikelihood loss《Improving and simplifying pattern exploiting training》《Neural text generation with unlikelihood training》):

    (1)LUL=n=1Nt=1T(n)log(1p(y^t(n)x,y^<t(n)))n=1NT(n)

    其中, y^(n)=(y^1,y^2,,y^T(n)) 是第 n 个错误 target sequence ,一共有 N 个错误 target sequences 。我们假设添加 LUL 会改善 rank classification 的结果,因为模型将被训练为将更低的概率分配给错误选项,从而提高正确选项为排名最高的选项的概率。

    例如,对于二分类任务,假设 label = 1 (即,positive),那么模型可能在 "positive" 字符串上具有较高的 logits、在 "negative" 字符串上具有较低的 logits 。然而,由于 decoder 的输出可以是任意字符串,它也可能输出 {"positive", "negative"} 之外的字符串,因此需要对这种情况进行抑制。这就是 LUL 的作用:采样 Nnon-positive 字符串,并计算它们的平均损失并使这个损失最小化。

    1p() 表示不输出 y^t(n) 的概率。上式物理含义:”不输出 non-positive 字符串的概率“ 最大化。

  3. 长度归一化(length normalization):对于给定的训练样本,可能的target sequences 长度可以有显著差异,尤其是在多项选择任务中。基于概率对每个选项进行排名可能会 “偏向” 于较短的选项,因为模型分配给每个 token 的概率小于等于 1.0 。为了纠正这一点,我们考虑在执行 rank classification 时使用长度归一化(length normalization),即将模型对每个候选答案选项的分数除以该选项中的 token 数量(与 GPT-3 中使用的方法相同)。在评估期间使用长度归一化时,我们在训练过程中引入了一个额外的损失项使得更接近于长度归一化的评估:

    • 首先,我们计算给定输出序列的长度归一化的对数概率(length-normalized log probabilityβ(x,y)=1Tt=1Tlogp(ytx,y<t)

    • 然后,我们通过最小化 softmax 交叉熵损失来最大化正确答案选项的长度归一化对数概率:

      (2)LLN=logexp(β(x,y))exp(β(x,y))+n=1Nexp(β(x,y^(n)))

    物理含义:gold sequence 的长度归一化的对数概率,要比 incorrect sequence 的长度归一化的对数概率要大得多。

  4. 当使用 LLM,LULLLN 训练模型时,我们只需将它们相加。这样可以避免引入在 few-shot setting 中调优超参数(这是一个问题,因为实际上具有合理大小的验证集非常小)。

    我们在附录B 中报告了在所有数据集上使用带有长度归一化和不带有长度归一化的 T0-3B 所有参数的微调结果。我们发现:

    • 添加 LLN 将准确率从 60.7% 提高到 62.71%

    • 同时添加 LULLLN 进一步提高到 63.3%

    由于这些损失项在不引入任何额外的超参数的情况下改善了性能,我们将它们包含在我们的方法中,并在后续的所有实验中使用它们。

35.2.3 PEFT With (IA)3

  1. 为了能够与 few-shot ICL 相比较,我们需要一个 PEFT 方法具备以下特点:

    • 首先,它必须添加或更新尽可能少的参数,以避免存储和内存成本。

    • 其次,在新任务的 few-shot training 后,它应该在这个新任务上获得较高的准确率。

    • 最后,它必须允许 mixed-task batches ,因为这是 ICL 的一个能力。为了轻松实现 mixed-task batchesPEFT 方法理想情况下不应修改模型本身。否则,batch 中的每个样本实际上需要由不同的模型或计算图进行处理。更方便的替代方法是直接修改模型的 activations ,因为可以根据样本对应的任务独立且廉价地对 batch 中的每个样本进行操作。

  2. prompt tuning《The power of scale for parameter-efficient prompt tuning》)和prefix tuning《Prefix-Tuning: Optimizing continuous prompts for generation》)方法通过将 learned vectorsactivation or embedding sequences 进行拼接来实现,因此它们是 activation-modifying PEFT 方法的例子从而允许 mixed-task batches 。然而,正如我们后面将讨论的,我们无法通过 prompt tuning 获得合理的准确率,并且发现更高性能的 PEFT 方法不允许 mixed-task batches 。因此,我们开发了一个满足我们要求的新的 PEFT 方法。

    作为替代方案,我们探索了模型 activations 与一个 learned vector 的逐元素乘法(即 rescaling )。具体而言,我们考虑形式为 lX 的适配,其中 lRd 是一个 learned task-specific vector 表示逐元素乘法,XRT×d 是长度为 Tactivations 序列。注意,这里进行了 broadcasting ,即运算期间将 l 分别与 XT 行进行运算。

    在初步实验中,我们发现在 Transformer 模型的每组 activations 中引入一个 learned rescaling vector 是不必要的。相反,我们发现在自注意力机制、 encoder-decoder 注意力机制中的 keysvalues 上引入 rescaling vectors ,以及 position-wise feed-forward networks 的中间激活上引入 rescaling vectors ,这就足够了。具体来说,使用 Transformer 的符号表示法,我们引入了三个 learned vectors lkRdk,lvRdv,lffRdff,它们分别被引入到注意力机制中:

    (3)softmax(Q(lkK)dk)(lvV)

    以及被引入到 position-wise feed-forward networks 中:(lffγ(W1X))W2 ,其中 γ() 为前馈网络的非线性激活函数。

    为什么引入这三个 learned vectors 而不是更多或更少?论文并没有进行消融实验从而给出说明。

    我们在每个 Transformer 层块中引入了单独的 lk,lv,lff 集合。这总共为 L-layer-block Transformer encoder 增加了 L×(dk+dv+dff) 个新参数,为 L-layer-block decoder 增加了 L×(2dk+2dv+dff) 个参数(因为同时存在自注意力和 encoder-decoder 注意力,所以因子为 2 ),Lblock 数量。 lk,lv,lff 都使用 1 进行初始化,以确保在添加它们时模型计算的整体函数不发生变化。我们将我们的方法称为 (IA)3 ,代表 "Infused Adapter by Inhibiting and Amplifying Inner Activations"

    注意: lk,lv,lfftask-level 的,即不同的任务采用不同的 rescaling vector;相同的任务下,所有的样本共享相同的一组 rescaling vector

  3. (IA)3 的出现使得 mixed-task batches 成为可能,因为 batch 中的每个 activations 序列都可以与其对应的 learned task vector 进行独立且廉价的逐元素乘法。我们还注意到,如果模型只用于单个任务, (IA)3 引入的修改也可以永久应用于权重矩阵,这样就不需要进行逐元素乘法,模型的结构保持不变。这是因为(IA)3 中进行的逐元素乘法始终与矩阵乘法同时发生,并且 lWX=(lW)X。在这种情况下,我们的方法与原始模型相比没有额外的计算成本。

    在推断过程中可以固化。而在训练过程中还是需要单独处理,因为涉及到梯度更新。

  4. 为了验证 (IA)3 的有效性,我们将其与许多现有的适配方法(adaptation methods )进行了比较,我们的 setting 是在来自于 held-out tasksfew-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 之后引入了任务特定的层。

    • CompacterCompacter++《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 Mask0.2%0.02% 稀疏度、prompt tuning10 个和 100learned prompt vectors ,以及 Intrinsic SAID20,000 维或 500,000 维子空间。

    结果显示在 Figure 2 中,详细的每个数据集结果在附录 C 中。我们发现, (IA)3 是唯一超过完整模型微调的基线的方法。虽然其他 PEFT 方法(如 Intrinsic SAIDprompt tuning )更新或引入的参数较少,但(IA)3 的性能要好得多。

    我们的结果和 setting 与一些我们进行比较的 PEFT 方法的过去研究有所不同:

    • 《Compacter: Efficient low-rank hypercomplex adapter layers 》 报告CompacterCompacter++ 在包括 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 ,我们注意到验证集性能在训练过程中可能会大幅波动,这暗示可能存在优化问题。

35.2.4 Pre-training (IA)3

  1. 在最近的研究中,《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 mixtureembedding

    我们遵循 《SPoT: Better frozen modeladaptation through soft prompt transfer 》的方法,简单地在与训练 T0 时使用的相同 multitask mixture 上预训练 (IA)3 所引入的新参数。我们在每个单独的下游数据集上微调 (IA)3之前,使用 batch size = 16 进行 100,000 步的预训练。关于 with/without pre-training (IA)3 的准确率的完整比较,详见附录 D 。我们发现预训练将微调准确率从 64.6 提高到 65.8 ,因此将预训练 (IA)3 添加到我们的配方中。

35.2.5 组合在一起

  1. 总而言之,T-Few 的配方如下所述:

    • 我们使用 T0 模型作为骨干。

    • 我们添加 (IA)3 用于下游任务的适配,并使用在相同的 multitask mixture 上预训练的 (IA)3 的参数进行初始化。

    • 对于 objective ,我们使用标准的语言模型损失 LLM、不正确选择的unlikelihood loss LUL 、以及长度归一化损失 LLN 的总和。

    • 我们使用 batch size = 8 、学习率为 3×103Adafactor 优化器进行 1000 步的训练,并使用线性衰减调度和 60-step 预热。

    • 我们在训练和推断过程中对下游数据集应用 prompt 模板,将每个样本转换为指令性的 text-to-text 格式。

    重要的是,我们以完全相同的方式将此配方应用于每个下游数据集,而不进行特定于数据集的超参数调优或修改。这使得该配方成为 few-shot learning settings (根据定义,此时的验证集非常非常小)中的一个实际可行选择。

35.3 实验

  1. T0-3B 上设计并建立了 T-Few 的配方后,我们现在将其应用于 T0 模型(拥有 11B 参数),并将性能与强的 few-shot ICL 基线进行比较。从这一点开始,我们在所有任务中使用完全相同的配方和超参数。

  2. T0 任务上的性能:首先,我们评估 T-FewT0 held out 数据集上的性能(这些 held out 数据集不在 T0training mixture 中)。baseline 方法为:

    • T0zero-shot learning《Multitask prompted training enables zero-shot task generalization》),因为我们发现对于 T0 而言,few-shot ICL 效果比 zero-shot 更差。

    • 使用 T5+LMfew-shot ICL 方法(《The power of scale for parameter-efficient prompt tuning》)。

    • 使用 GPT-36.7B、13B、175B 参数版本的 few-shot ICL

    更多关于这些基线的详细信息请参见附录 ETable 1Figure 3 显示了在 held-out T0 数据集上的准确率,每个数据集的结果在附录 E 中报告。我们发现:

    • T-Few 在准确率上大大超过了所有其他方法。值得注意的是,尽管 T-Few 的规模约为 GPT-3 175B1/16 ,但其准确率比 GPT-3 175B 高出 6%

    • T-Few 的准确率也远高于使用较小的 GPT-3 版本的方法。

    • T-Few 的准确率还显著高于T0zero-shot learningT5+LMfew-shot ICL

  3. 计算成本的比较:在确定了 T-Few 明显优于 ICL-based 的模型之后,我们现在比较每种 few-shot learning 方法的相对成本。为简单起见,我们使用 《Scaling laws for neural language models》 引入的 Transformer-based 的语言模型的 FLOPs-per-token 估计值。

    具体而言,我们估计具有 N 个参数的 decoder-only Transformer (例如 GPT 系列)在推理时每个 token 使用 2N FLOPs ,在训练时每个 token 使用 6N FLOPs 。像 T0T5 这样的 encoder-decoder 模型(其中编码器和解码器具有相同数量的层和层大小)仅使用编码器或解码器处理每个标记(encoderdecoder 的参数各自大约为完整模型的一半),因此每个 tokenFLOPs 估计值减半,即 N FLOPs 用于推理、3N FLOPs 用于训练。

    我们注意到,FLOPs 不是真实世界计算成本的直接测量,因为延迟、功耗和其他成本可能因硬件和其他因素而有显著差异(《The efficiency misnomer》)。然而,我们关注 FLOPs ,因为它是一种与硬件无关的度量,与真实世界成本非常接近。我们在 Table 1 中总结了这些成本并进行了讨论。对于所有估计,我们使用我们考虑的数据集中的 shots 数量的中位数(41-shots)。rank evaluation 和我们的 unlikelihood loss 都需要处理每个可能的输出选择以获得未标记样本的预测。我们考虑的数据集中输入和所有可能 targetscombined tokenized sequence length 的中位数组合长度为 103 。对于few-shot ICL 中处理的上下文示例,仅需要正确的 target ,产生的序列长度的中位数为 98 。因此,假设缓存了 key vectorsvalue vectors ,使用 ICL 处理单个示例涉及处理 41*98+103tokens 。我们在 table 1 中提供了我们的成本估计摘要。

    • 推理成本:除了提高准确性外,避免 few-shot ICL 的主要优势是显著降低推理成本。使用 T-Few 处理 single input and all target choices 需要 11×109×103=1.1×1012 FLOPs ,而使用 GPT-3 175Bfew-shot ICL 则需要 2×175×109×(41×98+103)=1.4×1015 FLOPs ——超过 3 个数量级。使用较小的 GPT-3 变体的 ICL 的推理成本也远高于 T-Few 的推理成本。

      如前所述,缓存 in-context exampleskey and value vectors 可以降低 ICL 的计算成本。然而,这只能导致大约 41 倍的减少,这远远不足以使任何 GPT-3 ICL 的成本与 T-Few 相当。

    • 训练成本:由于 T-Few 是唯一涉及参数更新的方法,因此它是唯一产生训练成本的方法。对于一个具有 11B 参数的 encoder-decoder 模型进行 1000 步训练,其中 batch size = 8 、序列长度为 103 ,大约需要 3×11×109×1000×8×103=2.7×1016 FLOPs 。虽然不容忽视,但这只是使用 GPT-3 175Bfew-shot ICL 处理单个样本所需 FLOPs 的大约 20 倍。换句话说,训练 T-Few 的成本相当于使用 GPT-3 175B 来处理 20few-shot ICL 的样本的成本。我们还发现,在单个数据集上使用 T-FewT0 进行微调仅需要约半小时,在单个 NVIDIA A100 GPU 上进行。截至目前,这将花费约 2 美元的 Microsoft Azure

    • 存储成本:T-Few 还产生最大的存储成本。以单精度浮点数存储时, (IA)3 新增的参数占据了磁盘上的 4.2 MB 空间。相比之下,ICL 方法只需要存储 tokenized in-context examples (通常以 32-bit 整数来存储),导致较小的 41*98*32 bits = 16 kB 的磁盘空间需求。然而,我们注意到 4.2 MBmodel checkpoints 本身的磁盘大小相比微不足道——存储 10,000 个任务的 (IA)3 adaptation vectors 所需的空间与 T0 checkpoint41.5 GB )大致相同。

    • 内存使用:在推理过程中,主要的内存成本是由模型的参数产生的。唯一比 T0T-Few 使用的模型)更小的模型是 GPT-3 6.7B ;否则,T-Few 在推理过程中将产生更低的内存成本。训练 T-Few 时会产生额外的内存成本,因为需要缓存用于反向传播的 intermediate activations 、以及 Adafactor 中的 gradient accumulator variables 。然而,正如上面提到的,一个80GBA100 GPU 足以应对 T-Few 的需求。

  4. Real-world Few-shot Tasks (RAFT) 上的性能:到目前为止,我们在一系列并非专门设计用于 benchmarking few-shot learning 的数据集上进行了评估。为了更好地评估 T-Few 在现实世界中的表现,我们将我们的方法应用于 RAFT benchmarkRAFT 包括 11 个 “经济上有价值” 的任务,反映了真实世界的应用。重要的是,每个 RAFT 数据集只有 50 个训练示例,没有验证集,只有一个(更大的)没有公开标签的测试集,因此不可能通过在一个不切实际的大型验证集上进行调优或窥探测试集来 “作弊”。我们使用与数据集一起发布的标准 promptsT-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 可以直接应用于新的真实世界任务,并具有出色的性能。

  5. 消融实验:鉴于我们的 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 [ 2021]

论文:《MetaICL: Learning to Learn In Context》

  1. 近年来,大型语言模型已经展示出能够进行 in-context learningGPT-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 ,它包括来自一个任务的 k+1 个训练样本(前面 k 个训练样本作为 few-shot examples),这些样本将作为一个序列一起呈现给语言模型,并且第 k+1 个样本的输出用于计算交叉熵训练损失。在这种数据设置中直接对模型进行微调会导致更好的 in-context learning,模型学会从给定样本中恢复任务的语义(对于测试期间新任务的 in-context learning,这是必须要做到的)。这种方法与最近的一些工作相关,这些工作使用多任务学习来提高 zero-shot 性能。然而,MetaICL 是独特的,因为它允许仅从 k 个样本中学习新任务,而无需依赖 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 任务和目标任务之间没有重叠。据我们所知,这是目前所有相关工作中最多的目标任务数量,共有 52uninque 的目标任务。

    核心就是 few-shot 格式的模板的多任务微调。这和 T0 非常相似,T0zero-shot 格式的模板;而这里是 few-shot 格式的模板。

    实验结果表明,MetaICL 一致地超越了多个 baselines ,包括:

    • 没有 metatraining 的各种LM in-context learning baselinesGPT-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

  2. 相关工作:

    • 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 objectiveMetaICL 即使在较小的语言模型上也能取得显著改进。

    • 通过 multi-task learningmeta-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 模型、以及更大规模的广泛实验。

36.1 MetaICL

  1. 我们引入了 Meta-training for In-Context Learning: MetaICLTable 1 概述了这种方法。关键思想是使用多任务学习方案在 meta-traning tasks 的大型集合上进行训练,以使模型学习如何基于少量的训练样本进行条件学习,恢复任务的语义,并基于此进行输出预测。根据以前的文献(GPT-3),训练样本被拼接起来并作为单个输入提供给模型,这对于 k-shot learning (例如,k=16 )是可行的。在测试时,模型在带有 k 个训练样本的 unseen target task 上进行评估,推断过程直接遵循与元训练中相同的数据格式。

    这需要对每个下游任务都有大量的标记样本。

  2. Meta-training:模型在我们称之为 meta-training tasks 的任务集合上进行元训练。对于每次迭代,随机选择一个 meta-training task ,并从所选任务的训练数据中采样 k+1 个训练样本 (x1,y1),,(xk+1,yk+1) 。然后,通过将 x1,y1,,xk,yk,xk+1 的拼接作为输入从而提供给模型,并使用负对数似然目标(negative log likelihood objective )来训练模型生成 yk+1 。这模拟了推断期间的 in-context learning ,其中前 k 个样本用作训练样本,而最后的第 (k+1) 个样本被视为测试样本。

    如何拼接?参考实验部分:[P][H] 的方式。

  3. 推断:对于一个新的目标任务,模型给出 k 个训练样本 (x1,y1),,(xk,yk) 以及一个测试输入 x 。还给出候选集 C ,其中 C 可以是标签集(用于分类任务)、或答案选项集(用于问答任务)。与元训练类似,模型将 x1,y1,,xk,yk,x 的拼接作为输入,并计算每个标签 ciC 的条件概率。模型返回具有最大条件概率的标签作为预测结果。

  4. Channel MetaICL:我们介绍了 MetaICL 的一种噪声通道变体(noisy channel variant ),称为 Channel MetaICL ,参考了 《Noisy channel language model prompting for few-shot text classification》的方法。在噪声channel models 中, P(yx) 被重新参数化为 P(xy)P(y)P(x)P(xy)P(y) 。我们遵循《Noisy channel language model prompting for few-shot text classification》 的做法,使用 P(y)=1|C| ,并建模 P(xy),这使我们能够通过简单地翻转 xiyi 来使用通道方法。

    具体而言,在元训练时, y1,x1,,yk,xk,yk+1 的拼接被馈入模型,模型被训练从而生成 xk+1 。在推断时,模型计算 argmaxcCP(xy1,x1,,yk,xk,c)

36.2 实验

  1. 数据集:我们使用了从 CROSSFITUNIFIEDQA 中获取的大量任务。总共有 142unique 的任务,涵盖了各种问题,包括文本分类、问答、自然语言推理和 paraphrase detection 等任务。所有任务都是英文任务。

    我们在 Table 2 中展示了七个不同的设置进行实验,其中 meta-training tasks 和目标任务之间没有重叠。总共有 52unique 的目标任务,这比其他相关工作要大得多。每个目标任务都是分类任务或多项选择任务,其中给出了一组候选选项(Table 1 中的C )。

    • HR --> LRHigh resource to low resource ):我们在一个设置中使用具有 10,000 个或更多训练样本的数据集作为元训练任务,其余数据集作为目标任务。我们认为将高资源数据集用于元训练,将低资源数据集用作目标任务是一种现实的和实用的few-shot learning 设置。

    • X --> XX= {Classification, QA} ):我们在两个设置中进行实验,其中元训练任务和目标任务共享任务格式(二者都是分类、或者都是问答),但是元训练任务和目标任务没有重叠。

    • Non-X --> XX = {Classification, QA, NLI, Paraphase}):最后,我们在四个设置中进行实验,其中元训练任务在任务格式上和所需能力上与目标任务不重叠。这些设置需要更具挑战性的泛化能力。

    每个设置中都有一部分目标任务与任何元训练任务没有领域重叠(例如金融、诗歌、气候或医学)。我们报告了所有目标任务的结果,或者只报告没有领域重叠的目标任务的结果。settings 和数据集的详细信息及引文详见附录 A

  2. baseline:我们将 MetaICLChannel 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 learningIn-context learning

    • Channel 0-shot, Channel In-context :我们使用《Noisy channel language model prompting for few-shot text classification》noisy channel 模型进行 0-shot learningIn-context learning

    • Multi-task 0-shot :我们在相同的元训练任务上训练语言模型,但没有 in-context learning objective ,即在没有其他 k 个训练样本的情况下直接最大化 P(yx) ,然后在目标任务上进行 zero-shot transfer 。这相当于 k=0MetaICL 。这是先前工作中的典型的多任务学习方法。

      k=0 时,对于所有任务,只有测试样本 x 被输入,模型完全不知道需要执行的任务是什么。这个时候是否增加 prompt 会更好?论文的实验证明,确实增加 prompt 会更好。

    • Channel Multi-task 0-shot :我们有Multi-task 0-shotchannel 变体。

    • Fine-tune :我们在单个目标任务上对语言模型进行微调。由于需要为每个目标任务进行参数更新,因此无法直接与其他方法进行比较。

    • Fine-tune w/ meta-train :我们首先在元训练任务上对语言模型进行训练,然后进一步在目标任务上进行微调。由于与 Fine-tune 相同的原因,这也无法直接与其他方法进行比较。

  3. 评估:我们使用 Macro-F1Macro-Accuracy 作为分类任务和非分类任务的评估指标。

    对于目标任务,我们使用 k=16 个训练样本,均匀随机采样。我们放宽了 k 个训练样本之间标签的完美平衡假设,参考了 《Noisy channel language model prompting for few-shot text classification》的方法。由于已知 in-context learning 具有高方差性,我们使用了 5 组不同的 k training examples 。我们首先计算每个目标任务的平均性能和 worst-case 性能,然后报告所有目标任务的 macro-average 性能。

  4. 实验细节:

    • 作为基础的语言模型,我们使用了 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 所示。

    • 训练细节:所有实现均使用 PyTorchTransformers 。对于元训练,我们每个任务使用最多 16,384 个训练样本。我们使用batch size = 8 、学习率为 1×105、序列长度为1024 。对于 multi-task 0-shot 基线(无 in-context learning 的基线),我们使用序列长度为 256 。我们训练模型 30,000steps 。为了在元训练期间节省内存,我们使用 Adam 优化器的8-bit 近似(《8-bit optimizers via block-wise quantization》)和混合精度训练(《Mixed precision training》)。训练使用了 832GBGPU ,共计 4.5 小时。这比先前的研究效率大大提高,例如 《Multitask prompted training enables zero-shot task generalization》 中使用 512GBTPU 训练了 270 小时。

      有关预处理和训练的更多细节,请参阅附录 B

  5. 实验结果: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 优于 baselinesMetaICLChannel MetaICL 在一系列 strong baselines 上始终表现优异。具体而言,在 7 个设置中,Channel MetaICL6 个设置中达到了最佳性能。在 HR --> LRnon-NLI --> NLInon-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-shotQA 上的性能显著下降,而 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 也进行了参数更新,只是 MetaICLnon-target 任务上进行了参数更新(而不是 target 任务上)。

      这并不会降低训练代价,但是这大大降低了 target data 的数据需求。

      然而,通过元训练的微调模型在性能上超过了 MetaICL 和没有元训练的微调模型,因为元训练对于有监督学习和 in-context learning 都有帮助。这表明在允许 learning without parameter updates 的方法中仍有改进的空间。

  6. GPT-J 的比较:在 Table 6 中,我们将基于 GPT-2 Large 的模型与基于 GPT-J 的原始语言模型 baselines 进行比较,后者包含 6B 个参数。尽管 MetaICL 的规模较小(小 8 倍),但其在性能上优于或与 GPT-J baselines 相匹配。

  7. 消融研究:

    • 不同数量的训练样本:我们将训练样本的数量(k )从 0、4、8、16 变化到 32 。在 k=0 的情况下,in-context learning 等同于zero-shot 方法。结果如 Figure 1 所示。

      • 增加 k 通常对所有模型都有帮助,并且在所有 k 值上,Channel MetaICL 优于原始的 in-context learning

      • 我们还发现,当 k 接近 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 baselineMetaICL 的结果。结果如 Table 7 所示。我们发现,具有多样性元训练任务的 MetaICL 明显优于具有非多样性元训练任务的 MetaICL 。这表明元训练任务的多样性是 MetaICL 成功的一个重要因素之一。

      在附录 C.3 中,我们提供了更多关于选择元训练任务的洞察,例如:

      • 高质量数据和多样化的领域往往有帮助(例如,GLUE 系列数据集)

      • 对抗性收集的数据往往没有帮助。

      然而,还需要进行系统性的研究:关于如何选择最佳元训练任务、以及它们与特定的 target tasks 的关系。这是我们留给未来的工作。

    • 是否需要指令?最近的研究在 zero-shot learningfew-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 中是否仍然有用?一方面,学习以 k 个样本为条件,可能消除了使用指令的必要性。另一方面,指令仍然可能是补充性的,并为模型提供额外有用的信息。

      为了回答这个问题,我们使用了 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 846.9Table 549.1 )。这可能是因为具有指令的模型训练过程中使用了更少的元训练任务,这是不可避免的,因为指令仅在 61 个元训练任务中的 32 个任务上可用。这支持我们之前选择不使用人工撰写的模板/指令的决策,因为为每个任务编写模板和指令需要大量的工作量。

      值得注意的是,由于存在许多变动的因素,例如语言模型的大小、类型(例如因果语言模型、掩码语言模型)、元训练任务与目标任务的划分等等,因此很难与《Finetuned language models are zero-shot learners》《Multitask prompted training enables zero-shot task generalization》直接进行比较。

36.3 讨论

  1. 我们的工作在多个方面存在局限性。

    • 首先,通常情况下,in-context learning 在元训练阶段和推理阶段都需要更长的上下文,因为需要将训练样本进行拼接,因此与不使用 in-context learningbaseline 方法相比,in-context learning 方法的效率较低。

    • 其次,我们的工作使用了一个中等规模的因果语言模型(GPT-2 Large770M 参数)进行实验。未来的工作可以探索将我们的方法扩展到掩码语言模型、以及更大的模型。

    • 第三,我们的实验侧重于具有候选选项集合的分类任务和多项选择任务。未来的工作可以研究将我们的方法应用于更广泛的任务范围,包括自由形式的生成。

    其他未来工作的方向包括进一步改进 MetaICL 以超越带有元训练的监督模型、确定哪些元训练任务对目标任务有帮助、以及如何更好地将 MetaICL 结合人工撰写的指令。