摘要
本文探讨了一种简单的方法来提升语言模型的零样本学习能力。我们展示了指令微调——即在通过指令描述的数据集集合上对语言模型进行微调——能够显著提升模型在未见任务上的零样本表现。
我们以一个拥有1370亿参数的预训练语言模型为基础,在60多个通过自然语言指令模板表达的NLP数据集上进行了指令微调。我们对该指令微调模型(命名为FLAN)在未见任务类型上的表现进行了评估。
结果显示,FLAN显著提升了原始模型的性能,并在我们评测的25个数据集中,有20个超过了零样本的1750亿参数GPT-3模型。FLAN甚至在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze等任务上大幅超越了GPT-3的少样本表现。消融研究表明,微调数据集的数量、模型规模和自然语言指令是指令微调成功的关键因素。
1 引言
大规模语言模型(如 GPT-3 (Brown et al., 2020))在少样本学习方面表现非常出色。然而,它们在零样本学习上的表现则相对较差。例如,在阅读理解、问答和自然语言推理等任务中,GPT-3 的零样本表现远不如少样本表现。其中一个可能的原因是,缺少少样本示例时,模型更难在与预训练数据格式不相似的提示上取得良好表现。
本文探讨了一种简单的方法以提升大规模语言模型的零样本性能,从而使其适用范围更广。我们的直觉是,NLP 任务可以通过自然语言指令来描述,例如“这条电影评论的情感是正面还是负面?”或“将‘how are you’翻译成中文”。我们以一个拥有1370亿参数的预训练语言模型为基础,进行指令微调——即在60多个通过自然语言指令表达的NLP数据集混合上微调该模型。我们将此微调后的模型称为FLAN(Finetuned Language Net)。
为了评估FLAN在未见任务上的零样本表现,我们根据任务类型将NLP数据集分成若干簇,并在指令微调时保留其中一簇用于评测。例如,如图1所示,为了评估FLAN执行自然语言推理的能力,我们在常识推理、翻译、情感分析等其他NLP任务上对模型进行指令微调。这样,FLAN在指令微调阶段并未接触任何自然语言推理任务,我们随后评估其执行零样本自然语言推理的能力。
评测结果表明,FLAN显著提升了基础1370亿参数模型的零样本性能。FLAN的零样本表现甚至在我们评测的25个数据集中,有20个超过了1750亿参数GPT-3的零样本表现,并且在ANLI、RTE、BoolQ、AI2-ARC、OpenbookQA和StoryCloze等任务上大幅超越了GPT-3的少样本表现。消融实验发现,指令微调中任务簇数量的增加有助于提升未见任务的表现,而指令微调的效益仅在模型规模足够大时才会显现。
指令微调是一种简单的方法,如图2所示,它结合了预训练-微调范式和提示范式的优势,通过微调的监督提升语言模型对推理时文本交互的响应能力。我们的实验证明语言模型在纯指令驱动的任务上表现出良好的潜力。
用于FLAN指令微调数据集加载的源码已公开,地址为:https://github.com/google-research/flan
。
2 FLAN:指令微调提升零样本学习能力
指令微调的动机是提升语言模型对NLP指令的响应能力。其核心思想是通过监督训练,让语言模型学习执行通过指令描述的任务,从而使模型能够遵循指令,即使是面对未见过的任务也能有效完成。为了评估模型在未见任务上的表现,我们将数据集按照任务类型分成多个簇,并在指令微调时保留每个任务簇用于评测,同时在其余簇上进行微调。
2.1 任务与模板
由于从头创建包含众多任务的指令微调数据集需要大量资源,我们将研究界已有的数据集转换为指令格式。我们汇总了TensorFlow Datasets中公开的62个文本数据集,这些数据集涵盖语言理解和语言生成任务,整合成一个混合数据集。图3展示了这些数据集——每个数据集被归类到十二个任务簇中的一个,簇内的数据集均属于相同任务类型。各数据集的描述、规模和示例见附录G。
对于每个数据集,我们手工设计了十个独特的模板,这些模板使用自然语言指令来描述该数据集对应的任务。虽然大多数模板都是描述原始任务,但为了增加多样性,我们还为每个数据集包含了最多三个“反向任务”的模板(例如,对于情感分类任务,我们会加入要求生成电影评论的模板)。随后,我们对预训练语言模型在所有数据集的混合数据上进行指令微调,每个数据集中的示例通过随机选择的指令模板进行格式化。图4展示了一个自然语言推理数据集的多个指令模板示例。
2.2 评估划分
我们关注 FLAN 在未见过的任务上的表现,因此定义“未见任务”至关重要。与某些先前工作仅通过禁止训练时出现相同数据集来定义未见任务不同,我们采用更保守的定义,利用图3中的任务簇。在本工作中,仅当某个数据集 D 所属的所有任务簇都未在指令微调中出现时,我们才认为该数据集 D 在评估时是未见的。例如,如果 D 是一个蕴含任务,则在指令微调中不包含任何蕴含数据集,而是在所有其他任务簇上进行了指令微调。
因此,为了对 c 个任务簇进行零-shot FLAN 评估,我们会指令微调 c 个模型,每个模型保留一个不同的任务簇用于评估。
2.3 带选项的分类
某个任务的输出空间可能是多个类别之一(分类任务)或自由文本(生成任务)。由于 FLAN 是一个仅解码器的指令微调语言模型,它自然以自由文本形式响应,因此生成任务不需要额外修改。
对于分类任务,先前工作(Brown 等,2020)采用了排序分类方法,例如只考虑两个输出(“是”和“否”),选择概率较高的作为模型预测。虽然这种方法在逻辑上合理,但存在不足,因为答案的概率质量可能被表达答案的多种方式稀释(例如,“是”有很多不同表达方式,可能导致“是”的概率总和下降)。
因此,我们在分类任务末尾添加一个“OPTIONS”后缀,并附上该任务所有输出类别列表,让模型明确知道分类时的选择范围。图1中的自然语言推理和常识推理示例展示了这种选项的用法。
2.4 训练细节
模型结构与预训练
实验中我们使用 LaMDA-PT,这是一个1370亿参数的密集左到右解码器Transformer语言模型(Thoppilan 等,2022)。该模型在网络文档(含代码)、对话数据和维基百科上预训练,使用 SentencePiece(Kudo & Richardson,2018)进行分词,词汇表大小为32k,总计2.49万亿BPE标记。约10%的预训练数据是非英语。注意,LaMDA-PT 仅进行语言模型预训练(不同于针对对话微调的 LaMDA)。
指令微调过程
FLAN 是 LaMDA-PT 的指令微调版本。微调过程中,我们将所有数据集混合,并随机采样。为了平衡数据集大小差异,我们对每个数据集的训练示例数限制为3万,并采用按样本数比例混合(Raffel 等,2020)且混合率最大为3000。
我们对所有模型进行了3万步梯度更新,批量大小为8192个token,使用 Adafactor 优化器(Shazeer & Stern,2018),学习率为3e-5。微调时输入序列长度为1024,目标序列长度为256。我们使用 packing 技术(Raffel 等,2020),将多个训练样本拼接成一个序列,并用特殊的EOS标记分隔输入和目标。指令微调大约花费60小时,在128核的TPUv3上完成。所有评估均基于训练3万步的最终检查点。
3 结果
我们在自然语言推理、阅读理解、闭卷问答、翻译、常识推理、指代消解和结构化文本生成等任务上评估 FLAN。按照§2.2所述,我们通过任务簇划分未见任务,且对每个簇单独保留用于评估,指令微调时使用剩余簇(即每个评估簇对应一个不同的检查点)。
对于每个数据集,我们评估所有模板的性能均值,以反映基于典型自然语言指令的期望表现。有些数据集有开发集,可用于手动设计提示(Brown 等,2020),我们也报告使用开发集表现最佳模板在测试集上的结果。
作为对比,我们报告了未经指令微调的 LaMDA-PT 在同样提示下的零-shot 和 few-shot 结果(LaMDA-PT未经指令微调不适合自然语言指令任务)。该基线直接展示了指令微调的提升效果,结果显示指令微调显著提升了 LaMDA-PT 的表现。
我们还展示了 GPT-3 175B(Brown 等,2020)和 GLaM 64B/64E(Du 等,2021)在相关论文中报告的 zero-shot表现。使用最佳开发集模板,FLAN 的 zero-shot 性能在25个数据集中有20个优于 GPT-3 的 zero-shot,且在10个数据集上大幅超过 GPT-3 的 few-shot 性能。在可用的19个数据集上, zero-shot FLAN 在13个数据集上优于零-shot GLaM,在11个数据集上优于 one-shot GLaM。
总体上,指令微调在自然语言表达清晰的任务(如自然语言推理、问答、翻译、结构化文本生成)上效果显著,而在直接以语言建模形式呈现的任务(如常识推理和指代消解,即完成不完整句子或段落)上效果较弱,因为指令在这些任务中冗余。自然语言推理、阅读理解、闭卷问答和翻译任务的结果总结见图5,并在下文描述。
自然语言推理(NLI)。在五个NLI数据集上,模型需要判断在给定前提的情况下假设是否成立,FLAN以较大优势优于所有基线模型。正如Brown等人(2020)所指出的,GPT-3在NLI上表现不佳的一个可能原因是NLI示例不太可能自然出现在无监督训练集中,因此这些示例被尴尬地表述为句子的续写。对于FLAN,我们将NLI表述为更自然的问题“ 是否意味着 ?”,从而实现了更高的性能。
阅读理解。在阅读理解任务中,模型需要根据提供的段落回答问题,FLAN在MultiRC(Khashabi等,2018)和OBQA(Mihaylov等,2018)上优于基线。在BoolQ(Clark等,2019a)上,FLAN大幅超过了GPT-3,尽管LaMDA-PT在BoolQ上已经取得了较高的性能。
闭卷问答。闭卷问答要求模型在不访问包含答案的具体信息的情况下回答关于世界的问题,FLAN在所有四个数据集上均优于GPT-3。与GLaM相比,FLAN在ARC-e和ARC-c(Clark等,2018)上的表现更好,而在NQ(Lee等,2019;Kwiatkowski等,2019)和TQA(Joshi等,2017)上表现略低。
翻译。与GPT-3类似,LaMDA-PT的训练数据约90%为英文,包含一些未专门用于训练机器翻译的其他语言文本。我们还评估了FLAN在GPT-3论文中涉及的三个数据集上的机器翻译表现:WMT’14的法语-英语(Bojar等,2014),以及WMT’16的德语-英语和罗马尼亚语-英语(Bojar等,2016)。与GPT-3相比,FLAN在所有六项评测中均优于零样本GPT-3,但在大多数情况下低于少样本GPT-3。与GPT-3类似,FLAN在翻译成英语方面表现强劲,并且相较于监督翻译基线表现良好。然而,从英语翻译成其他语言的表现相对较弱,这也符合预期,因为FLAN使用的是英文sentencepiece tokenizer,并且大部分预训练数据为英文。
附加任务。尽管在上述任务类别中表现强劲,但指令调优的一大局限是它无法提升许多语言建模任务的性能(例如以句子补全形式构造的常识推理或指代消解任务)。在七个常识推理和指代消解任务(见附录表2)中,FLAN仅在其中三个任务上优于LaMDA-PT。该负面结果表明,当下游任务与原始语言建模预训练目标相同时(即指令大多冗余时),指令调优并无用处。最后,我们报告了情感分析、复述检测和结构到文本任务的结果,以及GPT-3结果不可用的其他数据集,详见附录表2和表1。总体而言,零样本FLAN优于零样本LaMDA-PT,并且可与少样本LaMDA-PT相媲美或更好。
温馨提示:
阅读全文请访问"AI深语解构" FLAN:微调语言模型是 Zero-Shot 学习者