曹县 做网站的公司,软件开发专业的就业方向,合肥网站建设cnfg,软件开发项目管理方案文 | Rukawa_Y编 | Sheryc_王苏#xff0c;小轶去年年初 GPT-3 的论文在 arxiv 上出现#xff0c;论文名为 “Language Models are Few-Shot Learners”#xff0c;引起一阵轰动。除了前无古人的模型规模外#xff0c;最抓人眼球的是#xff0c; GPT-3 能够不需要 fine-tu… 文 | Rukawa_Y编 | Sheryc_王苏小轶去年年初 GPT-3 的论文在 arxiv 上出现论文名为 “Language Models are Few-Shot Learners”引起一阵轰动。除了前无古人的模型规模外最抓人眼球的是 GPT-3 能够不需要 fine-tuning 进一步更新参数直接解决下游任务。这种完全依赖语言模型从预训练过程中习得的推理能力通过上下文语境task description直接解决新任务的方式叫做语境学习(in-context learning)。然而利用语境学习让模型学会处理一个新的任务的方法效果往往比不上传统的微调预测的结果也有很大的方差并且如何把多种多样的任务转化为语境的模版Prompt是很难被设计出来的。近期Facebook AI 实验室所发表的论文 MetalCL: Learning to learn in context 提出了一种训练方法MetalCL通过元学习的方式让模型更加简单有效地进行语境学习——不需要在输入中提供任务描述模板只需提供训练样例和目标输入。论文作者希望通过在元训练任务上进行多任务学习让模型能够自动学习到如何通过输入中的少量训练样本重构任务信息从而省去人工设计模板的麻烦。论文标题MetaICL: Learning to Learn In Context论文链接https://arxiv.org/pdf/2110.15943.pdfArxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【1219】 下载论文PDF~语境学习的几种情况根据GPT-3的论文语境学习分为 3 种情形分别是零样本学习Zero-shot Learning、单样本学习One-shot Learning和少样本学习Few-shot Learning。零样本学习Zero-shot Learning在模型输入中只提供任务描述和测试样例输入得到测试样例输出单样本学习One-shot Learning在模型输入中提供任务描述、一条训练样例和测试样例输入得到测试样例输出少样本学习Few-shot Learning在模型输入中提供任务描述、少量训练样例和测试样例输入得到测试样例输出。GPT-3 的论文的实验结果中表明 GPT-3 这3种情况均取得了一定的效果这里有不再展开了有兴趣的同学可以看看 GPT-3 的论文。MetaICL介绍了解了语境学习之后相信大家都会被这种通过推理就能学习一个新的任务的并且无需任何参数更新的学习方式所吸引。然而利用语境学习让模型学会处理一个新的任务的方法效果往往比不上传统的微调预测的结果也有很大的方差并且如何把多种多样的任务转化为语境的模版Prompt是很难被设计出来的。基于这些挑战也就是如何让模型在语境学习中所学习到的新的任务效果更好MetaICL应运而生了。MetaICL全称Meta-training for In-context Learning。其中先对模型进行元训练Meta-training让模型学会如何根据数据集自动调整语境学习策略然后再进行语境学习。在Meta-training的过程中论文的作者使用了数十个不同领域的NLP的任务作为元训练任务Meta-training Task对于模型进行训练来提升模型进行少样本学习的能力。在这一训练过程中MetaICL的优点在于不需要在输入中提供任务描述模板只需提供训练样例和目标输入论文作者希望通过在元训练任务上进行多任务学习的策略让模型能够自动学习到如何通过输入中的少量训练样本重构任务信息从而省去人工设计模板的麻烦。MetalCL的具体的训练过程是对于每一个元训练任务利用K-shot Learning将元训练任务中随机抽取出的任务中的个样本的和和第个样本的连接起来作为一个输入输入到模型中预测对应的第个样本的。其中前个样本相当于提供了对于任务的描述信息。MetalCL推测的过程也采用了与训练过程相同的输入方式来处理预测的样本不需要任务描述只需将该任务的个训练样本与目标输入相拼接即可。总结一下MetalCL的流程如下Meta-training从准备好的大量的元训练任务中随机抽取出一个任务从任务中抽取出个样例 利用模型最大化概率loss损失函数为交叉熵。Interence对于一个meta-training中没有见过的任务获取个样例 和预测的输入 求 其中 是输出 所有可能的结果的集合。除此之外论文的作者还借鉴了在少样本的文本分类任务中的一种噪声通道[1]的方式将元训练过程中的目标函数变换为 。即在噪声通道模型中将定义为那么目标函数则变换为最大化概率即最大化概率对应在推理阶段模型则是计算。实验结果论文中作者使用GPT-2 large进行MetalCL训练元训练过程中一共使用了142个元训练数据集这142个数据集包含了文本分类、QA、NLI和paraphrase detection等任务。论文作者在实验过程中对于Meta-training采取了7种设置对Target采取了5种设置并且在Meta-training和Target所使用的任务是没有交集的具体的设置如下HR-LR从大数据集迁移至小数据集在meta-training过程中使用HRHigh resource即大于等于10000训练样本的数据集在target的过程中使用LRLow resource即小于10000的数据集。Classification/QA元训练与预测使用相似任务在meta-training过程中使用Classification和QA的数据集在target的过程中也使用Classification和QA的数据集。NLI/Paraphrase元训练与预测使用不相似任务在meta-training过程中使用Non-Classification、Non-QA、Non-NLI、Non-Paraphrase的数据集在target过程中使用Classification、QA、NLI、Paraphrase的数据集。Meta-train和Target所采取的设置总结如下见表格最终实验结果里作者将MetaICL和Channel MetalCL同其他baseline做了比较实验结果如下表格中各个method的意义如下0-shot使用预训练语言模型直接做零样本推断In-context使用预训练语言模型进行few-shot的推断PMI 0-shot, PMI In-context使用PMI[2]方式的零样本和few-shot的推断Channel 0-shotChannel In-context使用通道模型的零样本推断和使用通道模型的few-shot推断Multi-task 0-shot使用meta-training对于预训练模型进行训练然后进行零样本推断Channel Multi-task 0-shot使用通道模型的Multi-task 0-shotOracle基于任务对于预训练模型进行fine-tuningOracle w/meta-train对预训练语言模型进行meta-training然后再进行fine-tuning从表格中我们可以得到如下的结论对于模型来说在元训练/目标任务相似即不进行任务迁移的情况下使用Meta-training训练模型然后进行0样本的任务学习Multi-task 0-shot的效果比普通的语言模型直接进行语境学习的效果更好说明Meta-training的确是对于模型是有帮助的。使用MetalCL训练的模型不论是普通的语言模型还是Channel语言模型均取得了不错的效果尤其是Channel MetaICL在大部分的实验设置的情况下的效果是最好的。在需要进行任务迁移的情况下使用MetalCL训练的模型的效果并没有收到太大的影响并且仍然在大部分的实验设置的情况下的效果是最好的。而将MetalCL训练的模型同Fine-tuning的模型比较时使用MetaICL的方法有时能够取得超过直接在目标任务进行Fine-tune的方法并且Oracle w/meta-train的结果还说明了meta-training对于Fine-tuning也有帮助。除了上面的结论作者还将使用MetaICL训练的GPT-2模型同GPT-J进行了比较实验结果如下从表格中还可以看出MetalCL训练的语言模型在许多领域的模型效果基本上跟GPT-J差不多有些领域甚至要比GPT-J好。最后论文作者还进行了Ablation study主要内容分为两点分析了Meta-training中元训练任务的个数的影响论文的作者对于HR-LR实验采取了子采样分别从61个任务数据集中抽取了{7, 15, 30}个数据集分别进行训练实验结果如下图所示从图中可以看出在不同的元训练任务数目上的实验Channel MetaICL的效果始终是最好的除此之外整体上元训练任务越多MetaICL的性能越好。分析了Meta-training中元训练任务的差异的影响论文的作者对于HR-LR实验采取了两种设置也就是对于61个任务数据集分别采取了两次采样每次采样的任务数据集的个数为13其中一次采样的元训练任务差异性很大任务分别有QANLI关系抽取语义分析等等另一次采样的元训练任务差异性较小仅仅包含语义分析主题分类恶意文本检测。论文的作者在这两种设置下分别进行了实验实验结果如下表所示。可以看出使用差异性较大的元训练任务会带来更好的结果。分析了任务描述是否对于MetalCL有帮助虽然MetaICL不需要任务描述论文的作者依然试验了在MetaICL中使用任务描述是否会带来进一步的性能提升。作者在HR-LR实验中使用了32个meta-training任务和12个目标任务这些任务均是提供了人工撰写的任务描述可以看出加入任务描述后MetaICL效果有着进一步的提升。总结本文介绍了一种MetaICL的训练方法通过这种训练方法可以让模型通过元训练更好更简单地进行语境学习。同时笔者认为MetaICL也算是一种大力出奇迹的方法吧。这其实可以给予我们一些启发对于一个语言模型不论要使用这个语言模型进行什么样子的任务当让模型尽量多的见识各种各样的任务之后这里什么任务能够对模型提升比较大也是值得继续去研究的即使是对于没见过的任务不论是零样本学习还是语境学习模型均能取得不错的效果。MetalCL算是一种基于大规模语言模型的一种训练方法对于容量较小的模型笔者认为MetaICL是否还能起到很好的效果也是值得去探究的。论文中还提出对于一个语言模型进行了MetalCL之后再进行Fine-tuning最终模型的效果是比直接对于模型进行Fine-tuning要好的。在拥有大量不同任务的数据集时可以考虑在Fine-tuning之前先对模型进行MetalCL训练或许可以进一步提升模型效果。后台回复关键词【入群】加入卖萌屋NLP/IR/Rec与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集 [1] Noisy channel language model prompting for few-shot text classification.[2] Surface form competition: Why the highest probability answer isn’t always right.