iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0

昨天我們介紹了 RNN 的基本概念,知道它可以記住先前的輸入,適合拿來處理序列資料。

但是,當我們想要做「序列到序列(seq2seq)」的轉換時(例如把一句中文翻譯成英文),會遇到一個挑戰:輸入和輸出的長度往往不一樣,而且需要先「完整理解」整個輸入,才能開始生成輸出。

因此,有了 Encoder-Decoder 架構 的誕生。

今天,我們就來學習如何用「Encoder-Decoder 架構」來解決這個難題~它是現代機器翻譯與許多 AI 應用的基礎!


Encoder-Decoder 架構

Encoder-Decoder 是一種「序列到序列」(Sequence-to-Sequence, seq2seq) 的架構模式,主要是把任務分成兩個階段:

  • Encoder(編碼器): 將輸入序列編碼成一個固定長度的向量,稱為 context vector(上下文向量)
  • Decoder(解碼器): 根據這個 context vector 逐步生成輸出序列

最早的 Encoder-Decoder 是使用 RNN/LSTM/GRU 來實作,屬於多對多(many-to-many)的架構形式。

運作流程

以機器翻譯為例,假設我們要把「我愛吃芭樂」翻譯成英文:

  1. Encoder 階段

    • 讀取整個輸入序列:「我」→「愛」→「吃」→「芭樂」
    • 每個時間步都更新 hidden state
    • 將所有資訊和意義壓縮成一個 context vector(通常是最後一個 hidden state),我們可以把它理解為對整個輸入句子的「最終理解」或「精華記憶」。
  2. Decoder 階段

    • 接收 context vector 作為初始狀態
    • 逐步生成輸出:「I」→「love」→「eating」→「guavas」
    • 每一步的輸出會成為下一步的輸入

這樣的設計讓模型可以先「完整理解」輸入的意思,再開始生成對應的輸出。

Encoder-Decoder 的組合

Encoder-Decoder 的一大優勢是架構的彈性。Encoder 和 Decoder 不一定要用相同類型的模型,可以根據任務特性選擇最適合的組合:

應用範例

  • RNN + RNN:機器翻譯(文字到文字)
  • CNN + RNN:影像描述生成(影像到文字)
    • CNN 作為 Encoder 抓取影像特徵
    • RNN 作為 Decoder 根據特徵生成文字描述
  • RNN + CNN:語音合成(文字到聲譜圖)

這些多樣化的組合,可以讓 Encoder-Decoder 應用在各種不同的序列轉換任務上~


傳統 Encoder-Decoder 的問題

雖然 Encoder-Decoder 架構很強大,但它也有一些明顯的缺點:

Bottleneck(瓶頸)問題

前面有提到,在進入 decoder 前,所有輸入的資料都要變成一個固定長度的 context vector。

我們可以想像一下,如果要把一支高畫質的影片壓縮成檔案大小很小的影片,畫質一定會變得很差。同樣的道理,當輸入序列很長時,也就是文本很長的話, context vector 很難保留所有重要的資訊。

當句子越長,context vector 需要「記住」的資訊就越多,但它的容量是固定的,所以必然會遺失一些細節。

解決方案:Attention 機制

為了解決 bottleneck 問題,有學者提出了 Attention(注意力)機制

Attention 的核心概念

傳統方法的問題是:Decoder 只能看到一個固定的 context vector。

Attention 的改進

  • 讓 Decoder 在生成每個字時,可以「回頭看」Encoder 的 所有時間步
  • 不再只依賴單一的 context vector
  • 可以比較有彈性地決定要關注輸入的哪些部分

小結

今天我們學習了Encoder-Decoder 架構,它是處理序列到序列(Seq2Seq)任務的基礎,由 Encoder 和 Decoder 組成。早期的 RNN-based 架構存在瓶頸問題 (Bottleneck),因為所有資訊必須壓縮成一個固定長度的 context vector,導致長序列時容易遺忘早期資訊且無法平行運算。為了解決這個限制,引入了 Attention 機制,它大幅提升了模型處理長序列的能力與準確度~(明天再來多講一點Attention😏)

明天會介紹 Transformer,它把 Attention 機制發揮到了淋漓盡致,是一個非常重要的突破!!

Reference 1
Reference 2
Reference 3


上一篇
Day 22 - RNN(循環/遞歸神經網路)
下一篇
Day 24 - Transformer
系列文
AI、機器學習以及深度學習的語言學應用26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言