李宏毅《Deep Learning》學習筆記 - transformer

學習資料

視頻: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相乘,求和,求得b1b^1
在這裏插入圖片描述
對於b2b^2的計算方法,也是類似
在這裏插入圖片描述
在這裏插入圖片描述
下面來看看如何使用矩陣計算來做並行計算。
將輸入的x1,x2,x3,x4x^1,x^2,x^3,x^4做變換以後,變成a1,a2,a3,a4a^1,a^2,a^3,a^4。將a1,a2,a3,a4a^1,a^2,a^3,a^4作爲矩陣的每一列,組成一個II,再分別乘以Wq,Wk,WvW^q, W^k, W^v,得到想相應的Q,K,VQ,K,V。每一列就是前面介紹的qi,ki,viq^i,k^i,v^i
在這裏插入圖片描述
再看一下計算α^\hat{\alpha}bb的過程。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
最後,我們再回顧一下,整個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。
在這裏插入圖片描述

論文實驗

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

其他應用

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

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