卡卷网
当前位置:卡卷网 / 每日看点 / 正文

如何评价 Meta 新论文 Transformers without Normalization?

作者:卡卷网发布时间:2025-03-14 23:15浏览数量:97次评论数量:0次

Normalization这个事得好好掰扯掰扯。

上古时期,网络经常在初始几个iteration之后,loss还没下降就不动,必须得把每一层的gradient与weight的比值打印出来,针对性地调整每一层的初始化才能优化出来。尤其是tanh/sigmoid作为激活函数的网络,但凡有一层初始化得大了或者优化几步把某一层的scale搞大了,落在了tanh/sigmoid的梯度消失区间,以较小的梯度优化比较大的weight,可能几万步都走不出去,这也就是梯度消失问题的由来。

后来ReLU缓解了这一问题,不过还是得每一层精细地调调参数,再后来有了Kaiming初始化,需要手调的几率大大降低,基本上只要调一调多分支融合的地方就可以了。

而Batch Normalization的出现,彻底让手调初始化这个手艺失传了,当时虽然大家已经都转用ReLU激活函数,他们还是秀了一把,用BN训了一个sigmoid网络,果然也没有梯度消失问题了。

如何评价 Meta 新论文 Transformers without Normalization?  第1张

虽然没有梯度消失问题了,但sigmoid的性能还是不如relu

当时普遍的观点是:BN这东西,相比于精心调参的网络来说并不涨点(对比上边的Inception和BN-Baseline),但不见得大家都愿意仔细调参,而且它能加速收敛,部署时还可以吸收进线性层中,何乐而不为呢?

不过再后来,transformer成为主流,而nlp那边用layer norm居多,所以transformer继承了它,至于为什么不用BN而用LN,之前知乎一个问题大佬们都有很多讨论了:transformer 为什么使用 layer normalization,而不是其他的归一化方法? 。

但layer norm有个缺点,它不能像batch norm一样吸收到线性层,所以是有额外的部署时计算负担的。所以一直有人在尝试拿掉它或者用bn取代它(其实我曾经试过,在我的任务上用bn并不掉点)。

这篇文章DyT初看时确实震惊了我一把,normalization这东西之所以提出,不就是为了解决tanh的梯度消失问题吗?怎么现在还能用tanh替代normalization?梯度消失的问题难道不存在了吗?

后来转念一想,我第二段所描述的梯度消失现象,其实只存在于使用SGD优化的网络中,而现在通常使用的ADAM优化器,因为做了梯度的归一化,并不会因为tanh回传的梯度过小导致网络优化不动,所以网络是有能力在较短的步数之内将过大的输入调整过来的,尤其是DyT中专门加入了一个alpha参数,网络调整这个参数即可避免梯度消失问题。没想到梯度消失这个困扰神经网络学术界20多年的问题,如今被各种方案变着花地解决了。。

ps:在DyT替换之后,layer norm变成了激活函数,这时FFN里那个GeLU或者SiLU的就变得扎眼起来,能不能也换成tanh,完成一次彻底的文艺复兴?

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码