這三個是 Transformer block 裡比較「工程輔助」但非常重要的東西。
原本的 token vector
↓
LayerNorm
↓
Self-Attention
↓
Residual Connection
↓
LayerNorm
↓
MLP
↓
Residual Connection
↓
下一層 token vector
學到最後,我發現 Transformer 不只是 Attention 和 MLP 兩個核心運算而已,旁邊還有幾個很重要的輔助設計,讓整個模型可以穩定地訓練得更深、更大。
首先是 Residual Connection。它的概念很直覺:每一層不是直接把原本的 token vector 覆蓋掉,而是把新算出來的結果加回原本輸入。也就是:
output = input + 新加工結果
這讓資訊不會在很多層之後逐漸消失。每一層比較像是在原本理解上「補充新理解」,而不是每次都重新洗掉重算。
再來是 Layer Normalization。Transformer 裡面一直在做矩陣乘法、加總、activation,如果數字分布越跑越歪,訓練就會變得不穩。LayerNorm 就像是在每個重要步驟前,先把 token vector 的數值整理到比較穩定的範圍,讓後面的 Attention 或 MLP 比較好處理。
最後是 Dropout。它是在訓練時故意隨機關掉一些連線或數值,避免模型太依賴某些固定特徵,進而死背訓練資料。這比較像是訓練球隊時,故意讓某些主力休息,逼整個系統都要學會工作。不過正式推論時,Dropout 會被關掉,所以生成文字時的隨機性不是來自 Dropout,而是來自 temperature、top-k、top-p 這些 sampling 策略。
總結來說:
Attention / MLP:負責加工資訊
Residual:保留原本資訊
LayerNorm:穩定數值分布
Dropout:訓練時防止死背
我現在對 Transformer block 的理解是:
LayerNorm → Attention → Residual
LayerNorm → MLP → Residual
一層一層堆疊之後,原本只是 token 的 vector,就會逐漸變成帶有上下文理解的語意向量。這三個概念雖然不像 Attention 那麼有名,但它們其實是讓 Transformer 能夠穩定變深、變強的重要工程設計。