Transformer — Attention だけで組み上げる現代AIの基本構造

RNN を捨て、Self-Attention だけで文脈を処理する。2017年の論文「Attention Is All You Need」が提案した Transformer は、GPT も BERT も画像認識も飲み込む現代AIの共通基盤になりました。ブロックの中をデータが流れる様子を、1段ずつ追いかけます。

1. 何が革命だったのか — 「再帰を捨てたら並列になった」

RNN・LSTM は文を前から1トークンずつ処理します。時刻 t の計算は時刻 t−1 の結果を待つ必要があり、どれだけ GPU を並べても学習を並列化できません。Transformer は再帰をやめ、全トークン間の関係を1回の行列積で同時に計算します。

観点RNN / LSTMTransformer
学習の並列化不可(前の時刻の結果を待つ)完全に並列(行列積で一括計算)
離れたトークン間の距離最大 n ステップの伝言ゲーム常に1ステップ(直接参照)
長距離依存勾配消失で苦手距離によらず等しく扱える
計算量(系列長 n)O(n)O(n²) — これが弱点
POINT — 並列化が「規模の時代」の扉を開けた 学習が並列化できる=GPUを何千枚並べただけ速くなる。これにより「巨大データ × 巨大モデル」の学習が現実的になり、後の大規模言語モデル(次のレッスン)へ一直線につながった。アーキテクチャの工夫が、計算資源の使い方そのものを変えた革命。

2. アーキテクチャツアー — デコーダブロックの中を歩く

現代のLLMで主流のデコーダのみ(GPT型)構成を見ます。トークン列(下の色付きチップ)が各ブロックを通過するたびにどう変換されるか、「次へ」を押して1段ずつ進めてください。チップの色=そのトークンが持つベクトルの中身、だと思って眺めるのがコツです。

アーキテクチャツアー — トークンの旅(GPT型デコーダ)
POINT — ブロックは「混ぜる」と「消化する」の繰り返し Self-Attention がトークン間で情報を混ぜ、FFN が各トークン内で情報を消化する。この2拍子に残差接続と正規化を添えたブロックを、ただひたすら N 回積む。構造は驚くほど単純で、同じ形の繰り返しだからこそスケールさせやすい。

3. Multi-Head Attention — 複数の視点を並列に持つ

前レッスンの Attention は「どこに注目するか」の重み分布を1つ計算しました。Transformer はこれをh 個の小さなヘッドに分けて並列に行います。各ヘッドは低次元の部分空間で独自の注目パターンを学び、結果を連結して1つに戻します。

下のデモは同じ文「猫が魚を食べた」に対する4つのヘッドの注目パターンです。ヘッドを切り替えて、見ている場所がまったく違うことを確かめてください(光っているトークンが今のクエリ)。

Multi-Head Attention — 4つのヘッド、4つの視点
線の太さ=注目の強さ。右の6×6行列は「行=クエリ、列=キー」の注目重み。※このパターンは直感のための手設計。実際のヘッドの役割は学習で勝手に決まり、訓練後の解析で「直前を見るヘッド」「構文をたどるヘッド」などが実際に発見されている。
Attention(Q, K, V) = softmax(QKT / √dk) V √dk で割るのは、次元が大きいときに内積が巨大化して softmax が飽和するのを防ぐため
MultiHead(Q, K, V) = Concat(head1, …, headh) WO 各ヘッドは dmodel/h 次元の小部屋で独立に Attention を計算し、最後に連結して混ぜ直す
注意 — O(n²) の壁 Attention は全トークン対の内積を計算するため、文脈長 n を2倍にすると計算とメモリは4倍になる。長文脈LLMの最大のボトルネックで、FlashAttention(メモリアクセスの最適化)や疎な注意などの工夫は、すべてこの n² との戦い。

4. 位置エンコーディング — 順序を「波」で埋め込む

Attention は集合演算で、そのままでは語順を区別できません(「猫が魚を」も「魚が猫を」も同じに見える)。そこで各位置に固有のベクトルを足します。原論文の方法は、次元ごとに周波数の違う sin / cos の波を使うもの。

下のヒートマップが位置エンコーディング行列そのものです。位置スライダー p, q を動かして、(1) 各行が固有の「波の指紋」を持つこと、(2) 2つの位置の内積が相対距離 p−q だけで決まることを確かめてください。

sin/cos 位置エンコーディング — 行列・波形・内積
左=PE行列(縦: 位置0〜63、横: 次元0〜47、橙=正・青=負)。左の次元ほど速い波、右ほど遅い波。右上=p行(水色)と q行(桃色)を波形として重ねたもの。右下=内積は p−q だけの関数になる — p と q を同じ量ずらしても内積が変わらないことを試そう。
PE(pos, 2i) = sin(pos / 100002i/d)  PE(pos, 2i+1) = cos(pos / 100002i/d) 次元のペアごとに周波数が幾何級数的に変わる。時計の秒針・分針・時針で時刻を表すイメージ
一歩先へ — 現代は「相対位置」が主流 固定 sin/cos の後、学習する位置埋め込み(GPT-2など)を経て、現在のLLMの主流は RoPE(回転位置埋め込み)。Q と K のベクトルを位置に応じた角度だけ回転させると、内積に「相対位置の差」だけが自然に現れる。上のデモで見た「内積は相対距離で決まる」という性質を、より直接的に作り込んだ方式。

5. 因果マスク — 未来を見ないための目隠し

GPT型モデルは「次のトークンを当てる」訓練をします。このとき位置 i の予測に位置 i+1 以降が見えていたら答えを写すカンニングになってしまう。そこで attention 行列の上三角(未来側)を −∞ にして softmax で 0 にします。これが因果マスクです。

因果マスク — attention 行列の上三角を塗りつぶす
行=クエリ(処理中のトークン)、列=キー(参照先)。黄色の行が今処理中のトークンで、各トークンは自分以前しか見えない。マスクを外すと未来のセル(赤)が生きてしまい、「次を当てる」学習が成立しなくなる。
POINT — マスクのおかげで全位置を同時に学習できる 1つの文「今日/の/天気/は/晴れ」から、「今日→の」「今日の→天気」…と全位置の予測問題を1回のフォワードで同時に学習できる。マスクが各位置の「見える範囲」を正しく制限してくれるから。並列化と学習効率を両立させる要の仕掛け。

6. 3つの型 — エンコーダ・デコーダの使い分け

Transformer ブロックの組み合わせ方で、得意分野の違う3つの型ができます。違いの本質は「attention がどちらを向けるか」だけです。

型Attention の向き代表モデル得意な仕事
エンコーダ型双方向(全トークンが互いを見る)BERT文の理解・分類・検索
デコーダ型左→右のみ(因果マスク)GPT系・現代のLLMのほぼ全部文章生成・対話
エンコーダ+デコーダ型入力側は双方向、出力側は因果+入力参照T5、翻訳モデル翻訳・要約など系列変換

7. まとめ

一歩先へ — トークンにできれば何でも食べる 画像を16×16のパッチに切って「トークン列」とみなせば、同じ Transformer がそのまま画像認識になる(ViT)。音声・動画・タンパク質配列・行動系列…「系列にできるものなら何でも」同じ機構で扱えるこの汎用性こそ、Transformer が現代AIの共通基盤と呼ばれる理由。次のレッスンでは、これを極限までスケールさせた大規模言語モデルを見る。