Skip to content

變形金剛的注意力機制

讓我們用數學的眼光來看這個過程:每個詞在Transformer中都會被轉換成三個向量:

  • Query (Q):就像是「我要找什麼?」

  • Key (K):就像是「我有什麼特徵?」

  • Value (V):就像是「我能提供什麼資訊?」

假設我們有一句話:「我喜歡吃巧克力」,注意力分數的計算方式是: Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}(\frac{QK^T}{\sqrt{d_k}})V

這個公式看起來嚇人,但其實很有趣:

  1. QKTQK^T 計算每個詞和其他詞的相關性

  2. dk\sqrt{d_k} 用來調整分數的規模,避免數值太大

  3. softmax 把分數轉換成機率分布

  4. 最後和 V 相乘,得到加權後的結果

更厲害的是,Transformer用了「多頭注意力」(Multi-Head Attention): MultiHead(Q,K,V)=Concat(head1,...,headh)WO\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O

每個「頭」都可以學習不同的語言特徵:

  • 有的頭專注於語法結構

  • 有的頭關注語義關係

  • 有的頭捕捉長距離依賴

Transformer的架構還包含了:

  1. 位置編碼(Positional Encoding): PE(pos,2i)=sin(pos/100002i/dmodel)PE_{(pos,2i)} = \sin(pos/10000^{2i/d_{model}}) 讓模型知道詞的位置資訊

  2. 前饋神經網路(Feed-Forward Networks): FFN(x)=max(0,xW1+b1)W2+b2FFN(x) = \max(0, xW_1 + b_1)W_2 + b_2 處理每個位置的特徵轉換

  3. 層標準化(Layer Normalization): LayerNorm(x)=γxμσ2+ϵ+β\text{LayerNorm}(x) = \gamma \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta 穩定訓練過程

這個設計的優勢在於:

  • 並行計算:RNN像是一條生產線,必須一個字一個字處理,但Transformer可以同時處理所有輸入。這種設計特別適合現代GPU的並行運算架構,訓練速度可以提升數十倍。

  • 全局視野:不管句子有多長,每個詞都能直接關注到其他所有詞。第一個詞可以直接看到最後一個詞,完全不受距離限制。這特別適合處理長文本中的遠距離關係,徹底解決了RNN中的長期依賴問題。

  • 可解釋性:通過觀察注意力權重,我們可以直接看到模型在處理每個詞時到底在關注什麼。這種透明度不僅幫助研究人員理解模型的決策過程,還便於診斷和改進模型的表現。

這就是為什麼現代的大語言模型(如GPT系列)都採用Transformer架構。它不僅解決了長序列處理的問題,還帶來了前所未有的模型性能提升!