iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
AI & Data

30 天入門常見的機器學習演算法系列 第 28

(Day 28) Seq2Seq (Encoder Decoder with RNN, LSTM, GRU)

  • 分享至 

  • xImage
  •  

在前幾天的文章中,我們依序介紹了 RNN、LSTM、GRU,並討論它們如何建模序列資料。這些模型能夠捕捉序列中的上下文關係,並緩解傳統 RNN 的梯度消失問題。然而,若我們想要處理更複雜的任務——例如機器翻譯 (Machine Translation),僅僅依靠單向 RNN 或 LSTM 並不夠。

這就引出了今天的主角: Seq2Seq 架構 (Sequence-to-Sequence Model)。它的核心思想是利用「編碼器 (Encoder)」將輸入序列壓縮成一個上下文表示,再由「解碼器 (Decoder)」生成輸出序列。這種架構在 2014 年被 Sutskever 等人首次提出,用於神經機器翻譯 (Neural Machine Translation, NMT),開啟了 NLP 領域的一個新時代。

Seq2Seq 的核心思想

假設我們要將一句英文句子翻譯成中文:

輸入: “I am happy today.”
輸出: “我今天很高興。”

傳統的 RNN/LSTM 模型只能處理輸入和輸出的對應關係,但無法直接處理「序列到序列」的轉換問題。Seq2Seq 則透過 Encoder-Decoder 的設計,讓模型能夠處理 輸入與輸出長度不同的情況,這正是翻譯、摘要、對話等任務的核心需求。

核心流程:

  1. Encoder:讀取輸入序列,將其壓縮成一個固定維度的上下文向量 $c$。
  2. Decoder:根據上下文向量 $c$ 與先前輸出的資訊,逐步生成輸出序列。

Seq2Seq 的數學形式

  1. 編碼器 (Encoder)
    • 輸入序列: $X = (x_1, x_2, \dots, x_T)$
    • 隱藏狀態更新:
      $$
      h_t = f(h_{t-1}, x_t)
      $$
    • 最後的隱藏狀態 $h_T$ 作為上下文向量 $c$。
  2. 解碼器 (Decoder)
    • 初始狀態: $s_0 = c$
    • 每一步輸出:
      $$
      s_t = f(s_{t-1}, y_{t-1})
      $$
      $$
      \hat{y}_t = g(s_t)
      $$
      其中:
  • $f$ 可以是 RNN / LSTM / GRU 單元
  • $g$ 通常是 softmax 層,用來輸出詞彙的機率分布

Encoder-Decoder 結構

從結構上看,Seq2Seq 就像是一個「兩段式」神經網路:

  • Encoder: 讀完整個輸入序列,把資訊壓縮成一個向量。
  • Decoder: 依靠這個向量,不斷生成輸出,直到遇到「結束符號 (EOS)」。

這種設計使得模型能處理輸入長度與輸出長度不相等的情境。例如:

  • 英文翻譯成中文 (詞數不同)
  • 長文章生成短摘要
  • 對話系統生成多輪回覆

Seq2Seq 的直觀比喻

你可以把 Encoder 想成一個「翻譯助理」,把整段英文聽完後,壓縮成腦海中的一個「意思總結」;而 Decoder 則像是「翻譯員」,根據這個意思總結,再逐字逐句地說出中文。

Seq2Seq 的優缺點

優點:

  1. 靈活性:能處理輸入與輸出長度不一致的任務。
  2. 通用性:同一個框架可應用於翻譯、摘要、對話、時間序列預測。
  3. 端到端學習:避免了傳統 NLP 中複雜的特徵工程。

缺點:

  1. 瓶頸效應 (Bottleneck Problem)
    • 所有資訊被壓縮到單一向量 $c$,在長序列時容易遺失細節。
  2. 長序列困難
    • 即便使用 LSTM/GRU,仍難以捕捉超長依賴。
  3. 生成速度慢
    • Decoder 是逐步生成,無法並行化。

Seq2Seq 的實務應用

  1. 機器翻譯 (Neural Machine Translation)
    • 最經典的應用,將英文翻譯成中文、法文翻譯成英文。
  2. 摘要生成 (Text Summarization)
    • 輸入一篇長文章,輸出簡短摘要。
  3. 對話系統 (Dialogue System)
    • 輸入使用者的問題,輸出合適的回覆。
  4. 時間序列預測
    • 輸入過去的數據 (例如股價),輸出未來的預測值。

結語

Seq2Seq 架構 (Encoder-Decoder) 是深度學習處理序列到序列任務的經典解法。它透過 Encoder 壓縮輸入,再由 Decoder 逐步生成輸出,成功應用於機器翻譯、摘要生成、對話系統等多種任務。

然而,Seq2Seq 最大的瓶頸在於所有資訊都被壓縮到單一上下文向量,導致長序列表現不佳。這個缺陷直接促使了 Attention 機制的誕生,並最終引領 Transformer 成為 NLP 的主流。

在下一篇,我們將深入探討 Attention 機制,看看它是如何突破 Seq2Seq 的限制,並奠定後來 GPT 與大型語言模型的基礎。


上一篇
(Day 27) 閘控循環單元 (Gated Recurrent Unit)
下一篇
(Day 29) 注意力機制 (Attention Mechanism)
系列文
30 天入門常見的機器學習演算法30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言