第7章: 並列に注目を捌く — Transformer
2017 年 6 月、Google の研究者 8 人が "Attention Is All You Need" という論文を arXiv に投稿した。
タイトルからして攻めている。 「注意(Attention)さえあれば十分だ」── つまり、これまで NLP の主役だった RNN も LSTM も、もう要らないと言っている。
このひと月後、世界中の NLP 研究室で、論文に書かれた新しい構造が試され始める。 半年も経たないうちに、機械翻訳の最先端モデルがほぼすべて、この新構造に置き換わった。 1 年後には、第8章で扱う BERT がここから生まれる。 3 年後、ここから派生した GPT-3 が世界を驚かせる。 5 年後、その発展形 ChatGPT が、人類と機械の関係を変える。
本章の主役は、その全ての起点 ── Transformer だ。
7.1 Transformer は何が違うのか
前章末で予告した通り、Transformer の核には 「順に読む」処理を捨てた という決断がある。
整理すると、第4〜6章で進化してきた系譜は、こうなる:
| モデル | 系列の扱い方 | 長距離依存 | 並列計算 |
|---|---|---|---|
| n-gram | 直前 n−1 単語のみ | × | (概念的に) |
| RNN/LSTM | 1 トークンずつ順に、内部状態を更新 | △ | × |
| Transformer | 全トークンを一度に並べ、Attention で関係を計算 | ◎ | ◎ |
Transformer は、「順に処理する」という制約を完全に捨てた。 代わりに、文中の すべての単語ペア の間で Attention を一斉に計算する。 その結果、長距離依存も並列化も、両方手に入った。
Transformer のキーアイデア(一言バージョン)
「順に読む」のをやめ、全トークンを一度に並べ、Self-Attention で互いの関係を全部一気に計算する。 これだけで、文の意味も文脈もちゃんと捉えられる。
シンプルだが、革命的だった。
7.2 Transformer の構造を、ざっくり描く
論文中の図は複雑そうに見えるが、ざっくりした全体像はそれほど怖くない。
ポイントは大きく 4 つ:
- 入力トークン列を、ベクトル化して並べる(埋め込み = 第2章のあの話)
- 位置情報を加える(後述)
- Transformer ブロックを N 層積む(中で Self-Attention が走る)
- 出力する(タスク次第)
このうち、本書で深掘りすべきは 位置情報 と Transformer ブロック中身 の 2 つだ。
7.3 「順に読まない」と困ること ── 位置情報を加える
Transformer は 全トークンを一斉に並べて Attention する。 ところが、ここで一つの困った問題が出てくる。
「The cat sat on the mat」と「mat the on sat cat The」を、Transformer は区別できるか?
全トークンを「順序関係なく」並べているので、素のままだと区別できない。 Self-Attention は順序を見ないから、単語のリストを 集合のように 扱ってしまう。 これでは「猫がマットに座った」と「マットに猫が座られた」(意味が違う!)を同じものとして処理してしまう。
そこで Transformer は、位置情報(Positional Encoding) を各トークンのベクトルに足し込む。
位置情報の発想
各位置(1番目、2番目、3番目、…)に 専用のベクトル を用意し、トークンの埋め込みに加える。 こうすると、「位置 1 の
The」と「位置 6 のmat」が、ベクトルレベルで区別される。
たとえるなら、駅のホームで全員が同じ服を着ているとき、ホーム番号の札 を一人ずつ首にかけてもらうようなものだ。 これで「2 番ホームの人」と「5 番ホームの人」を区別できる。
位置情報の具体的な作り方は、論文の「sin・cos を使う仕掛け」だったり、後発研究では「学習可能なベクトル」だったり、いろいろなバリエーションがある。 本書では深入りしないが、「Transformer は順序を扱うために、位置情報を別途加える」 という事実だけ覚えておけば十分だ。
7.4 Transformer ブロックの中身 ── Self-Attention と FFN
次に、Transformer ブロックの内部を見る。 中には大きく 2 つのサブ層 がある:
サブ層①: Self-Attention(前章で扱った)
文中のすべての単語ペアで Attention を計算する層。 ここで、各単語のベクトルは 「文全体を見渡したうえでの、自分の文脈付き表現」 に更新される。
これがまさに第3章で予告した 文脈埋め込み の正体だ。 Self-Attention 後の各単語のベクトルは、「文中のどの単語と関連が深いか」の情報を取り込んだ 文脈に依存したベクトル になっている。
サブ層②: Feed-Forward Network(FFN)
これは、各位置のベクトルを 独立に変換する ネットワーク。 Self-Attention が「単語間の関係」を扱うのに対し、FFN は「各位置で、得られた表現をさらに洗練する」役回りだ。
たとえるなら:
- Self-Attention = 隣人との会話(情報を交換する)
- FFN = 一人での思考(受け取った情報をかみくだく)
これを N 層 繰り返す(GPT-3 で 96 層、Llama 70B で 80 層、BERT-base で 12 層)と、文中の各単語が 「他の単語との関係を多段に整理した、洗練された表現」 を持つようになる。
Transformer の中で起きていることを、もっと簡潔に言い直すと:
「文中の各単語が、他の単語との関係を取り込みながら、自分自身の意味を何段にもわたって書き換えていく」── これだけ。
複雑そうに見える構造の中身は、この シンプルな考え方の積み重ね に過ぎない。
7.5 「Multi-Head」という工夫 ── 複数の視線を同時に持つ
Transformer の Self-Attention には、もう一つ重要な工夫がある ── Multi-Head Attention(多頭注意) だ。
発想はあっけない:
Multi-Head の発想
1 つの Attention だけだと、「どの観点で単語間を見るか」が 1 通りに固定されてしまう。 なので、複数の Attention を並列に走らせる(各々を「head」と呼ぶ)。
たとえば 12 個の head を用意すれば、12 通りの異なる視点で文中の単語関係を見る:
- head 1: 主語と動詞の対応を見ている
- head 2: 名詞句の中の修飾関係を見ている
- head 3: 代名詞の指示関係を見ている
- …
人間が文章を読むときも、文法的な係り受け、意味的な関連、感情的なトーン ── 複数の視点を同時に動かしているはずだ。 Multi-Head はそれを機械にも持たせた。
12 個の head は、それぞれ独立に Attention を計算する。 そのあと結果を結合して、次の処理に渡す。
「複数の視線を同時に動かす」というメタファーは、実際に Multi-Head の振る舞いをよく表現している。 head ごとに、文の文法構造を見ていたり、語彙的な類義性を見ていたり、長距離の参照関係を見ていたり、と異なる「専門家集団」のように振る舞うことが、後の研究で分かってきた。
7.6 Transformer のインパクト ── なぜここまで支配的か
Transformer 登場後、NLP の風景はものの数年で塗り変わった。
① 機械翻訳が一段強くなった
論文発表時点で、英→独翻訳のベンチマークで当時最高品質を達成。 これだけでも十分大きな成果だったが、本領は別のところにあった。
② 「大量のデータでひたすら事前学習する」が現実的になった
RNN/LSTM は並列化できないため、巨大コーパスで学習するには時間とコストがかかりすぎた。 Transformer は 並列計算が可能 なので、何百〜何千 GPU 時間 を一気に投入できる。 これにより「膨大なテキストでひたすら事前学習し、後でタスクに合わせて微調整する」というスタイルが現実的になった。
これが次章の BERT、その次章の GPT という方向に直結する。
③ 言語以外の分野にも飛び火
Transformer の発想は言語固有ではない。「入力単位を並べ、Attention で関係を取る」というだけなら、画像、音声、動画、タンパク質構造… どんな系列にも適用できる。
| 分野 | 例 |
|---|---|
| 画像認識 | Vision Transformer (ViT) |
| 音声認識 | Wav2Vec、Whisper |
| タンパク質構造予測 | AlphaFold |
| 動画生成 | Sora |
| 強化学習 | Decision Transformer |
つまり Transformer は、もはや 「ニューラルネットの新しい標準骨格」 として、AI 分野全体に広がった。
2017 年の "Attention Is All You Need" は、自然言語処理という一分野の中の改良論文として登場した。
ところが結果として、その後の AI 分野ほぼ全体の主流アーキテクチャ になった。
1 本の論文がこれほど広く影響を与えた例は、近年では他にない。
7.7 Transformer の 2 つの使い方 ── エンコーダとデコーダ
Transformer の中身を 1 つ覚えると、ここから 2 つの大きな使い方が派生する。 これが次の 2 章のテーマだ。
使い方①: エンコーダ(読む側)
入力文を 読み込んで、各単語の文脈付き表現 を作る用途。 分類・抽出・検索など、「文を理解する」系のタスクに向く。 → 第8章で扱う BERT がこのタイプ。
使い方②: デコーダ(書く側)
これまでに生成した単語列を見て、次に来る単語を予測 する用途。 文章生成・翻訳・対話など、「文を書く」系のタスクに向く。 → 第9章で扱う GPT がこのタイプ。
オリジナルの Transformer 論文では、エンコーダ + デコーダの両方を組み合わせて機械翻訳をやっていた。 だが後の研究で、どちらか片方だけを大規模化 すると、それぞれ特定のタスクで非常に強くなることが分かってきた。
| 系統 | 役割 | 代表モデル |
|---|---|---|
| エンコーダ系 | 読むのが得意 | BERT、RoBERTa |
| デコーダ系 | 書くのが得意 | GPT、Llama、Claude |
| エンコーダ・デコーダ系 | 入力→出力変換 | T5、BART |
現代の LLM(ChatGPT、Claude、Gemini)は、ほぼすべて デコーダ系 だ。 だが、エンコーダ系も BERT として検索・分類で広く使われている。
7.8 ここまでの整理 ── 半分の登山が終わった
ここで第1〜7章を地図にしてみる。
[言葉を数にする]
第1章: トークン化
第2章: 静的埋め込み
第3章: 文脈埋め込みという発想
[系列を扱う]
第4章: n-gram、確率的言語モデル
第5章: RNN / LSTM ── 内部状態に記憶を持つ
[注意機構と Transformer]
第6章: Attention ── 全文を見渡して注目度を学ぶ
第7章: Transformer ── Attention 全面採用、現代 LLM の土台 ← イマココ
ここまでで「機械が言葉を扱う基礎技術」は出揃った。 次のグループは、この土台の上に 大規模学習 を載せた巨人たち ── BERT、GPT、ChatGPT までの旅だ。
7.9 この章の振り返り
- 2017 年
"Attention Is All You Need"で発表された Transformer は、RNN を捨てて Attention だけで系列を扱う構造 - 全トークンを一斉に並べて Self-Attention で関係計算 → 並列計算 + 長距離依存に強い
- 順序を扱うため、位置情報(Positional Encoding) をベクトルに足し込む
- Transformer ブロックの中身は Self-Attention(隣人との会話)+ FFN(一人での思考)
- Multi-Head Attention で、複数の視点を同時に取る ── 専門家集団のように動く
- これを N 層積むのが現代の言語モデルの標準(GPT-3: 96 層、Llama-70B: 80 層など)
- インパクト: 機械翻訳精度向上、大規模事前学習が現実に、画像・音声・科学にも飛び火
- 2 つの主な使い方: エンコーダ系(読む = BERT) と デコーダ系(書く = GPT)
次章では、Transformer エンコーダを 超大規模に事前学習 したモデル ── BERT に踏み込む。 「Google 検索が一夜で賢くなった」と話題になった、あのモデルだ。