Google 的 Transformer 模型是一個在自然語言處理(NLP)領域中極具影響力的深度學習架構,於 2017 年由 Google 研究團隊提出,發表在論文《Attention is All You Need》中。這個模型最初設計用於處理序列數據,例如機器翻譯任務,但其應用已擴展到文本生成、摘要、問答系統等領域。以下將詳細說明 Transformer 的運作原理。

Neural Network – Multi-Layer Signal Propagation

核心概念:注意力機制

Transformer 的核心是 注意力機制(Attention Mechanism),特別是 自注意力(Self-Attention)。與傳統的循環神經網絡(RNN)或卷積神經網絡(CNN)不同,Transformer 完全依賴注意力機制來捕捉序列中不同位置之間的依賴關係。自注意力允許模型在處理某個詞時,動態地關注序列中的其他詞,從而理解上下文。

整體架構

Transformer 由兩個主要部分組成:編碼器(Encoder)解碼器(Decoder)

  • 編碼器:將輸入序列轉換為一系列高維表示,捕捉輸入的上下文信息。
  • 解碼器:根據編碼器的輸出生成目標序列,例如將源語言翻譯成目標語言。

編碼器結構

編碼器由多個相同的層(通常是 6 層)堆疊而成,每層包含兩個關鍵子層:

  1. 多頭自注意力機制(Multi-Head Self-Attention)
  • 自注意力通過計算三個向量來實現:
    • Query(查詢):表示當前詞的查詢。
    • Key(鍵):表示所有詞的鍵,用於匹配。
    • Value(值):表示所有詞的值,用於加權。
  • 運作過程:
    1. 對每個詞計算 Query 向量。
    2. 將 Query 與所有詞的 Key 向量進行點積,得到注意力權重。
    3. 用這些權重對 Value 向量加權求和,生成該詞的上下文表示。
  • 多頭:將自注意力並行執行多次(例如 8 次),每次使用不同的線性變換,最後拼接結果,增強模型捕捉多方面關係的能力。
  1. 前饋神經網絡(Feed-Forward Neural Network)
  • 一個簡單的全連接網絡,對每個詞的表示獨立進行轉換,包含兩個線性層和一個 ReLU 激活函數,提升模型的表達能力。

每個子層後面還有 殘差連接(Residual Connection)層歸一化(Layer Normalization),以穩定訓練並提高性能。編碼器最終輸出一組高維向量,表示輸入序列的上下文信息。

解碼器結構

解碼器同樣由多個相同層堆疊而成(通常也是 6 層),但每層有三個子層:

  1. 掩碼多頭自注意力機制(Masked Multi-Head Self-Attention)
  • 與編碼器的自注意力類似,但加入了“掩碼”(Mask),確保模型在生成某個詞時只能關注當前位置之前的詞,防止“看到未來”的信息洩漏。
  1. 編碼器-解碼器注意力層(Encoder-Decoder Attention)
  • 這一層讓解碼器關注編碼器的輸出。
  • Query 來自解碼器的自注意力層,Key 和 Value 來自編碼器的輸出,幫助解碼器動態選擇與當前生成任務相關的輸入部分。
  1. 前饋神經網絡
  • 與編碼器中的前饋網絡相同,對每個位置的表示進行獨立轉換。

解碼器同樣使用殘差連接和層歸一化。它的任務是根據編碼器的輸出逐步生成目標序列。

位置編碼(Positional Encoding)

由於 Transformer 不含 RNN 或 CNN,無法自然捕捉詞的順序信息,因此引入了 位置編碼。位置編碼是一組向量(通常由正弦和餘弦函數生成),與詞嵌入相加,為每個詞添加獨特的位置信息。這使得模型能夠理解序列中詞的相對位置和順序。

訓練與推理

  • 訓練:使用 教師強制(Teacher Forcing) 方法,即解碼器的輸入是真實的目標序列,而不是模型生成的序列,以加速收斂。
  • 推理:採用 自回歸(Auto-Regressive) 方式,從一個開始標記(例如“”)開始,逐步生成每個詞,並將生成的詞作為下一個時間步的輸入,直到生成結束標記(例如“”)。

運作優勢

  1. 並行計算:不像 RNN 按順序處理序列,Transformer 的注意力機制允許同時處理整個序列,大幅提高計算效率。
  2. 長距離依賴:自注意力機制能有效捕捉序列中遠距離的關係,解決 RNN 的長程依賴問題。
  3. 靈活性:Transformer 的設計使其適用於多種任務,催生了 BERT、GPT 等後續模型。

總結

Google 的 Transformer 通過編碼器和解碼器的協作,利用自注意力機制和前饋神經網絡,將輸入序列轉換為高維表示並生成輸出序列。位置編碼解決了順序問題,而多頭注意力增強了上下文理解能力。其高效的並行計算和強大的表達能力使其成為現代 NLP 的基石,並影響了計算機視覺等其他領域的發展。