一文でまとめると: 詳細に踏み込む前に、まず地図を描く。データがどこから入り、何を通り抜け、どこから予測が出てくるのかを把握しましょう。
3.1 なぜ地図から始めるのか?
第2章では、巨大なモデルを次のように単純化しました。
パラメータ + 推論コード
しかし、その推論コードは実際に何をしているのでしょうか?
本章は各コンポーネントを深掘りする章ではありません。全体像を提示する章です。街を歩く前に地図を眺めるようなものだと考えてください。主要なランドマークを把握しておけば、後続の章で出てくる話題を地図上に貼り付けていけます。
本章を読み終えると、次の点について頭の中にモデルができているはずです。
- 入力は何か
- 途中でどんな変換が起きるか
- 出力は何か
- なぜ同じブロックが何度も繰り返されるのか
3.2 まずは簡略フローから
下から上へと、データは 7 つの段階を通り抜けます。
3.2.1 生のテキスト
入力はテキストから始まります。
つげ義春はねじ式を描いた。
コンピュータはテキストを直接理解できません。数値が必要です。
3.2.2 トークン ID
最初のステップでは、テキストをトークン ID に変換します。
"つげ義春はねじ式を描いた。"
-> [59739, 2243, 240, 47453, 102, 11881, 98, 15682, 2243, 255, 100204, 29430, 30512, 21441, 237, 16995, 28713, 1811]
このプロセスを Tokenization と呼びます。第4章で詳しく扱います。
3.2.3 トークンベクトルと位置
トークン ID はまだ整数にすぎません。モデルはこれを埋め込みテーブルで引き、各トークンをベクトルに変換します。
そのうえで位置情報を加えます。順序が重要だからです。
"漫画家が貸本屋を訪ねた" != "貸本屋が漫画家を訪ねた"
3.2.4 Attention
Attention は、トークンが他のトークンを見て何が重要かを判断するための仕組みです。
たとえばモデルが 描いた を処理するとき、つげ義春 や ねじ式 の情報を使うかもしれません。Attention はそうした関係性を計算するメカニズムです。
3.2.5 正規化と処理
深いネットワークは最適化が難しくなります。LayerNorm は各トークン位置の特徴を正規化し、学習の安定化を助けます。単に大きな数値を一定範囲に切り詰める処理ではありません。
その後、Feed Forward Network が各位置をさらに処理します。Attention がトークン間の関係についての処理だとすれば、FFN は各トークン内部の表現を変換する処理です。
3.2.6 確率
最後にモデルは語彙中の各トークンに対するスコアを生成します。Softmax がそのスコアを確率に変換します。
3.2.7 次のトークン
モデルはその確率分布から次のトークンを選ぶ、あるいはサンプリングします。そして第2章で見た自己回帰ループが繰り返されます。
簡略フローは次のようになります。
text -> token IDs -> vectors + position -> repeated blocks -> probabilities -> next token
3.3 標準アーキテクチャ
ここからは簡略地図から標準アーキテクチャへと進みます。
3.3.1 入力
モデルはトークン ID のシーケンスを受け取ります。
3.3.2 トークン埋め込み
各トークン ID はベクトルにマッピングされます。学習によって、その空間に役立つ構造が現れることがあります。たとえば、あるモデルでは 貸本漫画 と 劇画 が 貸本漫画 と 鉱脈 より近くなるかもしれません。ただし、実際の近傍はモデルや層によって変わります。
3.3.3 位置情報
Transformer ブロックはそれ自体ではシーケンスの順序を知りません。位置情報は、どのトークンが1番目で、2番目で、3番目で…とモデルに教える役割を持ちます。
3.3.4 Masked Multi-Head Attention
これがコアコンポーネントです。
- Masked は、次のトークンを予測する際にモデルが未来を見ないようにすることを意味します。
- Multi-head は、モデルが複数の Attention の視点を並列に使うことを意味します。
- Attention は、各トークンが他のトークンの情報をどれだけ強く使うかを計算することを意味します。
3.3.5 LayerNorm と残差接続
LayerNorm は数値を安定化します。残差接続は、すべての変換を強制的に通すのではなく、情報がブロックを迂回できるようにします。
両方とも後の章で詳しく扱います。
3.3.6 Feed Forward Network
FFN は位置ごとに適用されるニューラルネットワークです。同じFFNパラメータが各トークン位置を独立に処理し、表現を拡張・変換して、再びモデルの次元に射影します。大規模モデルでは必ずしも「小さな」部分ではなく、多くのパラメータを占めます。
3.3.7 N 回繰り返す
Transformer ブロック1つでも有用ですが、何層もスタックすると強力になります。各層は同じ構造を繰り返しますが、通常は別々の学習済みパラメータを持ちます。1組の重みをN回使い回すという意味ではありません。
小型モデルでは 12 レイヤー程度、大型モデルでは数十レイヤーを使うこともあります。各レイヤーが表現を洗練していきます。
3.3.8 Linear と Softmax
各隠れベクトルは語彙サイズのスコアにマッピングできます。語彙が 100,256 トークンあれば、シーケンスの各位置が 100,256 個のlogitを持ちます。推論時は最後の位置のlogitから次トークンを予測し、学習時は多くの位置を並列に損失計算に使えます。
Softmax がそのスコアを確率に変換します。
3.4 もう少し詳しい地図
この図は情報量が多くなりますが、いま暗記しようとしないでください。目標は主要なゾーンを認識することです。
3.4.1 Attention の内部
Attention は入力 X から始まります。
モデルは X に学習可能な3つの行列を掛けます。
WQは Query を生成WKは Key を生成WVは Value を生成
そしてその後、
Qと を掛け合わせ、ペアごとのスコアを作ります。- スコアをスケーリングします。
- マスクで未来トークンの漏洩を防ぎます。
- Softmax がスコアを Attention の重みに変換します。
- その重みを
Vに適用します。 - 複数のヘッドを連結します。
WOが結合結果を射影します。
ここが本書の核心です。第8章から第12章にかけてゆっくり紐解いていきます。
3.4.2 デコーダーブロック
デコーダーブロックは、Attention を正規化、残差経路、Feed Forward Network で包み込んだ構造になっています。
簡略化したブロックは次のとおりです。
input
-> masked multi-head attention
-> add + layer norm
-> feed forward
-> add + layer norm
-> output
この図は、子層を計算し、残差加算の後にLayerNormを行う古典的な Post-Norm の並びを使っています。多くの現代的なGPT系実装は、AttentionやFFNの前にLayerNormを置く Pre-Norm を使います。地図の主要部分は同じですが、順序が異なります。第13章と第18章でこの区別を明確にします。
3.4.3 LM ヘッド
Language Model Head は、隠れベクトルを語彙空間へ戻すマッピングです。
hidden vector -> logits over vocabulary -> probabilities
これによってモデルは内部状態を次トークンの予測に変換します。
3.5 3つの地図の関係
| 地図 | 詳細度 | 主な用途 |
|---|---|---|
| 簡略フロー | 低 | 専門外の人にシステムを説明する |
| 標準アーキテクチャ | 中 | 論文を読み、モデル図を理解する |
| 詳細地図 | 高 | 実装とアーキテクチャを結び付ける |
3つはどれも同じシステムを表現しています。違うのは解像度だけです。
便利なたとえ。
- 簡略地図 = 国の地図
- 標準地図 = 街の地図
- 詳細地図 = 通りの地図
3.6 コンポーネントの予告
本書の残りは、地図を1つずつ歩いていきます。
3.6.1 コアコンポーネント
| 章 | コンポーネント | 一行説明 |
|---|---|---|
| 第4章 | Tokenization | テキスト -> トークン ID |
| 第5章 | Positional Encoding | 順序情報を加える |
| 第6章 | LayerNorm と Softmax | 数値を安定化し、スコアを確率にする |
| 第7章 | ニューラルネットワークレイヤー | 表現を処理する |
3.6.2 Attention
| 章 | コンポーネント | 一行説明 |
|---|---|---|
| 第8章 | 線形変換 | 行列乗算を幾何的に理解する |
| 第9章 | Attention の幾何 | なぜ内積が類似度になるのか |
| 第10章 | Q, K, V | クエリ、キー、バリューの意味 |
| 第11章 | Multi-Head Attention | 複数の視点が役立つ理由 |
| 第12章 | Attention の出力 | Attention は実際に何を更新しているのか |
3.6.3 アーキテクチャ全体
| 章 | コンポーネント | 一行説明 |
|---|---|---|
| 第13章 | 残差と Dropout | 深い学習を安定化する |
| 第14章 | 埋め込みと位置 | 入力表現を深く理解する |
| 第15章 | 完全なフォワードパス | すべてのコンポーネントをつなぐ |
| 第16章 | 学習 vs 推論 | 2つの動作モードを理解する |
3.7 章のまとめ
3.7.1 中心となるフロー
input text
|
Tokenization
|
Embedding
|
Position information
|
Transformer block x N
|
Linear projection
|
Softmax
|
next token
3.7.2 覚えておきたい用語
| 用語 | 役割 |
|---|---|
| Tokenization | テキストをトークン ID に変換する |
| Embedding | トークン ID をベクトルに変換する |
| Positional Encoding | 順序情報を加える |
| Multi-Head Attention | トークン間の関係を学習する |
| LayerNorm | 数値の範囲を安定化する |
| Feed Forward | 各トークン表現を処理する |
| 残差接続 | レイヤーをまたいで情報を保つ |
| Softmax | スコアを確率に変換する |
3.7.3 核心の持ち帰り
Transformer は構造的にはシンプルです。入力処理、繰り返されるブロック、出力予測。ブロックには2つの主要な仕事があります。Attention が関係を学習し、FFN が情報を処理します。
章末チェックリスト
本章を終えて、次のことができるようになっていれば十分です。
- Transformer の簡略フローを描ける。
- デコーダー専用 Transformer の主要コンポーネントを挙げられる。
- 入力テキストから次トークンの確率まで、データの流れを説明できる。
- 今後の章を全体地図のどこに置くか位置付けられる。
次章へ
地図読みはこれくらいで十分です。テキストから確率までのパイプラインをホワイトボードに描き直せるなら、最初のコンポーネントへズームインする準備ができています。
ここから第2部「コアコンポーネント」が始まります。
第4章では Tokenization を扱います。テキストはどう数値になるのか、英語と中国語ではなぜトークン化が違うのか、そしてなぜモデルは単語ではなくトークンを数えるのか、を解説します。
ここまでで本章はおしまいです。次の章でまた。