后Prompt时代|NLP统一范式:预训练+大规模多任务学习
source link: https://mp.weixin.qq.com/s?__biz=MjM5ODkzMzMwMQ%3D%3D&%3Bmid=2650428994&%3Bidx=1&%3Bsn=b48849da3f8de9f296360cf819bbb5b8
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
后Prompt时代|NLP统一范式:预训练+大规模多任务学习
The following article is from 高能AI Author JayJay
老铁们好,我是JayJay~引言:“预训练+大规模多任务学习”像是一个开源工具,拉近了和应用领域的距离:我们可以开箱即用,如果效果不好,也许可以进一步few-shot后提升。重要的是:这种范式(也许)降低了对标注数据的依赖。
过去一年,NLP领域逐渐盛行一种新的“第四范式”——预训练+提示+预测(Pre-train, Prompt, Predict)。来自CMU的刘鹏飞博士,将这一流行范式归纳为:预训练语言模型加持下的Prompt Learning[1]。(也许)我们正从“Pre-train+Finetune”的Finetune范式逐步迈向“Pre-train+Prompt”的Prompt范式(Prompt时代)。Prompt时代带给我们最为深刻的一个理念就是:如何更好地使用预训练语言模型。而Prompt的本质就是将不同任务进行重构,更好地适配预训练模型。
因此,基于上述理念,Prompt时代带给NLP最大的增益之一就是:提升了小样本(few-shot)学习能力。然而,Prompt不是万能的,不同的Prompt会导致模型性能的千差万别,同时绝大数的研究工作更聚焦于具体的几个NLP任务数据集,Prompt learning与特定任务和特定模型有关,没有在更广泛数据集上进行few-shot甚至zero-shot评测,没有构建更统一的建模方式。基于此,JayJay认为:“Pre-train+Prompt”这种范式与预训练模型之间仍然存在一个“gap”,即:冷启的预训练模型没有包含prompt形式的多任务监督目标,这导致了下游进行的Prompt Learning与预训练模型间的不一致。而这种不一致性,会导致:笔者注:“更好地适配预训练模型”指不用设计新的网络层,而是完全利用预训练语言模型的网络结构。
- Prompt范式无法更好进行(或直接进行)zero-shot测试;
- Prompt范式无法更好统一建模更大规模的NLP任务,并进一步提升few-shot性能;
与此同时,谷歌研究科学家Sebastian Ruder在最新博客《ML and NLP Research Highlights of 2021》中就将“大规模多任务学习”列为2021排名第二的研究热点。本文的组织结构为:笔者注:所谓“统一范式”是因为「预训练+大规模多任务学习」统一模型框架、统一任务形式、统一应用方式。
定义:什么是“预训练+大规模多任务学习”
「预训练+大规模多任务学习」并不是新的、所谓“第五范式”,而是Fintune范式+Prompt范式的综合体。如上图所示,「预训练+大规模多任务学习」主要包括3个过程:- 利用Prompt统一(重构)不同NLP的任务形式(不同任务转化为统一的text-to-text数据形式),不同prompt可以代表不同的任务,形成“适配预训练模型”的多任务数据集;
- 基于多任务数据对预训练进行fine-tune(中间任务训练);
- 在具体下游任务上,对目标任务形成拿来即用的模型,可直接进行zero-shot测试,也可进一步提升few-shot性能。
- 与传统的多任务finetune相比:
- 大规模多任务学习不需要设置特定任务的损失函数,这得益于text-to-text的建模方式:每个NLP任务只需要以合适的text-to-text形式输入,模型就可以从中学习,无需对底层模型进行任何改动;
- 传统多任务学习设置的一个常见问题是负迁移,即如何确保不同的任务不会相互伤害。但当使用更多任务时, 大规模多任务学习总体收益更大:在小样本场景下“负迁移”也许不是大问题~
- 与Prompt范式相关工作的不同在于:
- 大规模多任务学习中的Prompt主要为离散形式,方便可以显示地构建任务指令。相比于连续embedding的Prompt,人工构建的离散形式方便理解、修改、优化,并且与特定模型无关。
- 大规模多任务学习中主要基于生成式预训练模型,方便不同多任务形式的统一建模。MLM的预训练模型不容易对不同任务进行统一建模。
划重点:“预训练+大规模多任务学习”是NLP大一统建模范式
看到这里,我们会发现:「预训练+大规模多任务学习」真正做到了NLP的大一统建模:- 统一模型框架:即采用Text-to-Text的生成式预训练模型进行统一建模。必须感谢:生成式预训练模型的日益强大,让Seq2Seq可以“有效建模”所有NLP任务从理论逐步变为现实。
- 统一任务形式:Prompt统一(重构)了不同的NLP任务间的差异,转化为统一的text-to-text数据形式。
- 统一应用方式:对目标任务形成拿来即用的模型,下游应用时(理论上)都可转化为统一的prompt自适应方式,进行zero-shot/few-shot测试。
综合梳理:大规模多任务学习的主要进展
多任务学习(MTL)是神经网络训练的一个基础通用方法,可参考最早的介绍[2]以及近期的相关综述[3][4]。多任务学习的研究已经表明:多任务模型学习的表示可以更好地推广到新的表示,然而多任务学习中的一个常见问题就是最小化负迁移,即如何确保不同的任务不会相互伤害。而这个问题通常表现在full-shot场景的微调中。而近期的大量论文表明:多任务学习不仅有助于预训练模型,而且当使用更多任务时,零样本和小样本场景收益更大。多任务数量的上升到一定规模,自然而然就有了“大规模多任务学习”。在正式介绍相关工作前,JayJay先列出一个表格,方便大家回顾:这里需要重点指出:不同于full-shot场景,大规模多任务学习在zero/few-shot场景下,那所谓的“负迁移”问题也许不是很重要。
缘起:Muppet
大规模多任务学习(Massive Multi-task)一词首次出现在Facebook的《Muppet: Massive Multi-task Representations with Pre-Finetuning》[5]工作中。Muppet共采用了50个数据集、480万标注数据,表明大规模多任务学习可以显著提升性能(基于RoBERTa进行分类任务、BART进行生成任务),同时也发现当数据集少于15个时,多任务学习反而会损害性能。发展:FLAN、T0
来自Google的FLAN模型[6]和HuggingFace的T0模型[7],是两个同时期的工作,均受到了GPT-3的启发,即:给定指令(instruction)和少量示例进行in-context learning。FLAN模型属于Instruction Tuning(如上图),即:将包含prompt的数据集进行多任务学习,在下游未见任务进行Zero-Shot性能测试。刘鹏飞博士在综述论文[8]中定义了Prompt的两种主要形式:- 完形填空(Cloze)prompt;
- 前缀 (Prefix) prompt;
突破:ZeroPrompt,首个中文多任务prompt统一模型
继FLAN和T0之后,ZeroPrompt[9]实现了大规模多任务学习在中文领域“零的突破”。ZeroPrompt来自于XLNet作者杨植麟团队,共收集了1000个中文任务数据,整个测试任务上平均只相差4.7个点,而在部分测试任务上zeroshot性能比有监督finetune还要好。如上图所示:不同传统的预训练-微调范式,ZeroPrompt的整体流程主要包括:- 构建多任务Prompt统一模型,主要包括:1)构建多任务数据集;2)设计Prompt;3)基于预训练LM模型多任务预训练(采取T5作为初始化的LM);
- 评估未见任务的zeroshot性能,主要工作是:基于【Prompt遗传搜索算法】,针对未见的新任务构建自适应的Prompt。
改变:MetaICL,舍弃Prompt
与之前工作不同,来自Facebook的MetalCL: Learning to learn in context[10]舍弃了Prompt。MetaICL认为FLAN和T0严重依赖Prompt的模板设计,Prompt设计需要人工定制,而不同的Prompt会表现出高方差、不够稳定。基于此,MetaICL构建了一种元学习(Meta-training)方式:只需提供训练示例和目标输入,不需要再提供prompt形式的指令。论文为这种元学习方式构建了142个NLP多任务数据集进行训练,提升模型少样本学习能力。MetaICL虽然没有通过prompt对不同任务进行统一重构,但通过提供“训练示例”可以重构任务信息,从而省去人工设计模板的繁重工作。上图给出了MetaICL整体流程,归纳如下:- 训练过程:进行K-shot Learning。输入是:随机抽取出某一类任务中k个样本x和y,和第k+1个样本的x。输出是:第k+1个样本的y。不难发现:前k个样本提供了对于任务的描述信息。
- 推断过程:选择k个样本x和y进行拼接作为任务提示信息,直接对测试样本x进行预测。
- 选择哪些(k个)样本作为任务提示的示例,是不是也变成了某种意义上的“prompt选择问题”?最终效果是否方差较大?
- 某些任务k个样本拼接后,输入文本长度过长,性能和效果如何保证?
融合:ExT5,将多任务融合到预训练中
ExT5[11]是Google最近ICLR2022的一篇工作,ExT5将上述的多任务训练过程前置到预训练中,共构建了107个NLP多任务数据集(论文将这个庞大集合称之为EXMIX)。ExT5就是一个在有监督的EXMIX数据和自监督C4数据上进行预训练的T5模型,如上图所示。ExT5发现:在预训练期间使用多个任务比在微调期间更好,并且多任务预训练与 MLM 相结合比仅使用 MLM 的样本效率要高得多,如下图:聚焦:UnifiedSKG,统一结构化数据任务
上述介绍的工作不区分特定任务,而最近18家机构共同打造的UnifiedSKG[12]则是将大规模对任务学习聚焦于结构化数据任务上,刷新了其中21个任务中的16个SOTA。如上图所示,UnifiedSKG以text-to-text形式统一所有SKG任务,输入由三部分组成:1)用户查询;2)结构化知识线性化;3)context原文。此外,论文也进行了四种训练方式的对比:- ST-F:单任务微调;
- ST-P:单任务prefix-tuning;
- MT-F:多任务微调;
- MT-P:多任务prefix-tuning
总结与展望
本文主要介绍了一种NLP建模的“统一范式”:预训练+大规模多任务学习(Pre-train+Massive Multi-tasking),做到了NLP的大一统建模:- 统一模型:Text-to-Text的生成式预训练模型;
- 统一任务:Prompt统一(重构)了不同的NLP任务间的差异,不同prompt可以代表不同的任务。
- 统一应用:拿来即用,prompt自适应后直接进行zero/few-shot测试。
- 在日益多样化的任务集合上训练一些更强大的模型,然后在循环中使用这些模型来创建更具挑战的数据集。如此循环下去。。。
[1]结束语:“预训练+大规模多任务学习”会继续促进AI领域的大一统建模。
近代自然语言处理技术发展的“第四范式: https://zhuanlan.zhihu.com/p/395115779
[2]Multitask Learning: https://www.cs.cornell.edu/~caruana/mlj97.pdf?utm_campaign=NLP%20News&utm_medium=email&utm_source=Revue%20newsletter
[3]An Overview of Multi-Task Learning in Deep Neural Networks: https://arxiv.org/pdf/1706.05098.pdf
[4]Multi-Task Learning with Deep Neural Networks: A Survey: https://arxiv.org/pdf/2009.09796.pdf
[5]Muppet: Massive Multi-task Representations with Pre-Finetuning: https://arxiv.org/pdf/2101.11038.pdf
[6]Fine- tuned Language Models Are Zero-Shot Learners: https://arxiv.org/pdf/2109.01652.pdf
[7]Multitask Prompted Training Enables Zero-Shot Task Generalization: https://arxiv.org/pdf/2110.08207.pdf
[8]Finetuned Language Models Are Zero-Shot Learners: https://arxiv.org/pdf/2107.13586.pdf
[9]ZeroPrompt: Scaling Prompt-Based Pretraining to 1,000 Tasks Improves Zero-Shot Generalization: https://arxiv.org/pdf/2201.06910.pdf
[10]MetaICL: Learning to Learn In Context: https://arxiv.org/pdf/2110.15943.pdf
[11]EXT5: TOWARDS EXTREME MULTI-TASK SCALING FOR TRANSFER LEARNING: https://arxiv.org/abs/2111.10952
[12]UNIFIEDSKG: Unifying and Multi-Tasking Structured Knowledge Grounding with Text-to-Text Language Models: https://arxiv.org/pdf/2201.05966.pdf
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK