對于深度學(xué)習(xí)的很多技巧喧务,當(dāng)你實(shí)驗(yàn)做得足夠多的時(shí)候你就會發(fā)現(xiàn)赖歌,這類問題的唯一正確答案是:
因?yàn)閷?shí)驗(yàn)結(jié)果顯示這樣做效果更好!
當(dāng)然功茴,你非要想找一個(gè)像模像樣的解釋庐冯,其實(shí)也能嘗試一下。對于Transformer為什么用LN而不是BN/IN坎穿,我估計(jì)《Attention is all you need》的作者們當(dāng)時(shí)肯定沒有想那么多展父,而是發(fā)現(xiàn)當(dāng)時(shí)NLP中主流就是用LN,所以就跟著用了玲昧。
那么栖茉,NLP為什么用LN居多呢?非要說原因孵延,大致上是NLP的文本本質(zhì)上可以看成一個(gè)時(shí)間序列吕漂,而時(shí)間序列是不定長的,長度不同的序列原則上屬于不同的統(tǒng)計(jì)對象尘应,所以很難得到穩(wěn)定的統(tǒng)計(jì)量惶凝,而得不到穩(wěn)定的統(tǒng)計(jì)量吼虎,BN就無法成立了(因?yàn)锽N依靠滑動平均來獲得一組預(yù)測用的統(tǒng)計(jì)量)。
但問題是苍鲜,拋開具體的統(tǒng)計(jì)背景不說思灰,我們硬是要在NLP模型中套上一層BN不行嗎?肯定行混滔,這又不犯法洒疚。那么是不是NLP+BN效果一定就不如NLP+LN?這還真不一定遍坟,以往我們做過一些實(shí)驗(yàn)拳亿,某些情況下NLP+BN是最好的,但總體來說還是NLP+LN更好愿伴,所以歸根結(jié)底還是前面的唯一正確答案:
因?yàn)閷?shí)驗(yàn)結(jié)果顯示這樣做效果更好!
不過你要特定Transformer模型的話电湘,你會發(fā)現(xiàn)CV中的ViT也是用了LN的隔节,這就違背了大家以往的“CV用BN,NLP用LN“的常識了寂呛,而且你會發(fā)現(xiàn)怎诫,真要將ViT中的LN換成BN,結(jié)果還真的會下降贷痪,所以Transformer(而不是NLP或CV)跟LN似乎真的更配幻妓。這又有什么解釋呢?
跟LN似乎真的更配劫拢。這又有什么解釋呢肉津?
LN本質(zhì)上是L2 Normalzation的一個(gè)簡單變體,q舱沧,k一般是LN之后再接一個(gè)Dense變換妹沙,這樣一來||q||,||k||就會一定程度上得到控制,從而使Attention的值在合理范圍內(nèi)熟吏,不至于梯度消失/爆炸距糖。如果換成BN,對||q||,||k||的控制就沒那么有效了牵寺。
當(dāng)然這都是瞎猜悍引,不過有一個(gè)間接性的證據(jù)是,文章《Root Mean Square Layer Normalization》說將LN換成RMS Norm后效果會變好帽氓,而RMS Norm比LN更像L2 Normalzation趣斤。此外,我們以前也做過簡單的實(shí)驗(yàn)杏节,如果說將Attention換成
其實(shí)效果不會有特別大的變化典阵。