Hugging Face牵头,42位作者发文,1939个prompt,大幅提升Zero-Shot性能...
前几天,JayJay刷到一篇NB的paper《Multitask Prompted Training Enables Zero-Shot Task Generalization》,共有42位作者参与,实属巨制:
这篇论文由Hugging Face牵头,如果用一连串数字来概括这篇论文,我们就会发现“大力真的可以创造奇迹”:
一共收集了171个多任务数据集,总共创建了1939个prompt,平均每个数据集有11.3个prompt; 共有来自8个国家、24家机构的36位人员贡献prompt; 基于包含prompt的数据集进行多任务学习(模型为11B的T5),Zero-Shot性能大幅超越大16倍的GPT-3模型; 与Google的同期工作Instruction Tuning(FLAN模型)[1]相比,Zero-Shot性能在各数据集上几乎均有提升或可比,而模型参数减少10倍(Google的FLAN模型为137B);
我们可以发现:如此“耗资巨大”的工程,将prompt+多任务学习紧密结合起来,也许是提升Zero-Shot性能的“完美配方”。
此外,很多读者也许会发现,这篇论文不就是Instruction Tuning方法吗?
事实上,本篇论文与Google的Instruction Tuning思想相同,都是将对融合prompt的数据集进行多任务学习,在下游未见任务进行Zero-Shot性能测试。不过,仍有很多细节和性能不相同,接下来就让我们一起一探究竟吧~
Instruction Tuning回顾
当前,NLP发展正进入第四范式[2]——prompting时代:预训练语言模型加持下的Prompt Learning。
CMU博士后研究员刘鹏飞在综述论文[3]中定义了Prompt的两种主要形式:
填充文本字符串空白的完形填空(Cloze)prompt; 用于延续字符串前缀的前缀 (Prefix) prompt;
而Google的Instruction Tuning中的Prompt形式更像是一种更明显的指令/指示(可以归为第三种Prompt形式):
JayJay认为:Instruction Tuning仍属于prompting的范畴,其核心要点是:
构建了大量的多任务数据集; 为每个数据构建了“指令式”的prompt; 采用多任务学习机制进行训练; 更加关注下游任务的Zero-Shot性能;
需要注意的是:Instruction Tuning采用多任务学习机制,整个LM模型参数是需要tuned的。
本篇论文继承了Instruction Tuning思想,下面重点介绍本篇论文的数据集选择和Prompt设计。
多任务数据集选择
如上图所示,本篇论文在构造多任务数据集(共171个)时,将黄色部分的任务数据作为训练集,而绿色部分的任务数据作为Zero-Shot测试集。其中,BIG-Bench是一个新的基准评测,创建了多样化的困难任务集合来评测大型语言模型的能力。
数据构建的基本原则就是:Zero-Shot测试集中的数据未在训练集中出现。
Prompt设计
这里,JayJay以QQP任务为例(如上图所示),来介绍本篇论文的Prompt设计,共由两部分模板组成:
input template:{Question1}{Question2}Pick one:These questions are duplicates or not duplicates. output template:{Choices[label]} 当label=0时,输出为Not duplicates
Hugging Face开发了1个交互式程序用于编写Prompt。为了使模型更加鲁棒,鼓励用户以自己的风格开发创建更加多样化的prompt。共有来自8个国家、24家机构的36位人员参与了prompt贡献。
Prompt开发地址为:https://github.com/bigscience-workshop/promptsource ,感兴趣的小伙伴可以尝试下:
例如,NLI数据集一个的prompt可以通过模板语言jinja构建:
本篇论文最终共收集了1939个prompt,所有构建的prompt集合P3(Public Pool of Prompts)也进行了开源(见论文附录G)。
实验结果
论文是基于T5+LM模型(基于T5进一步做LM训练)进行训练的,模型参数为11B。经过多任务prompt训练的模型为:
T0:基于构建的171个多任务数据集进行训练; T0+:除T0数据集外,新增GPT3的验证集; T0++:除T0数据集外,新增GPT3和SuperGLUE的验证集;
上图给出了T0与GPT-3的Zero-shot性能对比,T0模型在11个数据上中有8个超越了GPT-3。而T0模型比GPT-3比小16倍,GPT-3预训练过程也可看作是基于prompt进行多任务学习的。
不过实验也发现:增加更多训练集数据会不会一致性提升Zero-Shot性能(如上图所示)。
此外,实验也表明:增加更多的Prompt数量,会提升Zero-Shot泛化性能。
T0 vs FLAN
上文提到过,本文的T0模型与Google的FLAN模型均属于Instruction Tuning思想,但仍有一些细节区别:
此外:
T0++模型几乎在所有任务上超越或比肩FLAN模型,T0模型比FLAN模型小10倍。然而相同量级(8B)的FLAN模型,在多任务学习之后的Zero-Shot性能会下降。 FLAN模型发现prompt个数增加反而会降低性能,而T0模型不会。这说明本篇论文构建的prompt更加多样化,从而使模型更加鲁棒、泛化能力更强。
总结与思考
这篇论文构建的prompt数目多达1939个,虽然有程序界面进行设计,但仍然逃脱不了需要人工参与。
prompting时代或许更应该关注prompt的高效设计,比如:如何自动挖掘模板。而prompt-tuning怎样更好地融入多任务学习中,也值得进一步探讨。
此外,本文采用T5这种条件生成模型对所有不同任务进行了统一建模,JayJay更觉得:当前NLP发展正进入一个“大一统时代”:
框架统一:不同NLP任务可采用统一的模型框架建模,如Seq2Seq框架基本上可以建模所有NLP任务。 数据统一:不同NLP任务的数据可以融合prompt构建统一的数据形式,如指令式的prompt。 训练统一:训练方式可采取统一的多任务学习机制。
参考资料
Finetuned Language Models Are Zero-Shot Learners: https://arxiv.org/pdf/2109.01652.pdf
[2]
Fine-tune之后的NLP新范式:Prompt越来越火,CMU华人博士后出了篇综述文章: https://zhuanlan.zhihu.com/p/395795968
[3]
Finetuned Language Models Are Zero-Shot Learners: https://arxiv.org/pdf/2107.13586.pdf