Transformer全体像

ここまで9章をかけて、Attentionの個別パーツを学んできました。本章ではついに、それらを組み立てて Transformer全体 を完成させます。

graph TD
  IN[入力文章\n例: I love AI] --> EMB[Embedding\n+ Positional Encoding]
  EMB --> ENC[Encoder × 6\n双方向Self-Attention]
  ENC --> CTX[エンコーダ出力\n文脈ベクトル]
  TARGET[出力済みの訳文\n例: 私は] --> EMB2[Embedding\n+ Positional Encoding]
  EMB2 --> DEC[Decoder × 6\nMasked Self-Attention\n+ Cross-Attention]
  CTX --> DEC
  DEC --> LIN[Linear + Softmax]
  LIN --> OUT[次トークン確率\n例: AI=0.6, を=0.2]

  style IN fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style EMB fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style EMB2 fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style ENC fill:#f97316,stroke:#ea580c,color:#fff
  style DEC fill:#f97316,stroke:#ea580c,color:#fff
  style OUT fill:#14b8a6,stroke:#0d9488,color:#fff
オリジナルTransformerの全体図。Encoder 6層 + Decoder 6層の対称構造

Encoder層の中身

Encoderの1層は、次の2つのサブ層から構成されます。

  1. Multi-Head Self-Attention:文中のすべての単語が互いに参照(第6〜7章で学習済み)
  2. Feed-Forward Network(FFN):各位置に独立した非線形変換

そして、各サブ層の出力には Residual接続LayerNorm が適用されます。

# Encoder 1層の擬似コード
def encoder_layer(x):
    # サブ層1: Self-Attention
    attn_out = MultiHeadAttention(Q=x, K=x, V=x)
    x = LayerNorm(x + attn_out)   # Residual + LayerNorm

    # サブ層2: FFN
    ffn_out = FFN(x)
    x = LayerNorm(x + ffn_out)   # Residual + LayerNorm

    return x

# 6層スタック
for layer in range(6):
    x = encoder_layer(x)

FFN(Feed-Forward Network)— 各位置の「記憶」

FFNは2層のMLP(多層パーセプトロン)です。各位置の入力ベクトルに対し、独立に同じ計算を適用します。

FFN の式

FFN(x) = max(0, x · W₁ + b₁) · W₂ + b₂

内部次元 d_ff = 2048(d_model=512の4倍)

原論文では d_model=512 から d_ff=2048 に拡大してから戻す「砂時計型」になっています。max(0, ·) はReLU活性化関数で、非線形性を導入します。

Residual接続 — 勾配の高速道路

Residual接続(残差接続) とは、サブ層の出力に 入力をそのまま足す 仕組みです。

# Residualなし
output = SubLayer(x)

# Residualあり
output = x + SubLayer(x)
#         ↑ 入力をそのまま足す

「なぜわざわざ入力を足すのか?」と思うかもしれません。理由は 勾配消失の防止 です。

graph TD
  X[入力 x] --> SL[サブ層\nAttention or FFN]
  X -.->|Residual\nそのまま| ADD[+]
  SL --> ADD
  ADD --> LN[LayerNorm]
  LN --> OUT[出力]

  style X fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style SL fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style ADD fill:#f97316,stroke:#ea580c,color:#fff
  style OUT fill:#14b8a6,stroke:#0d9488,color:#fff
Residual接続:入力 x が層を飛び越えて出力に加わる。勾配の高速道路

深いネットワーク(数十〜数百層)では、逆伝播の途中で勾配が消えてしまうことがあります。Residualがあると、勾配が 層を飛び越えて直接流れる ため、深層化が可能になります。Transformerの6層×複数モジュール、GPT-3の96層といった深さは、Residualなしには不可能でした。

LayerNorm — 各層の出力を標準化

LayerNorm(Layer Normalization) は、各位置の隠れ表現を「平均0、分散1」に標準化する処理です。

# LayerNorm の擬似コード
def layer_norm(x):
    mean = x.mean(axis=-1)        # 各位置の平均
    std = x.std(axis=-1)          # 各位置の標準偏差
    normalized = (x - mean) / std # 標準化
    return gamma * normalized + beta  # 学習可能なスケール・シフト

これにより、層を重ねていっても出力の値が爆発したり消滅したりせず、訓練が安定します。Residualと併用することで、「深いネットワークを安定して訓練する」 という Transformer の大きな強みが生まれます。

Decoder層の中身

Decoderの1層は 3つのサブ層 を持ちます(Encoderより1つ多い)。

  1. Masked Multi-Head Self-Attention:因果マスク付き(第8章)
  2. Cross-Attention:Qはデコーダ、K・Vはエンコーダから取る(翻訳元を参照)
  3. FFN:Encoderと同じ

Cross-Attentionが「翻訳元の文章を翻訳先で参照する」役割を担います。日本語訳「私はAIが好き」を生成する各時点で、英語の原文「I love AI」のどの単語を見るかを動的に決めるのです。これがBahdanau Attention(第2章)の精神的後継です。

3種類のTransformer

オリジナルのTransformerは Encoder + Decoder の構造でしたが、その後派生形が登場し、現在は3種類が並立しています。

種類 構造 用途 代表モデル
Encoder-only Encoderのみ(双方向) 文章理解・分類・穴埋め BERT, RoBERTa
Decoder-only Decoderのみ(因果マスク付き) 文章生成・対話 GPT-4, Claude, Llama, Gemini
Encoder-Decoder 両方 翻訳・要約(明確な入出力) T5, BART, 原Transformer

設計思想 — Attention Is All You Need の核心

論文タイトルが宣言する通り、Transformerの設計思想は明確です。

  1. 逐次性こそボトルネック:RNNを残す限りGPUで並列化できない
  2. 長距離依存は「直接接続」で解く:1ホップで任意の2単語が繋がる
  3. 帰納バイアスを薄くしてデータで殴る:CNNの局所性やRNNの時系列順序という強い前提を捨て、データとパラメータをスケールするほど性能が伸びる

この設計思想の正しさは、スケーリング則(モデル・データ・計算量を増やすほど性能が伸びる)として後に証明されます。GPT-3(175B)、GPT-4(推定1兆超)、DeepSeek V3(671B)……どれもTransformerの上にひたすら積み上げられたものです。

graph LR
  A[2017 Transformer\n初出 65M params] --> B[2018 BERT\n340M]
  B --> C[2019 GPT-2\n1.5B]
  C --> D[2020 GPT-3\n175B]
  D --> E[2023 GPT-4\n推定1兆+]
  E --> F[2025 DeepSeek V3\n671B activated 37B]
  F --> G[2026 各社\nさらに巨大化]

  style A fill:#3b82f6,stroke:#1d4ed8,color:#fff
  style D fill:#8b5cf6,stroke:#6d28d9,color:#fff
  style E fill:#f97316,stroke:#ea580c,color:#fff
  style G fill:#14b8a6,stroke:#0d9488,color:#fff
同じTransformerアーキテクチャを9年間スケールし続けた歴史

この章のまとめ

Transformerは Encoder × 6 + Decoder × 6 の対称構造を持ち、各層は Attention(通信)FFN(記憶) を交互に重ねた構造です。Residual接続 が勾配の高速道路を提供し、LayerNorm が訓練を安定化することで、深層化を可能にしています。

3種類の派生(Encoder-only、Decoder-only、Encoder-Decoder)があり、2026年現在の主流はDecoder-only型です。スケーリング則に従って、同じアーキテクチャを9年間積み上げ続けた結果がGPT-4・Claude・Geminiです。

次の第11章では、ここまで学んだAttentionを PyTorch で実際に実装 します。50行程度のコードで、Scaled Dot-Product AttentionとMulti-Head Attentionを動かせるようになります。

理解度チェック

問題 0 / 50%
Q1

Transformerの1つのEncoder層に含まれる主要なサブ層は何ですか?

キーボード: 1〜4 で選択、Enter で回答