目錄
前言
如果想了解 AI 領域,尤其是 LLM,
Transformer 真的非常非常重要,可是 Transformer 也真的很不好懂,
以下是我的理解,希望能拋磚引玉,如果有錯誤也請不吝指正。
系列文傳送門
[LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (1) – Transformer 介紹 [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (2) – 預訓練語言模型的新範式 [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (3) – PEFT 與 LoRA [LLM 論文筆記] 一口氣看完大型語言模型的前世今生 (4) – LLM 開源與在地化之路
Transformer 介紹
Vaswani 等人(2017)提出了基於自注意力機制(Self-Attention Mechanism)的 Transformer 架構。
Transformer 在改善既有注意力機制的同時還在模型中增加了多頭注意力(Multi-head Attention)、殘差連接(Residual Connection)與層歸一化(Layer Normalization)的機制,
一舉解決了遞迴類神經網路(RNN)無法平行運算以及在文本過長的情況下表現不佳的問題,
因此這個架構也對往後的各個深度學習(Deep Learning)領域都造成了深遠的影響。
Transformer 架構
Transformer 是一種 Seq2Seq 的模型,
上圖中,左邊是 Encoder 右邊是 Decoder,
將 inputs 轉為 embedding 後會先經過位置編碼(Positional Encoding),
由於 Transformer 的自注意力機制不考慮單詞的順序,
因此這一步驟會在 embeddings 中加入位置資訊,計算公式如下:
pos 是位置,i 是維度(Dimension),d_{model} 則是模型的 embedding 維度,最後他們選擇了正弦(sin)版本因為它可以推論的比原序列長度還要更長。
在自注意力機制中,對於給定的輸入,每個單詞都會計算出與序列中其他所有單詞的關聯權重並將這些做處理後輸出加權後的表示(Representation),這些多維向量代表著序列中所有單詞的資訊。
Q、K 和 V 分別代表查詢(Query)、鍵(Key)和值(Value)的矩陣, dk 則是鍵向量的維度。而 Transformer [21] 使用的具體來說是縮放點積注意力(Scaled Dot-Product Attention)。
縮放點積注意力機制 (Scaled Dot-Product Attention)
我們可以根據公式與縮放點積注意力機制的圖逐一拆解詳細步驟如下:
1. 計算 Query、Key 與 Value:對於序列中的每個單詞都會使用不同的權重矩陣將其轉換為 q、k 和 v 三種表示,Query 代表要注意的單詞本身,Key 是被注意的對象,而 Value 則是實際的文字內容。
2. 計算關聯度:為了增加運算速度,Q、K 和 V 就是 q、k 和 v 的矩陣版,這階段會透過計算 Query 與所有 Key 的點積(Dot Product)來衡量各單詞之間的關聯度。
3. 正規化(Normalization):再將這些關聯度使用 Softmax 函數來轉成和為 1 的機率值,這些機率值就代表各單詞對當前單詞的重要程度。
4. 產生加權後的 Value:用上一步的機率值對所有 Value 進行加權求和,從而產生當前單詞的輸出 representation。
5. 組合 seq:對 seq 中的每個單字重複進行上述過程,最後再將所有的單字組合起來形成此序列的 representation。
多頭注意力機制 (Multi-Head Attention)
多頭注意力則是 Transformer 的核心,它可以讓模型在處理序列資料時同時關注序列中的多個位置,這種機制除了可以讓計算平行化之外也解決了自注意力機制可能只看到序列中某些部分的問題。
從多頭注意力機制圖中可以看到,多頭中的「頭」就是被分割成較小維度的 embeddings 向量,這些頭會被平行的處理,也就是進行自注意力權重的計算,最後會將這些頭的輸出向量串聯起來做線性變換(Linear Transform)後生成最後的輸出。
參考資料
- Attention Is All You Need
- 我碩論做的文獻回顧
- [推薦工具] 讓程式碼截圖變的美美的吧!VScode CodeSnap 與 3 種同功能線上工具介紹 - 2025-01-05
- [AI 繪圖初級教學] 用 X/Y/Z Plot 比較 Stable Diffusion 的 prompt 與 LoRA 效果 - 2024-12-27
- [AI 繪圖中級篇教學] Stable Diffusion WebUI WD14 Tagger 介紹 - 2024-12-26