听说Attention与Softmax更配哦~
?PaperWeekly 原創 ·?作者 | 蘇劍林
單位 | 追一科技
研究方向 | NLP、神經網絡
不知道大家留意到一個細節沒有,就是當前 NLP 主流的預訓練模式都是在一個固定長度(比如 512)上進行,然后直接將預訓練好的模型用于不同長度的任務中。大家似乎也沒有對這種模式有過懷疑,仿佛模型可以自動泛化到不同長度是一個“理所應當”的能力。
當然,筆者此前同樣也沒有過類似的質疑,直到前幾天筆者做了 Base 版的 GAU 實驗后才發現 GAU 的長度泛化能力并不如想象中好。經過進一步分析后,筆者才明白原來這種長度泛化的能力并不是“理所當然”的......
模型回顧?
在FLASH:可能是近來最有意思的高效Transformer設計中,我們介紹了“門控注意力單元 GAU”,它是一種融合了 GLU 和 Attention 的新設計。
除了效果,GAU 在設計上給我們帶來的沖擊主要有兩點:一是它顯示了單頭注意力未必就遜色于多頭注意力,這奠定了它“快”、“省”的地位;二是它是顯示了注意力未必需要 Softmax 歸一化,可以換成簡單的 除以序列長度:
這個形式導致了一個有意思的問題:如果我們預訓練的時候盡量將樣本整理成同一長度(比如 512),那么在預訓練階段 n 幾乎一直就是 512,也就是說 n 相當于一個常數,如果我們將它用于其他長度(比如 64、128)微調,那么這個 n 究竟要自動改為樣本長度,還是保持為 512 呢?
直覺應該是等于樣本長度更加自適應一些,但答案很反直覺:n 固定為 512 的微調效果比 n 取樣本長度的效果要明顯好!這就引人深思了......
問題定位
如果單看 GAU 的預訓練效果,它是優于標準 Attention 的,所以 GAU 本身的擬合能力應該是沒問題的,只是 在樣本長度方面的遷移能力不好。為了確認這一點,筆者也嘗試了混合不同長度的樣本來做 GAU 的預訓練,發現結果會有明顯的改善。
那么,可能是 GAU 的什么地方出了問題呢?其實這不難猜測,GAU 的整體運算可以簡寫成 ,其中 都是 token-wise 的,也就是說它們根本不會受到長度變化的影響,所以問題只能是出現在 中。
以前我們用標準的 Attention 時,并沒有出現類似的問題,以至于我們以前都無意識地覺得這是一個“理所當然”的性質。所以,我們需要從 GAU 的 Attention 與標準 Attention 的差異中發現問題。前面說了,兩者不同的地方有兩點,其一是多頭 Attention 變成單頭 Attention,但是這頂多會讓效果有一定波動,而我們測出來的結果是大幅下降,所以問題就只能出現在另一點,也就是歸一化方式上,即 Attention 的 softmax 換成 所帶來的。
驗證這個猜測很簡單,筆者將 GAU 中 Attention 的歸一化方式換回 Softmax 后重新訓練一個 GAU 模型,然后微調測試不同長度的任務,發現其效果比 時明顯要好。所以,我們得出結論:Attention 還是與 Softmax 更配~
原因分析?
為什么更符合直覺的、自適應長度的 n 反而表現不如固定的 n 呢?既然我們已經以往用 Softmax 是沒有這個問題的,所以我們不妨從 Softmax 出發找找靈感。Softmax 的操作是:
一個直接的問題就是: 跟 n 的關系是怎樣的呢?如果真有 ,那么理論上將 換成 n 應該能取得相近的效果,至少不會是特別差的那種。
然而,我們知道注意力的重點是“注意”,它應該有能力“聚焦”到它認為比較重要的幾個 token 上。同時,以往關于高效 Transformer 的一些實驗結果顯示,把標準 Attention 換成 Local Attention 后結果并不會明顯下降,所以我們可以預計位置為 i 的 Attention 基本上就聚焦在 i 附近的若干 token 上,超出一定距離后就基本為 0 了。事實上,也有很多事后的可視化結果顯示訓練好的 Attention 矩陣其實是很稀疏的。
綜合這些結果,我們可以得出,存在某個常數 k,使得 時 都相當接近于 0,這樣一來 應該更接近 而不是 ,這就意味著 很可能跟 n 是無關的,或者說跟 n 的數量級關系至少是小于 的!因此,我們如果要將 替換成別的東西,那應該是一個比 n 的一次方更低階的函數,甚至是一個常數。
現在回看 GAU,它的激活函數換成了 時,其 Attention 情況是類似的,甚至會更稀疏。這是因為 操作有直接置零的作用,不像 總是正的,同時 GAU“標配”旋轉位置編碼 RoPE,在Transformer升級之路:博采眾長的旋轉式位置編碼中我們就推導過,RoPE 本身自帶一定的遠程衰減的能力。綜合這些條件,GAU 的歸一化因子也應該是低于 的階甚至是常數級別的。
熵不變性
由此,我們可以總結出 GAU 的三個解決方案,一是預訓練和微調都用同一個固定的 n;二是依然使用動態的樣本長度 n,但是預訓練時需要用不同長度的樣本來混合訓練,不能只使用單一長度的樣本;三就是像 Softmax 那樣補充上一個歸一化因子,讓模型自己去學:
既然存在這些解決方案,那為什么我們還說“Attention 與 Softmax 更配”呢?GAU 的 哪里不夠配呢?首先,我們看 GAU 原論文的消融實驗,顯示出 換成 Softmax,效果基本是一致的:
▲ GAU的squared_relu換成softmax效果是相近的
有了這個基本保證之后,我們就可以看 Softmax 比 好在哪里了。我們看剛才提到的 GAU 三個解決方案,方案一總讓人感覺不夠自適應,方案二必須用多種長度訓練顯得不夠優雅,至于方案三補充了歸一化因子后形式上相比 Softmax 反而顯得“臃腫”了。所以,總體來說還是用 Softmax 顯得更為優雅有效。
此外,泛化能力可以簡單分為“內插”和“外推”兩種,在這里內插(外推)指的是測試長度小于(大于)訓練長度。我們剛才說歸一化因子是常數量級,更多是在內插范圍內說的。對于外推來說,如果長度足夠長, 都“擠”在一起,所以很難保持距離超過某個范圍就很接近于 0 的特性。而如果我們用 Softmax 的話,就是它可以推導出一個“熵不變性”的版本,來增強模型的外推能力:
在從熵不變性看Attention的Scale操作中我們做過簡單的對比實驗,顯示該版本確實能提高模型在超出訓練長度外的效果。
那么, 能否推一個“熵不變性”的版本呢?答案是不能,因為它相當于是通過溫度參數來調節分布的熵,這要求激活函數不能是具備正齊次性,比如對于冪函數有 ,歸一化后 就抵消了,不起作用。激活函數最好比冪函數高一階,才比較好實現這個調控,而比冪函數高階的函數,最常見就是指數函數了,而指數歸一化就是 Softmax 了。
實驗結果?
本文分析了 GAU 在微調效果不佳的原因,發現 Attention 的歸一化因子應該是接近常數量級的,所以 GAU 用 n 或者 做歸一化因子會表現不佳。總的來說,筆者認為 Attention 還是跟 Softmax 更配,它是一個不錯的基準,并且還可以通過“熵不變性”的拓展來進一步增強外推能力。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的听说Attention与Softmax更配哦~的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bios 设置 禁用u盘启动不了怎么办
- 下一篇: 中汽交通安全统筹