大家好!今天我想跟大家解釋 Transformer 模型如何進行文字生成,我們將以一個翻譯例子來一步步說明這個過程,並且介紹不同類型的 Transformer 架構。不用擔心,我會用最簡單的方式來解釋這些複雜的概念!
Transformer 翻譯實例:從法文到英文的轉換
讓我們以翻譯法文短語「J’aime l’apprentissage automatique」為例,看看 Transformer 如何將它轉換成英文「I love machine learning」。

目錄
編碼器(Encoder)的工作過程
編碼器的任務是理解輸入的文字:
- 標記化(Tokenize):首先,我們將輸入的法文句子分割成標記(tokens),使用與模型訓練時相同的標記器
- 添加標記:將這些標記添加到編碼器輸入
- 嵌入層處理:通過嵌入層 (embedding layer) 將標記轉換為向量 (vector) 表示
- 多頭注意力處理:這些向量被送入多頭注意力層 (multi-headed attention layers),讓模型理解詞與詞之間的關係
- 前饋網絡 (feed-forward network )處理:注意力層的輸出再通過前饋神經網絡
- 生成深層表示:最終,編碼器輸出是輸入序列結構和含義的深層表示
想像編碼器就像是一位精通法文的專家,他深入理解了法文句子的每個細節和含義。
解碼器(Decoder)的工作過程
解碼器的任務是生成輸出的文字:
- 結合編碼器資訊:將編碼器的輸出插入解碼器中間,影響解碼器的自注意力機制
- 開始標記:添加序列開始標記 (start-of-sequence token) 到解碼器輸入
- 預測下一個標記:基於編碼器提供的上下文 (encoder context) 預測下一個標記
- 處理輸出:將解碼器的自注意力輸出通過前饋網絡和 softmax 輸出層
- 循環預測:將預測的標記重新加入輸入,生成下一個標記
- 結束條件:當模型預測出序列結束標記 (end-of-sequence token) 時停止生成
- 轉換成文字:將最終序列的標記轉換回單詞:「I love machine learning」
解碼器就像是一位精通英文的翻譯,他根據法文專家(編碼器)的理解,一個字一個字地生成準確的英文翻譯。
Transformer 架構的變體
根據不同的應用需求,Transformer 模型有三種主要變體:
純編碼器模型(Encoder-only Models)
- 作為序列到序列模型工作
- 未經修改時,輸入和輸出序列長度相同
- 可以添加層來訓練分類任務(例如:BERT)
這類模型擅長理解文本,適合用於文本分類、情感分析等任務。
編碼器-解碼器模型(Encoder-Decoder Models)
- 在序列到序列任務(如翻譯)上表現出色
- 輸入和輸出序列可以有不同的長度
- 可以擴展和訓練用於一般文本生成(例如:BART、T5)
這類模型適合需要理解輸入並生成不同長度輸出的任務,如翻譯、摘要等。
純解碼器模型(Decoder-only Models)
- 目前最常用的模型類型
- 高度可擴展且功能強大
- 可以通用於大多數任務
- 例子:GPT 系列、BLOOM、Jurassic、LLaMA
這類模型是現代大型語言模型的主流,它們擁有強大的文本生成能力,可以應用於各種任務。
專有名詞說明
標記化 (Tokenization)
什麼是標記 (Token)?
標記 (Token) 是文本被分割後的最小單位,可能是一個單詞、一個子詞 (subword)、一個字符,甚至是一個標點符號。
運作原理
標記化是將原始文本切分成模型可以處理的片段的過程。不同的標記化方法有不同的切分策略:
- 詞級標記化 (Word-level tokenization):以單詞為單位進行分割。
- 子詞標記化 (Subword tokenization):將不常見的單詞分解為更小的、常見的部分。
- 字符級標記化 (Character-level tokenization):以單個字符為單位。
實際範例
以我們的法文句子「J’aime l’apprentissage automatique」為例:
- 詞級標記化:[“J’aime”, “l’apprentissage”, “automatique”]
- 子詞標記化:[“J'”, “aime”, “l'”, “apprentissage”, “auto”, “matique”]
- 實際 GPT 模型可能的標記化:[“J”, “‘”, “aime”, ” l”, “‘”, “apprentissage”, ” automatique”]
大多數現代模型使用子詞標記化,因為它在詞彙量和表示效率之間取得了良好的平衡。
嵌入層 (Embedding Layer)
什麼是嵌入層?
嵌入層將標記轉換為密集的向量表示,使計算機能夠理解並處理文本。
運作原理
每個標記被映射到一個固定維度的向量。這些向量通過訓練學習,使得語義相似的詞在向量空間中彼此接近。
實際範例
假設我們有這樣的映射關係:
- “J'” → [0.2, 0.5, -0.1, 0.8]
- “aime” → [0.7, 0.3, 0.2, -0.4]
- “l'” → [-0.1, 0.2, 0.5, 0.3]
這些數字代表詞在高維空間中的坐標,經過訓練後,”愛” (aime) 和 “喜歡” (adore) 的向量會比 “愛” 和 “討厭” (déteste) 的向量更接近。
位置編碼 (Positional Encoding)
什麼是位置編碼?
由於 Transformer 模型並行處理所有標記,它需要某種方式來捕捉詞序信息。位置編碼就是添加到嵌入向量中的位置信息。
運作原理
使用正弦和餘弦函數生成具有特定模式的向量,對應於標記在序列中的位置。這些向量被加到標記嵌入向量上。
實際範例
對於序列中的第 1、2、3 個位置,位置編碼可能如下:
- 位置 1:[0.84, 0.02, 0.99, 0.15]
- 位置 2:[0.70, 0.04, 0.98, 0.30]
- 位置 3:[0.50, 0.06, 0.95, 0.44]
這些編碼被加到相應位置標記的嵌入向量上,使模型能夠區分不同位置的相同詞。
多頭注意力機制 (Multi-headed Attention)
什麼是注意力機制?
注意力機制允許模型在處理某個標記時,”注意”到序列中其他相關標記。它是 Transformer 的核心創新。
運作原理
注意力機制計算每對標記之間的相關性分數,然後根據這些分數對信息進行加權。多頭注意力是指並行運行多個注意力機制,每個”頭”可以專注於不同類型的關係。
實際範例
考慮句子「J’aime l’apprentissage automatique」:
- 處理 “apprentissage” (學習) 這個詞時:
- 第一個注意力頭可能主要關注 “aime” (喜歡),表明是對學習的喜愛
- 第二個注意力頭可能關注 “automatique” (自動的),表明是特定類型的學習
- 注意力權重可視化:
J'aime l' apprentissage automatique [0.05 0.60 0.10 0.25 ] → 第一個頭對 "aime" 的注意力 [0.10 0.05 0.15 0.70 ] → 第二個頭對 "automatique" 的注意力
這些權重決定了信息如何在模型中流動,使其能夠把握短語中的關鍵關係。
前饋神經網絡 (Feed-Forward Network)
什麼是前饋神經網絡?
在注意力層之後,每個標記的表示都會獨立地通過一個前饋神經網絡,這有助於模型處理更複雜的特徵和關係。
運作原理
這是一個簡單的兩層神經網絡,包含一個擴展層和一個投影層,應用於每個標記位置。
實際範例
假設注意力層輸出的向量是 [0.5, 0.3, 0.7, 0.1]:
- 擴展到更高維度:[0.5, 0.3, 0.7, 0.1] → [0.2, 0.5, 0.8, 0.3, 0.6, 0.1, 0.4, 0.9]
- 應用非線性激活函數 (如 ReLU)
- 投影回原始維度:[0.2, 0.5, 0.8, 0.3, 0.6, 0.1, 0.4, 0.9] → [0.6, 0.4, 0.8, 0.2]
這個過程允許模型學習更複雜的特徵,同時保持每個標記表示的獨立性。
層正規化 (Layer Normalization)
什麼是層正規化?
層正規化是一種使神經網絡訓練更穩定的技術,通過標準化每層的輸出來實現。
運作原理
計算層輸出的均值和標準差,然後用這些統計數據來標準化輸出,使其具有零均值和單位方差。
實際範例
如果某層的輸出是 [2.0, 0.0, 4.0, -2.0]:
- 計算均值:(2.0 + 0.0 + 4.0 + (-2.0)) / 4 = 1.0
- 計算標準差:√[(2.0-1.0)² + (0.0-1.0)² + (4.0-1.0)² + (-2.0-1.0)²]/4 = 2.12
- 標準化:[(2.0-1.0)/2.12, (0.0-1.0)/2.12, (4.0-1.0)/2.12, (-2.0-1.0)/2.12] = [0.47, -0.47, 1.41, -1.41]
這有助於防止在訓練過程中出現的梯度問題。
總結
Transformer 模型通過編碼器理解輸入,解碼器生成輸出,實現了從一種語言到另一種語言的轉換。不同類型的 Transformer 架構適合不同的應用場景,其中純解碼器模型因其靈活性和強大的生成能力,成為了現代大型語言模型的主流選擇。如果想參考學習影片的話可以看台大李宏毅教授的解說:
如果想要有一個完整學習的課程我也推薦 Coursera 的 《Generative AI with Large Language Models》
下次當你使用 AI 翻譯工具或與 ChatGPT 對話時,就能想像這些模型內部正在進行的奇妙過程了!希望這篇文章能幫助你更好地理解 Transformer 的工作原理。有任何問題,歡迎在評論區留言討論!