transformer 为什么使用 layer normalization,而不是其他的归一化方法?

对于深度学习的很多技巧,当你实验做得足够多的时候你就会发现,这类问题的唯一正确答案是:

因为实验结果显示这样做效果更好!

当然,你非要想找一个像模像样的解释,其实也能尝试一下。对于Transformer为什么用LN而不是BN/IN,我估计《Attention is all you need的作者们当时肯定没有想那么多,而是发现当时NLP中主流就是用LN,所以就跟着用了。

那么,NLP为什么用LN居多呢?非要说原因,大致上是NLP的文本本质上可以看成一个时间序列,而时间序列是不定长的,长度不同的序列原则上属于不同的统计对象,所以很难得到稳定的统计量,而得不到稳定的统计量,BN就无法成立了(因为BN依靠滑动平均来获得一组预测用的统计量)。

但问题是,抛开具体的统计背景不说,我们硬是要在NLP模型中套上一层BN不行吗?肯定行,这又不犯法。那么是不是NLP+BN效果一定就不如NLP+LN?这还真不一定,以往我们做过一些实验,某些情况下NLP+BN是最好的,但总体来说还是NLP+LN更好,所以归根结底还是前面的唯一正确答案:

因为实验结果显示这样做效果更好!

不过你要特定Transformer模型的话,你会发现CV中的ViT也是用了LN的,这就违背了大家以往的“CV用BN,NLP用LN“的常识了,而且你会发现,真要将ViT中的LN换成BN,结果还真的会下降,所以Transformer(而不是NLP或CV)跟LN似乎真的更配。这又有什么解释呢?

跟LN似乎真的更配。这又有什么解释呢?

LN本质上是L2 Normalzation的一个简单变体,q,k一般是LN之后再接一个Dense变换,这样一来||q||,||k||就会一定程度上得到控制,从而使Attention的值在合理范围内,不至于梯度消失/爆炸。如果换成BN,对||q||,||k||的控制就没那么有效了。

当然这都是瞎猜,不过有一个间接性的证据是,文章《Root Mean Square Layer Normalization说将LN换成RMS Norm后效果会变好,而RMS Norm比LN更像L2 Normalzation。此外,我们以前也做过简单的实验,如果说将Attention换成

其实效果不会有特别大的变化。

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>