學習資料
視頻:https://www.youtube.com/watch?v=ugWDIIOHtPA&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61&t=1s
課件:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2019/Lecture/Transformer%20(v5).pdf
Transformer
Transformer是Seq2Seq with Self-Attention
BERT是unsupervised learning版本的Transformer
Seq2Seq Model的問題
Seq2Seq Model最大的問題就是慢,沒法並行化。下圖左側是Seq2Seq的工作原理,右側是使用CNN來做處理的過程。使用CNN最大的好處就是可以並行化處理。
相較於Seq2Seq Layer而言,可以直接使用Self-Attention Layer替代原先的RNN層,同時,可以引入並行化的作用。輸入和輸出保持不變。
Self-Attention
對每一個Input都做變換,生成q,k,v三種向量。然後,用q與每一個k做attention(所謂的attention,就是計算兩個vector的相關性,或者相似度)。
attention有多種計算方法,下面使用的是scaled dot-product attention。
接着,將所有的attention value都做soft-max
將經過soft-max的值,與每一個v相乘,求和,求得
對於的計算方法,也是類似
下面來看看如何使用矩陣計算來做並行計算。
將輸入的做變換以後,變成。將作爲矩陣的每一列,組成一個,再分別乘以,得到想相應的。每一列就是前面介紹的
再看一下計算和的過程。
最後,我們再回顧一下,整個self-attention的計算過程。
Multi-head Self-Attention
Positional Encoding
Seq2Seq with Attention
將原先的RNN層,用self-attention layer代替,就好了。
架構分析
下面是Transformer的完整架構,包括Encoder和Decoder。
下面是對架構中每個組成部分的詳細介紹。
其中,Multi-Head Attention就是上面介紹的self-attention layer。
Add & Norn是下圖左上黃色區域的解釋。Add是將輸入a與輸出b相加。Norm是指Layer Norm。
這裏將Layer Norm與Batch Norm進行對比,其中,Layer Norm是將一個樣本中每個維度的值進行normaliztion,而Batch Norm是將一個batch中同一個dim的值做normalization。
論文實驗
其他應用