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

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 產生,不能說整個流程都完全平行。
流程圖暫時無法顯示,請重新整理頁面後再試。
實作重點
- 畫出完整資料流,分別標註 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 又來自哪裡。
延伸學習
- 注意力機制 — Attention 的詳細原理
- Transformer 與 BERT 模型 — 完整的 Transformer 實作
- 圖片說明生成模型 — Encoder-Decoder 在視覺任務中的應用