《Attention Is All You Need》

《Attention Is All You Need》
概述:
谷歌的transformer結構,17年6月,單模型在機器翻譯領域就能吊打所有模型或者組合模型。

筆記:
1.循環神經網絡+attention機制,無法滿足並行計算要求。

2.transformer將詞語詞之間注意力的計算降低至常數複雜度,雖然這種平均注意力權重位置的做法削弱了有效的resolution(這玩意到底是啥),但是多頭機制彌補了這一點。

3.transformer是第一個完全基於自注意力機制的模型,而不是通過RNN+self-attention或者CNN+self-attention。

4.encoder有6層相同的layer組成。每層兩個子層,第一個子層是多頭的self-attention,第二層是個簡單的全連接ffn。每個子層是殘差連接和layer normalization。
每個子層的輸出維度同embedding層,都是512維。

5.decoder也是6層,每層3個子層,新加的子層用來計算編碼器輸出和解碼器輸入的多頭注意力運算,decoder的原多頭注意力層也進行了重新定義,加了mask,確保了當前預測結果只和當前預測結果之前的輸出有關。

6.一個注意力模型可以認爲是一個query和一個輸出的key-value的映射關係。
這裏的query、key、value還有輸出全是向量。輸出被當做所有value的權重和,value的權重是根據query查詢的函數和相應的key計算得到的。

7.transformer中的注意力模型爲“施加了縮放因子的點乘的多投注意力”。縮放因子是根號dk,用所有keys計算query的點積,除以縮放因子,然後通過softmax獲取value的權重,就是value。

8.計算相關性函數由加法式,乘法式,transformer使用的是乘法式,也就是點乘。兩種方式複雜度相同,但是高度優化的點乘式更加節省空間。

9.對於較小的dk值,這兩種機制的性能相似,對於較大的dk[3]值,在不縮放的情況下,加法注意優於點積注意。本文認爲,較大的dk會把softmax推向梯度更新較慢的區域飽和域,所以加了縮放因子。

10.多頭注意力是把單層的“施加了縮放因子的點乘的多投注意力”並行計算,並投影到一個線性空間裏,然後再連接起來,再次投影,獲得最終的輸出。

11.多頭注意允許模型在不同的位置共同關注來自不同表示子空間的信息。用一個注意力頭,平均就能抑制這種情況。

12.每個多頭注意力層有8個並行的self-attention,每個頭的dk dv dmodel = 64 = dmodel/8,這樣每個頭尺寸較小和單頭的全尺寸計算量相當。

未完待續...

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