AI・機械学習
初級

Transformer Architecture(トランスフォーマーアーキテクチャ)

Transformer Architectureは、人工知能・機械学習分野における重要な概念・技術です。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
AI
機械学習
初心者向け

Transformer Architecture(トランスフォーマーアーキテクチャ)

概要

Transformer Architecture(トランスフォーマー)は、2017 年に Google の研究者が論文「Attention Is All You Need」で発表した、ニューラルネットワークの革新的なアーキテクチャです。従来の RNN や CNN に代わって Self-Attention メカニズムを中心に据え、並列処理能力・長距離依存の学習・スケーラビリティに優れます。現代の大規模言語モデル(GPT、BERT、Llama、Claude、Gemini)、画像認識(ViT)、音声認識(Whisper)など、ほぼすべての AI 分野の基盤技術となっています。

歴史的背景

従来の課題

  • RNN/LSTM: 逐次処理で並列化困難、長距離依存が苦手
  • CNN: 局所的特徴に偏り、グローバルな依存関係の捕捉が弱い

Transformer の革新

  • Self-Attention: 全トークン間の関係を並列計算
  • スケーラビリティ: パラメータ数の増加で性能向上
  • 汎用性: 言語、画像、音声、コードすべてに適用可

基本構造

エンコーダー-デコーダー型(オリジナル)

Input → Encoder → Context → Decoder → Output

エンコーダー(Encoder)

  • 入力: トークン列
  • 処理: 双方向の文脈理解
  • 用途: 分類、理解タスク(BERT)

デコーダー(Decoder)

  • 入力: エンコーダーの出力 + 生成済みトークン
  • 処理: 次トークン予測
  • 用途: 生成タスク(GPT)

主要コンポーネント

1. Self-Attention(自己注意機構)

全トークン間の関連度を計算:

Attention(Q, K, V) = softmax(QK^T / √d_k) × V
  • Q (Query): 問い合わせベクトル
  • K (Key): キーのベクトル
  • V (Value): 値のベクトル
  • d_k: キーの次元数(スケーリング)

動作:

  1. 各トークンを Q、K、V に変換
  2. Q と K の内積で関連度計算
  3. Softmax で確率化
  4. V との重み付き和を出力

2. Multi-Head Attention

複数の Attention を並列実行:

  • ヘッド数: 通常 8、12、16、32 等
  • 各ヘッド: 異なる部分空間での Attention
  • 結合: 全ヘッドを結合して出力

効果:

  • 多様な関係性: 構文、意味、位置等を捉える
  • 表現力向上: 単一 Attention より豊富

3. Positional Encoding(位置エンコーディング)

Transformer は並列処理のため、位置情報を別途付加:

  • Sinusoidal: 三角関数ベース(オリジナル)
  • Learned: 学習可能な位置埋め込み
  • RoPE(Rotary Position Embedding): 回転行列ベース(Llama、GPT-NeoX)
  • ALiBi: 相対位置バイアス(BLOOM)

4. Feed-Forward Network

位置ごとの非線形変換:

FFN(x) = max(0, xW_1 + b_1)W_2 + b_2
  • 隠れ層: モデル次元の 4 倍が一般的
  • 活性化関数: ReLU、GELU、SwiGLU

5. Layer Normalization

安定した学習のための正規化:

  • Pre-LN: 現代の主流(GPT、Llama)
  • Post-LN: オリジナル

6. Residual Connection(残差接続)

勾配消失を防ぐスキップ接続:

output = LayerNorm(x + Sublayer(x))

モデル規模の進化

BERT(Google、2018)

  • Base: 110M パラメータ
  • Large: 340M パラメータ
  • エンコーダーのみ
  • 用途: 分類、検索、理解

GPT シリーズ(OpenAI)

モデル年パラメータ
GPT-12018117M
GPT-220191.5B
GPT-32020175B
GPT-42023~1.7T(推定)

デコーダーのみ、用途: 生成、対話

T5(Google、2019)

  • エンコーダー-デコーダー
  • Text-to-Text: すべてのタスクを統一形式
  • スケール: 11B パラメータ

Llama シリーズ(Meta)

  • Llama 1: 2023、7B〜65B
  • Llama 2: 2023、7B〜70B
  • Llama 3: 2024、8B〜405B
  • Llama 3.3: 2024、70B

DeepSeek V3(2024)

  • 671B パラメータ(MoE)
  • アクティブ: 37B
  • 性能: GPT-4 に匹敵

バリエーション

Encoder のみ

  • BERT: Bidirectional
  • RoBERTa: BERT の改良
  • DeBERTa: Disentangled Attention
  • ViT: Vision Transformer

Decoder のみ

  • GPT シリーズ
  • Llama シリーズ
  • Mistral、Qwen

Encoder-Decoder

  • T5: Text-to-Text
  • BART: 再構成型事前学習
  • PaLM: Google

MoE(Mixture of Experts)

  • Mixtral 8x7B: 8 エキスパートから 2 選択
  • Mixtral 8x22B: 高性能
  • DeepSeek V3: 256 エキスパート
  • メリット: パラメータ増加でも計算量抑制

計算量

Self-Attention の計算量

O(n² × d)
  • n: シーケンス長
  • d: モデル次元
  • 問題: 長文でメモリ爆発

高速化技術

  • Flash Attention: メモリ効率、2-4× 高速
  • Sparse Attention: 一部の位置のみ計算
  • Linear Attention: O(n) への近似
  • Grouped-Query Attention(GQA): Llama 2 以降
  • Multi-Query Attention(MQA): PaLM

Transformer の応用

自然言語処理

  • 機械翻訳: Google Translate、DeepL
  • 文章生成: ChatGPT、Claude、Gemini
  • 要約: T5、Pegasus
  • 質問応答: BERT、GPT
  • 感情分析: RoBERTa

画像処理

  • 画像分類: ViT、Swin Transformer
  • 物体検出: DETR
  • セグメンテーション: SAM
  • 画像生成: DiT(Sora、SD3)

音声

  • 音声認識: Whisper(OpenAI)
  • 音声合成: Tortoise TTS
  • 音楽生成: MusicLM

マルチモーダル

  • CLIP: 画像 + テキスト
  • DALL-E: テキスト → 画像
  • Gemini: オムニモーダル
  • GPT-4o: 音声 + 画像 + テキスト

コード

  • GitHub Copilot: コード補完
  • Codex、Code Llama: 専用コードモデル
  • StarCoder: オープンソース

科学

  • AlphaFold 2: タンパク質構造予測
  • Galactica: 科学文献

学習手法

Pre-training

  • 大規模コーパス: Web、書籍、コード
  • Self-supervised: ラベル不要
  • MLM: Masked Language Modeling(BERT)
  • CLM: Causal Language Modeling(GPT)

Fine-tuning

  • タスク特化: 分類、生成、翻訳
  • 少量データ: 転移学習
  • LoRA: 効率的なファインチューニング

RLHF

  • ChatGPT の秘密: 人間の選好で調整
  • Reward Model: 報酬モデル
  • PPO: 方策最適化

実装例(PyTorch)

import torch
import torch.nn as nn

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        self.d_model = d_model
        self.num_heads = num_heads
        self.d_k = d_model // num_heads

        self.q_linear = nn.Linear(d_model, d_model)
        self.k_linear = nn.Linear(d_model, d_model)
        self.v_linear = nn.Linear(d_model, d_model)
        self.out = nn.Linear(d_model, d_model)

    def forward(self, q, k, v, mask=None):
        B = q.size(0)

        Q = self.q_linear(q).view(B, -1, self.num_heads, self.d_k).transpose(1, 2)
        K = self.k_linear(k).view(B, -1, self.num_heads, self.d_k).transpose(1, 2)
        V = self.v_linear(v).view(B, -1, self.num_heads, self.d_k).transpose(1, 2)

        scores = torch.matmul(Q, K.transpose(-2, -1)) / (self.d_k ** 0.5)
        if mask is not None:
            scores = scores.masked_fill(mask == 0, -1e9)

        attn = torch.softmax(scores, dim=-1)
        out = torch.matmul(attn, V)
        out = out.transpose(1, 2).contiguous().view(B, -1, self.d_model)
        return self.out(out)

限界と課題

1. 計算コスト

  • O(n²): 長文で爆発
  • 対策: Flash Attention、Sparse Attention

2. データ要件

  • 大規模コーパス必須
  • 対策: Transfer Learning、Few-shot

3. 解釈性

  • ブラックボックス
  • 対策: Attention 可視化、Probing

4. バイアス

  • 学習データの継承
  • 対策: RLHF、Debiasing

関連用語

  • Self-Attention、Multi-Head Attention
  • Positional Encoding、RoPE
  • BERT、GPT、Llama
  • Flash Attention、GQA、MoE
  • Vision Transformer(ViT)
この記事について
カテゴリーAI・機械学習
難易度初級
作成日2025/7/11