提纲
1 简介
2 self-supervised training
3 supervised training
4 总结
参考文献
1 简介
目前大规模语言模型LLM已经展现了惊人的in-context learning(ICL)能力,但是 **由于语言模型预训练目标跟下游ICL用法存在明显差距,从而影响模型的ICL性能,于是就有一些工作在语言模型的预训练跟下游ICL推断之间插入一个模块,企图缩小语言模型跟ICL用法之间的差距,称之为warmup。通过在ICL数据上进行针对性的训练,更新或者增加语言模型参数,让语言模型适配下游的ICL任务。看起来是不是跟之前下游任务的finetune很接近,但是还是不一样的,Warmup的目的是增强语言模型整体的ICL能力,而finetune则是训练语言模型以适配特定下游任务。**
2 Self-supervised training
没有ICL相关的监督数据怎么破?那就自己造呗。Self-supervised training就是在LLM的预训练跟下游few-shot任务之间插入一个自监督的中间训练任务,用来教语言模型学习in-context few-shot能力。 **Self-supervised training会构建不同任务的自监督样本,将同一个任务的多个自监督样本拼接到一起构建成特定任务下的ICL训练数据,通过在对应的ICL数据上训练来增强语言模型的ICL能力。**
Self supervised training定义了4个自监督训练任务,这四个训练任务介绍如下,根据这不同训练任务可以将无监督数据转换为对应的input- output对,通过在pair对数据前分别添加”Input:”跟“Output:”进行区分输入跟输出。 **每一个训练样本都是由属于同一个任务的多个input-output对组成,将多个input-output对直接拼接到一起即可。训练任务就是给定前面的input-output对跟当前的input,去预测当前的output内容。**
a) Next sentence generation 根据上文生成下一句话
b) Masked word prediction 预测被mask掉的位置
c) Last phrase prediction 给点上文,生成句子最后一个短语。
d) Classification 分类任务,预测对应的文本输入
图1: self-supervised training样例
论文直接对比self-supervised跟四种不同基线方法。
a)
LM, 最原始的语言模型
b)
ExtraLM, 语言模型在用于构建self-supervised训练数据的原始数据上进行额外的语言建模任务。
c)
CrossTask,语言模型在跟验证集任务不同的的数据集上finetune
d)
SameTask,语言模型在跟验证集任务相同的数据集上finetune
其中部分结论如下:
a)
Self-supervised training的模型在多项任务中取得最好效果。通过self-supervised跟ExtraLM的对比,可以推断模型性能的提升并不是来源于在数据上的额外训练。CrossTask跟SameTask的对比可以说明训练任务跟评测任务的差异会严重影响finetune的评测结果。
图2: self-supervised效果对比
b)
对于self-supervised training,在一定区间内,增加训练数据可以提升效果 。也就是说self supervised training只需要相对有限的数据即可。 联合四个训练任务的self supervised training优于只只使用一个任务。此外,self supervised training只对few shot任务有帮助,对zero shot任务无帮助。
图3: self-supervised training在不同场景下的表现
3 Supervised learning
MetaICL是一种新的训练框架,让LLM在大量训练任务上进行in-context training,从而让模型在新任务中能通过in-context更好的理解新任务,从而提升在新任务上的表现。
图4: MetaICL框架
MetaICL训练数据为(x1+y1+…+xk+yk+xk+1, yk+1),将k个样本(xi, yi)作为in-context,跟当前样本的xk+1拼接到一起作为模型的输入,去预测对应的yk+1。在推理时,同样利用k个样本(xi, yi)作为in-context,根据当前问题x,预测各个候选答案y的概率,选择其中概率最大的y作为最终结果。训练过程每次随机选择一个任务进行,通过多次迭代实现了在众多任务上都进行了训练。考虑到训练的稳定性,还提出另一种方法Channel MetaICL,跟前者的差异在于简单交换了x跟y的顺序。以下是一些相关结论
a) MetaICL及其变体在新任务上的表现有明显提升,甚至超过了部分在特定数据集上finetune过的模型效果。
图5: MetaICL效果对比
b) **MetaICL的效果会随着in-context中的样本数量的增加有所提升** ,(由于下游语言模型输入长度的限制,没有尝试过更大的样本数量,只尝试了0,4,8,16,32的设置。)同时, **训练任务数量跟多样性的增加能对模型效果有帮助。**
除此之外,前面提及的instruction tuning也属于supervised training的一种。[In-context learning系列之instruction tuning](http://mp.weixin.qq.com/s?__biz=Mzk0NzMwNjU5Nw==&mid=2247484754&idx=1&sn=d24ce2e8138c2c0ea15b86e0c2ea6740&chksm=c379ac58f40e254e8fe1bbaa9bdda495cfef9a78d700cbe4039bbb7e340bb14bf455d3a64b2b&scene=21#wechat_redirect)
4 总结
In-context learning中的supervised traing,目的是在预训练跟ICL下游任务间插入一个中间训练阶段,让模型在ICL数据上进行充分训练,更新模型参数或者新增参数,缩小模型预训练跟下游ICL之间的差距。这个过程被称之为warmup。很好理解,模型原本具备in-context learning的巨大潜力,只是需要一定的技巧来唤醒模型的这部分能力。目前相关的warmup方法,主要是在构建ICL训练数据跟多任务学习来实现。
这里需要注意的是,In-context learning的定义里明明说了不需要参数更新,跟这篇文章的内容不就冲突了嘛。我个人的理解是这篇文章所介绍的属于In-context learning的一个可选择的warmup阶段,许多In-context learning方法并没有这个阶段,只是推荐使用。换句话说,In-context learning确实是不需要参数更新的,但是为了保证下游任务效果,推荐在其中插入一个需要参数更新的warmup阶段。 ****
参考文献
Improving In-Context Few-Shot Learning via Self-Supervised Training
https://arxiv.org/pdf/2205.01703.pdf
MetaICL: Learning to Learn In Context