編譯 | Mr Bear
編輯 | 陳彩嫻
近年來,基於自注意力機制的 Transformer 模型在自然語言處理、計算機視覺、強化學習等領域的學術研究中取得了巨大進展。例如,在自然語言處理領域,Transformer 已經成為了現代深度學習技術體系中不可或缺的重要組件。
然而,由於自注意力機制本身的計算複雜度與存儲複雜度較高,想要將其應用於真實的生產環境還需要進一步提升模型的效率。
最近,研究人員在原始 Transformer 架構的基礎上進行改進,提出了各種各樣的「X-former」模型(例如,Reformer、Linformer、Performer、Longformer 等等)。其中,許多模型圍繞計算效率和存儲效率進行了改進。
為了幫助對這一領域感興趣的研究者在繁多的模型中梳理出一條脈絡,谷歌研究院撰寫了最新高效 Transformer 模型研究綜述,介紹了近年來該領域的最新進展。
連結: https://arxiv.org/pdf/2009.06732.pdf
1
研究背景
Transformer 是現代深度學習技術體系中的一股強大的力量。Transformer 的應用十分廣泛,它在語言理解、圖像處理等諸多領域中都產生了巨大的影響。因此,在過去的幾年中,自然而然地有大量的研究工作致力於對該模型進行基礎性的改進。這種廣泛的研究興趣也催生了對更加高效的 Transformer 模型變體的研究。
最近出現了浩如煙海的新提出的 Transformer 模型變體,研究者和從業者們都會發現很難跟上該領域創新的步伐。僅在 2020 年 2 月-8 月的時間裡,人們就提出了近 12 種新的高效 Transformer 模型。
圖 1:標準 Transformer 的架構示意圖
自注意力機制是 Transformer 模型的一個關鍵特性。 這種機制可以被看做是一種類似於圖的歸納偏置,它通過一種基於相關性的池化操作將序列中所有的token聯繫起來。眾所周知,自注意機制存在平方階的時間與存儲複雜度,這在許多情況下都阻礙了模型的可擴展性。近期,為了解決該問題,出現了各種各樣的模型變體。在下文中,我們將這類模型稱為「高效 Transformer」。
在不同的語境下,我們可以對模型的效率有不同的理 解。「效率」可能指的是模型的內存佔用,在運行模型的加速器(如 GPU)的內存時,考慮內存佔用是十分重要的。「效率」還可能指的是計算開銷(例如,訓練和推理階段的 FLOP——每秒浮點數運算數)。 具體而言,對於機載應用來說,我們期望模型可以使用有限的計算資源預算的情況下運行。 在本文中,當我們提到 Transformer 的「效率」時,同時指的是它們被用於對大型輸入進行建模時的存儲和計算效率。
在對長序列進行建模的應用中,高效的自注意力模型至關重要。例如,文檔、圖像、視頻往往都是由數量較大的像素或詞例組成的。因此,處理長序列的效率對於 Transformer 的廣泛應用十分重要。
本文旨在提供一種對這類模型最新進展的全面概述。我們主要關注的是通過解決自注意力機制的「平方階複雜度」問題來提升 Transformer 模型效率方面的建模進展與架構創新,本文還簡要討論了一般的改進以及其它的效率提升。
2
高效Transformer模型綜述
首先,我們將展示不同模型的特質。表 1 列舉出了截至 2020 年 8 月發表的一些高效 Transformer 模型,圖 2 則展示了一些關鍵的 Transformer 模型的圖形化概覽。
表 1:按照首次公開發表時間的先後順序列舉出的高效 Transormer 模型。標題後帶有 † 的論文經過了同行評審。其中,Class 列中的縮寫分別代表:(1)FP,固定模式或固定模式的組合(2)M:記憶(3)LP:可學習的模式(4)LR:低秩(5)KR:核方法(6)RC:遞歸。此外,n 一般代表序列長度,b 則為局部窗口(或模塊)的尺寸。n 後的下表 g 代表全局記憶長度,n_c 代表卷積壓縮後的序列長度。
圖 2:高效 Transformer 架構的分類
除了那些基於片段遞歸的方法之外,大多數模型都旨在隊具有平方階開銷的注意力矩陣進行近似。每種方法都將一些稀疏性的概念應用到了一些稠密注意力機制上。
1、固定模式
最早修改自注意力的方式是直接通過將感受野限制到固定長度對注意力矩陣進行了稀疏化處理,預先定義了一些諸如「局部窗口」、「固定步長的模塊模式」的模式。
1)Blockwise Pattern:
這類技術最簡單的實踐示例是模塊化範式(又稱「分塊範式」),它通過將輸入序列分塊為一些固定的模塊,考慮局部感受野模塊。採用了此類做法的模型包括:Qiu 等人於 2019 年發表的「Blockwise Attention」,以及 Parmar 等人於 2018 年發表的「Local Attention」。對輸入序列進行分類將複雜度從 N^2 降低到了 B^2(模塊尺寸),其中 B 遠小於 N,從而顯著降低了開銷。這些模塊化的方法成為了許多更加複雜的模型的基礎。
2)Stided Pattern:
考慮間隔一定步長的注意力機制(例如,僅僅在固定的間隔上應用注意力)。例如,由 Child 等人於 2019 年提出的「Sparse Transformer」和 Beltagy 等人於 2020 年提出的「Longformer」採用了「步長化」(或稱「空洞化」)的窗口。
3)Compressed Pattern:
使用一些池化操作,將序列長度下採樣為某種固定模式。例如,Liu 等人於 2018 發表的「Compressed Attention」使用了步長化的卷積,有效地降低了序列長度。
2、模式組合
組合式方法的核心思想是,通過將兩種或多種不同的訪問模式提升覆蓋率。
例如,Sparse Transformer 通過將其一半的注意力頭應用到模式上組合了步長化注意力機制和局部注意力機制。類似地,Ho 等人於 2019 年提出的「Axial Transformer」在給定一個輸入的高維張量的情況下應用了一系列的自注意力計算,每一種計算都沿著輸入張量的某個軸進行。
從本質上說,模式組合降低存儲複雜度的方式與固定模式相同。然而,其不同之處在於, 對於多種模式的聚合和組合提高了自注意力機制整體的覆蓋率。
3、可學習的模式
這是對於固定、預定義模式的擴展。使用可學習模式的模型旨在以一種數據驅動的方式學習訪問模式。可學習模式的關鍵特質在於,它需要確定詞例相關性的概念,然後將詞例劃分到不同的聚類中。
值得注意的是,Kitaev 等人於 2020 年提出的 「Reformer」 引入了一種基於哈希的相似度度量方法,從而高效地對詞例進行聚類。類似地,Roy 等人於 2020 年提出的「Routing Transformer」對詞例採用了在線的 K-均值聚類。同時,Tay 等人於 2020 年提出的「Sinkhorn Sorting Network」通過學著對輸入序列的塊進行排序,揭示了注意力權重的稀疏性。
在左右這些模型中,相似度函數都是與網絡中的其餘部分端到端地聯合訓練你的。可學習模式的核心思想仍然是利用固定模式(分塊模式)。然而,這類方法會學著對輸入詞例進行排序/分類—— 在保持固定模式方法的效率優勢的同時,使我們可以對序列有更優的全局視角。
1)記憶:利用一個附屬的記憶模塊,它可以一次訪問多個詞例。
全局記憶是該模塊的一種常見形式,它可以訪問整個序列。全局詞例可以作為一種記憶的形式,它學著從輸入序列詞例中整合信息。Lee 等人於 2019 年發表的「Set Transformer」首次引入了「inducing point」方法。這些參數通常被看做「記憶」,並且被用來作為進一步處理的臨時上下文。Sukhbaatar 與 2019 年指出,這可以被認為是一種參數注意力機制。Ainslie 等人於 2020 年提出的 ETC 方法與 Beltagy 等人於 2020 年提出的 Longformer 也都使用了全局記憶。 在有限的記憶中,我們可以對輸入序列執行一種類似於池化的初始操作,從而壓縮輸入序列,這是一種在設計高效的自注意力模塊時用到的巧妙的技巧。
2)低秩方法:通過利用自注意力矩陣的低秩近似提升效率。其核心思想在於假設 N × N 的矩陣中存在低秩結構。Wang 等人於 2020 年提出的「Linformer」是此類技術的經典示例,它將鍵和值的長度維度投影到了一個低維的表徵上(N → k)。很容易看出,由於 N × N 的矩陣被分解為 N × k 的矩陣,自注意力的複雜度問題得到了緩解。
4、核方法
通過核化(Kernelization)看待注意力機制,從而提升 Transformer 的效率。
Katharopoulos 等人和 Choromanski 等人都於 2020 年運用核方法,十分巧妙地數學上重寫了注意力機制,從而避免計算 N × N 矩陣。Choromanski 等人認為,由於核是對注意力矩陣的一種近似方法,它們也可以被看做一種低秩方法。
5、遞歸
通過遞歸的方法將模塊連接起來是對於模塊化方法的一種自然延伸。
Transformer-XL提出了以一種片段級的遞歸機制,它將多個片段和模塊連接了起來。從某種程度上來說,這種模型也可以被看做固定模式模型。然而,由於它使用了與其它模塊/局部方法不同的遞歸機制,本文將其另做一類看待。
我們注意到,聚類構建「bucket」是不同高效 Transformer 模型的廣泛特徵。實際上,在這些聚類簇之間並沒有明顯的界限,模型可能由多種不同的技術創新組合而成。例如,Roy 等人於 2020 年提出的「Routing Transformer」中的 K 均值聚類也可以被看做一種全局記憶方法,這是由於我們可以將聚類中心看做參數化的記憶。然而,在「Reformer」中,它被用於學習注意力權值的係數模式。此外,池化也可以被解釋為一種記憶模型。
3
觀點
3.1 模型對比的難度
儘管該領域有很多新型的 Transformer 模型,但是我們很難找到一種簡單的方式對這些模型一同進行對比。
為了展現新提出的模型的能力,許多研究論文都自行選取了一些對比基準。這同時也意味著他們會選取不同的超參數設置(例如,模型的大小)和設置,使得我們很難歸結出模型性能提升的原因。
此外,一些論文也融入了預訓練,這使得我們更難區分這些模型的相對性能。因此,應該使用哪種基本的高效 Transformer 模塊,仍然是一個未解之謎。
一方面,有許多模型都關注生成式建模,在序列的自回歸建模任務上展現出他們提出的 Transformer 單元的能力。
為了實現這一點,Child 等人於 2019 年提出的「Sparse Transformer」,Correia 等人於 2019 年提出的「Adaptive Transformer」、Roy 等人於 2020 年提出的「Routing Transformer」,以及 Kitaev 等人於 2020 年提出的「Reformer」都主要關注生成式建模任務。
這些對比基準往往都涉及 wikitext、enwik8 等數據集上的語言建模和/或 ImageNet、CIFAR 等數據集上的像素級圖像生成。使用基於片段的遞歸的模型(例如,Transformer-XL 和 Compressive Transformer)也關注長距離語言建模任務(如 PG-19)。
一方面,這些模型重點關注只需要編碼過程的任務 (例如,問答系統、閱讀理解、或從 GLUE 對比基準中選取的任務)。例如,Ainslie 等人於 2020 年提出的 ETC 模型僅僅在 NaturalQuestion 或 TriviaQA 等問答系統對比基準上進行了實驗。
另一方面,Wang 等人於 2020 年提出的「Linformer」重點關注 GLUE 對比基準中任務的子集。這種劃分是十分自然且直觀的,因為類似於 ETC 和 Linformer 這樣的模型並不能以一種自回歸的方式被使用(即無法被用於解碼)。 這增加了將這些只需要編碼過程的任務與其它模型進行對比的難度。
也有一些模型會關注如何平衡上述兩類情況。Beltagy 等人於 2020 年提出的「Longformer」試圖通過同時在生成式模型和只需要編碼的任務上進行對比基準測試來平衡二者。Tay 等人於 2020 年提出的「Sinkhorn Transformer」同時比較了生成式建模任務與只需要編碼的任務。
此外,還需要注意的是,儘管「序列到序列」的機器翻譯(MT)曾經推廣了 Transformer 模型,但是並沒有太多通過 MT 任務評價的高效 Transformer 模型。這可能是因為,MT 任務中的序列長度並不夠長,不能保證需要使用這些模型。
儘管生成式建模、GLUE 任務和/或問答任務似乎是許多此類任務所採用的常見評價對比基準,但也有一小部分論文會選擇使用一些其它的基準。首先,Choromanski 等人於 2020 年發表的「Performer」模型在蛋白質上的帶掩模的語言建模任務上進行評價,這與其它的高效 Transformer 模型形成了鮮明的對比。而 Katharopoulos 等人於 2020 年提出的「Linear Transformer」也是在語音識別任務上進行評價,這也是一種在這類論文中鮮被提及的對比基準。
3.2 模型設計的趨勢
當我們將這種上述分類方法與提出這些模型的時間線匹配起來時,我們就可以看出研究社區在設計高效 Transformer 模型方面的趨勢。
該領域內早期的工作主要是更加直觀且簡單的方法(例如,固定模式)。為此,該領域內大多數早期的工作似乎都是以模塊模式/局部模式為基礎的。例如,Parmar 等人於 2018 年提出的「Image transformer」、Liu 等人於 2018 年提出的「Compressed Attention」、Qiu 等人於 2019 年提出的「Blockwise Transformer」或 Child 等人於 2019 年提出的「Sparse Transformer」中的局部窗口。
Child 等人(Sparse Transformer)和 Ho 等人(Axial Transformer)於 2019 年首次提出了分解各種固定模式的範式。與此同時,我們也從 Lee 等人於 2019 年提出的「Set Transformer」中的歸納點(inducing point)和 Guo 等人於 2019 年提出的「Star Transformer」中的全局節點上發現了對基於記憶的方法的早期嘗試。
我們發現,下一波模型發展浪潮應該是可學習的稀疏模式。Kitaev 等人於 2020 年提出的「Reformer」和 Roy 等人於 2020 年提出的「Routing Transformer」在這個方面是非常相似的,它們都學著在執行注意力操作之前對詞例進行聚類。它們關鍵的差別在於實現這一目標的方式: Reformer 使用了一種哈希函數,而 Routing Transformer 則使用了在線的 K-均值 進行聚類對齊。 同時,Tay 等人於 2020 年發表的「Sinkhorn Transformer」是基於模塊級排序的思想研發而來。
接著,我們還觀察到,有許多擴展模型在很大程度上以「Sparse Transformer」為基礎。Ainslie 等人於 2020 年提出的「ETC」模型和 Beltagy 等人於 2020 年提出的「Longformer」模型具有非常相似的思想,他們本質上都是「Sparse Transformer」的擴展。這些模型引入了全局記憶的概念,令人回想起「Set Transformer」中的歸納點(inducing point)方法或「Star Transformer」中的全局記憶。Longformer 的工作中也提出了一些對步長的改進(例如,使用空洞窗口)。
在最近的模型發展浪潮中,我們發現基於低秩近似或核方法的模型一直湧現了出來。例如,Wang 等人於 2020 年提出的「Linformer」、Choromanski 等人於 2020 年提出的「Performer」、Katharopoulos 等人於 2020 年提出的「Linear Transformer」。由於評估的現狀和高度並行的研究工作正在進行,我們還尚不明確這種低秩或核範式是否真正比可學習模式(LP)或基於記憶的高效 Transformer 模型更好。
另一方面,值得注意的是,基於遞歸的各種模型(Transformer-XL 和 Compressive Transformer)的操作似乎是正交的,與其它模型相比,它們的關聯程度較低。
3.3 其他正交的高效 Transformer 工作
本文重點關注自注意力模塊的計算和存儲複雜度,我們簡要地總結了一些正交的工作,它們可能也對模型的效率、可擴展性以及 Transformer 模型整體的可用性有益。
權值共享:共享 Transformer 模型的參數有助於減小整體模型的大小。Dehghani 等人於 2018 年提出的「Universal Transformer」將注意力與轉換(transition)權值聯繫在一起。類似地,Lan 等人於 2019 年提出的「Albert」也在各個層之間進行了相同的參數共享。另一方面,受漢密爾頓積的啟發(在線性變換層中局部共享組件),Tay 等人於 2019 年提出的「Quaternion Transformer」提出了一種權值共享機制。
量化/混合精度:學習混合精度模型具有改進存儲開銷的潛力。Shen 等人於 2020 年提出的 Q-BERT 模型對 Transformer 模型進行超低精度量化。同時,Ott 等人於 2019 年提出的混合精度訓練是一種非常流行的技術,它降低了訓練 Transformer 的存儲開銷。Fan 等人於 2020 年將具有量化能力的訓練應用於 Transformer 模型上。
知識蒸餾:知識蒸餾(KD)已經成為了將通過較大的「教師網絡」學習到的知識遷移到較小的「學生網絡」上的一種實用方法。由此,較小的模型可以被高效地部署於生產環節中。目前,研究人員關於針對大型 Transformer 模型應用知識蒸餾進行了大量嘗試。例如,Sanh 等人於 2019 年提出的「DistilBERT」、Tang 等人於 2019 年提出的針對特定任務的蒸餾方法,以及 Jiao 等人於 2019 年提出的「TinyBERT」。
神經網絡架構搜索(NAS):尋找更高效的 Transformer 架構也是一種常用的策略。Guo 等人於 2019 年提出了「Neural Architecture Transformer」(NAT),它使用了 NAS 技術,通過消除冗餘操作,搜索更加緊湊高效的 Transformer。Wang 等人於 2020 年提出了針對不同硬體的 Transformer(HAT),這是一種利用了 NAS 技術並將硬體的效率反饋作為獎勵信號的方法。
任務適配器:這類研究工作主要關注在 T 個任務上對大型 Transformer 進行調優的問題。這裡的主要思想是,任務適配器使我們可以在不同的任務間復用參數,並且在實際生產中復用服務 T 個模型的需求,這可以減少整體的參數。近年來,研究人員們提出了包括 PALS、MAD-X、HyperGrid 在內的一系列此類模型。
AI科技評論本次聯合【博文視點】為大家帶來15本「《labuladong 的算法小抄》」正版新書。
在1月1日頭條文章留言區暢所欲言,談一談你刷算法的故事,或你對2020的總結或者是對2021年的規劃和心願,甚至可以是新的一年對AI科技評論的建議和期待,有哪些喜歡看的報導,還希望看到什麼樣的報導?
AI 科技評論將會在留言區選出 15名讀者,每人送出《labuladong 的算法小抄》一本。
活動規則:
1. 在1月1日頭條文章(注意不是本文!)下面留言,留言點讚最高的前 15 位讀者將獲得贈書。獲得贈書的讀者請聯繫 AI 科技評論客服(aitechreview)。
2. 留言內容會有篩選,例如「選我上去」等內容將不會被篩選,亦不會中獎。
3. 本活動時間為2021年1月1日 - 2020年1月7日(23:00),活動推送內僅允許中獎一次。
由於微信公眾號試行亂序推送,您可能不再能準時收到AI科技評論的推送。為了第一時間收到AI科技評論的報導, 請將「AI科技評論」設為星標帳號,以及常點文末右下角的「在看」。