Chapter 7

第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/LSTM1 トークンずつ順に、内部状態を更新×
Transformer全トークンを一度に並べ、Attention で関係を計算

Transformer は、「順に処理する」という制約を完全に捨てた。 代わりに、文中の すべての単語ペア の間で Attention を一斉に計算する。 その結果、長距離依存も並列化も、両方手に入った。

Transformer のキーアイデア(一言バージョン)

「順に読む」のをやめ、全トークンを一度に並べ、Self-Attention で互いの関係を全部一気に計算する。 これだけで、文の意味も文脈もちゃんと捉えられる。

シンプルだが、革命的だった。

7.2 Transformer の構造を、ざっくり描く

論文中の図は複雑そうに見えるが、ざっくりした全体像はそれほど怖くない。

入力トークン列「The cat sat on the mat」がトークンID列に埋め込み + 位置情報(Positional Encoding)各トークンをベクトルに変換、位置情報を加えるTransformer ブロック × N 層Self-Attention + Feed-Forward Networkこれを N 層(GPT-3 で 96 層、Llama で 32〜80 層)積み上げる出力タスクに応じた予測(次トークン、分類、回答など)
図 7.1 — Transformer の全体構造。中身の主役は「Transformer ブロック」と呼ばれる単位で、これを何層も積み上げる。

ポイントは大きく 4 つ:

  1. 入力トークン列を、ベクトル化して並べる(埋め込み = 第2章のあの話)
  2. 位置情報を加える(後述)
  3. Transformer ブロックを N 層積む(中で Self-Attention が走る)
  4. 出力する(タスク次第)

このうち、本書で深掘りすべきは 位置情報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 は「各位置で、得られた表現をさらに洗練する」役回りだ。

たとえるなら:

これを 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 この章の振り返り

次章では、Transformer エンコーダを 超大規模に事前学習 したモデル ── BERT に踏み込む。 「Google 検索が一夜で賢くなった」と話題になった、あのモデルだ。