前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在梯度上做简单mask竟有如此的神奇效果

在梯度上做简单mask竟有如此的神奇效果

作者头像
zenRRan
发布2022-02-28 11:30:21
6160
发布2022-02-28 11:30:21
举报

每天给你送来NLP技术干货!


paper: Raise a Child in Large Language Model: Towards Effective and Generalizable Fine-tuning link: https://arxiv.org/pdf/2109.05687.pdf

去年让我印象最深刻的应该就是RDrop和这篇了,趁着晚上有时间,就来简单的说下这篇文章。

总体说一下

由于预训练模型的兴起,最近的研究很多投身于如何在不遗忘预训练模型的参数的同时,又能学到新的下游任务的finetune的方法。比如Henry Gouk提出的distance-based的方法,将finetune学习到的参数控制在原始预训练参数一个球形范围内;哈工大的Sanyuan Chen在EMNLP也提出了recall and learn的方法,即边预训练边学习下游任务的方法,并提出了RecAdam新的算法。

本文的方法采用了更为巧妙地方法,通过mask掉部分梯度来防止更新过度从而导致原始的预训练信息的遗忘,有点像在反向传播中使用前向传播的dropout的方法,巧也,妙也。并在实验中得出普遍比普通finetune方法还要高出1.5~8.6%的性能,也比前人改进的finetune方法高出0.6~1.3个点。

很好在自己的实验上进行落地,所以给大家推荐一下。

两种实验方法

如下图的算法所示,不要被算法吓到,很简单的,总结起来就是通过某个方法找到需要没有被mask的梯度节点(这里叫做child),然后生成0-1mask矩阵,和原来梯度乘就完成了更新与不更新的操作了。

那么如何选取哪些梯度不更新,作者提出两种方法:

  1. task-free方法,即随便mask梯度
  2. task-driven方法,即需要根据不同任务来决定mask哪些梯度

第一种为完全类似dropout一样的,随机选取部分梯度节点进行mask,不参与梯度更新,说点学术化点就是服从伯努利分布:

其中p_f为保留率,当其为1时就是所有都保留,都不mask,就是普通的finetune了。其中,当mask完后,要对保留下来的梯度进行放大1/p_f倍的操作(类似dropout吧~)。

虽然听起来这个随机的方法很简单,但值得注意的是,这个证明其有效的过程需要好好学学和看看的,这里说下最终结论:

这种随机mask的方法,有助于损失跳出局部最优,跳出鞍点,鼓励模型寻找更为平坦的局部最优面。

另一种方法为基于任务相关的mask方法,这里采用的FIM方法(Fisher Information Matrix),即对每一个梯度平方的期望:

求它在每一个样本的均值的梯度:

这个梯度越大,那么就表示这个梯度节点对该任务就格外重要,相反越不重要的就越要mask了。其中mask的比率就是选择topk的方法一样。

实验

两种方法和普通finetune方法在4种预训练模型中的性能比较:

上面为主要试验,但感觉为了论文的充分性吧,作者又讨论了该方法的领域泛化性

除此之外,还讨论了任务的泛化性:

都还是挺不错的。

以往的前沿方法对比,更能体现出其有效性:

最后还做了在目前比较火的低资源情况下的性能分析:

这篇文章还是很不错的,不光是方法,更是学习如何将一个十分简单的idea写成故事(8页论文)的能力。

学习道路长且艰,与君共勉。

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

本文分享自 深度学习自然语言处理 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 总体说一下
  • 两种实验方法
  • 实验
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档