Attention is all your need(原文翻譯)


注意力是你所需要的 

摘要:占優勢的序列轉換模型基於復雜的循環或卷積神經網絡,其中包括一個編碼器和一個解碼器。表現最好的模型還通過注意機制連接編碼器和解碼器。我們提出了一種新的簡單的網絡架構,即Transformer,它完全基於注意力機制,完全摒棄了遞歸和卷積。在兩個機器翻譯任務上的實驗表明,這些模型在質量上更優越,同時具有更強的並行性,需要的訓練時間明顯更少。我們的模型在WMT 2014英語-德語翻譯任務上實現了28.4BLEU,比現有的最佳結果(包括集成)提高了超過2BLEU。在WMT 2014英法翻譯任務中,我們的模型在8GPU上進行了3.5天訓練后,建立了一個新的單模型最先進的BLEU分數為41.8,這是文獻中最好模型的訓練成本的一小部分。通過成功地將Transformer應用於大量和有限的訓練數據的英語選區解析,我們證明了它可以很好地推廣到其他任務。

 

1、引言

   循環神經網絡,特別是長短期記憶[13]和門控循環[7]神經網絡,已經被確定為序列建模的最先進的方法語言建模和機器翻譯等轉導問題[35,2,5]。從那以后,大量的努力繼續推動循環語言模型和編碼器-解碼器架構的邊界[38,24,15]

   循環模型通常沿着輸入和輸出序列的符號位置進行計算。在計算時間中,將位置與步長對齊,它們生成一個隱藏狀態序列,作為前一個隱藏狀態和位置t輸入的函數。這種固有的序列性質妨礙了訓練示例中的並行化,這在序列長度較長的情況下變得至關重要。由於內存約束限制了跨示例的批處理。通過因式分解技巧[21]和條件計算[32],最近的工作在計算效率方面取得了顯著的改進,同時也改善了后者的模型性能。然而,順序計算的基本約束仍然存在。

   注意機制已經成為各種任務中引人注目的序列建模和轉模型的組成部分,允許建模依賴關系,而不考慮它們在輸入或輸出序列中的距離[2,19]。然而,在所有[27]案例中,這種注意機制與循環網絡一起使用。

   在這項工作中,我們提出了Transformer,這是一種避免遞歸的模型體系結構,而完全依賴於一種注意機制來提取輸入和輸出之間的全局依賴關系。Transformer允許更多的並行化,在8P100GPU上訓練12個小時后,可以達到翻譯質量的新水平。

 

2、背景

   減少順序計算的目標也構成了擴展神經GPU[16]ByteNet[18]ConvS2S[9]的基礎,它們都使用卷積神經網絡作為基本構建塊,並行計算所有輸入和輸出位置的隱藏表示。在這些模型中,將來自兩個任意輸入或輸出位置的信號關聯起來所需的操作數隨着位置之間的距離而增加,對於ConvS2S是線性的,而對於ByteNet則是對數的。這使得學習遠距離位置[12]之間的依賴關系變得更加困難。在Transformer中,這被減少為固定的操作次數,盡管這是以平均注意力加權位置降低有效分辨率為代價的,我們用3.2節中描述的多頭注意力抵消了這種影響。

   自我注意,有時也被稱為內注意,是一種注意機制,將單個序列的不同位置聯系起來,以計算該序列的表示。自我注意已經成功地應用於各種任務,包括閱讀理解、摘要總結、文本蘊涵和學習任務無關的句子表征[4,27,28,22]。端到端記憶網絡基於循環注意機制,而不是序列對齊的循環注意機制,在簡單語言問答和語言建模任務[34]中表現良好。

   然而,據我們所知,Transformer是第一個完全依賴自注意來計算其輸入和輸出表示,而不使用序列對齊的RNN或卷積的轉換模型。在下面的章節中,我們將描述Transformer,激發自我關注,並討論它相對於[17,18][9]等模型的優點。

 

3、模型結構

   大多數競爭神經序列轉導模型都有一個編碼器-解碼器結構[5,2,35]。這里,編碼器映射一個符號表示的輸入序列到連續表示序列。給定z,解碼器然后生成一個輸出序列的符號,一次一個元素。在每個步驟中,模型都是自回歸的[10],在生成下一個步驟時將之前生成的符號作為額外的輸入。Transformer遵循這種總體架構,為編碼器和解碼器使用堆疊的自注意和逐點式、完全連接的層,分別如圖1的左半部分和右半部分所示。

 

 

 

 

1Transformer模型結構

3.1 編碼器和解碼器堆棧

   編碼器:編碼器由N = 6個相同層組成。每一層都有兩個子層。第一種是多頭自注意機構,第二種是簡單的、位置上全連接的前饋網絡。我們在這兩個子層的每一層使用一個剩余連接[11],然后進行層歸一化[1]。也就是說,每個子層的輸出是,其中是子層本身實現的函數。為了方便這些殘留連接,模型中的所有子層以及嵌入層產生維度為的輸出。

   解碼器:解碼器也是由N = 6個相同層組成的堆棧。除每個編碼器層中的兩個子層外,解碼器插入第三個子層,該子層對編碼器堆棧的輸出執行多頭注意。與編碼器類似,我們在每個子層周圍使用殘差連接,然后進行層歸一化。我們還修改了解碼器堆棧中的自注意子層,以防止位置對后續位置的關注。這種掩蔽,結合輸出嵌入被偏移一個位置的事實,確保了位置i的預測只能依賴於小於i位置的已知輸出。

 

3.2 注意力

   注意函數可以描述為將查詢和一組鍵-值對映射到輸出,其中查詢、鍵、值和輸出都是向量。輸出是作為值的加權和計算的,其中分配給每個值的權重是通過具有相應鍵的查詢的兼容性函數計算的。

 

 

 

 圖2:(左)縮放的點積注意力。(右)多頭注意力由並行運行的幾個注意層組成。

 

3.2.1按比例縮小的點積的注意力

   我們將我們的特別注意稱為縮放的點-產品注意”(2)。輸入由維度的查詢和鍵和維度的值組成。我們計算查詢中所有鍵的點積,每一個都除以,然后應用一個softmax函數獲得這些值的權值。

在實踐中,我們同時在一組查詢上計算注意力函數,並將其打包成矩陣q。鍵和值也打包成矩陣KV。我們將輸出矩陣計算為:

        最常用的兩個注意函數是附加注意[2]和點積(乘法)注意。點積注意事項與我們的算法相同,只是比例因子為。附加注意使用具有單一隱含層的前饋網絡計算兼容性函數。雖然兩者在理論上的復雜性相似,但點積注意在實踐中要快得多,空間效率更高,因為它可以使用高度優化的矩陣乘法代碼來實現。

   當值較小時,兩種機制的表現相似,在未對值進行擴展的情況下,加性注意的表現優於點積注意。我們懷疑的值很大時,點積的幅度會變大,將softmax函數推入梯度極小的區域4。為了抵消這個影響,我們將點積乘以

 

3.2.2 多頭注意力

我們發現,與其使用的鍵、值和查詢執行單一的注意力函數,不如將查詢、鍵和值用不同的、學習過的線性投影分別投影到、和維上h次。然后,我們在每個查詢、鍵和值的投影版本上並行執行注意力函數,產生維的輸出值。這些被連接並再次投影,最終的值,如圖2所示,多頭注意允許模型共同關注來自不同位置的不同表示子空間的信息。如果只關注一個注意頭,平均就會抑制這一點。

 

其中投影為參數矩陣

在這項工作中,我們使用了h = 8個平行的注意層,即頭部。對於每一個,我們使用。由於每個頭部的尺寸減小,總的計算代價與全維單頭注意力相似。

 

3.2.3在我們模型中注意力的應用

Transformer用了三種不同的方法使用多頭注意力:

編碼器-解碼器注意層中,查詢來自前一個解碼器層,內存鍵和值來自編碼器的輸出。這允許解碼器中的每個位置都參與輸入序列中的所有位置。這模擬了諸如[38,2,9]等序列到序列模型中典型的編碼器-解碼器注意機制。

編碼器包含自我關注層。在自關注層中,所有鍵、值和查詢都來自相同的位置,在本例中,即編碼器中前一層的輸出。編碼器中的每個位置都可以處理編碼器上一層中的所有位置。

類似地,解碼器中的自注意層允許解碼器中的每個位置關注解碼器中直到並包括該位置的所有位置。為了保持解碼器的自回歸特性,我們需要防止解碼器中的信息流向左流動。我們通過屏蔽(設置為−∞)softmax輸入中與非法連接對應的所有值來實現這種縮放點積注意。參見圖2

 

3.3位置乘積前饋網絡

除了注意子層之外,我們的編碼器和解碼器中的每一層都包含一個完全連接的前饋網絡,它分別且相同地應用於每個位置。這包括兩個線性轉換,其間有一個ReLU激活。

雖然線性變換在不同的位置是相同的,但它們使用不同的參數從一層到另一層。另一種描述它的方法是兩個卷積的核大小為1。輸入輸出維度為dmodel= 512,內層維度dff= 2048

 

3.4嵌入和softmax

與其他序列轉換模型類似,我們使用學習的嵌入將輸入標記和輸出標記轉換為維度為dmodel的向量。我們還使用通常學習的線性變換和softmax函數來將解碼器輸出轉換為預測的下一個令幣概率。在我們的模型中,我們在兩個嵌入層和pre-softmax線性變換之間共享相同的權重矩陣,類似於[30]。在嵌入層中,我們將這些權值乘以

3.5位置編碼

因為我們的模型包含沒有復發和卷積,為了使模型利用序列的順序,我們必須注入一些信息的相對或絕對位置5序列中的標記。為此,我們將位置編碼添加到編碼器和解碼器堆棧底部的輸入嵌入中。位置編碼與嵌入具有相同的維度d模型,因此可以將兩者相加。有許多位置編碼可供選擇,包括學習的和固定的[9]

 

1:最大路徑長度,每層復雜性和最小數量的不同的層類型的順序操作。N為序列長度,d為表示維數,k為卷積的核大小,r為受限自注意的鄰域大小。

 

在本工作中,我們使用了不同頻率的正弦和余弦函數:

 

pos是位置,i是維數。也就是說,位置編碼的每個維度對應於一個正弦信號。波長從10000·2π呈幾何級數。我們選擇這個函數是因為我們假設它可以讓模型很容易地了解相對位置,因為對於任何固定偏移量k, PEpos+k可以表示為PEpos的線性函數。

我們還嘗試使用學習到的位置嵌入[9]代替,發現兩個版本產生了幾乎相同的結果(見表3(E))。我們選擇正弦版本,因為它可能允許模型外推到比在訓練中遇到的序列長度更長。

 

4. 為什么要自注意

在本節中,我們將自注意層的各個方面與循環層和卷積層進行比較,這些層通常用於映射一個可變長度的符號表示序列(x1xn)到另一個等長序列(z1zn),具有xi, zi∈Rd,如典型序列轉換編碼器或解碼器中的隱藏層。在激勵我們使用自我注意時,我們考慮了三個需要。

一個是每層的總計算復雜度。另一個是可以並行化的計算量,由所需的最小順序操作數來衡量。三是網絡中長距離依賴之間的路徑長度。學習長期依賴是許多序列轉導任務的關鍵挑戰。影響學習這種依賴關系能力的一個關鍵因素是網絡中前進和后退信號必須經過的路徑長度。輸入和輸出序列中任意位置組合之間的這些路徑越短,就越容易學習長期依賴[12]。因此,我們也比較了由不同層類型組成的網絡中任意兩個輸入和輸出位置之間的最大路徑長度。

如表1所示,自注意層用固定數量的順序執行操作連接所有位置,而循環層需要O(n)個順序操作。在計算復雜性方面,self-attention層速度比周期性層當序列長度n小於表示維數d,這是最常使用的情況下與句子表示最先進的機器翻譯模型,word-piece[38]byte-pair[31]表示。為了提高涉及很長的序列的任務的計算性能,可以將自注意限制為僅考慮以各自輸出位置為中心的輸入序列的大小為r的鄰域6。這將使最大路徑長度增加到O(n/r)。我們計划在今后的工作中進一步研究這種方法。

單個卷積層的核寬度為k < n,不連接所有的輸入和輸出位置對。如果是連續的核,則需要O(n/k)個卷積層,如果是擴張的卷積[18],則需要O(logk(n))個卷積層,增加網絡中任意兩個位置之間的最長路徑的長度。卷積層通常比遞歸層的代價高k倍。然而,可分離卷積[6]大大降低了復雜度,達到O(k·n·d + n·d2)。然而,即使k = n,可分離卷積的復雜性等於自注意層和點前饋層的結合,這是我們在模型中采用的方法。

作為附帶好處,自我關注可以產生更多可解釋的模型。我們從我們的模型中考察注意力分布,並在附錄中給出並討論例子。單個注意頭不僅清楚地學會了執行不同的任務,而且許多注意頭似乎表現出了與句子的句法和語義結構相關的行為。

 

5. 訓練

該部分講述了我們模型的訓練機制。

 

5.1訓練數據和批處理

我們用標准的WMT 2014英德語數據集進行訓練,該數據集由大約450萬個句子對組成。句子使用編碼為[3]的字節對進行編碼,[3]擁有約37000個令符的共享源目標詞匯表。對於英語-法語,我們使用了更大的WMT 2014英語-法語數據集,該數據集由36M個句子組成,並將標記拆分為32000個單字詞匯[38]。句子對以近似的序列長度組合在一起。每個訓練批次包含一組包含大約25000個源令牌和25000個目標令牌的句子對。

 

5.2硬件和進度

我們在一台擁有8NVIDIA P100 gpu的機器上訓練我們的模型。對於使用本文中描述的超參數的基本模型,每個訓練步驟大約花費0.4秒。我們總共訓練了10萬步,也就是12個小時。對於我們的大型模型(如表3所示),步長為1.0秒。大型模型訓練了30萬步(3.5)

 

5.3優化器

我們使用Adam優化器[20]。我們在訓練過程中根據公式改變學習率:

       

這對應於對第一個warmup_steps訓練步驟線性增加學習率,然后按步數平方根的反比比例減少學習率。我們使用warmup_steps = 4000

 

5.4正規化

我們在訓練中采用了三種類型的正規化:

殘差丟棄法  我們將dropout[33]應用於每個子層的輸出,然后再將其添加到子層的輸入和規范化。此外,我們還對編碼器和解碼器堆棧中的嵌入和位置編碼應用dropout。對於基本模型,我們使用Pdrop= 0.1的比率。

2:在英語-德語和英語-法語的2014年最新測試中,Transformer取得了比之前最先進的模型更好的BLEU分數,而培訓成本僅為培訓成本的一小部分。

 

標簽平滑  訓練過程中,我們采用了[36]的標簽平滑。這導致了困惑,因為模型學習更不確定,但提高了准確性和BLEU分數。

 

6. 結果

6.1 機器翻譯

WMT 2014英語-德語翻譯任務中,大變壓器模型(2中的transformer (big))比之前報道的最好的模型(包括集成模型)表現超過2.0BLEU,建立了一個新的最先進的BLEU分數28.4。這個模型的配置列在表3的最底層。在8P100圖形處理器上訓練花了3.5天。甚至我們的基礎模型也超過了以前發布的所有模型和集成,而培訓成本僅為任何競爭模型的一小部分。

WMT 2014英法翻譯任務中,我們的大模型獲得了41.0BLEU分數,優於之前發表的所有單個模型,而訓練成本不到之前最先進模型的1/4。訓練成英語到法語的Transformer()模型使用的輟學率Pdrop= 0.1,而不是0.3

對於基本模型,我們使用一個單一的模型,該模型是通過平均最后5個檢查點獲得的,每10分鍾寫入一次。對於大型模型,我們計算了最后20個檢查點的平均值。我們使用光束搜索,光束大小為4,長度懲罰α = 0.6[38]。這些超參數是在開發裝置上進行實驗后選擇的。我們在推斷期間將最大輸出長度設置為輸入長度+ 50,但在可能的情況下提前終止[38]

2總結了我們的結果,並將我們的翻譯質量和培訓成本與文獻中其他模型架構進行了比較。我們通過將訓練時間、使用的gpu數量和每個GPU5的持續單精度浮點容量相乘來估計用於訓練模型的浮點操作數。

 

6.2模型變種

為了評估Transformer的不同組件的重要性,我們以不同的方式改變了我們的基本模型,在開發集的英-德翻譯中測量性能的變化,newstest2013。我們使用了前一節中描述的波束搜索,但是沒有使用檢查點平均。我們將這些結果顯示在表3中。

在表3(A)中,我們改變了注意頭的數量以及注意鍵和值的維度,保持計算量不變,如3.2.2節所述。雖然單頭注意力是0.9 BLEU比最好的設置,質量也下降了太多的頭。

3:Transformer體系結構的V變體。未列出的值與基本模型的值相同。所有指標都是在英語到德語翻譯開發集,最新的2013年。根據我們的字節對編碼,所列的困惑是每個字的,不應該與每個字的困惑進行比較。

 

4:Transformer很好地概括了英語選區解析(結果見《華爾街日報》第23)

 

在表3(B)中,我們觀察到減少注意鍵大小會損害模型質量。這表明確定兼容性並不容易,一個比點積更復雜的兼容性函數可能是有益的。我們在(C)(D)行中進一步觀察到,正如預期的那樣,模型越大越好,dropout非常有助於避免過擬合。在(E)行中,我們用學習到的位置嵌入值[9]代替正弦位置編碼,並觀察到與基本模型幾乎相同的結果。

 

6.2 英語選區解釋

為了評估Transformer是否可以推廣到其他任務,我們執行了關於英語單元解析的實驗。這項任務提出了具體的挑戰:產出受到強烈的結構性約束,而且產出時間明顯長於投入時間。此外,RNN序列到序列模型還不能在小數據區域[37]中獲得最先進的結果。

我們在賓夕法尼亞樹銀行[25]的華爾街日報(WSJ)部分訓練了一個dmodel= 10244層變壓器,大約40K個訓練句子。我們也在半監督的設置下訓練它,使用較大的高置信度和BerkleyParser語料庫來自大約17M個句子[37]。我們在只有WSJ的設置中使用了16K詞匯量,在半監督的設置中使用了32K詞匯量。

我們在第22節開發集上只進行了少量的實驗來選擇dropout, attentionresidual (section 5.4)learning ratebeam size,所有其他參數與英-德基礎翻譯模型保持不變。在推斷期間,我們將最大輸出長度增加為輸入長度+ 300。我們在《華爾街日報》和半監督設置中使用了21α = 0.3的光束尺寸。

我們在表4中的結果顯示,盡管缺少特定任務的調優,我們的模型表現得出奇地好,產生了比之前報告的所有模型(除了循環神經網絡語法[8])更好的結果。

RNN序列到序列模型[37]相比,即使只在WSJ40K句訓練集上進行訓練,Transformer的性能也優於BerkeleyParser[29]

 

7 結論

在這項工作中,我們提出了Transformer,這是第一個完全基於注意力的序列轉換模型,用多頭自注意取代了在編碼器-解碼器體系結構中最常用的循環層。

對於翻譯任務,Transformer的訓練速度比基於循環層或卷積層的架構快得多。在WMT 2014英語到德語和WMT 2014英語到法語翻譯任務中,我們達到了一個新的水平。在前一項任務中,我們的最佳模型甚至優於之前報告的所有集合。

我們對基於注意力的模型的未來感到興奮,並計划將其應用於其他任務。我們計划將Transformer擴展到涉及文本以外的輸入和輸出模式的問題,並研究局部的受限注意機制,以有效處理大量輸入和輸出,如圖像、音頻和視頻。我們的另一個研究目標是減少世代的順序。我們用來訓練和評估模型的代碼可以在https://github.com/ tensorflow/tensor2tensor上找到。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM