前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >No Fine-Tuning, Only Prefix-Tuning

No Fine-Tuning, Only Prefix-Tuning

作者头像
炼丹笔记
发布2022-01-05 09:47:25
1K0
发布2022-01-05 09:47:25
举报
文章被收录于专栏:炼丹笔记

炼丹笔记干货

作者:十方

说起fine-tuning,大家再熟悉不过了,NLP和CV领域基本都是各种预训练模型了。使用预训练模型最重要的一步就是fine-tuning,因为下游任务是多种多样的,所以每种下游任务都要有个副本,并且finetune会改变所有的参数。这篇论文<Prefix-Tuning:Optimizing Continuous Prompts for Genreration>就提出一个轻量级的替代方式,使得语言模型参数固定,优化一个较小的特定任务的向量(论文叫prefix).该方案是受到最近大火的Prompting的启发,仅仅用0.1%额外参数,就可以获得更好的表现。

问题定义

生成式任务就是给个上下文x,然后输出一个序列的tokens.这篇论文就聚焦两个任务,一个是table-to-text,x就是一个表格的数据,y就是文本描述.在总结任务中,x就是一篇文章,y就是一小段总结。

假设我们有自回归模型GPT(transformer的结构,12层),让z = [x;y],聚合x和y,Xidx是x的索引,Yidx是y的索引,hi(j)是transformer第j步的输出,hi = [hi(1),...,hi(n)],生成hi的输入是zi和h<i为下式:

hi用来计算下一个token的概率分布:

p(zi+1 | h <=i) = softmax(Whi(n))

还有一种生成式架构是encoder-decoder,就是BART,大家也很熟不赘述,同GPT比就是BART的encoder是双向的,decoder是单向的。如下图所示:

Prefix-Tuning

prefix-tuning在生成式任务中可以替代fine-tuning,方法就是在自回归模型前加个prefix,z=[PREFIX;x;y]或者再encoder和decoder前都加prefix,z=[PREFIX;x;PREFIX';y],如问题描述中的图所示。Pidx表示prefix中的索引,hi由下式所示:

这里我们固定GPT的参数,只会训练prefix中的参数,很明显,对于非prefix的token,都会依赖prefix的hi。论文中提到,直接更新prefix的参数会导致优化的不稳定,因此会在prefix上加个mlp的映射:

实验

实验使用了3个table-to-text的数据集,E2E,WebNLG,DART,3个数据集复杂度和大小逐渐提升,每个数据集的domain都不同,对比了finetune,adapter等方法,prefix的表现是最好的。

参考文献

1、Prefix-Tuning:Optimizing Continuous Prompts for Genreration

https://www.aminer.cn/pub/5ff4336291e01130648dc2f4

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档