📋 このステップで学ぶこと
“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と同様にEncoder とDecoder から
構成されますが、内部構造が全く異なります。
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の最も革新的な点 は何ですか?
Attentionを初めて導入した
RNN/LSTMを使わず、Attentionだけで構築した
Encoder-Decoderアーキテクチャを採用した
ドロップアウトを使用した
解答を見る
正解: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 が捉える関係として正しくない ものはどれですか?
“it”が何を指すか(照応関係)
主語と動詞の関係(構文関係)
次に来る単語の予測
文の最初と最後の単語の関係
解答を見る
正解:c
Self-Attentionは既存の単語間の関係 を捉えるもので、
次の単語を予測する のはモデル全体のタスクです。
Self-Attentionの役割:
a: 照応関係 ✅(”it”が”animal”を指すなど)
b: 構文関係 ✅(主語-動詞の対応)
c: 次の単語予測 ❌(これはモデル全体のタスク)
d: 長距離依存 ✅(どんなに離れても直接計算)
問題3:並列処理
Transformerが並列処理可能 な理由は何ですか?
RNN/LSTMを使わないから
全単語ペアを同時に計算できるから
GPUが必要だから
上記のaとbの両方
解答を見る
正解:d
並列処理が可能なのはRNN/LSTMを使わず、全単語ペアを同時計算 するからです。
RNN/LSTMの制約:
h_t = f(h_{t-1}, x_t) という依存関係
時刻tは時刻t-1が終わるまで待つ必要がある
Transformerの処理:
各単語が他の全単語を同時に見る
依存関係がないので並列計算可能
c: GPUは手段であり、理由ではありません。
問題4:モデルの選択
テキスト生成 に最も適したTransformerベースモデルはどれですか?
BERT(Encoderのみ)
GPT(Decoderのみ)
T5(Encoder-Decoder)
どれも同じ
解答を見る
正解: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つの革新:
RNN/LSTM不要(Attentionのみ)
並列処理可能(GPU完全活用)
長距離依存を直接計算
結果: 訓練時間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の動作原理が完全に分かります!