Skip to content

Transformer全体像

ChatGPT も Claude も Gemini も、土台は 2017 年の Transformer という 1 つの設計に載っている。この章はコードを書かず骨格を解剖する。それまで主流だった逐次処理の何が行き詰まり、attention がどう解いたのかを追い、同じ骨格がマスクの違いだけで 3 系統に分かれることを見る。ブロックの中の分業も開けて、以降の部品章の見取り図にする。

この章で読むもの

行列演算attentionmini-GPT で Transformer を部品から組んだ。だがそこでは「なぜこの形なのか」を後回しにしていた。attention はなぜ RNN を置き換えたのか。なぜ今のチャット LLM はほぼ全部 decoder-only なのか。ブロックの中の attention と FFN は、それぞれ何の係なのか。

この章はコードを書かず、この設計判断の連なりを追う。以降の部品章(位置エンコーディング、attention 変種、正規化と活性化、MoE)は、すべてこの章で描く骨格のどこか 1 箇所を深掘りする。その配置を先に頭に入れておくのが目的だ。

順に見ていく。

  1. Transformer が解いたのは学習の並列化: RNN は 1 語ずつしか進めない。attention は全位置を同時に計算でき、GPU を使い切れる
  2. 同じ骨格が使い方で 3 系統に分かれる: decoder-only(生成)、encoder-only(理解・埋め込み)、encoder-decoder(変換)。違いは attention のマスクと学習目標
  3. ブロックの中は分業: attention がトークン間で情報を混ぜ、FFN がトークンごとに変換する。残差と正規化がその繰り返しを深く積めるようにする

① RNN の時代と、その限界

Transformer の前の主流は RNN(と改良版の LSTM)だった。RNN は文章を 1 語ずつ読み、読むたびに内部状態を更新する。「猫が」を処理し終えるまで「好きだ」に進めない。この設計には 2 つの限界がある。

1 つ目は速度だ。逐次処理は前の計算が終わるまで次を始められないので、GPU が持つ数千コアの並列計算力を活かせない。学習データを増やしても、処理がそれに追いつかない。

2 つ目は距離だ。RNN は文の情報を 1 本の固定長ベクトル(状態)に押し込みながら進む。文が長くなるほど、最初の方の情報は上書きされて薄れる。「彼」が 50 語前の誰を指すかを思い出せない。

RNN:          [猫が] → [好き] → [だ]        前が終わるまで次に進めない
               状態 ─→ 状態 ─→ 状態         遠い語の情報は状態の中で薄れる

Transformer:  [猫が]  [好き]  [だ]           全語を同時に処理できる
                 ╲     │     ╱
                  全語が全語を直接見る        遠い語も近い語も距離 1 で届く
RNN と Transformer の処理の形。RNN は状態を受け渡しながら 1 語ずつ進む(逐次)。Transformer は全語を並べて一度に処理し、語同士は attention で直接つながる(並列)

重要なのは、この限界が推論よりまず学習で効くことだ。LLM の学習は「大量のテキストで次の語の予測を繰り返す」作業で、計算量の大半はここに費やされる。逐次でしか学習できないアーキテクチャは、データと計算機を増やしても規模を伸ばせない。

attention は補助輪として生まれ、主役になった

attention 自体は Transformer の発明ではない。2014 年、機械翻訳の RNN(seq2seq)に「出力の各語を書くとき、入力のどの語を見るかを毎回選び直す」仕組みとして導入された(Bahdanau らの研究)。固定長ベクトル 1 本に文全体を押し込むボトルネックを、必要な語を毎回直接参照することで回避する補助輪だった。

2017 年の "Attention Is All You Need" がやったのは、この補助輪だけを残して RNN 本体を捨てる逆転だ。語同士の参照をすべて attention で行えば、逐次処理そのものが要らなくなる。タイトルはそのままこの主張になっている。順序の情報が消える問題は位置エンコーディングで補い(のちの RoPE の章で深掘りする)、こうして「全位置を同時に計算できて、遠い語も距離 1 で届く」骨格が残った。

② 3 系統: 同じ骨格、違うマスクと学習目標

Transformer と一口に言っても、使い方で 3 系統に分かれる。分かれ目は attention のマスク(どの位置がどの位置を見てよいか)と、学習目標だ。

系統マスク学習目標代表向く用途
decoder-only因果(自分より過去のみ)次の語を予測GPT、Claude、Llama生成(チャット、コード)
encoder-onlyなし(全位置が相互に)隠した語を予測(masked LM)BERT、検索用埋め込みモデル分類、検索、埋め込み
encoder-decoder入力側なし + 出力側因果変換(入力を読んで出力を書く)T5、Whisper翻訳、音声認識

mini-GPT で作ったのは decoder-only で、因果マスクがそれにあたる。今のチャット LLM はほぼ全部この系統だ。理由は 1 つではない。

  • 学習データがそのまま使える: 「次の語を予測する」目標は、生のテキストがそのまま教師データになる。ラベル付けが要らないので、ウェブ全体を教材にできる
  • 全位置が同時に教師信号になる: 長さ n の文は n 個の予測問題になる。masked LM は文の一部(通常 15% 程度)しか予測させないので、同じデータから得られる信号が薄い
  • 学習と生成の形が一致する: 「過去だけを見て次を書く」を学習した通りに推論できる。質問応答も翻訳も要約も、「続きを書く」に還元できると分かった

一方、encoder-only が消えたわけではない。全位置が相互に見えるぶん文全体の表現を作るのに向いていて、検索や RAG の埋め込みモデルとして今も現役だ。生成の主流と理解の現役という住み分けになっている。

③ ブロックの解剖: 混ぜる係と変換する係

decoder-only の中身を開くと、同じ形のブロックが N 段重なっている。GPT-2 で 12〜48 段、フロンティアモデルでは 100 段前後になる。

トークン列   [猫が] [好き] [だ]
     │   埋め込み + 位置情報

┌─ Transformer ブロック ──────────────────┐
│   正規化 → attention ──→ (+) 残差で足し戻す │  ← トークン間で情報を混ぜる
│   正規化 → FFN ────────→ (+) 残差で足し戻す │  ← トークンごとに変換する
└──────────────────────────────────┘ × N 段

最終正規化 → 語彙への射影 → logits(次トークンの分布)
decoder-only Transformer の全体。ブロックの中は attention(トークン間で混ぜる)と FFN(トークンごとに変換する)の分業で、それぞれ残差と正規化に包まれている

ブロックの中は明確な分業になっている。

attention は混ぜる係だ。各トークンが他のトークン(因果マスクなら過去だけ)から情報を集める。ブロックの中でトークンの列をまたぐ計算はここしかない。「彼」の位置に「50 語前の田中さん」の情報が流れ込むのは、この工程の仕事だ。仕組みの中身は attention で実装した通りで、複数ヘッドを並列に持つマルチヘッド化と、その K/V を共有して減らす変種(MQA/GQA)は後の章で扱う。

FFN は変換する係だ。attention で混ざった各トークンの表現を、トークンごとに独立に、大きめの中間次元(通常 4 倍)を経由して非線形変換する。列をまたがない代わりに、パラメータはここが最大で、モデル全体のおよそ 3 分の 2 を占める。学習した知識の多くが FFN に蓄えられていると考えられており、後の章で扱う MoE はこの FFN を複数の専門家に分割する話だ。

残りの 2 つは、この分業を深く積むための支えになる。残差接続は各工程の出力を入力に足し戻す。つまり各工程は表現を作り直すのではなく、元の表現に差分を書き足す。勾配が層を素通りできる経路にもなり、これがないと数十段のネットワークは学習が進まない。正規化(LayerNorm)は各トークンの表現のスケールを整えて学習を安定させる。正規化を工程の前に置くか後に置くか(Pre-LN / Post-LN)、平均を引かない簡略版(RMSNorm)については、正規化と活性化の章で深掘りする。

計算量の偏り: 後の章の動機

この骨格のコストは 2 箇所に集中している。系列長を n、表現の次元を d とすると、attention は全ペアを見るので n² に比例し、FFN は d² に比例する。短い文では FFN が支配的だが、n が伸びると attention の n² が効いてくる。100 万トークンの長コンテキストが問題になるのはここだ。

この偏りが、この後の章の見取り図になる。attention の n² とメモリ(KV キャッシュ)に挑むのが attention 変種と推論高速化の章、n² そのものを線形に置き換えようとするのが SSM の章、FFN の巨大化と計算のバランスを取るのが MoE の章にあたる。

動かす

下のデモは、この章の 2 つの話をそのまま動かせる。「ブロックを追う」は 4 トークンが埋め込みから logits まで流れる工程を 1 手ずつ進め、いま列をまたいで混ざっているのか、トークンごとに変換されているのかを色で示す。「3系統のマスク」は同じ 4 トークンに対する attention の見え方(因果 / なし / 入力と出力)を切り替えて、3 系統の違いがマスクだけで説明できることを確かめる。

デモTransformer(骨格の解剖)埋め込み
ブロックを追う3系統のマスク
1埋め込み
2位置情報を足す
3正規化 → attention(+残差)
4正規化 → FFN(+残差)
5ブロックを N 段重ねる
6語彙への射影 → logits
d次元
d次元
好きd次元
d次元

トークン ID を埋め込み表で d 次元ベクトルに変える。この時点では各トークンは孤立していて、順序も知らない

1 / 6

ブロックの中でトークンの列をまたぐのは attention だけで、FFN はトークンごとに独立に働く。 そして decoder-only / encoder-only / encoder-decoder の違いは、attention のマスクと学習目標の違いに還元できる。 この 2 点がこの後の部品章すべての前提になる。

設計の観点

  • なぜ RNN では駄目だったか: 逐次処理は学習を並列化できない。LLM の性能はデータ × 計算量で伸びるので、並列化できないアーキテクチャはスケールの競争に参加できない。長距離依存の減衰も固定長状態の構造的な限界
  • なぜ decoder-only が主流か: 生テキストがそのまま教師データになり、全位置が教師信号になり、学習と生成の形が一致する。3 つが揃うのはこの系統だけ
  • attention と FFN の分担: 混ぜる(トークン間) / 変換する(トークン内)。パラメータの大半は FFN 側にあり、知識の格納庫と見なされている。「Transformer のどこを大きくするか」という問いは、実質この 2 つの配分の話
  • 残差の意味: 各層は表現の作り直しではなく差分の書き足し。勾配の素通り経路として深い積み上げを可能にする。ResNet(画像)で確立した技法が言語でもそのまま効いている
  • 計算量の見積もり: attention は n²d、FFN は nd²。コンテキスト長を 10 倍にすると attention のコストは 100 倍、モデル幅を 10 倍にすると FFN は 100 倍。どちらを伸ばすかで別の工夫が要る

メリット・デメリットと実例

系統強み弱み実プロダクト
decoder-only生成の学習効率が最高。用途を続きの生成に統一できる文全体の埋め込み表現は不得手GPT-4、Claude、Gemini、Llama
encoder-only全位置相互参照で文表現が濃い。推論が軽い生成ができないBERT 系、E5 / GTE 等の検索埋め込み
encoder-decoder入力と出力を分けて設計できる構造が重く、生成 LLM としては学習効率で劣るT5、Whisper(音声→テキスト)、機械翻訳

裏どり:

  • GPT-1(2018): decoder-only + 生テキスト事前学習という路線の出発点。「タスクごとの教師データより、まず言語モデルとして育てる」転換
  • BERT(2018): encoder-only + masked LM。分類・検索系タスクを当時総なめにし、埋め込みモデルの系譜として現在も検索基盤に残る
  • T5(2019): あらゆるタスクをテキスト変換として統一した encoder-decoder。のちの「全部生成でよい」への橋渡し
  • Whisper(2022): encoder-decoder の現役例。音声を encoder で読み、テキストを decoder で書く。入力と出力の様式が違う変換では今もこの構造が自然

この章で扱わなかったこと

各論は以降の部品章に譲る。

  • 位置情報はどう入れるか: 位置エンコーディングと RoPE の章
  • attention のメモリと変種: attention 変種(MQA/GQA/MLA)の章、KV キャッシュと推論高速化の章
  • 正規化と活性化の中身: RMSNorm と SwiGLU の章
  • FFN の分割: MoE の章
  • 重みはどう決まるか: 学習パイプラインの章(この章までの話はすべて未学習の骨格)

参考資料