論文中心思想:提出了一種只使用注意力機制的模型,模型中沒有結合任何RNN或CNN,通過encoder--decoder的模型實現出了一種強力有效的模型。
引言與背景
在注意力機制誕生後,誕生了多種改進的模型,但是這些模型一般都是把注意力機制與循環神經網絡結合(包括一些改良的,如LSTM),但是這些模型有個弊端,就是並行計算能力不強,爲解決這一些問題,論文提出了一種僅基於注意力機制的模型,具有強大的並行計算性以及效果很好。
模型結構
總的模型結構爲encoder-decoder,在編碼器中,把符號表示的輸入序列映射爲連續的表示
,得到了z之後,解碼器生成符號輸出序列
,一次一個地生成。
模型結構圖:
編碼解碼器:
Encoder:編碼器由6層一樣的層組成,每一層有兩個子層。第一層是一個多頭自注意力機制,另一層是一個簡單的全連接前饋網絡。在標準化層之後,這兩層各自都採用一個殘差連接,每一個子層的輸出是,其中
是子層本身實現的函數。爲了優化這些殘差裂解,模型中的所有子層以及嵌入層都生成維度512的輸出。
Decoder:解碼器也是6層一樣的層組成的,出來2個在每個編碼器中的子層,第三個是在編碼器輸出後面的一個多頭自注意力層。與編碼器類似,每一個子層標準化後都用一個殘差連接包圍。還有一個爲了保證序列信息的掩蓋層。
注意力
一個注意力函數其實就是把一個query,一個key-value的集合(關於query,key,value可以看這篇論文:Key-Value Memory Networks for Directly Reading Documents)映射成一個輸出,其中query,key,value,output都是向量。輸出其實是values的加權求和,其中分配給每個值的權重通過一個相關函數計算query與當前key的相關程度。
縮放點乘積注意力
輸入包括:querie和key都是維,value爲
維,
計算query和所有key的點積後,除以(爲了防止梯度消失),以及用一個softmax函數得到全美一個value的權重。
事實上,計算的時候通過矩陣實現並行計算。
使用點成的原因是因爲可以通過一些高效的優化手法提升速度。
多頭注意力
其實就是把多個自注意力連起來
同時,通過減低維度來減少總就算消耗。
全連接前饋網絡
Transformer中所有全連接網絡都是一樣的,由兩個線性轉換和中間一個RELU函數組成 。
位置編碼
因爲模型沒有使用卷積或者循環結構,爲了使用到序列中的順序信息,必須增加相對或絕對位置信息。爲此論文加入了位置編碼在編碼器和解碼器的下方。
其中,pos是位置,i是維度