跳至主要內容
ESC
Study Jam:GenAI 開發者實戰 — 第 22/29 篇

編碼器-解碼器架構

編碼器-解碼器架構

課程概述

Encoder-Decoder 是處理「輸入一段內容,再產出另一段內容」的經典架構。翻譯、摘要、語音轉文字,甚至圖片說明,都可以用這個角度來理解。這堂課會先把 Encoder 和 Decoder 的分工講清楚,再比較訓練與實際生成為什麼不太一樣,最後接回 Transformer。

Encoder–Decoder Seq2Seq 架構:Encoder 建立來源序列各位置的上下文,Attention 讓 Decoder 每一步動態讀取相關來源後逐 Token 生成;訓練用正確前一個目標做 Teacher Forcing,推論則回饋自身預測直到 EOS

Attention 解除了早期 RNN 把整段來源壓成單一向量的瓶頸。Transformer 訓練時可用完整的正確目標序列一次計算多個位置;真正生成時沒有後面的答案,仍得把自己的預測接回下一步。

你將學到

  • 描述 Encoder-Decoder 架構的整體資料流向
  • 解釋 Encoder 如何把輸入序列轉成可供 Decoder 讀取的表徵
  • 理解 Decoder 如何利用上下文表徵逐步生成輸出序列
  • 比較 RNN-based 與 Transformer-based 的 Encoder-Decoder 差異

核心概念

Seq2Seq 問題的本質

很多任務都能看成 Seq2Seq:中文翻成英文、長文章濃縮成摘要、語音轉成逐字稿,或把圖片轉成一句描述。輸入與輸出不必等長,輸出的某個位置也可能需要參考來源的好幾個地方。這正是「先建立來源表徵,再依需要生成」這種分工派得上用場的地方。

Encoder 的角色

Encoder 負責把原始輸入轉成 Decoder 能使用的表徵。早期 RNN 架構常以最後的隱藏狀態當摘要,資訊容易卡在固定大小的瓶頸;加入 Attention 後,Decoder 可以讀取 Encoder 在各位置留下的狀態。Transformer Encoder 則直接替每個輸入 Token 建立上下文化表徵,讓來源細節保留得更完整。

Decoder 的角色

Decoder 負責產生輸出。自迴歸 Decoder 每一步都根據已出現的目標 Token,以及 Encoder 提供的來源表徵,預測下一個 Token。Cross-Attention 是兩端之間的橋樑;生成則會持續到結束標記、長度上限或其他停止條件。若使用 Greedy、Beam Search 或取樣,改變的是「下一步怎麼選」,不是 Encoder 的內容。

Teacher Forcing 訓練技巧

訓練時,Decoder 通常會看到向右位移一格的正確目標序列,並學著預測每個位置的下一個 Token,這就是 Teacher Forcing。對 Transformer 來說,因果遮罩會阻止每個位置偷看未來答案,因此多個位置仍能一起計算;RNN Decoder 即使用 Teacher Forcing,時間步本身還是循序的。實際生成時只能接回模型自己的預測,所以前一步出錯可能一路影響下去,這個落差常被稱為 Exposure Bias。

從 RNN 到 Transformer 的演進

早期 Encoder-Decoder 多用 RNN 或 LSTM,序列得一個時間步一個時間步處理。Transformer 改用 Self-Attention、前饋網路與殘差連接:Encoder 整理來源,Decoder 用 Masked Self-Attention 處理目標,再用 Cross-Attention 讀取來源。訓練時平行度提高很多,但自迴歸推論仍要逐 Token 產生,不能說整個流程都完全平行。

Teacher Forcing 讓訓練看到正確的前文;上線生成時只能依賴自己的歷史輸出。測試模型時要用真正的推論流程,不能只看訓練 Loss。

實作重點

  • 畫出完整資料流,分別標註 Encoder Self-Attention、Decoder Masked Self-Attention 與 Cross-Attention
  • 用 TensorFlow 建構一個小型 Seq2Seq 模型,分開實作訓練路徑與逐步生成路徑
  • 比較有無 Attention 機制的 Encoder-Decoder 在長序列翻譯上的表現差異
  • 用同一組模型比較 Greedy、Beam Search 與取樣,記錄品質、延遲和輸出多樣性

Lab 導讀

Lab 連結Encoder-Decoder Architecture — Google Cloud Skills Boost

這個 Lab 主要用架構圖說明各組件。讀圖時先順著來源資料走一遍,再把訓練和推論分成兩條路看;這樣比較不會把 Teacher Forcing 誤解成正式生成時也能看到正確答案。最後再回頭確認 Cross-Attention 的 Query 來自哪裡、Key 和 Value 又來自哪裡。

延伸學習

Study Jam:GenAI 開發者實戰 — 22/29 完成 查看系列全覽 →

留言討論

徽章解鎖!