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
Encoder層の中身
Encoderの1層は、次の2つのサブ層から構成されます。
- Multi-Head Self-Attention:文中のすべての単語が互いに参照(第6〜7章で学習済み)
- 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があると、勾配が 層を飛び越えて直接流れる ため、深層化が可能になります。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つ多い)。
- Masked Multi-Head Self-Attention:因果マスク付き(第8章)
- Cross-Attention:Qはデコーダ、K・Vはエンコーダから取る(翻訳元を参照)
- 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の設計思想は明確です。
- 逐次性こそボトルネック:RNNを残す限りGPUで並列化できない
- 長距離依存は「直接接続」で解く:1ホップで任意の2単語が繋がる
- 帰納バイアスを薄くしてデータで殴る: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は 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を動かせるようになります。
理解度チェック
Transformerの1つのEncoder層に含まれる主要なサブ層は何ですか?
キーボード: 1〜4 で選択、Enter で回答