Attention is All you Need Transformer模型簡記

參考了:https://www.jianshu.com/p/ef41302edeef?utm_source=oschina-app

文章要點:

  1. 達到了new state of art。
  2. 用transformer模型代替傳統的lstm/rnn,提供並行方法,降低計算複雜度,訓練更快。
  3. 引入position embedding代替rnn時序特徵。

以機器翻譯爲例解析transformer,其實分爲兩個sublayer,一個是multi-head attention,另外一個是 feed foward。兩個sublayer都用了殘差連接和lyaernorm。

  • Scaled dot-product attention

attention一共有三種。

  1. 用於encoder self-attention,用來提取輸入之間的相關性和側重點,可以代替時序特徵。
  2. 用於decoder self-attention,用來提取輸出之間的相關性和側重點,不同的是要加mask即只能前面影響後面。
  3. 用於encoder-decoder self-attention,計算翻譯過程中的每個目標字對於輸入的不同側重。

以第三種爲例:

 

一般情況下K和V相同,核心思想都是計算目標和源的相似度,softmax得到得分,然後點乘V,得到加權後的結果。

計算相似度的方法有好多種,參見http://phontron.com/class/nn4nlp2017/assets/slides/nn4nlp-09-attention.pdf

大概有拼接加權(適用於大數據),變維相乘,和點乘等。

然後到了multi-head。

本質上就是對不同的head實現不同的線性轉換,每個head表示獨特的信息,假設原來的維度是[batch, max_seq_len, dim]

論文中用了head=8, dim=512(詞向量維度),dk-dv-domodel/h=64

我們先轉換成dim/head = 512/8 = 64,輸入點乘[512, 64],變成[batch, max_seq, 64]

這樣操作8次就得到[batch, 8, max_seq_len, 64],這也就是multi-head attention

然後接下來就是線性加權,點乘一個[h*dv,dim]的權重矩陣,會發現數據被還原成[batch, max_seq_len, dim],但這是加了attention權重之後的結果啦。

 

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