機器學習2021 - Transformer 模型簡介

機器學習2021 - Transformer 模型簡介

機器學習2021 - Transformer 模型簡介

Transformer 模型簡介

I. 核心概念與定義

Transformer 模型是一種強大的 Sequence-to-Sequence (Seq2Seq) 模型。Seq2Seq 模型處理的是序列輸入和序列輸出,其中輸出的長度並非固定,而是由機器自行決定的。Transformer 與後續發展出的 BERT 模型有著非常強烈的關聯。

在 Seq2Seq 任務中,輸入是一個序列,輸出的結果也是一個序列,但機器必須自己決定輸出序列的長度。例如:

  • 語音辨識:輸入是聲音訊號 (一串向量,長度為 T),輸出是相對應的文字序列 (長度為 N),T 和 N 之間沒有絕對的關係,長度 N 由機器決定。
  • 機器翻譯:輸入是一種語言的句子 (長度為 N),輸出是另一種語言的句子 (長度為 N’),輸出長度 N’ 由機器決定。

II. Transformer 的主要應用領域

Seq2Seq 模型,包括 Transformer,應用範圍極廣,尤其在語音和自然語言處理 (NLP) 領域:

A. 語音與語言任務

  • 語音辨識 (Speech Recognition):輸入聲音訊號,輸出對應的文字。
  • 機器翻譯 (Machine Translation):輸入一種語言的文字,輸出另一種語言的文字。
  • 語音翻譯 (Speech Translation):輸入某種語言的聲音訊號,直接輸出另一種語言的文字。例如,訓練模型直接將台語的聲音訊號轉換為中文文字。
  • 語音合成 (Speech Synthesis, TTS):輸入文字,輸出聲音訊號。

B. 自然語言處理 (NLP)

許多 NLP 任務都可以被視為 問答 (Question Answering, QA) 任務,並進而利用 Seq2Seq 模型解決:

  • 自動摘要 (Summarization):將一篇長文章視為輸入,問題是「這段文字的摘要是什麼?」,期待輸出摘要。
  • 情感分析 (Sentiment Analysis):輸入一段文字,問題是「這個句子是正面還是負面?」,期待輸出答案。
  • 聊天機器人 (Chatbot):輸入一個句子,輸出一個回應。
  • 文法剖析 (Grammar Parsing):輸入一段文字,雖然輸出是樹狀結構,但可透過將樹狀結構轉換為序列的方式,讓 Seq2Seq 模型硬是解出文法剖析的任務。
  • 多標籤分類 (Multi-label Classification):輸入一篇文獻,輸出它可能屬於的多個類別標籤。

III. Transformer 架構:Encoder 與 Decoder

一個標準的 Seq2Seq 模型包含 Encoder (編碼器) 和 Decoder (解碼器) 兩部分。

A. Encoder (編碼器)

Encoder 負責處理輸入的序列。

基本功能:接收一排向量(如輸入詞彙或聲音訊號的特徵向量),輸出另一排等長度的向量序列。

核心機制:Transformer 的 Encoder 使用 Self-Attention (自我注意力機制)。

結構:Encoder 由多個 Block 堆疊而成。每個 Block 主要包含以下幾個步驟:

  • Self-Attention:考慮整個輸入序列的資訊。
  • Add & Norm:在 Self-Attention 之後,會加上 Residual Connection (殘差連接) 和 Layer Normalization (層次正規化)。Residual Connection 會將輸入直接加給輸出。Layer Normalization 則是針對單一向量的不同維度進行正規化,與 Batch Normalization 的做法不同。
  • Feed-Forward Network (FFN): Self-Attention 輸出經過 FFN 處理。
  • 二次 Add & Norm:FFN 的輸出也會再經過一次 Add & Norm 處理,才是 Encoder Block 的最終輸出。
    位置編碼:為了提供位置資訊給 Self-Attention,輸入時會加上 Positional Encoding。

B. Decoder (解碼器)

Decoder 負責產生最終的輸出序列。

1. Autoregressive (AT) Decoder

這是 Transformer 中常見的運作方式。

  • 運作方式:AT Decoder 是 一個一個 產生輸出詞彙 (Token)。它將前一個時間點自己產生的輸出,當作下一個時間點的輸入,持續遞迴直到結束。
  • 啟動與停止:序列生成始於一個特殊的 BEGIN (開始) 符號。當模型決定輸出結束時,它會產生一個特殊的 END (斷) 符號來終止序列生成。
  • 輸出:Decoder 輸出一個向量,此向量長度與詞彙表大小相同,通常經過 Softmax 轉換成機率分佈。分數最高的字元或詞彙即被選為當前的輸出。

2. Decoder 的結構差異

Decoder 的架構與 Encoder 相似,但有兩個關鍵不同點:

  • Masked Self-Attention:Decoder 必須使用 Masked Self-Attention。這是因為在遞迴生成時,當前輸出的決定只能依據它 左邊 (即已經產生) 的資訊,不能考慮未來(尚未產生)的資訊。
  • Cross Attention (交叉注意力):Cross Attention 是連接 Encoder 和 Decoder 的橋樑。在這一層,Query (Q) 來自於 Decoder 自身的輸出,而 Key (K) 和 Value (V) 則來自於 Encoder 的輸出序列。這讓 Decoder 能夠在每一步生成時,從 Encoder 處理過的輸入資訊中提取所需的上下文。

3. Non-Autoregressive (NAT) Decoder

相較於 AT Decoder 逐字生成,NAT Decoder 試圖 一次性 將整個輸出序列產生出來,藉此實現 平行化,提升速度。

  • 挑戰:由於輸出長度由機器決定,NAT 必須解決如何知道要輸入多少個起始符號的問題。常見方法包括訓練一個獨立的分類器來預測輸出長度,或者假設一個最大長度並讓模型在序列中輸出 END 符號。
  • 優勢與挑戰:NAT 模型速度更快,且在語音合成等領域,更容易控制輸出的長度(例如調整語速)。然而,NAT 模型的效能通常不如 AT 模型,需要更多技巧 (Trick) 才能達到相近的表現。

IV. 訓練技巧與挑戰

A. 訓練機制與曝光偏差

  • 損失函數:訓練時,每一步的輸出都被視為一個分類問題。訓練目標是最小化 Decoder 輸出的機率分佈與正確答案 (Ground Truth) 之間的 Cross Entropy (交叉熵)。
  • Teacher Forcing (教師強制):在訓練過程中,Decoder 的輸入使用的是 正確答案 (Ground Truth),而非模型自己上一步產生的結果。
  • 曝光偏差 (Exposure Bias):由於訓練時模型總是被「強制」看到正確的輸入,但在測試或實際使用 (Inference) 時,模型看到的是自己產生的輸出(可能包含錯誤)。這種訓練與測試之間的不一致性稱為曝光偏差。
  • 解決曝光偏差:可以採用 Scheduled Sampling 技術,在訓練時偶爾給 Decoder 輸入錯誤的資訊,使其學會處理測試時可能出現的錯誤。

B. 輔助訓練技巧

  • Copy Mechanism (複製機制):對於聊天機器人或摘要等任務,Decoder 不見得需要創造新詞彙,而是需要將輸入中的詞彙直接複製到輸出。複製機制使模型能夠從輸入中提取並複製資訊。
  • Guided Attention (引導注意力):在語音辨識或合成等任務中,我們期待 Attention 權重是單調 (Monotonic) 地由左向右移動。Guided Attention 強迫模型在做 Attention 時遵循這種固定的方式,以避免遺漏或錯誤的順序。
  • Beam Search (集束搜尋):在測試 (Inference) 階段,Greedy Decoding (每次只選分數最高的詞彙) 不一定能找到最佳的輸出序列。Beam Search 是一種近似搜尋演算法,用於尋找最有可能的輸出路徑。然而,對於需要創造力的任務,Beam Search 可能導致模型陷入重複或不自然的句子,此時加入隨機性反而能獲得更好的結果。
  • 優化目標:訓練時最小化 Cross Entropy,但最終評估時通常使用 BLEU Score。由於 BLEU Score 本身不可微分,若想直接將其作為訓練的 Loss 函數,通常需要使用強化學習 (Reinforcement Learning, RL) 的方法來解決。

資料來源

機器學習2021 - 李弘毅

NotebookLM https://youtu.be/bW3VfNQUPcU

Comments

Loading comments…

Leave a Comment