- レイヤー構造
入力層の出力
LEN(S) × D 行列
X(S) = ( x_ij )
は,Attention・FFNブロックに入力される。
Attention・FFNブロックは,層 (layer) 構造になっている。。
層の枚数を,「深さ(depth)」と呼ぶ。
たとえば:
GPT-2 small: 12層
GPT-3: 96層
GPT-4: 非公開だが多数層
複数の層は、同じ処理を繰り返すためのもの。
層の意味づけは,「トークンの意味が,層を重ねるごとに深まっていく」。
各層において,処理は Self-Attention が中心。
層は,Self-Attention の基本操作がより堅牢に働くように設計されている。
1層ずつ出力が伝播。
最終出力から損失を計算し,誤差逆伝播で全層を更新する。
これが,つぎの入力テクストの処理環境になる。
- 「繰り返し」処理の流れ
x_i
↓← 位置エンコーディング加算
x_i^(1)
x_i^(ℓ)
│
├─────────┐
│ ( Self-Attention )
│ ↓
│ z_i^(ℓ)
│← Residual ───┘
│
│← LayerNorm (正規化)
│
├─────────┐
│ ( FFN )
│ ↓
│ z'_i^(ℓ)
│← Residual ───┘
│
│← LayerNorm
↓
x_i^(ℓ+1)
X^(ℓ) → X^(ℓ+1) が,レイヤー1つにあたる。
レイヤー数を
NL (Number of Layers)
で表す。
レイヤーの表記「^(ℓ)」は煩瑣になるので,適宜省略する。
最終出力の x_i^(NL+1) を
o_i
で表す。
- 重み行列
X から P を導く行程は,各種重み行列が関わっている。
そしてレイヤーによる繰り返し処理の中に現れる重み行列は,レイヤーごとに異なる:
- Self-Attention の W_Q^(ℓ), W_K^(ℓ), W_V^(ℓ)
- FFN (MLP) の W_1^(ℓ), W_2^(ℓ)
など
|