- レイヤー構造
入力層の出力
LEN(S) × D 行列
X(S) = ( x_ij )
は,学習ブロックに入力される。
学習ブロックは,層 (layer) 構造になっている。。
層の枚数を,「深さ(depth)」と呼ぶ。
たとえば:
GPT-2 small: 12層
GPT-3: 96層
GPT-4: 非公開だが多数層
複数の層は、同じ処理を繰り返すためのもの。
層の意味づけは,「トークンの意味が,層を重ねるごとに深まっていく」。
各層において,処理は Self-Attention が中心。
層は,Self-Attention の基本操作がより堅牢に働くように設計されている。
1層ずつ出力が伝播。
最終出力から損失を計算し,誤差逆伝播で全層を更新する。
これが,つぎの入力テクストの処理環境になる。
- 「繰り返し」処理の流れ
X^(1) = ( x_ij^(1) ) = X(S)
Z^(1) = ( z_ij^(1) ) = Z
x_i^(ℓ)
│
│Self-Attention(全語と相互作用)
↓
z_i^(ℓ)(文脈情報を含んだ中間出力)
│
│Residue (残差接続)
↓
x_i^(ℓ) + z_i^(ℓ)
│
│LayerNorm (正規化)
↓
z'_i^(ℓ)
│
│FeedForward Network(各語ごとに)
↓
y_i^(ℓ)
│
│Residue
↓
z'_i^(ℓ) + y_i^(ℓ)
│
│LayerNorm
↓
y'_i^(ℓ) = x_i^(ℓ+1)
記号法
- 層の数を
NL (Number of Layers)
で表す。
- 最終出力の LEN(S)×D 行列 ( y'_i^(NL) ) を
O = ( o_i ), o_i = y'_i^(NL)
で表す。
こうして,TV(ID_i) の更新 (「成長」) に向けた中間出力ベクトルの処理が:
x_i^(1) → x_i^(2) → ‥‥ → x_i^(NL) → o_i
というように,層の数だけ繰り返される。
- Self-Attention の役割
- 入力 x_i^(ℓ) は,TV(ID_i) の更新 (「成長」) に向けた中間出力で,文脈情報が注入されたベクトル。
- x_i^(ℓ) に対し,他の全ての x_j^(ℓ) との関係性を計算し,「その文脈にふさわしい形」に変換。
- 重み行列 $W_Q^(ℓ), W_K^(ℓ), W_V^(ℓ) が,この変換に使われる。
- 変換されたベクトル z_i^(ℓ) を,「TV(ID_i) の更新に向けた中間出力」として出力する。
- FeedForward Network の役割
- 入力の z'_i^(ℓ) を,MLP(2層NN)に通す。
これの意味づけは,「各トークンの特徴を,非線形に強調・変形」。
- 全体の構造を見ず,トークン単体で処理(=並列化しやすい)。
- 出力 y_i^(ℓ) は, 「文脈付き+強調済み ベクトル」。
- 並列処理
第 ℓ 層の中間出力の流れ:
x_i^(ℓ) → z_i^(ℓ) → y_i^(ℓ) → x_i^(ℓ+1)
この処理を,i = 1 から i = LEN(S) まで──即ち「文 S 全体にわたって」──並列に処理する:
x_i^(1) → z_i^(1) → y_i^(1) → x_i^(1+1)
‥‥‥‥
x_i^(NL) → z_i^(NL) → y_i^(NL) → o_i
- 重み行列
- 重み行列は,層ごとに異なる:
W_Q^(ℓ), W_K^(ℓ), W_V^(ℓ)
W_O^(ℓ), W_FF^(ℓ)
MLPの W_1^(ℓ), W_2^(ℓ)
など
- 学習では、それぞれの層で「異なる機能を果たす」ように最適化される
- ベクトル x_i^(ℓ) は、各層で「深い意味」を獲得していく
|