1. 程式人生 > 其它 >Transformer架構記錄(四)

Transformer架構記錄(四)

Transformer架構記錄(一、二、三)針對Transformer的Encoder-block部分做了簡要介紹,本文作為該系列的最終章,將以Decoder-block介紹結束本系列。

一個完整的Decoder-block的結構如下所示:

Decoder-block與Encoder-block的差別在以下幾處:

  1. 第一個 Multi-Head Attention 層採用了 Masked 操作;
  2. 第二個 Multi-Head Attention 層的 K, V 矩陣使用 Encoder 的輸出,進行計算,而 Q 使用上一個 Decoder block 的輸出計算。

Masked Multi-Head Attention

  1. 在計算得到 Q、K、V 之後,計算 Q 和 K 轉置的乘積 QK^T;

  2. 在對QK^T 進行 Softmax 之前需要使用 Mask 矩陣遮擋住每一個單詞之後的資訊,遮擋操作如下圖所示:

  1. 在得到的 Mask QK^T 上進行 Softmax,使得每一行的和都為 1.

  2. 將經過 Softmax 操作的 Mask QK^T 與矩陣 V 相乘得到輸出 Z;和 Encoder 類似,通過 Multi-Head Attention 拼接多個輸出 Z_i 然後計算得到第一個 Multi-Head Attention 的輸出 Z,Z 與輸入的 X 維度一樣

第二個 Multi-Head Attention

Decoder block 第二個 Multi-Head Attention 與 Encoder block 的 Multi-Head Attention 主要區別在於,其中 Self-Attention 的 K, V 矩陣不是使用 上一個 Decoder block 的輸出計算的,而是使用 Encoder 的輸出矩陣 C 計算的。

即,對於 Self-Attention 設定的(WQ、WK、WV),
Q = ZWQ (如果是第一個 Decoder block 則使用輸入矩陣 X 替代 Z 進行計算,其餘Decoder block則使用前一個Decoder block 的輸出 Z 進行計算)
K = C

WK
V = C*WV

通過堆疊多個 Decoder block ,得到解碼器 Decoder.

預測輸出

在 Decoder 的最後輸出 Z 中,其包含的資訊分佈如下圖所示:

Softmax 作用於 Z 每一行,用於預測下一個單詞,如下圖所示:

參考資源
連結:https://www.jianshu.com/p/9b87b945151e
《Attention is all you need》

作者: python之家

出處: http://www.cnblogs.com/pythonfl/

本文版權歸作者和部落格園共有,轉載時請標明本文出處;如對本文有疑問,歡迎郵件[email protected]聯絡;如發現文中內容侵犯到您的權利,請聯絡作者予以處理。