https://www.infoq.cn/article/lteUOi30R4uEyy740Ht2,這個后半部分講的不錯!
1.Transformer Encoder
(N=6 層,每層包括 2 個 sub-layers):

上面這個圖真的講的十分清楚了。
- multi-head self-attention mechanism多頭自注意力層: 輸出z的shape應該是和x一樣的,既然能在殘差網絡部分相加。
- 全連接網絡:
使用relu作為激活,並且使用了殘差網絡:
2.Decoder

- Masked multi-head self-attention mechanism:由於是序列生成過程,所以在時刻 i 的時候,大於 i 的時刻都沒有結果,只有小於 i 的時刻有結果,因此需要做 Mask。
- Position-wise Feed-forward Networks全連接層:同 Encoder。
- Encoder-Decoder attention 計算。不同於self-att。
Encoder-Decoder attention與self-att的不同:
前者的q來自解碼的輸入,kv來自編碼輸出;后者的qkv來源均是編碼的輸入。
3.Transformer在GPT和BERT中的應用?
-
GPT 中訓練的是單向語言模型,其實就是直接應用 Transformer Decoder;
- Bert 中訓練的是雙向語言模型,應用了 Transformer Encoder 部分,不過在 Encoder 基礎上還做了 Masked 操作;
BERT Transformer 使用雙向 self-attention,而 GPT Transformer 使用受限制的 self-attention,其中每個 token 只能處理其左側的上下文。雙向 Transformer 通常被稱為“Transformer encoder”,而左側上下文被稱為“Transformer decoder”,decoder 是不能獲要預測的信息的。
雙向 self-attention的意思就是計算的att是針對整個句子的吧。而不是只關注左邊或者右邊。
學習了。
4.Decoder中seq mask問題
https://www.zhihu.com/question/369075515,這個回答的蠻好的!
總的來說訓練時,decoder是並行的,在計算第i個輸出的時候,只能看到i之前的輸出,而不能看到它后面的,所以就用一個三角矩陣來進行mask,讓它不能看到后面的內容。
https://www.zhihu.com/question/337886108,這個講了shift right操作:

