AI

【AI 學習】1-5 使用 Transformer 模型生成文字:運作原理大公開

大家好!今天我想跟大家解釋 Transformer 模型如何進行文字生成,我們將以一個翻譯例子來一步步說明這個過程,並且介紹不同類型的 Transformer 架構。不用擔心,我會用最簡單的方式來解釋這些複雜的概念!

Transformer 翻譯實例:從法文到英文的轉換

讓我們以翻譯法文短語「J’aime l’apprentissage automatique」為例,看看 Transformer 如何將它轉換成英文「I love machine learning」。

圖片參考自:《Attention Is All You Need》

編碼器(Encoder)的工作過程

編碼器的任務是理解輸入的文字:

  1. 標記化(Tokenize):首先,我們將輸入的法文句子分割成標記(tokens),使用與模型訓練時相同的標記器
  2. 添加標記:將這些標記添加到編碼器輸入
  3. 嵌入層處理:通過嵌入層 (embedding layer) 將標記轉換為向量 (vector) 表示
  4. 多頭注意力處理:這些向量被送入多頭注意力層 (multi-headed attention layers),讓模型理解詞與詞之間的關係
  5. 前饋網絡 (feed-forward network )處理:注意力層的輸出再通過前饋神經網絡
  6. 生成深層表示:最終,編碼器輸出是輸入序列結構和含義的深層表示

想像編碼器就像是一位精通法文的專家,他深入理解了法文句子的每個細節和含義。

解碼器(Decoder)的工作過程

解碼器的任務是生成輸出的文字:

  1. 結合編碼器資訊:將編碼器的輸出插入解碼器中間,影響解碼器的自注意力機制
  2. 開始標記:添加序列開始標記 (start-of-sequence token) 到解碼器輸入
  3. 預測下一個標記:基於編碼器提供的上下文 (encoder context) 預測下一個標記
  4. 處理輸出:將解碼器的自注意力輸出通過前饋網絡和 softmax 輸出層
  5. 循環預測:將預測的標記重新加入輸入,生成下一個標記
  6. 結束條件:當模型預測出序列結束標記 (end-of-sequence token) 時停止生成
  7. 轉換成文字:將最終序列的標記轉換回單詞:「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)、一個字符,甚至是一個標點符號。

運作原理

標記化是將原始文本切分成模型可以處理的片段的過程。不同的標記化方法有不同的切分策略:

  1. 詞級標記化 (Word-level tokenization):以單詞為單位進行分割。
  2. 子詞標記化 (Subword tokenization):將不常見的單詞分解為更小的、常見的部分。
  3. 字符級標記化 (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」:

  1. 處理 “apprentissage” (學習) 這個詞時:
    • 第一個注意力頭可能主要關注 “aime” (喜歡),表明是對學習的喜愛
    • 第二個注意力頭可能關注 “automatique” (自動的),表明是特定類型的學習
  2. 注意力權重可視化: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]:

  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]
  2. 應用非線性激活函數 (如 ReLU)
  3. 投影回原始維度:[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]:

  1. 計算均值:(2.0 + 0.0 + 4.0 + (-2.0)) / 4 = 1.0
  2. 計算標準差:√[(2.0-1.0)² + (0.0-1.0)² + (4.0-1.0)² + (-2.0-1.0)²]/4 = 2.12
  3. 標準化:[(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 的工作原理。有任何問題,歡迎在評論區留言討論!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *