STEP 12:Transformerの概要

⚡ STEP 12: Transformerの概要

NLPに革命をもたらしたTransformerアーキテクチャの全体像を理解します

📋 このステップで学ぶこと

  • “Attention is All You Need”論文の背景と意義
  • なぜRNN/LSTMでは不十分だったのか
  • Transformerの全体構造(Encoder-Decoder)
  • 並列処理が可能になった理由
  • Self-Attention(自己注意機構)の導入
  • なぜTransformerが革命的なのか
  • Transformerの応用例(BERT、GPT、T5)

練習問題: 4問

💻 このステップについて

このステップはTransformerの概念的な理解に焦点を当てています。
実装コードは次のSTEP 13〜15で詳しく学びます。

📜 1. “Attention is All You Need”の登場

2017年6月、Googleの研究チームが発表した論文 “Attention is All You Need”は、NLP分野に革命をもたらしました。 この論文が提案したTransformerは、それまでの常識を覆すものでした。

1-1. 論文のタイトルの意味

【論文タイトルの解釈】 “Attention is All You Need” (注意機構だけで十分) ■ 当時の常識 「系列(文章)を処理するにはRNN/LSTMが必須」 「時系列データは順番に処理するしかない」 ■ 論文の主張 「いいえ、Attentionだけで十分です」 「RNN/LSTMは不要です」 ■ 具体的には ・RNN/LSTM: 完全に廃止 ・CNN: 使わない ・Attention: これだけで構築 → シンプルなのに高性能という驚きの結果

1-2. なぜこの論文が必要だったのか?

⚠️ RNN/LSTMの3つの限界

STEP 8-11で学んだRNN/LSTM + Attentionは優れたモデルでしたが、 以下の限界がありました。

【限界1: 並列処理ができない】 RNN/LSTMの処理: “I love you” を処理する場合 時刻1: “I” → h₁ を計算 時刻2: “love” → h₂ を計算(h₁が必要) 時刻3: “you” → h₃ を計算(h₂が必要) 問題: ・時刻2は時刻1の結果を待つ必要がある ・時刻3は時刻2の結果を待つ必要がある ・順番にしか処理できない = 並列化不可能 結果: ・GPUは並列処理が得意なのに活かせない ・長い文ほど時間がかかる ・大量のデータの訓練に時間がかかりすぎる
【限界2: 長距離依存関係が捉えにくい】 例文: “The cat, which was sitting on the mat near the window in the living room, suddenly jumped up.” 問題: ・”cat”と”jumped”が20単語以上離れている ・その間に多くの情報が流れる ・LSTMでも情報が薄まる(勾配消失) 図解: “cat” ─→ [20単語] ─→ “jumped” ↑ この間で情報が失われる 結果: ・主語と動詞の関係が正しく捉えられない ・翻訳や要約の精度が落ちる
【限界3: 訓練に時間がかかりすぎる】 当時の訓練時間(機械翻訳): ・RNN + Attention: 3.5日(8GPU使用) ・データセット: WMT(数百万文) 問題: ・1回の実験に3.5日 ・ハイパーパラメータ調整に数週間 ・大規模モデルの開発が困難 研究への影響: ・試行錯誤が遅い ・大規模化が困難 ・コストが高い

1-3. Transformerの解決策

💡 Transformerのアイデア

「RNNを使わず、Attentionだけで系列を処理する」

【Transformerの処理】 “I love you” を処理する場合 従来のRNN: 時刻1 → 時刻2 → 時刻3(順番に処理) Transformer: ┌─────┬─────┬─────┐ │ I │love │ you │ ← 全単語を同時に処理! └─────┴─────┴─────┘ ↓ ↓ ↓ 全ての単語ペア間でAttentionを計算 利点: ✅ 並列処理可能 → GPUを完全活用 ✅ 長距離依存を直接計算 → 情報が失われない ✅ 訓練が高速 → 3.5日 → 12時間(1/7に短縮)

🔄 2. RNN/LSTMとの根本的な違い

TransformerとRNN/LSTMの違いを、具体的な例で理解しましょう。

2-1. 処理方法の違い

【RNN/LSTMの処理方法 – 逐次処理】 入力: “The cat sat on the mat” (6単語) 処理の流れ: ステップ1: “The” を処理 ↓ ステップ2: “cat” を処理(”The”の結果を使う) ↓ ステップ3: “sat” を処理(”cat”の結果を使う) ↓ ステップ4: “on” を処理 ↓ ステップ5: “the” を処理 ↓ ステップ6: “mat” を処理 合計: 6ステップ(直列処理) 時間: O(n) – 単語数に比例して増加 イメージ: 工場の組み立てライン 一つずつ順番に処理するしかない
【Transformerの処理方法 – 並列処理】 入力: “The cat sat on the mat” (6単語) 処理の流れ: ┌─────┬─────┬─────┬─────┬─────┬─────┐ │ The │ cat │ sat │ on │ the │ mat │ └──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴──┬──┘ │ │ │ │ │ │ └─────┴─────┴─────┴─────┴─────┘ ↓ 同時に全ての関係を計算 計算される関係: ・”The” ↔ “cat”, “sat”, “on”, “the”, “mat” ・”cat” ↔ “The”, “sat”, “on”, “the”, “mat” ・”sat” ↔ “The”, “cat”, “on”, “the”, “mat” …(全ての組み合わせ) 合計: 1ステップ(並列処理) 時間: O(1) – 単語数に関係なく一定(並列化時) イメージ: 多数の作業員が同時に作業 待ち時間なく全てを同時処理

2-2. 長距離依存関係の違い

【RNN/LSTMの長距離依存関係】 文: “The keys to the car that I bought last week are on the table” ↑ ↑ 主語 動詞 “keys”と”are”の距離: 11単語 RNN/LSTMでの処理: “keys” → … (11ステップ) … → “are” ↑ この間で情報が徐々に薄まる 問題: ・各ステップでh_t = f(h_{t-1}, x_t)の計算 ・情報が何度も変換される ・勾配消失で学習が困難
【Transformerの長距離依存関係】 文: “The keys to the car that I bought last week are on the table” ↑ ↑ 主語 動詞 “keys”と”are”の距離: 11単語(でも関係ない!) Transformerでの処理: “keys” ←────────── 直接Attention ──────────→ “are” 特徴: ・どんなに離れていても1ステップで直接計算 ・間の単語を経由する必要がない ・情報が失われない Attention計算: “are”を処理中: ・”keys”との関連度: 0.7(高い!→ 主語と認識) ・”car”との関連度: 0.1 ・”table”との関連度: 0.1 …

2-3. 比較表

項目 RNN/LSTM Transformer
処理方法 逐次処理(t=1→2→3→…) 並列処理(全単語同時)
長距離依存 困難(情報が薄まる) 容易(直接計算)
GPU活用 限定的 完全活用
訓練時間 3.5日 12時間(1/7)
翻訳精度 BLEU 25〜28 BLEU 28〜32

🏗️ 3. Transformerの全体構造

Transformerは、Seq2Seqと同様にEncoderDecoderから 構成されますが、内部構造が全く異なります。

3-1. 全体のアーキテクチャ

【Transformerの全体像】 入力: “I love you”(英語) ↓ ┌─────────────────────────────────────────────────────┐ │ Transformer │ │ │ │ ┌────────────────┐ ┌────────────────┐ │ │ │ Encoder │ │ Decoder │ │ │ │ (6層) │─────→│ (6層) │ │ │ │ │ │ │ │ │ │ 入力を理解 │ │ 出力を生成 │ │ │ └────────────────┘ └────────────────┘ │ │ ↑ ↓ │ │ 入力埋め込み 出力埋め込み │ │ + Position Encoding + Position Encoding │ └─────────────────────────────────────────────────────┘ ↓ 出力: “私はあなたを愛しています”(日本語) 【重要な違い】 Seq2Seq: RNN/LSTMで構築 Transformer: Self-Attentionで構築(RNNなし)

3-2. Encoder(エンコーダ)の構造

📥 Encoderの役割

「入力文を理解し、各単語の文脈を考慮した表現を作る」

【1つのEncoder層の構造】 入力: (batch_size, seq_len, d_model) 例: (32, 10, 512) = 32文, 10単語, 512次元 ┌─────────────────────────────────────┐ │ Multi-Head Self-Attention │ │ (各単語が他の全単語を見る) │ └──────────────────┬──────────────────┘ ↓ 残差結合 + Layer Norm ↓ ┌─────────────────────────────────────┐ │ Feed-Forward Network │ │ (各単語の表現を変換) │ └──────────────────┬──────────────────┘ ↓ 残差結合 + Layer Norm ↓ 出力: (batch_size, seq_len, d_model) 入力と同じ形状 【これを6回繰り返す】 Layer 1 → Layer 2 → Layer 3 → Layer 4 → Layer 5 → Layer 6 なぜ6層? ・深い層で複雑な関係を学習 ・論文の実験で6層が最適 ・現在は12層(BERT)、24層以上も使われる

3-3. Self-Attentionの役割

【Self-Attentionが学習する関係】 文: “The animal didn’t cross the street because it was too tired” ■ “it”を処理する時 Self-Attentionは文中の全単語との関連度を計算: “it” が見る単語: ・”The” : 0.02 ・”animal” : 0.75 ← 強く注目!(”it”は”animal”を指す) ・”didn’t” : 0.01 ・”cross” : 0.02 ・”the” : 0.01 ・”street” : 0.05 ・”because” : 0.02 ・”was” : 0.05 ・”too” : 0.02 ・”tired” : 0.05 結果: “it”の表現 = 主に”animal”の情報を含む → 「it = animal」という関係を学習 ■ これがRNN/LSTMより優れている点 ・”it”と”animal”は8単語離れているが直接計算 ・RNN/LSTMでは8ステップの情報伝播が必要

3-4. Decoder(デコーダ)の構造

📤 Decoderの役割

「Encoderの理解を元に、出力文を1単語ずつ生成する」

【1つのDecoder層の構造】 入力: 生成中の出力文 ┌─────────────────────────────────────┐ │ Masked Multi-Head Self-Attention │ │ (未来の単語を見ないように制限) │ └──────────────────┬──────────────────┘ ↓ 残差結合 + Layer Norm ↓ ┌─────────────────────────────────────┐ │ Multi-Head Cross-Attention │ │ (Encoderの出力を参照) │ └──────────────────┬──────────────────┘ ↓ 残差結合 + Layer Norm ↓ ┌─────────────────────────────────────┐ │ Feed-Forward Network │ └──────────────────┬──────────────────┘ ↓ 残差結合 + Layer Norm ↓ 出力: 次の単語の確率分布 【これを6回繰り返す】

3-5. Masked Self-Attentionとは?

【なぜMaskが必要か?】 生成タスク: “私はあなたを愛しています”を生成中 ■ 訓練時 全ての正解単語が見えている状態で学習 問題: “愛し”を予測する時に”ています”が見えてしまう → カンニングになる → 正しい学習ができない ■ Maskの役割 未来の単語を見えないようにする “私”を生成: “私”のみ見える “は”を生成: “私”, “は”が見える “あなた”を生成: “私”, “は”, “あなた”が見える … 図解: 私 は あなた を 愛し ています 私 ✓ ✗ ✗ ✗ ✗ ✗ は ✓ ✓ ✗ ✗ ✗ ✗ あなた ✓ ✓ ✓ ✗ ✗ ✗ を ✓ ✓ ✓ ✓ ✗ ✗ 愛し ✓ ✓ ✓ ✓ ✓ ✗ ています✓ ✓ ✓ ✓ ✓ ✓ ✓ = 見える, ✗ = 見えない(Mask)

3-6. Cross-Attentionとは?

【Cross-Attentionの役割】 STEP 11で学んだAttentionと同じ考え方: 「DecoderがEncoderのどこに注目すべきか」 例: “I love you” → “私はあなたを愛しています” “私”を生成中: Encoderの出力への注目度: ・”I” : 0.85 ← 強く注目! ・”love” : 0.05 ・”you” : 0.05 ・<eos> : 0.05 “愛し”を生成中: Encoderの出力への注目度: ・”I” : 0.05 ・”love” : 0.80 ← 強く注目! ・”you” : 0.10 ・<eos> : 0.05 → 翻訳の対応関係を学習

👁️ 4. Self-Attention(自己注意機構)

Self-AttentionはTransformerの核心部分です。 STEP 11で学んだAttentionを発展させた概念です。

4-1. AttentionとSelf-Attentionの違い

【従来のAttention(STEP 11)】 2つの異なる系列間の関係を計算: Encoder(入力文): “I love you” ↓ Attention Decoder(出力文): “私は…” Decoder → Encoder を参照 (異なる系列間) 【Self-Attention】 同じ系列内の関係を計算: 入力文: “The cat sat on the mat” ↓ ↓ ↓ ↓ ↓ ↓ 全ての単語ペア間でAttention “cat” → “The”, “cat”, “sat”, “on”, “the”, “mat” (同じ系列内) 「自分自身を含む、文中の全単語との関係」 だから”Self”-Attention

4-2. Self-Attentionの利点

💡 Self-Attentionが捉える関係
  • 照応関係:“it”, “they”が何を指すか
  • 構文関係:主語-動詞、修飾語-被修飾語
  • 意味関係:同義語、関連語
  • 長距離依存:離れた単語同士の関係
【具体例: 照応関係の学習】 文: “The teacher taught the students because they were confused” Self-Attentionによる処理: “they”を処理: ・”teacher”との関連度: 0.15 ・”students”との関連度: 0.70 ← “they”は”students”を指す ・”confused”との関連度: 0.10 ・その他: 0.05 “confused”を処理: ・”teacher”との関連度: 0.10 ・”students”との関連度: 0.60 ← 誰が混乱しているか ・”they”との関連度: 0.20 ・その他: 0.10 結果: モデルは以下を学習: ・”they” = “students” ・”confused”の主語 = “students”

4-3. Self-Attentionの直感的理解

【比喩: 会議室での議論】 文を処理する = 会議で議題を話し合う ■ RNN/LSTMの場合 ・参加者が1人ずつ順番に発言 ・前の人の発言しか聞けない ・最初の発言は最後には忘れがち ■ Self-Attentionの場合 ・全員が同時に全員の意見を聞く ・誰でも誰の意見でも直接参照できる ・最初の発言も最後まで覚えている ・重要な意見により注目できる 結果: ・議論が速い(並列処理) ・重要な情報を見落とさない(長距離依存) ・関連する意見をまとめられる(文脈理解)

🚀 5. なぜTransformerが革命的なのか

5-1. 性能の比較

【機械翻訳の性能(WMT 2014 英独)】 ■ 従来モデル ・RNN + Attention: BLEU 25.3 ・ConvS2S (CNN): BLEU 25.2 ■ Transformer ・Transformer (base): BLEU 27.3 ・Transformer (big): BLEU 28.4 → +3.1ポイントの向上(大幅な改善) 【訓練時間の比較】 ■ 従来モデル ・RNN + Attention: 3.5日(8個のP100 GPU) ■ Transformer ・Transformer (base): 12時間(8個のP100 GPU) ・Transformer (big): 3.5日(同じ時間でより高性能) → 同じ時間でより高い性能、または1/7の時間で同程度の性能

5-2. 波及効果

モデル 影響
2017 Transformer 機械翻訳で革新
2018 BERT, GPT 事前学習革命、11タスクで最高性能
2019 GPT-2, T5 大規模化(15億パラメータ)
2020 GPT-3 1750億パラメータ、Few-shot学習
2022 ChatGPT 対話AI、社会現象化
2023 GPT-4 マルチモーダル、さらなる進化
💡 Transformerは「基盤技術」

現代のNLPモデルはほぼ全てTransformerベースです。

  • BERT、GPT、T5、BART、RoBERTa、ALBERT…
  • ChatGPT、Claude、Gemini、Llama…

Transformerを理解すること = 現代NLPを理解すること

🌟 6. Transformerの応用例

Transformerを基にした主要なモデルを紹介します。 これらはSTEP 16以降で詳しく学習します。

6-1. BERT(2018年、Google)

【BERTの特徴】 名前: Bidirectional Encoder Representations from Transformers 構造: Encoderのみ(Decoderなし) ↓ 双方向で文脈を理解 特徴: ・Masked Language Modeling(MLM)で事前学習 ・文の一部を隠して予測する ・前後両方の文脈を使う 得意なタスク: ✅ テキスト分類(感情分析) ✅ 固有表現認識(NER) ✅ 質問応答(答えを文中から抽出) ✅ 文の類似度判定 影響: ・11個のNLPタスクで最高性能を達成 ・「BERT革命」と呼ばれる

6-2. GPT(2018年〜、OpenAI)

【GPTの特徴】 名前: Generative Pre-trained Transformer 構造: Decoderのみ(Encoderなし) ↓ 左から右への一方向生成 進化: ・GPT(2018年): 1.17億パラメータ ・GPT-2(2019年): 15億パラメータ ・GPT-3(2020年): 1750億パラメータ ・ChatGPT(2022年): 対話特化 ・GPT-4(2023年): マルチモーダル 得意なタスク: ✅ テキスト生成 ✅ 文章補完 ✅ 対話 ✅ コード生成 影響: ・ChatGPTで社会現象化 ・AI民主化の象徴

6-3. T5(2019年、Google)

【T5の特徴】 名前: Text-to-Text Transfer Transformer 構造: Encoder-Decoder両方 ↓ 全タスクを「テキスト→テキスト」に統一 例: 翻訳: “translate English to German: I love you” → “Ich liebe dich” 要約: “summarize: [長い文章]” → “[要約文]” 分類: “sentiment: This movie is great” → “positive” 質問応答: “question: What is the capital? context: Tokyo is…” → “Tokyo” 利点: ・統一的なフレームワーク ・同じモデルで多様なタスクに対応

6-4. モデルの使い分け

タイプ 代表モデル 得意なタスク
Encoderのみ BERT, RoBERTa 分類、NER、QA(抽出型)
Decoderのみ GPT, ChatGPT 生成、対話、補完
Encoder-Decoder T5, BART 翻訳、要約、QA(生成型)

📝 練習問題

このステップで学んだ内容を確認しましょう。

問題1:Transformerの革新

Transformerの最も革新的な点は何ですか?

  1. Attentionを初めて導入した
  2. RNN/LSTMを使わず、Attentionだけで構築した
  3. Encoder-Decoderアーキテクチャを採用した
  4. ドロップアウトを使用した
正解:b

Transformerの革新はRNN/LSTMを使わず、Attentionだけで構築したことです。

各選択肢の検証:

  • a: Attentionは2015年に既に存在(Bahdanau, Luong)❌
  • b: これが”Attention is All You Need”の意味 ✅
  • c: Seq2Seq(2014年)で既に使用 ❌
  • d: 一般的な正則化手法 ❌

結果:並列処理可能、長距離依存を直接計算、訓練時間1/7

問題2:Self-Attention

Self-Attentionが捉える関係として正しくないものはどれですか?

  1. “it”が何を指すか(照応関係)
  2. 主語と動詞の関係(構文関係)
  3. 次に来る単語の予測
  4. 文の最初と最後の単語の関係
正解:c

Self-Attentionは既存の単語間の関係を捉えるもので、 次の単語を予測するのはモデル全体のタスクです。

Self-Attentionの役割:

  • a: 照応関係 ✅(”it”が”animal”を指すなど)
  • b: 構文関係 ✅(主語-動詞の対応)
  • c: 次の単語予測 ❌(これはモデル全体のタスク)
  • d: 長距離依存 ✅(どんなに離れても直接計算)

問題3:並列処理

Transformerが並列処理可能な理由は何ですか?

  1. RNN/LSTMを使わないから
  2. 全単語ペアを同時に計算できるから
  3. GPUが必要だから
  4. 上記のaとbの両方
正解:d

並列処理が可能なのはRNN/LSTMを使わず、全単語ペアを同時計算するからです。

RNN/LSTMの制約:

  • h_t = f(h_{t-1}, x_t) という依存関係
  • 時刻tは時刻t-1が終わるまで待つ必要がある

Transformerの処理:

  • 各単語が他の全単語を同時に見る
  • 依存関係がないので並列計算可能

c: GPUは手段であり、理由ではありません。

問題4:モデルの選択

テキスト生成に最も適したTransformerベースモデルはどれですか?

  1. BERT(Encoderのみ)
  2. GPT(Decoderのみ)
  3. T5(Encoder-Decoder)
  4. どれも同じ
正解:b

テキスト生成にはGPT(Decoderのみ)が最適です。

理由:

  • GPT: 自己回帰的生成に最適化、次の単語予測で事前学習
  • BERT: 双方向だが生成には向かない(分類・抽出向け)
  • T5: 生成可能だが条件付き生成(翻訳・要約)向け

実例:ChatGPT、文章補完、コード生成は全てGPTベース

📝 STEP 12 のまとめ

✅ このステップで学んだこと
  • “Attention is All You Need”:2017年の革命的論文
  • RNN/LSTMの限界:逐次処理、長距離依存、訓練時間
  • Transformerの構造:Encoder-Decoderの詳細
  • Self-Attention:同じ系列内での注意機構
  • 革命的な理由:並列処理、長距離依存の直接計算
  • 応用例:BERT、GPT、T5など
💡 重要ポイント

Transformerの3つの革新:

  1. RNN/LSTM不要(Attentionのみ)
  2. 並列処理可能(GPU完全活用)
  3. 長距離依存を直接計算

結果:訓練時間1/7、精度+3〜5ポイント、全タスクで高性能

影響:BERT、GPT、ChatGPT… 現代のNLPは全てTransformerベース

🎯 次のステップの準備

次のSTEP 13では、Transformerの核心である Self-Attentionの仕組みを詳しく学びます!

学ぶ内容:

  • Query、Key、Valueの概念
  • Scaled Dot-Product Attention
  • 数式の完全理解
  • Multi-Head Attention
  • PyTorchでの実装

Self-Attentionを理解すれば、Transformerの動作原理が完全に分かります!

📝

学習メモ

自然言語処理(NLP) - Step 12

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE