transformer的encoder和decoder學習


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操作:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM