iPAS AI 應用規劃師 中級 科目一

Seq2Seq 適合哪種任務?

原題 16

下列哪一種情境中最適合使用「序列到序列(Seq2Seq)」模型?

白話

「序列到序列(Seq2Seq,Sequence-to-Sequence)」是一種模型架構,名字已經說清楚它做什麼:輸入一個「序列」,輸出另一個「序列」。

問你:哪種任務該用 Seq2Seq?

點選你的答案。

01 總結

一句話總結

Seq2Seq 最適合「輸入一段文字,輸出語意等價的另一段文字」的任務,也就是將輸入文字轉換成語意等價的另一段文字,如自動翻譯或摘要生成,因為輸入長度和輸出長度都可以不同,但意義要保留。

02 情境

先感受問題:輸入和輸出的「長度」不一樣時,怎麼辦

假設「全球通」翻譯平台的工程師蔡芸要建立一個中翻英系統:

輸入(中文):「人工智慧技術正在快速改變各行各業的運作方式」(20 個字)
輸出(英文):「Artificial intelligence technology is rapidly transforming the way various industries operate」(13 個英文詞)

關鍵問題:輸入 20 個中文字,輸出 13 個英文詞。輸入和輸出的長度不同,而且你在開始翻譯之前,根本不知道輸出會有幾個詞。

一般的神經網路(如 MLP、CNN)假設輸入和輸出的維度是固定的,沒辦法處理「長度可變的輸入到長度可變的輸出」。

這就是 Seq2Seq 要解決的核心問題。

03 對照

在 Seq2Seq 出現前,翻譯系統怎麼做

早期機器翻譯用「統計方法」,踩了五個坑:

  1. 詞對詞翻譯的慘況:「我吃了很多飯」→「I eat many rice」,每個詞對一個詞翻,語法全錯,沒有整句語義的理解。
  2. 需要語言學家手工寫規則:要針對每個語言對(中英、英法)寫上千條語法規則,維護成本極高,換一個語言就要重頭來。
  3. 無法處理長距依賴:「雖然下雨,但他還是去了」,「雖然」和「還是」是一對,但如果句子很長,詞對詞翻譯完全抓不到這個關係。
  4. 固定長度向量的瓶頸:早期 RNN Encoder-Decoder 架構把整句壓縮成一個固定長度的向量,長句子的資訊丟失嚴重,句子越長翻得越爛。
  5. 無法共享跨任務知識:翻譯系統和摘要系統完全獨立,各自訓練,但兩個任務都是「文字轉文字」,底層能力本來可以共享。
04 解法

Seq2Seq 的 Encoder-Decoder 架構怎麼解

蔡芸用的 Seq2Seq 模型分成兩個部分:

Encoder(編碼器):讀取輸入的中文句子,一個字一個字讀進去,把整個句子「理解」成一個意義向量(context vector)。

Decoder(解碼器):從這個意義向量開始,一個詞一個詞地生成英文,直到輸出「句子結束」符號。

輸入:「人工智慧技術正在快速改變各行各業」
→ Encoder 把它變成一個意義向量 [0.23, -0.81, 0.47, ...]
→ Decoder 從向量開始生成:「Artificial」→「intelligence」→「technology」→「is」→「rapidly」→「transforming」→「...」→「[END]」

重點是:Encoder 輸入多少個字都行,Decoder 輸出多少個詞都行,兩者透過意義向量連接,不需要長度一致。

這個架構之所以是 Seq2Seq 的「核心」,是因為它讓「文字轉文字」類的任務都能用同一個框架處理:翻譯、摘要、問答、對話、程式碼生成,全都是「一段文字 → 語意等價的另一段文字」。

這就是選項 D 講的:將輸入文字轉換成語意等價的另一段文字,如自動翻譯或摘要生成

技術版:Seq2Seq 架構與 Attention 機制的原理

中級考試大概率會考程式碼跟公式,所以這部分你還是要學。但如果現在學起來很痛苦,可以先跳過,等讀完其他題目回頭再來。

Seq2Seq 架構的基礎版使用 RNN(Recurrent Neural Network,遞迴神經網路)作為 Encoder 和 Decoder,但現代版本已幾乎全面改用 Transformer。

Step 1 純故事版
  1. Encoder 讀入整個輸入句子,把它「消化」成一個意義向量(context vector)
  2. Decoder 拿到這個向量,開始逐詞生成輸出
  3. 每生成一個詞,這個詞成為下一步的輸入(自迴歸生成)
  4. 遇到特殊的「[END]」符號,停止生成
  5. Attention 機制讓 Decoder 在生成每個詞時,回頭「注意」輸入句子的不同部分
Step 2 中文 ↔ 程式碼對照
故事概念符號
讀入輸入序列Encoder: h_t = f(x_t, h_{t-1})
壓縮成意義向量context c = h_T(Encoder 最後隱藏狀態)
解碼器初始狀態Decoder: s_0 = c
逐詞生成輸出y_t = g(s_t, y_{t-1})
Attention 注意力分數α_t = softmax(score(s_t, h_i))
Step 3 符號角色表
Encoder
負責「讀懂」輸入序列,把整個輸入轉換成向量表示(隱藏狀態)。
Decoder
負責「生成」輸出序列,從 Encoder 的向量開始,一個詞一個詞地輸出。
Context Vector(意義向量)
Encoder 把輸入句子壓縮成的一個固定長度向量,傳給 Decoder 作為「理解輸入的記憶」。
Attention(注意力機制)
讓 Decoder 在生成每個輸出詞時,動態關注 Encoder 不同位置的輸出,解決了固定 context vector 的資訊瓶頸問題。
自迴歸生成(Autoregressive)
Decoder 每次生成一個詞,這個詞作為下一步的輸入,「用自己生的詞接著生」。
Step 4 完整公式對應

Attention 機制的核心公式(Bahdanau Attention):

# Attention 分數:衡量 Decoder 的當前狀態 s_t
# 與 Encoder 的每個隱藏狀態 h_i 的相關性
score(s_t, h_i) = v^T × tanh(W_s × s_t + W_h × h_i)

# 轉成機率分佈(各位置的注意力權重)
α_{t,i} = softmax(score(s_t, h_i))

# 加權平均 Encoder 的隱藏狀態,得到動態 context vector
c_t = Σ_i α_{t,i} × h_i

# Decoder 用動態 context 生成當前詞
y_t = softmax(W_y × [s_t ; c_t])

直觀理解:翻譯「蘋果(apple)」時,Attention 會讓 α 在輸入「蘋果」那個位置附近最高,讓 Decoder 知道「現在要翻譯的是這個部分」。

Step 5 自我複述

蓋住公式,說出 Seq2Seq + Attention 的流程:

  1. Encoder 讀入輸入序列,產生每個位置的隱藏狀態
  2. Decoder 開始生成,每步計算和 Encoder 各位置的 Attention 分數
  3. Attention 分數轉成權重(softmax),加權平均 Encoder 隱藏狀態
  4. Decoder 結合自己的狀態和動態 context,預測下一個詞
  5. 重複到輸出「[END]」停止
05 陷阱

為什麼其他選項是錯的

A預測銷售趨勢曲線,輸出未來數值序列

字面在說什麼

輸入過去幾個月的銷售數字,輸出未來幾個月的預測數字。看起來也是「序列進、序列出」,應該符合 Seq2Seq?

為什麼不對

這是時間序列預測(Time Series Forecasting)任務。雖然確實有「序列輸入,序列輸出」的形式,但輸入和輸出是同一個「值域」(都是數字),且輸出是輸入的延伸(預測未來),不是「語意轉換」。傳統上用 LSTM、ARIMA、Prophet 等時間序列模型,而不是 Seq2Seq。更關鍵的是,Seq2Seq 的設計動機是「語意空間的轉換」(中文意思 → 英文意思),不是數值序列的外插(extrapolation)。

誰會選錯

看到「序列輸出」就聯想到 Seq2Seq 的人。關鍵是輸出是否需要「語意理解與重新生成」,預測未來銷售數字是數學外插,不需要語意理解。

B辨識文本中出現的人名、地名與組織名稱等實體資訊

字面在說什麼

讀入一段文字,找出裡面的「蘋果公司(組織名)」「台北市(地名)」「林雅翠(人名)」,給每個詞貼標籤。

為什麼不對

這是命名實體識別(NER,Named Entity Recognition)任務,屬於「序列標注(Sequence Labeling)」類型,不是序列轉序列。輸入是詞序列,輸出是對應的標籤序列(每個詞對應一個標籤:O / B-PER / I-PER / B-LOC …),輸入和輸出長度一樣,是「一對一」的對應,不是 Seq2Seq 的「任意長度輸入到任意長度輸出」。NER 更常用 BERT + CRF 架構。

誰會選錯

看到「從文字裡提取資訊」就聯想到 Seq2Seq 的人。NER 的輸出雖然也是序列,但長度和輸入相同,每個位置一一對應,不需要「編碼整句再解碼成新序列」的機制。

C對輸入文本中的關鍵字進行頻率統計與可視化

字面在說什麼

分析一篇文章,統計哪些詞出現最多次,畫出文字雲或長條圖。

為什麼不對

這根本不是機器學習模型的任務,而是基本的詞頻統計(Frequency Count),用 Python 的 collections.Counter 或 TF-IDF 就能做,完全不需要神經網路,更不需要 Seq2Seq。Seq2Seq 處理的是「語意理解後的文字生成」,和「數數哪個詞出現幾次」毫無關係。

誰會選錯

對「AI 分析文字」和「統計分析文字」沒有區分的人。AI 模型是在「沒有明確規則的情況下自動學習語言規律」,而詞頻統計是有明確計算規則的算法,兩者差很多。

06 變形

同個考點下次怎麼變形

變形 1 邊界

對話系統(聊天機器人)算是 Seq2Seq 嗎?

直覺

使用者說一句話,機器人回一句話,是「序列進、序列出」,應該是 Seq2Seq?

答案

是的,對話系統是 Seq2Seq 的經典應用之一。輸入是使用者的話(序列),輸出是機器人的回覆(語意等價但不同形式的序列)。早期對話系統確實直接套 Seq2Seq 架構,現代則改用更強大的 Transformer 架構(如 GPT、T5),但底層邏輯仍然是 Seq2Seq 的 Encoder-Decoder 概念。GPT 的「Pure Decoder」架構是 Seq2Seq 的一個特例(Encoder 和 Decoder 合在一起)。

變形 2 反例

圖像描述生成(Image Captioning)是 Seq2Seq 嗎?

直覺

輸入是圖片(不是序列),輸出是一段描述文字(序列),算 Seq2Seq 嗎?

答案

是「廣義 Seq2Seq」,但輸入不是序列。圖像描述生成的架構是 CNN Encoder(把圖片轉成向量)+ RNN / Transformer Decoder(生成文字),原理和 Seq2Seq 相同(Encoder 理解輸入,Decoder 生成輸出),但嚴格定義的 Seq2Seq 輸入是序列。現代做法把圖片切成 patches 後用 ViT 處理,這樣輸入就真的是序列了。

變形 3 升級版

Transformer 和 Seq2Seq 的關係是什麼?

直覺

現在大家都在講 Transformer,Seq2Seq 是舊技術了嗎?

答案

Transformer 是 Seq2Seq 框架的進化版實作。原始 Seq2Seq 用 RNN 實作 Encoder 和 Decoder,有處理長序列時資訊遺失的問題。Transformer(2017 年 Google「Attention is All You Need」論文)用 Self-Attention 完全取代 RNN,解決了長距依賴問題,訓練速度也大幅提升。T5、BART 等模型都是「Transformer 架構的 Seq2Seq 模型」,概念框架(Encoder 理解、Decoder 生成)完全一樣,只是內部實作用 Transformer 取代了 RNN。

變形 4 跨領域

Seq2Seq 在生物資訊學有哪些應用?

直覺

Seq2Seq 是自然語言處理技術,和生物學有什麼關係?

答案

DNA 序列和蛋白質序列都是「序列」,Seq2Seq 的框架完全可以套用。主要應用有三個:第一是 DNA 序列到蛋白質序列的預測(基因表達);第二是蛋白質結構預測的中間步驟;第三是分子翻譯(把一種化學結構表示法轉換成另一種)。AlphaFold 雖然不是純 Seq2Seq,但它的 Encoder 部分用了 Seq2Seq 相關的 Transformer 技術處理蛋白質序列。

變形 5 評估指標

怎麼評估 Seq2Seq 翻譯模型的品質?

直覺

翻譯有很多種說法都是對的,怎麼自動評估好不好?

答案

最常用的是 BLEU(Bilingual Evaluation Understudy)分數:把機器翻譯的輸出和人類參考翻譯對比,計算 n-gram 重疊率。BLEU 1.0 代表完全一致,0 代表完全不同。實務上 BLEU 0.3~0.4 已算不錯的翻譯。摘要任務用 ROUGE(Recall-Oriented Understudy for Gisting Evaluation),評估摘要和參考摘要的 n-gram 召回率。這兩個指標都是「和人類翻譯的字面相似度」,不完全代表語意品質,所以還需要人工評估(如 MOS 分數)。

07 延伸

想再往下看,這 5 個

出處

iPAS 經濟部產業人才能力鑑定 ・ 114 年第二次 iPAS AI 應用規劃師 中級 科目一 第 16 題

查看官方原文 PDF