attention is all you need筆記

傳統

encoder

輸入:符號序列 x1,…,xn

輸出:連續表示z1,…,zn

decoder

輸入:連續表示z1,…,zn

輸出:符號序列y1,….ym

 

作者原創

transformer

使用堆疊的self-attention和point-wise,全連接層。(左encoder,右decoder)

transformer結構圖

encoder

由6個相同層堆疊而成。每個層有2個子層,首先是一個multi-head self-attention,接着是一個簡單的position-wise的全連接層,再跟上正則化,另外還有殘差連接。模型中所有的子層輸出以及embedding層的輸出都是512維度,以方便殘差的連接。

decoder

由6個相同層堆疊而成。除了兩個和encoder一樣的子層,還有masking multi-head attention層,同時它也有殘差連接和標準化。

同時,decoder裏的self-attention也被堆疊起來防止當前position注意到之後的position。這個masking,加上輸出embeddings被偏置了一個position,確保了對位置i的預測只會依賴於下標小於i的已知輸出。

 

attention

attention的定義:匹配一個查詢到一組鍵值對,並將它們輸出。其中,查詢,鍵,值,輸出都是向量。輸出是計算值得到加權和,其中權重被分配到各個值上,權重通過查詢的兼容度函數compatibility function和對應的鍵計算得到。

scaled dot-product attention

輸入:dk維度的queries和keys,dv維度的values

計算所有keys的點積,再除以 ,並使用softmax函數來獲得值的函數。

同時計算一組queries的attention函數,堆疊到矩陣Q中,keys和values被堆疊到矩陣K和V中,在計算輸出矩陣

常用的兩種attention機制爲additive和dot-product,dot-product和作者的算法等價,除了沒有除以 。additive使用前項神經網絡和一個單一的隱含層計算相容性函數。儘管這兩者的理論複雜度相當,但是dot-product的計算速度要快得多,空間效率也要高得多,因爲它能被高度優化的矩陣乘法代碼所實現。

之所以加上除以 ,是因爲,作者認爲當維度dk變得很大的時候,點積的量級會有很大的增長,從而將softmax推到一個梯度極小的區域裏。爲了抵消這種危害,作者除以了

multi-head attention

將queries, keys 和 values分別線性投影分h次分別通過不斷學習的投影到不同的dk維度,會比將原來這三者放到一個簡單的attention中的表現要好。對於這些輸入,並行地執行注意力函數,生成dv維度的輸出值。這些輸出再被拼接起來,再次被注入,最終得到最終的值。

Multi-head能夠讓模型聯合注意到,來自不同位置的不同表示子空間的信息。使用單個的attention head,就能抑制這種情況。

實驗中,採用h=8個並行的attention層或heads。對於其中的每一個使用dk = dv = dmodel/h = 64。由於每個head減少了維度,總體的計算損失和,與使用全連接的單個head的attention,基本相當。

Position-wise Feed-Forward Networks

即encoder和decoder中都有的全連接前向網絡,被獨立且相同地應用到每一個位置。它包含了兩個線性變換,並在其中夾了一個relu激活層

不同位置,即不同層的線性變換並不共用參數。

Embeddings and Softmax

詞向量embedding層,線性轉換,softmax機制均可學習。兩個嵌入層和softmax前的線性變換層共用相同的權重矩陣。在嵌入層中,我們把這些權重乘上

Positional Encoding

沒使用卷積或者循環神經網絡,所以必須體現位置信息,即positional encodings。對於不同的頻率,使用正弦和餘弦函數。

每個位置都是正弦信號。波長從2π到20000π不等。原因:我們假設它將使模型能夠很容易地學習相對位置,因爲對於任何固定偏移量k, P Epos+k都可以表示爲P Epos的線性函數。此外,它可能允許模型推斷出比訓練中遇到的序列長度更長的序列長度。

 

設計並選擇Self-Attention的原因

  1. 每一層的計算複雜度
  2. 可並行化的計算量,用序列操作的最小數量來衡量
  3. 網絡中長範圍依賴的路徑長度,很重要的一點是前向傳播和反向傳播在網絡中必經路線的長度,它越短則越容易學習到長範圍的依賴。

self-attention的限制版本,只關心各自輸出位置的r的尺寸內的輸入序列。

具體比較如下

此外,self-attention的可解釋性更強。個體的attention head不僅清楚地學會了執行不同的任務,許多attention head還表現出與句子的句法和語義結構相關的行爲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章