論文標題:《Linformer: Self-Attention with Linear Complexity》
來源:ACL 2020
連結:https://arxiv.org/abs/2006.04768
1 引言近年來,大型的 Transformer 模型刷遍了各大 NLP 任務榜單,取得了非凡的成功。但對於長序列、訓練和部署這些,模型的成本卻高得嚇人。因為 Transformer 中用到的自注意力與長度n呈現出
Linformer 與其它 Transformer 變體的算法複雜度一覽本研究基於自注意力是低秩的觀察,在理論和實踐中都證實了注意力矩陣可以由一個低秩矩陣來近似。我們將原本的尺度化的點積注意力拆解成了多個更小的線性投射的注意力。這剛好是對原注意力去做低秩因式分解。我們在 BookCorpus 和 英文的 Wiki 上用 MLM 的訓練目標預訓練了一個模型,並在 GLUE 的各個任務上,以及 情感分析任務 IMDB reviews 上進行微調。結果顯示,在顯著的速度提升基礎上,我們的模型與原版的 Transformer 相當,甚至還好於原版。
我們先來看一下原版的 Transformer 是怎樣計算的,以及它的問題在哪裡。接著說一說近年來對該問題的解決思路有哪些,各自的局限是什麼。最後提出本論文方法,用理論證明為什麼它比之前的方法都好,並用實驗驗證理論的可靠性。
2 原版 Transformer 的問題多頭自注意力在不同位置捕獲到的信息Transformer [1] 基於多頭自注意力 (MHA),能讓模型的不同的位置互相注意到不同子空間的表徵信息。它的計算方式如下:
多頭注意力的架構其中,
其中,
3 相關工作混合精度訓練迭代混合精度 [2]: 針對 MHA 部分的計算複雜度高,一種妥協的方法是用半精度 ( half-precision) 或混合精度 (mixed-precision) 訓練[3]。這種方法又被訓練時對權重量化,用直通估計器 (Straight-Through Estimator) 去近似梯度的偽量化技術進一步提升改進[4,5]。本論文採用了混合精度訓練方法。
知識蒸餾 [6]: 知識蒸餾力圖把大模型的老師模型學到的知識教授給輕量的學生模型。最終用學生模型來推斷。但這種方法有些缺點。它並未考慮老師模型訓練過程中也需要加速。而且,學生模型通常要承受表現變差的風險。比如我們要對 12 層的 BERT 對 6 層的 BERT 進行蒸餾,學生模型在各個指標任務上會有大約 2.5% 的表現下降 [7]。
稀疏注意 [8]: 一種流行的做法是讓每個位置的 token 去注意重要的局部(對角線附近),而不是整個序列,從而把稀疏性引入注意力層。或者我們也可以把
局部敏感性哈希 [10]: 最近提出的 Reformer 使用了局部敏感性哈希 (LSH) 來把自注意力的複雜度降到
提升優化器的效率: 微批量訓練技術[11],即把一個批量的數據分成許多更小的微批量來分別計算梯度,再累加,以便避免大批次撐爆 GPU 內存。梯度檢查點 [12] 通過緩存部分激活層來節省內存。未緩存的激活層會在最近的檢查點反向傳播的時候重新計算。兩種方法都可以節省內存,但增大了計算量。
綜上所述,大部分的方法在同時減少空間複雜度和時間複雜度時存在局限。而我們研究出的 Transformer 變體可以克服這種局限,把時間和空間複雜度都同時降下來。
4 自注意力是低秩的Figure 1: 左邊兩幅圖分別是自注意力矩陣的奇異值分解 (n=512) 頻譜分析。Y軸為歸一化後的矩陣P的累積奇異值。右圖是其熱圖首先,我們來說一說為什麼注意力是低秩的。這一點可以從已有的預訓練語言模型 RoBERTa [13] 去分析。首先,我們對上下文映射矩陣P (之前定義的) 進行了頻譜分析。一個是 12 層的 RoBERTa,在 WiKi103 數據集上用 MLM 預訓練,在 IMDB 上分類。我們對模型的不同層、不同注意力頭對應的矩陣 P,都進行了奇異值分解 SVD,並把超過 10k 的句子上的歸一化的累積奇異值做了平均。結果顯示沿著不同層、不同注意力頭和不同的任務,都呈現出一個清晰的長尾分布。這表明,矩陣 P 中的大部分信息都可以由少量最大的奇異值來恢復。如 Figure 1 中的熱圖可見,更高層的 Transformers 中,會比更低層的 Transformers 有更大的偏度。這意味著,在更高層,更多信息集中在少量最大的奇異值中,且 矩陣 P 的秩是更低的。
以下,我們會為以上頻譜結果提供一個理論分析。
定理一:自注意力是低秩的。對於矩陣
證明:
基於上面的式子,我們的
可以用 JL 定律得出,對於矩陣
通俗地說,一個高維空間中的點集,可以被線性地鑲嵌到低維空間中,且其空間結構只遭受較小的形變。JL 定理的證明說明了,如何用隨機投影法來明確求出這個變換,且該算法只需要多項式時間。降維是有代價的。如果要求儘可能地減少形變,被嵌入的低維空間則不能很低。反過來,如果要儘可能地壓縮,則形變會不可避免地增加。最終JL定理給出的結論是,將維數下降到樣本數的對數級,更兼容的變換是線性的,顯式的,且可以被快速計算的。這部分的詳細證明可以見論文附錄。
當矩陣
其中,
5 模型我們提出了一種新的自注意力機制能讓我們以線性空間和時間複雜度計算矩陣
這樣,我們就用
定理2:線性的自注意力。對於任意
證明:其主要思想是基於 JL 定理。我們先證明矩陣
當
Linformer 還使用了其它的一些提升表現和效率的技巧。
參數共享 我們實驗了三種層級的參數共享。
Headwise: 所有注意力頭共享 E 和 F 參數。