Transformer DecoderLayer 結(jié)構(gòu)與工作原理詳解

Q1:DecoderLayer 包含哪些子層?
A1:DecoderLayer 由三大子層組成:

  1. 自注意力子層(self?attn)
  2. 交叉注意力子層(cross?attn)
  3. 前饋網(wǎng)絡(luò)子層(ffn)

每個子層都有獨立的 殘差連接LayerNorm(分別為 norm1、norm2norm3)。


Q2:自注意力子層的輸入、輸出以及殘差/歸一化過程是怎樣的?
A2

  • 輸入:解碼器當前時刻的目標序列表示 tgt(形狀 (batch, tgt_len, d_model))。
  • 計算self_attn(tgt, tgt, tgt, tgt_mask),即 Q = K = V = tgt。
  • 殘差 + 歸一化:將自注意力的輸出 output 與原始 tgt 相加,再經(jīng)過 DropoutLayerNormnorm1),得到 x?(殘差歸一化后的表示),該 x? 將作為后續(xù)交叉注意力的查詢(Q)。

Q3:交叉注意力子層的查詢、鍵、值分別是什么?它們是如何連接的?
A3

  • 查詢 Q:來自自注意力子層的殘差歸一化輸出 x?(而不是原始自注意力輸出)。
  • 鍵 K 與值 V:均為 編碼器的輸出 src(即 memory),二者相等。
  • 計算cross_attn(x?, src, src, src_mask)
  • 殘差 + 歸一化:交叉注意力的輸出 outputx? 相加,經(jīng)過 DropoutLayerNormnorm2),得到 x?,隨后作為前饋網(wǎng)絡(luò)的輸入。

Q4:前饋網(wǎng)絡(luò)子層的結(jié)構(gòu)與殘差/歸一化是怎樣的?
A4

  • 輸入:交叉注意力子層歸一化后的輸出 x?。
  • 結(jié)構(gòu):兩層全連接層 Linear(d_model → d_ff)ReLUDropoutLinear(d_ff → d_model)。
  • 殘差 + 歸一化:前饋網(wǎng)絡(luò)的輸出 outputx? 相加,經(jīng)過 DropoutLayerNormnorm3),得到 x?,即 DecoderLayer 的最終輸出。

Q5:每個子層的殘差連接和 LayerNorm 是否相互獨立?
A5:是的。自注意力、交叉注意力、前饋網(wǎng)絡(luò)各自擁有獨立的殘差路徑和對應(yīng)的 LayerNormnorm1、norm2norm3),互不共享。


Q6:對原先描述的細節(jié)需要哪些更正?
A6

  • 原描述中“使用解碼器第一個多頭注意力層的輸出作為 Q”應(yīng)更準確地表述為 “使用自注意力子層經(jīng)過殘差連接和 LayerNorm 之后的輸出 x? 作為 Q”。
  • 其他關(guān)于 K、V 均為編碼器輸出、前饋網(wǎng)絡(luò)輸入為交叉注意力歸一化輸出的描述是正確的。

結(jié)論:DecoderLayer 的工作流程為:
self_attn → norm1 → cross_attn → norm2 → ffn → norm3,每一步均伴隨殘差連接,確保梯度流通并提升模型表達能力。

附錄
Paper: https://arxiv.org/abs/1706.03762
Transformer?from?Scratch: https://github.com/Breeze648/Transformer-from-Scratch

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容