この回のゴール
- Attention が入った 1 つのブロック(Transformer Block)の構造を理解する
- 位置エンコーディング・残差接続・LayerNorm・FFN が何のためにあるかを知る
- ここで LLM の中身が完全に見える ようになる
1. Transformer Block の構造
Attention 単体では 1 回の情報集約しかできません。実用的な Transformer は次の「Block」を 何十層も重ねます:
{
"mcpServers": {
"demo": {
"command": "python",
"args": [
"C:\\path\\to\\server.py"
]
}
}
}
式で書くと:
$$ x_1 = x + \text{MHA}(\text{LN}(x)) $$ $$ x_2 = x_1 + \text{FFN}(\text{LN}(x_1)) $$
各部品の役割を順に見ていきます。
2. Positional Encoding — 順序情報の注入
Attention は 順序を見ない(内積だけなので、トークンを入れ替えても同じ結果)。でも言語では順序が重要:
- 「犬が猫を追いかけた」≠「猫が犬を追いかけた」
そこで入力埋め込みに 位置を表すベクトル を足す:
$$ x_i = \text{Embed}(w_i) + \text{PE}(i) $$
Sinusoidal(原論文)
$$ \text{PE}(i, 2k) = \sin(i / 10000^{2k/d}), \quad \text{PE}(i, 2k+1) = \cos(i / 10000^{2k/d}) $$
現代の LLM
最近は RoPE (Rotary Positional Embedding) や ALiBi が主流。相対位置を扱いやすい。
3. 残差接続 (Residual Connection)
$$ \text{output} = x + \text{Layer}(x) $$
- 深い層を重ねても勾配が消失しない
- 情報をバイパスできる(必要なら何もしないのと同等)
- 深層学習の標準テクニック(ResNet 由来)
4. Layer Normalization
各トークン表現の値を 正規化 して学習を安定させる:
$$ \text{LN}(x) = \gamma \cdot \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta $$
- $\mu, \sigma$: トークンベクトル 1 つの平均・標準偏差
- $\gamma, \beta$: 学習可能なスケールとシフト
5. Feed-Forward Network (FFN)
Attention の後に入る 各トークン独立の非線形変換:
$$ \text{FFN}(x) = W_2 \cdot \text{GELU}(W_1 x + b_1) + b_2 $$
- 中間次元は通常 $4d$(入力より 4 倍広い)
- GELU(または ReLU、SwiGLU)で 非線形性 を入れる
- 実は LLM のパラメータの 大半は FFN(Attention は意外と小さい)
解釈: Attention がトークンをまたいだ「情報交換」、FFN が「各トークン内の計算」
6. 全体の流れ
- トークン化: 文字列 → トークン ID(第 1 回)
- 埋め込み: ID → ベクトル(第 2 回) + 位置エンコーディング
- N 層の Transformer Block: 各層で Attention → FFN → ...
- 最終層の出力: 各トークン位置の文脈化された表現
- LM Head: 線形変換で 全語彙に対するロジット に
- softmax: 確率分布に
- サンプリング: temperature/top-p で 1 つ選ぶ(第 2 章の回)
7. LLM のサイズ感
| モデル | 層数 | 隠れ次元 | パラメータ | 公開 |
|---|---|---|---|---|
| GPT-2 small | 12 | 768 | 124M | ✅ |
| GPT-2 XL | 48 | 1600 | 1.5B | ✅ |
| LLaMA 3 8B | 32 | 4096 | 8B | ✅(重み公開) |
| LLaMA 3 70B | 80 | 8192 | 70B | ✅ |
| Claude / GPT-4 系 | 非公開 | 非公開 | 数千億以上と推定 | ❌(API のみ) |
構造はどれも同じ。スケールとデータ量の差が主。
8. スケーリング則 (Scaling Laws)
Kaplan et al. (2020) が発見:
モデルサイズ $N$、データ量 $D$、計算量 $C$ を増やすと、損失 $L$ はべき乗則で減少する
$$ L(N) \approx L_\infty + (N_0 / N)^\alpha $$
この法則から「GPT-3 をもっと大きくすればもっと賢くなる」が予言され、実際にそうなった。これが現在の LLM 競争の背景。
まとめ
- Transformer Block = LayerNorm + Multi-Head Attention + 残差 → LayerNorm + FFN + 残差 を何十層も
- 位置エンコーディング(PE / RoPE)で順序情報を埋め込む
- 残差接続で深層化を可能に、LayerNorm で学習安定化
- FFN がパラメータの大半を占める(Attention は意外と小さい)
- スケーリング則によりサイズとデータ量を増やせば賢くなることが予言された
この回の限界(次への動機)
ここまでで LLM の中身は理解できた。でも自分で 数千億パラメータを学習するのは現実的でない。 👉 次回「Claude API の基礎」で、Anthropic が学習したモデルを API 経由で実際に動かします。
参考文献
- Vaswani et al. (2017) Attention Is All You Need
- Kaplan et al. (2020) Scaling Laws for Neural Language Models
- The Illustrated GPT-2