谁才是Transformer家族中的最强王者?谷歌告诉你答案
文 | Sherry
自從17年Attention is all you need發出,繼而18年BERT刷新各大榜單,大型預訓練Transformer似乎已經成為自然語言處理的標準基準模型,甚至進一步滲透到圖像領域。各路大神基于Transformer提出了海量改進方法。這些改變是否對大多數任務有效?谷歌的研究人員對大量的設定在統一的代碼庫和硬件環境下進行了實驗比較。出乎意料的是,大多數“高大上”的改進都不能拓展到所有數據集,反而是一些簡單或細節的改動則可以“大力出奇跡”。
論文題目:
Do Transformer Modifications Transfer Across Implementations and Applications?
論文鏈接:
https://arxiv.org/pdf/2102.11972.pdf
Github:
https://github.com/google-research/google-research/tree/master/transformer_modifications
也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞 【0329】 下載論文PDF~
為什么要比較不同版本的BERT?
一個真正有效的方法應該可以推廣到其他任務。比如說一個改動是針對Transformer編碼器的,那么無論下游任務是簡單的分類還是NER都應該有效,你不能說我有一把牛刀但它不能用來殺雞吧。這也是為什么在CNN的各類改進被提出之后圖像研究者們總是會用一個最新的版本作為基準實驗。然而,即使BERT已經提出了近3年,在實驗中大家普遍使用的基準仍然是和一開始的BERT設定非常相似的實驗設定。難道最初提出的Transformer是完美的?或者這些魔改都不是本質的,各路大神只是調參讓實驗刷榜,之后再想辦法圓故事發文章。
于是谷歌大佬們就做了一個實驗,把所有針對Transformer的變化放到同一個實驗環境下進行比較,看看誰才是最強王者。有了這份實驗結果,我們在拿到一個全新的任務的時候,再也不用糾結辣么多高級的Transformer變種到底應該用哪一個好了。
回顧Transformer結構
首先我們回顧同時包含編碼器-解碼器的Transformer結構,輸入輸出分別是長度為T和U的詞序列。
嵌入詞向量
輸入序列經過嵌入詞向量的映射矩陣同時加上位置嵌入向量構成了編碼器的輸入,是正弦絕對位置嵌入。我們分別用表示編碼器和解碼器的第層的輸出,同時也是層的輸入。
編碼器
編碼器的每一層從一個多頭自注意力網絡(Multi-headed Self-attention)開始, 第層第位的第個頭的注意力機制由以下方式構成:
其中Q,K,V是權重矩陣。
然后我們將所有頭得到的向量連接在一起,并且通過殘差連接(Residual connection)和層規范化(Layer Normalization):
這里 LayerNorm具體可以展開為:
然后多頭注意力的輸出通過使用ReLU激活函數的全連接網絡(dense feedforward network)和殘差以及LayerNorm層:
解碼器
解碼器和編碼器結構類似,區別在于:
自注意力機制是因果的--后面的詞只能關注到前面的詞。通過注意力的下三角掩碼(mask)實現。
解碼器中還包含一個交叉注意力機制--在每一層解碼器的自注意力機制之后,我們將最后一層編碼器的K和V,以及前一層解碼器的Q做一次多頭注意力。
解碼器的最后一層輸出通過一個解碼嵌入映射得到最后的輸出。
開啟瘋狂實驗
本文的實驗以T5為基礎,全都采用同時包含編碼器和解碼器的網絡。因而所有任務都采用T5中的格式轉化為了序列輸入輸出。不同于最原始的Transformer結構,由于前置LayerNorm層和使用相對位置編碼已經得到學術界的廣泛認可,實驗中默認采用這兩個設定。
下面實驗性能結果分為四個部分:
模型效率:分別用參數量(Params),運算單例所需操作數(Ops),訓練速度(Step/s).
預訓練效果:在預訓練65,536步(Early loss)之后的困惑度(Perplexity)和訓練完全524,288步之后(Final loss)的困惑度。
在SuperGLUE, XSum 和 WebQuestion上微調后的得分。
用WMT-14 EnDe從頭訓練后測試的得分。
現在讓我們看看到底Transformer技術哪家強。
激活函數
對于全連接層的激活函數ReLU,我們可以替換成GeLU, Swish, ELU, SeLU, Sigmoid, Softplus和若干GLU(Gated Linear Unit)的變種(ReGLU, GeGLU, LiGLU)。實驗結果顯示,GeGLU和SwiGLU獲得了最大的效果提升。
正則化
對于LayerNorm的正則化方法我們可以替換成RMS(root mean square) norm, 或者使用帶有正則化效果的Rezero或者Fixup初始化方法。實驗結果發現高大上的初始化方法并不起效,反而是RMS--直接把LayerNorm中對均值的偏置去除有更好的效果。
模型深度
那么全連接網絡的寬度和深度哪個更重要呢?實驗中我們保持總參數量不變,探究的關系。從表格中可看出,總體上更深的全連接層更有效。
詞向量嵌入和參數共享
模型中一共在編碼器的輸入,解碼器的輸入和輸出3次用到了維的詞向量嵌入矩陣,原始Transformer中共享了這三個嵌入矩陣的參數。這里分別實驗了只共享兩個輸入端、只共享解碼器兩端,或者不共享所有詞向量的參數。
另外,作者還研究了將詞向量嵌入分解成低維矩陣的影響:將維的分解為和的兩個矩陣。在這個實驗中固定編碼器和解碼器輸入端共享參數。
最后,作者還探究了適應性輸入嵌入(Adaptive input embeddings)的作用。他們將詞根據頻率排序,常見詞使用更高維的嵌入向量。
除了詞向量嵌入可以共享之外,實驗中還分析了共享編碼器和解碼器其他參數的作用。
實驗表明,參數共享或者是分解詞向量嵌入矩陣對模型效果有損傷,但是將編碼器和解碼器的詞向量嵌入解綁可以對效果有略微提升。
Softmax
在解碼器最后生成序列的時候需要經過Softmax函數,實驗中將其替換為其他激活函數:Adaptive softmax利用詞表的不均勻分布形成的聚類分級選詞從而提高運算速度。Mixture of Softmaxes:則把多個softmax函數通過不同的比例加起來,從而提高softmax部分的表達能力。實驗表明Mixture of softmaxes可以提高效果但是比正常的Transformer慢了40%。
模型結構
重頭戲來了,除了上述的簡單改進之外,本文還對多種模型結構的改變進行了在統一環境下的實驗,我們在此簡略地給出各種模型的介紹,對細節感興趣的讀者可以參考原論文。
Transparent Attention18年Google AI提出,在編碼器深度方向建立帶權重的殘差連接,從而使促進梯度的流動。
Evolved Transformer19年,Google Research提出用自動算法搜索最佳Transformer結構。本文也將搜索出的最佳結構加入實驗。
Synthiesizer20年5月,Google Research又提出Synthiesizer: 用學習的方法獲得注意力權重。在Synthiesizer(Random)的設定下,他們直接學習注意力權重然后用來做值向量的線性組合。
Funnel Transformer 則采用類似卷積池化的方式,逐層減少編碼器中的序列長度從而更有效地得到句子編碼。
Lightweight and Dynamixc convolutions 使用簡化的網絡代替Transformer,Lightweight Convolutions的本質可以看作是在深度維度上的卷積網絡,只不過每m個頻道會共享參數。而Dynamic Convolutions則是核會根據當前步輸入改變的卷積網絡。
Sparse Expert TransformersMixture of Experts (MoE) Transformer 和 Switch Transformer 都將全連接層替換成了多個小網絡組成的專家們,對于不同的輸入,模型會自動選擇最終通過哪個網絡進行最后的預測。
Product Key Memory 同樣用可選的多個小網絡替換全連接層,區別在于這里最后的預測函數是k-近鄰的帶權平均得到。
Universal Transofrmer 中為了處理更長的序列,設計了類似序列級別循環網絡
但出乎所有人意料的是,這些花里胡哨的改動很少有顯著提高模型效果的。在這些實驗中,Synthesizer,對模型效果有顯著提高。Switch Transformer, mixture of experts 和 Product Key memory雖然有效但都增加了更多的模型參數。
總結一下
文章中嘗試了Transformer的許多變種,他們發現這里面最有效的變化反而是那些簡單而細節的變化:比如替換成GeGLU激活函數,使用RMS正則化等。而反觀模型上的改進,很少的方法可以推廣到所有任務中。
但當然,還有許多模型改進本文沒有涉及,比如Longformer,Linformer, Performer, Nystromformer等等,那又是針對提升Transformer運算效率的另外一個故事了...
萌屋作者:Sherry。
本科畢業于復旦數院,轉行NLP目前在加拿大滑鐵盧大學讀CS PhD。經歷了從NOIer到學數學再重回CS的轉變,卻堅信AI的未來需要更多來數學和自認知科學的理論指導。主要關注問答,信息抽取,以及有關深度模型泛化及魯棒性相關內容。
作品推薦:
Facebook刷新開放域問答SOTA:模型訓模型!Reader當Teacher!
谷歌、CMU發文:別壓榨單模型了!集成+級聯上分效率更高!
無需人工!無需訓練!構建知識圖譜 BERT一下就行了!
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1] Training Deeper Neural Machine Translation Models with Transparent Attention. (https://arxiv.org/pdf/1808.07561.pdf)
[2] The Evolved Transformer. (https://arxiv.org/pdf/1901.11117.pdf)
[3] SYNTHESIZER: RETHINKING SELF-ATTENTION FOR TRANSFORMER MODELS. (https://arxiv.org/pdf/2005.00743.pdf)
[4] Funnel-Transformer: Filtering out Sequential Redundancy for Efficient Language Processing. (https://arxiv.org/pdf/2006.03236.pdf)
[5] PAY LESS ATTENTION WITH LIGHTWEIGHT AND DYNAMIC CONVOLUTIONS. (https://arxiv.org/pdf/1901.10430.pdf)
[6] SWITCH TRANSFORMERS: SCALING TO TRILLION PARAMETER MODELS WITH SIMPLE AND EFFICIENT SPARSITY. (https://arxiv.org/pdf/2101.03961.pdf)
[7] Large Memory Layers with Product Keys. (https://arxiv.org/pdf/1907.05242.pdf)
[8] Universal transformers. (https://arxiv.org/pdf/1807.03819.pdf)
[9] GLU Variants Improve Transformer. (https://arxiv.org/pdf/2002.05202.pdf)
總結
以上是生活随笔為你收集整理的谁才是Transformer家族中的最强王者?谷歌告诉你答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 丁香园在语义匹配任务上的探索与实践
- 下一篇: 怎样将Embedding融入传统机器学习