1.Transformer的入門簡介
transformer是一種帶有self-attention的seq2seq 的模型
處理seq2seq的問題最常用的架構是RNN
下圖,左邊的結構是RNN,右邊的結構是self-attention layer,bi可以基於整個輸入序列而得到的。b1,b2,b3,b4是並行計算的。
self-attention layer 可以取代RNN
2.Self-attention的原理
(1)拿每個query q去對每個key k做attention
(2)進行soft-max處理
softmax用於多分類過程中,它將多個神經元的輸出,映射到(0,1)區間內,可以看成概率來理解,從而來進行多分類!
假設我們有一個數組,V,Vi表示V中的第i個元素,那么這個元素的softmax值就是
更加形象的描述是:
理解完softmax,就容易理解下圖了。
(3)得到輸出結果b1
其中,代表乘法的意思。
同理,可以得到b2,b3,b4的值。
(4)利用矩陣的思想理解self-attention的第1,2,3步的執行過程
<1>q,v,k的矩陣化表示
<2>α1,1,α1,2,α1,3,α1,4計算過程矩陣化表示
<3>計算得到b
(4)self-attention計算過程回顧
3.self-attention 未考慮位置信息
self-attention模型中是沒有位置信息的,原始論文中有一個獨特的位置變量ei,這個ei不是從數據中學出來的,而是人為設定的
可以這樣理解,將每個詞的位置信息理解為one-hot的詞向量pi,將pi與xi做拼接。W也可以看做由兩部分WI,WP組成。
4.Transformer非常經典的結構圖
(1)attention的可視化
從下圖中可知,第一個句子,it通過attention知道對應animal,第2個句子通過修改第一個句子的部分內容,可知it對應street
5.Transformer的應用
總結一句話:凡是可以用seq2seq的地方,都可以用transformer