由于其在語言、視覺和強化學習等領域的有效性,Transformer模型架構最近獲得了巨大的興趣。例如,在自然語言處理領域,Transformer 已經成為現代深度學習堆棧中不可或缺的重要組成部分。最近,出現了令人眼花繚亂的“X-former”模型——Reformer、Linformer、Performer、Longformer等等——它們改進了原始Transformer架構,其中許多都圍繞計算和內存效率進行了改進。為了幫助熱心的研究人員在這一熱潮中導航,本文列舉了大量深思熟慮的近期高效的“X-former”模型,為跨多個領域的現有工作和模型提供了一個有組織的、全面的概述。
Transformer模型是當下的研究焦點。最近 Google Yi Tay發布了關于Transformers最新論文,提供這類模型的最新進展的全面概述。
Transformer模型架構最近引起了極大的興趣,因為它們在語言、視覺和強化學習等領域的有效性。例如,在自然語言處理領域,Transformer已經成為現代深度學習堆棧中不可缺少的主要部分。最近,提出的令人眼花繚亂的X-former模型如Linformer, Performer, Longformer等這些都改進了原始Transformer架構的X-former模型,其中許多改進了計算和內存效率。為了幫助熱心的研究人員在這一混亂中給予指導,本文描述了大量經過深思熟慮的最新高效X-former模型的選擇,提供了一個跨多個領域的現有工作和模型的有組織和全面的概述。
關鍵詞:深度學習,自然語言處理,Transformer模型,注意力模型
//www.zhuanzhi.ai/paper/39a97bd373cc6f37c6b2e9026f3422e8
Transformer是現代深度學習領域中一股強大的力量。Transformer無處不在,在語言理解、圖像處理等許多領域都產生了巨大的影響。因此,在過去的幾年里,大量的研究致力于對該模型進行根本性的改進,這是很自然的。這種巨大的興趣也刺激了對該模式更高效變體的研究 ((Kitaev et al., 2020; Roy et al., 2020; Beltagy et al., 2020; Katharopoulos et al., 2020; Tay et al., 2020b; Wang et al., 2020c; Rae et al., 2020; Choromanski et al., 2020b; Dai et al., 2020; Correia et al., 2019; Sukhbaatar et al., 2019a; Vyas et al., 2020)。
最近出現了大量的Transformer模型變體,研究人員和實踐者可能會發現跟上創新的速度很有挑戰性。在撰寫本文時,僅在過去6個月里就提出了近12種新的以效率為中心的模式。因此,對現有文獻進行綜述,既有利于社區,又十分及時。
自注意力機制是確定Transformer模型的一個關鍵特性。該機制可以看作是一種類似圖的歸納偏差,它通過基于關聯的池化操作將序列中的所有標記連接起來。一個眾所周知的自注意力問題是二次時間和記憶復雜性,這可能阻礙模型在許多設置的可伸縮性。最近,為了解決這個問題,出現了大量的模型變體。以下我們將這類型號命名為“高效Transformers”。
根據上下文,可以對模型的效率進行不同的解釋。它可能指的是模型的內存占用情況,當模型運行的加速器的內存有限時,這一點非常重要。效率也可能指計算成本,例如,在訓練和推理期間的失敗次數。特別是對于設備上的應用,模型應該能夠在有限的計算預算下運行。在這篇綜述中,我們提到了Transformer在內存和計算方面的效率,當它們被用于建模大型輸入時。
有效的自注意力模型在建模長序列的應用中是至關重要的。例如,文檔、圖像和視頻通常都由相對大量的像素或標記組成。因此,處理長序列的效率對于Transformer的廣泛采用至關重要。 本篇綜述旨在提供這類模型的最新進展的全面概述。我們主要關注的是通過解決自注意力機制的二次復雜性問題來提高Transformer效率的建模進展和架構創新,我們還將在后面的章節簡要討論一般改進和其他效率改進。
本文提出了一種高效Transformer模型的分類方法,并通過技術創新和主要用例對其進行了表征。特別地,我們回顧了在語言和視覺領域都有應用的Transformer模型,試圖對各個領域的文獻進行分析。我們還提供了許多這些模型的詳細介紹,并繪制了它們之間的聯系。
本節概述了高效Transformer模型的一般分類,以其核心技術和主要用例為特征。盡管這些模型的主要目標是提高自注意機制的內存復雜度,但我們還包括了提高Transformer體系結構的一般效率的方法。
固定模式(FP)——對自注意最早的修改是通過將視野限制在固定的、預定義的模式(如局部窗口和固定步距的塊模式)來簡化注意力矩陣。
組合模式(CP)——組合方法的關鍵思想是通過組合兩個或多個不同的訪問模式來提高覆蓋率。例如,Sparse Transformer (Child et al., 2019)通過將一半的頭部分配給每個模式,將跨步注意力和局部注意力結合起來。類似地,軸向Transformer (Ho et al., 2019)運用了一系列以高維張量作為輸入的自注意計算,每個計算都沿著輸入張量的單個軸。從本質上說,模式的組合以與固定模式相同的方式降低了內存復雜度。但是,不同之處在于,多個模式的聚合和組合提高了自注意機制的整體覆蓋率。
可學習的模式(LP)-固定的,預先確定的模式的擴展是可學習的模式。不出所料,使用可學習模式的模型旨在以數據驅動的方式學習訪問模式。學習模式的一個關鍵特征是確定令牌相關性的概念,然后將令牌分配到桶或集群(Vyas et al., 2020; Wang et al., 2020b)。值得注意的是,Reformer (Kitaev et al., 2020)引入了一種基于哈希的相似性度量,以有效地將令牌聚為塊。類似地,路由Transformer (Roy et al., 2020)對令牌使用在線k-means聚類。同時,Sinkhorn排序網絡(Tay et al., 2020b)通過學習對輸入序列的塊進行排序,暴露了注意權值的稀疏性。在所有這些模型中,相似函數與網絡的其他部分一起端到端訓練。可學習模式的關鍵思想仍然是利用固定模式(塊狀模式)。然而,這類方法學會了對輸入標記進行排序/聚類——在保持固定模式方法的效率優勢的同時,實現了序列的更優全局視圖。
神經記憶——另一個突出的方法是利用可學習的側記憶模塊,它可以一次訪問多個令牌。一種常見的形式是全局神經存儲器,它能夠訪問整個序列。全局標記充當一種模型內存的形式,它學習從輸入序列標記中收集數據。這是在Set transformer (Lee et al., 2019)中首次引入的誘導點方法。這些參數通常被解釋為“內存”,用作將來處理的臨時上下文的一種形式。這可以被認為是參數關注的一種形式(Sukhbaatar et al., 2019b)。ETC (Ainslie et al., 2020)和Longformer (Beltagy et al., 2020)也使用了全局記憶令牌。在有限的神經記憶(或誘導點)中,我們能夠對輸入序列執行一個初步的類似于池的操作來壓縮輸入序列——在設計高效的自注意模塊時,這是一個可以隨意使用的巧妙技巧。
低秩方法——另一種新興的技術是通過利用自注意矩陣的低秩近似來提高效率。
內核——另一個最近流行的提高transformer效率的方法是通過內核化來查看注意力機制。
遞歸-塊方法的一個自然擴展是通過遞歸連接這些塊。
下采樣-另一種降低計算成本的常用方法是降低序列的分辨率,從而以相應的系數降低計算成本。
稀疏模型和條件計算——雖然不是專門針對注意力模塊,稀疏模型稀疏地激活一個參數子集,這通常提高了參數與FLOPs的比率。
隨著預訓練語言模型(pre- training language model, PLMs)成為各種NLP任務的基礎設施,研究人員也很樂意使用預訓練微調范式,來自新興研究的證據不斷證明,更大的模型往往產生更好的性能。然而,盡管取得了可喜的成果,但對大規模PLMs進行微調的過程帶來了高昂的適應成本。事實上,對一個巨大模型的所有參數進行微調,并為不同的任務保留單獨的實例,實際上是不可行的。這就需要一個新的研究分支專注于PLM的參數有效適應。為了激發人們對這些方法可能的優勢的想象,而不僅僅是參數效率,我們從形態學的角度創造了一個新的術語delta調優,用來指代最初的“參數高效調優”。與標準的微調相比,增量調優僅微調模型參數的一小部分,而保持其余部分不變,這在很大程度上降低了計算和存儲成本。最近的研究表明,一系列具有明顯調優參數選擇的增量調優方法可以達到與全參數微調相當的性能,這為激發大規模PLMs提供了一種新的有前途的方法。在本文中,我們首先正式描述了增量調優問題,然后全面回顧了最近的增量調優方法。我們還提出了一個統一的分類標準,將現有的增量調優方法分為三組:基于添加的方法、基于規范的方法和基于重參數化的方法。雖然最初提出的是一種控制大型模型的有效方法,但我們相信,隨著delta調諧的發現,一些令人著迷的證據可能有助于進一步揭示PLMs甚至深度神經網絡的機制。為此,我們討論了增量調整有效性的理論原理,并分別從優化和最優控制的角度提出了解釋增量調整的框架。此外,我們還對有代表性的方法進行了整體的實證研究,對100多個NLP任務的結果顯示了不同方法的綜合性能比較。實驗結果還包括對增量調諧的組合性、標度性和可轉移性的分析。為了促進增量調優的研究,我們還開發了一個開源工具包OpenDelta2,它使實踐者能夠高效、靈活地在plm上實現增量調優。最后,我們討論了一系列增量調優的實際應用。
摘要
Transformers 在自然語言處理、計算機視覺和音頻處理等許多人工智能領域都取得了巨大的成功。因此,自然會引起學術界和工業界研究人員的極大興趣。到目前為止,各種各樣的Transformer變種(即X-formers)已經被提出,但是,關于這些Transformer器變種的系統和全面的文獻綜述仍然缺乏。在這項綜述中,我們提供了一個全面的Transformer綜述。我們首先簡單介紹了普通的Transformer,然后提出了一個x-former的新分類。接下來,我們將從三個方面介紹不同的x -former架構修改,預訓練和應用。最后,展望了未來的研究方向。
//www.zhuanzhi.ai/paper/f03a47eb6ddb5d23c07f51662f3220a0
引言
Transformer[136]是一種出色的深度學習模型,被廣泛應用于自然語言處理(NLP)、計算機視覺(CV)和語音處理等各個領域。Transformer最初是作為一種用于機器翻譯的序列到序列模型提出的[129]。后來的工作表明,基于Transformer的預訓練模型(PTMs)[100]可以在各種任務上實現最先進的性能。因此,Transformer已經成為NLP的首選架構,特別是對于PTMs。除了語言相關的應用,Transformer也被應用于CV[13, 33, 94],音頻處理[15,31,41],甚至其他學科,如化學[113]和生命科學[109]。
由于成功,各種各樣的Transformer 變種(即x -former)在過去幾年里被提出。這些X-formers從不同的角度改進了vanilla Transformer。
(1) 模型的效率。應用Transformer的一個關鍵挑戰是它在處理長序列時效率低下,這主要是由于自注意力模塊的計算和存儲復雜性。改進方法包括輕量級注意力(例如稀疏注意變體)和分治法(例如循環和分層機制)。
(2) 模型泛化。由于Transformer是一種靈活的體系結構,并且很少對輸入數據的結構偏差進行假設,因此很難對小規模數據進行訓練。改進方法包括引入結構偏差或正則化、對大規模無標記數據進行預處理等。
(3) 模型的適應。該工作旨在使Transformer適應特定的下游任務和應用程序。
在這個綜述中,我們的目的是提供一個Transformer及其變體的全面綜述。雖然我們可以根據上面提到的觀點來組織x-former,但許多現有的x前輩可能會解決一個或幾個問題。例如,稀疏注意變量不僅降低了計算復雜度,而且在輸入數據上引入了結構先驗,緩解了小數據集上的過擬合問題。因此,將現有的各種X-formers進行分類,并根據它們改進Transformer的方式提出新的分類方法會更有條理: 架構修改、預訓練和應用。考慮到本次綜述的受眾可能來自不同的領域,我們主要關注于一般的架構變體,而只是簡單地討論了預訓練和應用的具體變體。
到目前為止,基于普通Transformer的各種模型已經從三個角度被提出:架構修改的類型、預訓練的方法和應用。圖2給出了Transformer變種的分類說明。
盡管“x-formers”已經證明了他們在各種任務上的能力,但挑戰仍然存在。除了目前關注的問題(如效率和泛化),Transformer的進一步改進可能在以下幾個方向:
(1) 理論分析。Transformer的體系結構已被證明能夠支持具有足夠參數的大規模訓練數據集。許多工作表明,Transformer比CNN和RNN有更大的容量,因此有能力處理大量的訓練數據。當Transformer在足夠的數據上進行訓練時,它通常比CNN或RNN有更好的性能。一個直觀的解釋是,Transformer對數據結構沒有什么預先假設,因此比CNN和RNN更靈活。然而,理論原因尚不明確,我們需要對Transformer能力進行一些理論分析。
(2) 注意力機制之外的全局交互機制更加完善。Transformer的一個主要優點是使用注意力機制來建模輸入數據中節點之間的全局依賴關系。然而,許多研究表明,對大多數節點來說,完全注意力是不必要的。在某種程度上,不可區分地計算所有節點的注意力是低效的。因此,在有效地建模全局交互方面仍有很大的改進空間。一方面,自注意力模塊可以看作是一個具有動態連接權的全連接神經網絡,通過動態路由聚合非局部信息; 因此,其他動態路由機制是值得探索的替代方法。另一方面,全局交互也可以通過其他類型的神經網絡來建模,比如記憶增強模型。
(3) 多模態數據統一框架。在許多應用場景中,集成多模態數據對于提高任務性能是非常有用和必要的。此外,一般的人工智能還需要能夠捕獲跨不同模式的語義關系。由于Transformer在文本、圖像、視頻和音頻方面取得了巨大的成功,我們有機會建立一個統一的框架,更好地捕捉多模態數據之間的內在聯系。但是,在設計中對模式內和模式間的注意還有待改進。
Transformers have achieved great success in many artificial intelligence fields, such as natural language processing, computer vision, and audio processing. Therefore, it is natural to attract lots of interest from academic and industry researchers. Up to the present, a great variety of Transformer variants (a.k.a. X-formers) have been proposed, however, a systematic and comprehensive literature review on these Transformer variants is still missing. In this survey, we provide a comprehensive review of various X-formers. We first briefly introduce the vanilla Transformer and then propose a new taxonomy of X-formers. Next, we introduce the various X-formers from three perspectives: architectural modification, pre-training, and applications. Finally, we outline some potential directions for future research.
摘要
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模型,試圖對各個領域的文獻進行分析。我們還提供了許多這些模型的詳細介紹,并繪制了它們之間的聯系。
Transformer model architectures have garnered immense interest lately due to their effectiveness across a range of domains like language, vision and reinforcement learning. In the field of natural language processing for example, Transformers have become an indispensable staple in the modern deep learning stack. Recently, a dizzying number of "X-former" models have been proposed - Reformer, Linformer, Performer, Longformer, to name a few - which improve upon the original Transformer architecture, many of which make improvements around computational and memory efficiency. With the aim of helping the avid researcher navigate this flurry, this paper characterizes a large and thoughtful selection of recent efficiency-flavored "X-former" models, providing an organized and comprehensive overview of existing work and models across multiple domains.
題目
Pre-trained Models for Natural Language Processing: A Survey
關鍵詞
預訓練語言模型,深度學習,自然語言處理,BERT,Transfomer,人工智能
簡介
最近,預訓練模型(PTM)的出現將自然語言處理(NLP)帶入了一個新時代。 在此調查中,我們提供了針對NLP的PTM的全面概述。 我們首先簡要介紹語言表示學習及其研究進展。 然后,我們基于分類從四個角度對現有PTM進行系統分類。 接下來,我們描述如何使PTM的知識適應下游任務。 最后,我們概述了PTM未來研究的一些潛在方向。該調查旨在作為實踐指南,幫助您理解,使用和開發適用于各種NLP任務的PTM。
作者
Xipeng Qiu, Tianxiang Sun, Yige Xu, Yunfan Shao, Ning Dai ,Xuanjing Huang
譯者
專知成員,范志廣
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論文。更多細節可以參考原始論文。