In-context learning系列之模型warmup

火山方舟向量数据库人工智能与算法

提纲

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 分类任务,预测对应的文本输入

picture.image

图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的评测结果。

picture.image

图2: self-supervised效果对比

b) 

对于self-supervised training,在一定区间内,增加训练数据可以提升效果 。也就是说self supervised training只需要相对有限的数据即可。 联合四个训练任务的self supervised training优于只只使用一个任务。此外,self supervised training只对few shot任务有帮助,对zero shot任务无帮助。

picture.image

图3: self-supervised training在不同场景下的表现

3 Supervised learning‍‍‍‍‍‍‍‍

MetaICL是一种新的训练框架,让LLM在大量训练任务上进行in-context training,从而让模型在新任务中能通过in-context更好的理解新任务,从而提升在新任务上的表现。

picture.image

图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过的模型效果。

picture.image

图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

https://arxiv.org/pdf/2110.15943.pdf

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
KubeZoo: 轻量级 Kubernetes 多租户方案探索与实践
伴随云原生技术的发展,多个租户共享 Kubernetes 集群资源的业务需求应运而生,社区现有方案各有侧重,但是在海量小租户的场景下仍然存在改进空间。本次分享对现有多租户方案进行了总结和对比,然后提出一种基于协议转换的轻量级 Kubernetes 网关服务:KubeZoo,该方案能够显著降低多租户控制面带来的资源和运维成本,同时提供安全可靠的租户隔离性。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论