摘要
Transformer模型架構最近引起了極大的興趣,因為它們在語言、視覺和強化學習等領域的有效性。例如,在自然語言處理領域,Transformer已經成為現代深度學習堆棧中不可缺少的主要部分。最近,提出的令人眼花繚亂的X-former模型如Linformer, Performer, Longformer等這些都改進了原始Transformer架構的X-former模型,其中許多改進了計算和內存效率。為了幫助熱心的研究人員在這一混亂中給予指導,本文描述了大量經過深思熟慮的最新高效X-former模型的選擇,提供了一個跨多個領域的現有工作和模型的有組織和全面的概述。
關鍵詞:深度學習,自然語言處理,Transformer模型,注意力模型
介紹
Transformer是現代深度學習領域中一股強大的力量。Transformer無處不在,在語言理解、圖像處理等許多領域都產生了巨大的影響。因此,在過去的幾年里,大量的研究致力于對該模型進行根本性的改進,這是很自然的。這種巨大的興趣也刺激了對該模式更高效變體的研究。
最近出現了大量的Transformer模型變體,研究人員和實踐者可能會發現跟上創新的速度很有挑戰性。在撰寫本文時,僅在過去6個月里就提出了近12種新的以效率為中心的模式。因此,對現有文獻進行綜述,既有利于社區,又十分及時。
自注意力機制是確定Transformer模型的一個關鍵特性。該機制可以看作是一種類似圖的歸納偏差,它通過基于關聯的池化操作將序列中的所有標記連接起來。一個眾所周知的自注意力問題是二次時間和記憶復雜性,這可能阻礙模型在許多設置的可伸縮性。最近,為了解決這個問題,出現了大量的模型變體。以下我們將這類型號命名為“高效Transformers”。
根據上下文,可以對模型的效率進行不同的解釋。它可能指的是模型的內存占用情況,當模型運行的加速器的內存有限時,這一點非常重要。效率也可能指計算成本,例如,在訓練和推理期間的失敗次數。特別是對于設備上的應用,模型應該能夠在有限的計算預算下運行。在這篇綜述中,我們提到了Transformer在內存和計算方面的效率,當它們被用于建模大型輸入時。
有效的自我注意力模型在建模長序列的應用中是至關重要的。例如,文檔、圖像和視頻通常都由相對大量的像素或標記組成。因此,處理長序列的效率對于Transformer的廣泛采用至關重要。
本篇綜述旨在提供這類模型的最新進展的全面概述。我們主要關注的是通過解決自我注意力機制的二次復雜性問題來提高Transformer效率的建模進展和架構創新,我們還將在后面的章節簡要討論一般改進和其他效率改進。
本文提出了一種高效Transformer模型的分類方法,并通過技術創新和主要用例對其進行了表征。特別地,我們回顧了在語言和視覺領域都有應用的Transformer模型,試圖對各個領域的文獻進行分析。我們還提供了許多這些模型的詳細介紹,并繪制了它們之間的聯系。
最近提出的DETR,以消除在目標檢測中許多手工設計的組件的需要,同時顯示良好的性能。但由于Transformer注意模塊在處理圖像特征圖時的局限性,導致收斂速度慢,特征空間分辨率有限。為了減輕這些問題,我們提出了可變形的DETR,其注意力模塊只關注參考點周圍的一小組關鍵采樣點。可變形的DETR比DETR(特別是在小物體上)可以獲得更好的性能,訓練周期少10個。在COCO數據集上的大量實驗證明了我們的方法的有效性。
近年來,隨著深度學習的飛速發展,深度神經網絡受到了越來越多的關注,在許多應用領域取得了顯著效果。通常,在較高的計算量下,深度神經網絡的學習能力隨著網絡層深度的增加而不斷提高,因此深度神經網絡在大型數據集上的表現非常卓越。然而,由于其計算量大、存儲成本高、模型復雜等特性,使得深度學習無法有效地應用于輕量級移動便攜設備。因此,壓縮、優化深度學習模型成為目前研究的熱點,當前主要的模型壓縮方法有模型裁剪、輕量級網絡設計、知識蒸餾、量化、體系結構搜索等。通過對以上方法的性能、優缺點和最新研究成果進行分析總結,對未來研究方向進行了展望。
圖神經網絡是解決各種圖學習問題的有效的機器學習模型。盡管它們取得了經驗上的成功,但是GNNs的理論局限性最近已經被揭示出來。因此,人們提出了許多GNN模型來克服這些限制。在這次調查中,我們全面概述了GNNs的表達能力和可證明的強大的GNNs變體。
基于Transformer的模型目前在NLP中得到了廣泛的應用,但我們對它們的內部工作原理仍然知之甚少。本文綜合了40多項分析研究,對著名的BERT模型(Devlin et al 2019)的已知情況進行了描述。我們還提供了對模型及其訓練機制的擬議修改的概述。然后我們概述了進一步研究的方向。
概述
自2017年推出以來,Transformers(Vaswani et al 2017)掀起了NLP的風暴,提供了增強的并行化和更好的長依賴建模。最著名的基于Transformers 的模型是BERT (Devlin et al 2019),他們在許多基準測試中獲得了最先進的結果,并集成在谷歌搜索中,提升了10%的查詢準確率。
雖然很明顯BERT和其他基于Transformer的模型工作得非常好,但是不太清楚為什么,這限制了架構的進一步假設驅動的改進。與CNNs不同,Transformer幾乎沒有認知動機,而且這些模型的大小限制了我們進行預訓練實驗和消融研究的能力。這解釋了過去一年里大量的研究試圖理解BERT表現背后的原因。
本文概述了迄今為止所了解到的情況,并強調了仍未解決的問題。我們重點研究BERT學習的知識的類型,這些知識在哪里體現,如何學習,以及提出的改進方法。
BERT架構
從根本上說,BERT是一堆由多個“頭”組成的Transformer 編碼器層,即全連接神經網絡增強了一個自我注意機制。對于序列中的每個輸入標記,每個頭計算鍵、值和查詢向量,這些向量用于創建加權表示。將同一層中所有磁頭的輸出合并并通過全連接層運行。每個層都用一個跳過連接進行包裝,并在它之后應用層規范化。
圖1 BERT模型
目錄:
ICLR 2020 Oral論文《Reformer: The Efficient Transformer》提出了一種能利用16GB內存在百萬級大小上下文上執行注意力機制的Transformer,它的性能優化是由哈希和可逆殘差來實現的。
理解序列數據——如語言、音樂或視頻——是一項具有挑戰性的任務,特別在當它依賴于大量的上下文的情況下。例如,如果一個人或一個物體在視頻中消失,很久以后又重新出現,許多模型就會忘記它的樣子。在語言領域,長短時記憶(LSTM)神經網絡覆蓋了足夠的上下文來逐句翻譯。在這種情況下,上下文窗口(翻譯時考慮的數據跨度)覆蓋了幾十到上百個詞。近期的Transformer模型不僅改進了逐句翻譯的性能,還可以通過多文檔摘要生成整個Wikipedia文章。這樣可行的原因是Transformer的上下文窗口可以覆蓋上千個詞。用這樣的大上下文窗口,Transformer可以被應用于文本以外的數據,如像素、音符等,這樣它可以被用來生成音樂、圖像等。
然而,更大的上下文窗口會對Transformer造成限制。Transformer的強大來自于注意力機制,在這個過程中,它考慮上下文窗口中所有可能的單詞對,以理解它們之間的聯系。因此,對于包含10萬個單詞的文本,它每次需要評估10萬 x 10萬個(即100億個)單詞對,這是不切實際的。另外,每層輸出的存儲也是個問題。對于使用大型上下文窗口的應用,存儲多個模型層的輸出的內存需求很快會變得非常大(幾層需要GB級內存,上千層的模型需要TB級內存)。這意味著,使用一些層的Transformer模型,只能被用于少數幾段文本或生成簡短的音樂片段。
本文介紹Reformer,一個可用于應對百萬級大小上下文窗口的Transformer,它可以在單一的加速器上運行且僅依賴16GB的內存。它結合了兩種關鍵技術來解決注意力和內存分配問題,這些問題限制了Transformer不能被應用于長上下文窗口。Reformer使用局部敏感哈希(LSH)來降低長序列中注意力的復雜程度,并使用可逆殘差層來更高效地利用內存。
將Transformer模型應用于非常大的文本序列時,第一個挑戰是如何處理注意力層。LSH通過計算一個哈希函數來實現這一點,該哈希函數將類似的向量匹配在一起,而不是搜索所有可能的向量對。例如,在翻譯任務中,網絡第一層的每個向量表示一個單詞(后續層中可能表示更大的上下文),不同語言中相同單詞對應的向量可能得到相同的哈希。下圖中,不同的顏色描繪了不同的哈希,相似的單詞有相同的顏色。當哈希值被分配時,序列會被重組,將具有相同哈希值的元素放在一起,并被分成片段(或塊),以支持并行處理。之后,注意力機制被應用于這些更短的塊中(以及相鄰塊,以覆蓋溢出),從而大幅度減少了計算負載。
雖然LSH解決了注意力的問題,但仍然存在一個內存問題。單個網絡層通常需要幾GB的內存,并且通常適用于一個GPU,所以即使是一個處理長序列的模型的單層網絡也是可以接受的。但當用梯度下降訓練一個多層模型時,為了反向傳播,模型需要存儲每層的激活值。典型的Transformer一般有幾十或更多層,如果緩存每層的值,內存會很快被消耗完。
Reformer中實現的第二個新方法是在反向傳播期間按需重新計算每個層的輸入,而不是將其存儲在內存中。這是通過使用可逆層來實現的,其中網絡最后一層的激活值被用來恢復來自任何中間層的激活值,這相當于反向運行網絡。在典型的殘差網絡中,棧中的每一層都不斷地向傳播信息中添加向量。每個可逆層有兩組激活值,一個遵循剛才描述的標準過程逐層更新,但另一個只捕獲變化。因此,要反向運行網絡,只需在每層激活值間做簡單的減法。
Reformer中這兩種方法的引用使得它非常高效,以至于它可以在單個16GB的加速器上處理包含100萬詞的長文本序列。由于Reformer非常高效,它可以直接應用于上下文窗口遠大于當前最先進文本領域數據集的上下文窗口的數據。也許Reformer能夠處理如此大數據集的能力將刺激社區創建它們。
圖像生成任務中不缺乏長上下文數據。下面鏈接的colab代碼中展現了Reformer如何被用于補全殘缺圖片。它可以基于第一行殘缺的圖片來像素級地生成第二行中完整的圖片。colab地址為:
目前論文《Reformer: The Efficient Transformer》已經被ICLR 2020接收為Oral論文。更多細節可以參考原始論文。
A Survey of Model Compression and Acceleration for Deep Neural Networks 深度卷積神經網絡(CNNs)最近在許多視覺識別任務中取得了巨大的成功。然而,現有的深度神經網絡模型在計算上是昂貴的和內存密集型的,這阻礙了它們在低內存資源的設備或有嚴格時間延遲要求的應用程序中的部署。因此,在不顯著降低模型性能的情況下,在深度網絡中進行模型壓縮和加速是一種自然的思路。在過去幾年中,這方面取得了巨大的進展。本文綜述了近年來發展起來的壓縮和加速CNNs模型的先進技術。這些技術大致分為四種方案: 參數剪枝和共享、低秩因子分解、傳輸/緊湊卷積過濾器和知識蒸餾。首先介紹參數修剪和共享的方法,然后介紹其他技術。對于每種方案,我們都提供了關于性能、相關應用程序、優點和缺點等方面的詳細分析。然后我們將討論一些最近比較成功的方法,例如,動態容量網絡和隨機深度網絡。然后,我們調查評估矩陣、用于評估模型性能的主要數據集和最近的基準測試工作。最后,對全文進行總結,并對今后的研究方向進行了展望。