RealFormer:Real 简单,Real 有效

来自 Google Research 一篇关于 Transformer 改进的论文,提出方法 real 简单,论文也写得 real 简洁,可以说是最近读得最没难度的论文了。但虽然方法简单,效果却很好。

RealFromer 中的 Real 表示 Re sidual A ttention L ayer,这三个词其实已经介绍完了这篇论文的方法。所以如果只介绍方法的话,那写到这里就可以结束了。

真的很简单,论文里都能看到作者们努力凑页数的辛苦。

为了不辜负这份辛苦,还是看看吧。

Residual Attention Layer:嗯,就改一行代码

First,将上面 Residual Attention Layer 展开讲一下,如字面意思,相比原来的 Transformer 模型,RealFormer 模型只是 在相邻 Attention 模块间加入了残差连接 。所以需要改的代码可能都才一两行。

模型示例图如下

只是在每层 Attention Score 计算时,加上前一层的 Attention Score.

用方程表示的话,先写出原 Transformer 注意力计算方程

而 RealFormer 只是在过 Softmax 前,加上前一层的 Attention Score

注意这里加的是 Attention Score ,而不是过 softmax 后的 Attention.

至于第一层,当然没 Prev.

Benchmark 对比:Real 好哇

可能为了增加实(cou)验(ye)量(shu),所以对比的 Transformer 模型再分成 Post-LN 和 Pre-LN 模型,就是 Layer Normalization 放 Attention 前还是后的区别,前者是最原始的,应用也比较广,而后者则在 GPT,Megatron 这样的单向语言模型应用比较多。

两者区别如下

Pre-LN 的话相当于在各层 Token Embedding 直接打了条通道。

主要在 预训练模型 BERT 上进行实验,分别在预训练和精调实验上进行了对比,首先预训练实验

发现 RealFormer 表现都最好,有稳定提升,特别是最大的 xLarge 提升最大。

之后在 GLUE 上精调对比,用的 Large 模型

发现 RealFormer 的整体分最好的,大部分任务优于其他两个,而凑数的 Pre-LN 当然也是垫底。

接着在 SQuAD 问答数据集上进行精调,因为该任务的复杂性,SQuAD 能比较好反应预训练模型的整体性能,也是在 Large 模型进行的精调。

可以看出 RealFormer 仍然是优于其他两个。

因为真的很简单,Reddit 上的热心网友也马上改了行代码后,在 CIFAR-10 图像识别上做了实验

发现 RealFormer 比 Transformer 确实有比较好的提升。

所以整体来说, RealFormer 是 Real 有效

细节分析:零零碎碎

首先,RealFormer 的 算力利用有效性

和 Post-LN 模型对比,只用一半训练步数就能在 GLUE 上取得相近表现。

然后,之前有发现,Pre-LN 模型对大学习率会有收益,那 RealFormer 怎么样

实验发现 RealFormer 也有类似性质, 对大学习率有较大收益

最后,作者还对各个头的输出分布进行了分析,包括各个头内部,以及跨层之间同一个头,这里画了两幅超大的图,直接占了差不多两页的篇幅。

而得出的结论是,相比起 Post-LN 和 Pre-LN, RealFormer 获得的 Attention 会更稀疏 ,特别是后几层。而且中间几层之间的 JS-散度比较低,说明可能 RealFormer 有效的原因是提供了一定的 Regularityzation(嗯,万物都可正则)。

结语

这篇论文感觉内容可能就一篇 short paper 吧,但还蛮有意思的,提出一个很简单的方法,然后规规矩矩地进行了实验分析。看完之后拍自己脑袋,咋没想这样试过呢。

但不足之处也很明显,只是提出了这个方法,对方法为什么有效的分析还是有点少,只是单纯做实验然后陈述结果。

所以看完后还是挺疑惑,为什么给 Attention Score 加个残差连接就有效呢,还是不懂。分析发现可以让 Attention 更稀疏,那为什么稀疏带来的提升更好呢,感觉这一块再多做些理论分析会更好些。

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。 星标具体步骤为:

(1)点击页面 最上方”AINLP” ,进入公众号主页。

(2)点击 右上角的小点点 ,在弹出页面点击“ 设为星标 ”,就可以啦。

感谢支持,比心

欢迎加入AINLP技术交流群

进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注 NLP技术交流

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

阅读至此了,分享、点赞、在看三选一吧:pray: