チャプター 05 · アーキテクチャ · 14 min

Transformerの全体像

ピースを組み合わせる:マルチヘッドアテンション、フィードフォワード、正規化、残差接続。

すべてはこのために

これでパズルのピースがすべて揃った:

  • テキストトークンになる(第2章)。
  • トークンが意味の空間のベクトルになる(第3章)。
  • アテンションが各ベクトルに他のベクトルを見て自己再構成させる(第4章)。

残るのは、これらのピースを完全なモデルに組み立てる方法の理解だ。答えはエレガントなほどミニマリスト:積み重ねるだけだ。

基本ブロック

現代のトランスフォーマーは同じ小さなブロックをN回繰り返したものだ。このブロックは2つのサブモジュールを含む:

  1. マルチヘッドアテンション層——トークンが互いに通信できる。
  2. フィードフォワードネットワーク(FFN)——非線形性で区切られた2つの線形変換——各トークンを独立して変換する。

これら2つのサブモジュールの周りに、2つの固定構造がある:

  • 各サブモジュールの前のLayerNorm:ベクトルを正規化して学習を安定させる。
  • 各サブモジュール周りの残差接続:ブロックの出力は入力と変換の和であり、変換だけではない。

下の図の6つの段を、トークンが通り抜ける順にマウスでたどってみよう。各段で問うべきことはひとつだけだ。このサブモジュールはトークン同士を通信させているのか、それとも各トークンを孤立して処理しているのか。

サブブロックにマウスを重ねるとその役割が見える:Attention はトークン間で情報を拡散し、Feed-Forward はそれを局所的に変換し、正規化と残差は全体を安定化させる。これを 32 回または 96 回積み重ねると GPT-4 や Claude になる。

答えはこうだ。6つの段のうち、トークン間で情報を巡らせるのはたったひとつ——マルチヘッドアテンションだけ。残りはすべて位置ごとに、孤立して働いている。この分業がこの先の章を読むうえでの要点だ。アテンションが混ぜ、フィードフォワードが変換し、正規化と残差が安定させる。そしてそれ以外には何もない。このブロックを12回繰り返せばGPT-2 small、96回繰り返せばGPT-3になる。

残差接続がすべてを変える理由

これはおそらく10年間で最も重要なアーキテクチャのトリックだ。残差接続なしで96の連続したブロックを積み重ねることは、96の連鎖した変換を通じてシグナルを通過させることを意味する。勾配(学習シグナル)は各パスで薄まる。数層後には、学習するものが何も残らない。

残差接続があれば、ブロックは全変換ではなく修正を学ぶ:output = input + f(input)。元のシグナルはネットワーク全体を常にそのまま通過し、各ブロックはそれを少し豊かにする

残差なしでは、深いトランスフォーマーは訓練できない。残差があれば、100層以上積み重ねても問題ない。

FFN、忘れられた半分

アテンションについてはよく話される。2倍のパラメータを含むFFNについてはあまり話されない。

各層で、アテンションの後、各トークンはMLPを通過する:

FFN(x) = Linear_2(GELU(Linear_1(x)))

Linear_1はベクトルを4倍広い中間次元に射影する(GPT-2 smallでは通常4 × 768 = 3072)。Linear_2は元の次元に戻す。この拡張してから収縮させる過程で、モデルの事実知識の大部分——固有名詞、学習された関連性、繰り返しパターン——が格納される。

この書き方はGPT-2のものだ。最近のモデルはGELUをSwiGLUに置き換えている。行列は2つではなく3つになり、パラメータ数を同じに保つため拡張率は8/3倍前後になる。原理そのものは変わらない。広げて、また絞る。

モデルの「700億パラメータ」について話す時、大部分はFFNに存在する。

位置と因果性

まだ言及していない2つの詳細:

位置エンコーディング。 アテンションは置換不変だ——文章のトークンをシャッフルしても、アテンションは同じ結果を返す(シャッフルされるだけで)。それは求めていない。LLMが「猫が魚を食べる」と「魚が猫を食べる」が異なることを知るために、各埋め込みベクトルに位置情報を注入する(位置エンコーディングRoPE、ALiBi……)。今日、RoPE(回転位置埋め込み)が標準だ。

因果マスク。 第4章で見たように、生成モデルでは各トークンは先行するトークンしか見られない。因果マスクはアテンション行列に適用される——ソフトマックスの前に将来の位置が−∞に設定される。これがモデルにコピーではなく予測を強制する。

何ブロックが必要か

骨格はGPT-2から今日まで変わっていない。同じブロックを積み重ね、残差接続を張り、各サブモジュールの前で正規化する。最も大きく変わるのはスケールだ:

モデルブロック数次元ヘッド数パラメータ数
GPT-2 small1276812117M
GPT-2 XL481600251.5B
GPT-3961228896175B
Llama 3 70B8081926470B

ブロックが多い=より多くの合成的推論が可能(各層が前層の抽象化の上に構築できる)。次元が大きい=各トークンの容量が多い。ヘッドが多い=より多くの同時「質問」。

とはいえ「アーキテクチャは同じ」という言い方には注意がいる。全体の設計図としては正しいが、部品の細部としては誤りだ。2019年から今日までに、ほぼすべての構成要素がより効率的な版に置き換わっている。学習された位置埋め込みの代わりにRoPE、LayerNormの代わりにRMSNorm、GELUの代わりにSwiGLU、古典的なマルチヘッドの代わりにGQA——さらに下で触れるMixture of Expertsの変種もある。設計図は同じ、部品は別物だ。

出力:ベクトルから分布へ

この段階で、最終ブロックは各位置について数千次元のベクトルを返してくれる。これをどうやって語彙上の分布に戻すのか?

ステップは1つだけだ。このベクトルに (d_model × |vocab|) の次元を持つ行列 W_out を掛け、ソフトマックスを適用する。結果:各位置について、語彙のすべてのトークンに対する確率分布が得られる——GPT-2なら約5万個、Llama 3なら12万8000個、GPT-4oなら20万個。これがLLMの出力だ——分布である。

エレガントなディテール:多くの小さなモデル(GPT-2、Gemmaなど)では、W_out は入力の埋め込み行列と重みを共有している(weight tying)。トークン5234をベクトルに写す変換が、逆向きに動かせば、ベクトルをトークン5234の確率に写すのだ。パラメータの節約になり、汎化性能も向上する。一方、大きなモデル(GPT-3、Llama 70B、Mistralなど)は逆に2つの行列を分離している。この規模ではパラメータのコストは無視できるほど小さくなり、束縛されたひとつの行列より自由な2つの行列のほうがうまく働くからだ。

Mixture of Experts:すべてのパラメータが発火するわけではない

最近のモデルで支配的になったアーキテクチャのバリアントがある:Mixture of ExpertsMoE)。Mixtral、DeepSeek、Qwen、Llama 4が採用している——これは確定情報で、アーキテクチャが公開されている。クローズドなモデル(GPT-4、Gemini)については、リークと推測しかない。おそらくそうだが、公式に確認されたことはない。この区別は、プロプライエタリなモデルについての数字を読むたびに頭の片隅に置いておく価値がある。

アイデア:ブロックごとに単一のFFNを置く代わりに、複数を並列に配置する(典型的には8〜128個のエキスパート)。各トークンに対して、小さなルーティングネットワーク(ルーター)が2〜4個を選択する——そのトークンに最も関連性の高いものを。それらのエキスパートだけが発火する。

結果:モデルは「総計」4000億パラメータを持っていても、トークンあたりわずか500億しかアクティブにしない可能性がある。大きなモデルの容量、小さなモデルの計算コスト。 これがMixtral 8×7B(470億パラメータ)を、はるかに大きな密なモデルと推論時に競争力を持たせている理由だ。

トレードオフ:VRAMはすべてのエキスパートを収容しなければならない(さもなくばスワップする必要がある)し、ルーティングは訓練に不安定さの層を加える。今も活発な研究領域だ。

シンプルさという奇跡

この建造物全体は、繰り返され、正規化され、自己に加算される単一のパターンに依拠している。文法のための特定の構造はない。意味論のための分離したモジュールもない。ハードコードされた言語規則もない。

トランスフォーマーは言語について何も知らない。ただ、誰が誰に似ているかを見ながらベクトルを混ぜる方法を知っているだけだ。

すべての複雑さは訓練から出現する——それが次の章のテーマだ。

更新日