transformer筆記

來自李宏毅老師的課程筆記,http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML19.html

0.前置基礎

RNN: 優點:可以獲取全局信息 缺點:不能並行計算
CNN: 優點:GPU並行計算 缺點:bigram僅能觀察到本地信息
self-attention層:
x1: input sequence item
a1: item embedding
q1: query(match others), ==Wq * a1
k1: key(to be matched by query), ==Wk * a1
v1: information(to be exacted), ==Wv *a1

1.self-attention

1.1 scaled dot-product attention
那每一個query,去對每一個key做attention
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sS8AEWGv-1583759023810)(./DL_picture/transformer1.png)]
1.2 aij softmax
1.3 get bi
b1 = sum(a1i * vi),相當於item i包含了全局信息
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eFAZzWCs-1583759023815)(./DL_picture/transformer2.png)]
1.4 矩陣運算
self_attention轉化爲Q,K,V之間的矩陣運算,便於並行計算
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZkYC7I0p-1583759023825)(./DL_picture/transformer3.png)]

2.multi-head self-attention

將輸入ai,得到multi的Q,K,V矩陣
相當於原來同一個位置的bi,產生多個。期望他們關注"不同"的全局信息
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XEznCt5Z-1583759023829)(./DL_picture/transformer4.png)]

3.position Encoding

原有的selft-attention layer是沒有位置信息,如何補充上位置信息呢?
輸入ai = ai+ei,ei embeddig是人爲指定的。原理:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PGZJQSVt-1583759023832)(./DL_picture/transformer5.png)]

4.Transformer

Encoder的模塊:
4.1 input encoding & positional encoding
4.2 multi-head attention
4.3 add & norm
add: 將輸入ai 和 self-attention輸出bi相加(而非concat), ==> ai + bi
norm: layer_norm(ai+bi)
備註: layer_num是將每一條數據的embedding歸一化; batch_num是將同一個維度數據做歸一化

Decoder的模塊:
4.4 masked multi-head attention
decoder的輸入是one step - one step的,需要做maskd矩陣以免無效的計算
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FdH53HEK-1583759023840)(./DL_picture/transformer6.png)]

5.其它

self-attention如何僅僅使用本地信息?
計算bi時,將非本地的token的vi設置爲0?

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