天天看點

Attention is all you need【論文筆記】

一、摘要

  顯性序列轉導模型通常基于複雜的RNN或CNN模型,包括一個encoder和一個decoder。表現最好的模型通常也在encoder和decoder之間應用attention機制。我們提出一個新的簡單的網絡架構,單純地基于attention機制,完全沒用到RNN或CNN模型。兩個機器翻譯任務的實驗表明,這些模型在品質上更優越,同時更易于并行化,并且需要更少的時間進行訓練。

二、介紹

  RNN、LSTM、GRU等模型在序列模組化任務上表現很好,比如語言模組化,機器翻譯。這類遞歸模型沿着輸入單詞順序地生成一系列的隐藏層狀态。這種固有的順序特性無法實作訓練示例中的并行化,計算資源消耗大。即使通過 f a c t o r i z a t i o n   t r i c k factorization\ trick factorization trick和 c o n d i t i o n a l   c o m p u t a i o n conditional\ computaion conditional computaion可以提升效率,但是問題仍然存在。

  本篇論文,作者提出了Transformer,一種模型結構不使用RNN,單純依靠attention機制就可以捕捉到輸入和輸出之間的全局依賴關系。

三、背景

  self-attention 也叫做 intra-attention,計算一個句子的表示時關聯該句子的不同位置的資訊。self-attention已經被成功應用于各種任務,閱讀了解、自動摘要、文本蘊含等。端到端的記憶體網絡基于遞歸的attention機制,在問答和語言模組化任務上表現優秀。據我們所知,Transformer是第一個transduction模型,隻依靠self-attention計算輸入和輸出的表示。

四、模型架構

Attention is all you need【論文筆記】

4.1 Encoder and Decoder Stacks

  • Encoder: encoder由6層堆疊而成。每一層有兩個子層,第一個子層是multi-head self-attention機制,第二層是position-wise全連接配接前向網絡。我們在兩個子層中的每一個周圍使用殘餘連接配接,然後是層歸一化。是以,每一個子層的輸出就是 L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x+Sublayer(x)) LayerNorm(x+Sublayer(x))。為了利用這些殘餘連接配接,模型的每個子層的輸出次元都為512.
  • Decoder: decoder也是由6層堆疊而成。每一層中與encoder相比,多了一層,對encoder堆疊的輸出做multi-head attention。與encoder相似,每個子層使用residual connection,然後是layer normalization。我們還修改了decoder堆疊中的self-attention層,防止目前位置關注了後序位置的資訊。這種掩碼與輸出嵌入偏移一個位置的事實相結合,確定了位置i的預測僅依賴于小于i的位置處的已知輸出。

4.2 Attention

  attention函數可以描述為将查詢和一組鍵值對映射到輸出的過程,其中查詢,鍵,值,輸出都是向量。輸出計算為值的權重和,其中配置設定給每個值的權重由查詢與相應鍵的相容性函數計算。

Attention is all you need【論文筆記】

4.2.1 Scaled Dot-Product Attention

   輸入由 d k d_k dk​次元的queries和keys組成,values的次元為 d v d_v dv​。計算query和所有keys的點積,除以 d k \sqrt{d_k} dk​

​,然後通過softmax函數獲得權重。

A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V Attention(Q,K,V)=softmax(dk​

​QKT​)V

   最長使用的兩種注意力函數:加性注意力和點積注意力。加性注意力使用具有單個隐藏層的前饋網絡來計算compatibility function。雖然這兩者在理論複雜性上相似,但實際上點積更快,更節省空間,因為它可以使用高度優化的矩陣乘法來實作。

   d k d_k dk​比較小時兩種attention性能差不多, d k d_k dk​比較大時,加性注意力比沒有縮放的點積注意力要好。我們懷疑,對于較大的 d k d_k dk​ 值,點積大幅增大,将softmax函數推進到具有極小梯度的區域。為了抵消這個影響,我們進行了 1 d k \frac{1}{\sqrt{d_k}} dk​

​1​縮放。

4.2.2 Multi-Head Attention

   對于 d m o d e l d_{model} dmodel​ 次元的keys,values,queries,我們發現線性映射keys,values,queries h h h次(不同的),學習線性映射到 d k , d k , d v d_k,d_k,d_v dk​,dk​,dv​次元,這比單個attention是更有效的。每個keys,values,queries映射版本都會并行的經過attention,輸出 d v d_v dv​,然後經過concat,再一次的projected,輸出最終的向量。

   multi-head attention允許模型共同關注來自不同位置的不同表示子空間的資訊。隻用一個attention,平均就會抑制這種情況。

M u l t i H e a d ( Q , K , V ) = C o n c a t ( h e a d 1 , . . . , h e a d h ) W O MultiHead(Q,K,V)=Concat(head_1,...,head_h)W^O MultiHead(Q,K,V)=Concat(head1​,...,headh​)WO w h e r e   h e a d i = A t t e n t i o n ( Q W i Q , K W i K , V W i V ) where\ head_i=Attention(QW^Q_i,KW^K_i,VW^V_i) where headi​=Attention(QWiQ​,KWiK​,VWiV​)

  其中, W i Q ∈ R d m o d e l × d k , W i K ∈ R d m o d e l × d k , W i V ∈ R d m o d e l × d v , W O ∈ R h d v × d m o d e l W^Q_i\in R^{d_{model}\times d_k},W^K_i\in R^{d_{model}\times d_k},W^V_i\in R^{d_{model}\times d_v},W^O\in R^{hd_v\times d_{model}} WiQ​∈Rdmodel​×dk​,WiK​∈Rdmodel​×dk​,WiV​∈Rdmodel​×dv​,WO∈Rhdv​×dmodel​。本篇論文中,采取 h = 8 , d k = d v = d m o d e l / h = 64 h=8,d_k=d_v=d_{model}/h=64 h=8,dk​=dv​=dmodel​/h=64

4.2.3 Applications of Attention in our Model

  • 在‘encoder-decoder attention’層,queries來自之前decoder的輸出,keys和values來自encoder的輸出。這允許decoder中的每個位置參與輸入序列中的所有位置。這模仿了sequence-sequence模型中典型的encoder-decoder attention機制。
  • encoder包含self-attention層。對于self-attention層的所有key,values,queries都來自同一位置,是encoder前一層的輸出。encoder中的每個位置都可以處理前一層中的所有位置資訊。
  • 類似地,decoder中的自注意層允許解碼器中的每個位置參與解碼器中的所有位置直到并包括該位置。我們需要防止解碼器中的向左資訊流以保持自回歸屬性。我們通過屏蔽(設定為-∞)softmax輸入中與非法連接配接相對應的所有值來實作縮放點積注意。

4.3 Position-wise Feed-Forward Networks

  除了attention子層,在encoder和decoder的每一層中都包含一個全連接配接前向網絡,分别和相同地應用于每個位置。

F F N ( x ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x)=max(0,xW_1+b_1)W_2+b_2 FFN(x)=max(0,xW1​+b1​)W2​+b2​

5.why self-attention

  • 每一層的計算複雜度
  • 計算并行化
  • 長距離的依賴關系

6. Experiment

  這裡實驗不再介紹

7. Conclusion

  作者提出了Transformer,完全依賴于attention,沒有用到RNN、CNN結構。訓練速度快,并且結果是state-of-the-art的。

  解析實作這裡的部落客講得不錯:http://blog.stupidme.me/transformer-attention-is-all-you-need/

繼續閱讀