📚 全体地図を見る
Transformerって結局何なのか、ちゃんとわかりたい方へ
0. はじめに
この記事は F1. LLMとは何か を読まれた方を想定しています。
「LLMは次トークン予測器」という感覚があれば、この記事はすっと読めます。
はじめての方は、前の編から軽く目を通してからどうぞ。
1. 「Transformer」という言葉の前で、つい言葉が濁る理由
ChatGPT、Claude、Geminiがどれも Transformer ベースだという話、一度くらい耳にされたことがあると思います。
ところが「Transformerって何ですか?」と聞かれた瞬間、説明する側が急にしどろもどろになります。
- 「えっと… attentionっていうのがあって…」
- 「昔RNNっていうのがあって、それには限界があって…」
- 「Query、Key、Valueがあって…」
- 「並列で処理して…」
聞いている側からすると、用語だけが並んで絵にならない んですよね。
この記事のゴールは、その絵を1枚描くことです。
まず一文で釘を打っておきます。
Transformerとは、「本のページをまるごと広げておいて、各単語が他のどの単語をどれくらい見るべきかを同時に計算する構造」です。
この一文を、最後まで解きほぐしていきます。
2. なぜ出てきたのか — RNNというやつのもどかしさから
Transformer以前は RNN(Recurrent Neural Network) という構造が主流でした。
RNNは文をこう読みます。
「今日」 → メモリ更新
「天気」 → メモリ更新
「が」 → メモリ更新
「と」 → メモリ更新
「て」 → メモリ更新
「も」 → メモリ更新
単語を1つずつ順番に受け取りながら、「ここまで読んだものを圧縮した状態値」 をずっと更新していきます。
たとえるとこんな感じです。
暗い部屋で、誰かが文を1文字ずつ耳元でささやいてくれて、
あなたは紙を見ることができず、頭の中だけで文を再構成しないといけない状況。
1〜2文字前のことならよく覚えています。でも文が長くなると:
- 前のほうの単語を忘れ
- 真ん中あたりで混乱し
- 最後のほうで見当違いなことを言い出します
RNNの根本的な弱点がこれです。
- 前の内容を「ひとつの状態値」に絞り込んで持ち運ばないといけない
- だから長い文脈では前の大事な情報がかすんでしまう
- しかも単語を 順番どおりにしか 処理できない(前の単語の処理が終わらないと次の単語の処理が始まらない)
2つ目の弱点は、実務的にはもっと致命的でした。
順番どおりにしか回せないので、GPUをどれだけ積んでも並列化しにくいんです。
GPUが数千枚あってもRNNは1文字ずつ順に読まないといけません。学習が遅くなります。本当に遅い。
だからRNMはあるときから 長い文をまともに扱えないボトルネック になっていきました。
この問題を解くためにLSTM、GRUといった派生系が登場しましたが、根本問題はそのままでした。
「順番どおりに読まないといけない」 という前提自体を崩す必要があったんです。
3. Transformerの発想: 「順番に読むのをやめて、一度に見よう」
|
SEQUENTIAL
📖 RNN
一文字ずつ順番に読む
過去の状態を1つの値に圧縮 長い文脈で前の情報が薄れる |
→ |
PARALLEL
🔍 Transformer
文章全体を一度に展開
各単語が他の全単語を並列参照 GPUが本領発揮できる |
2017年に「Attention Is All You Need」という論文が出ました。(この論文そのものの解説は後ろでリンクします。)
この論文の核心は、ものすごくシンプルな発想です。
「なぜ単語を必ず順番に1つずつ読まないといけないのか? 文全体を一度に広げておいて、各単語が互いにどれくらい関連しているかだけ計算すればいいんじゃないか?」
これを実装したのが Transformer です。
もう一度、比喩を使います。
- RNN: 本を1文字ずつ耳元でささやく方式 → 頭の中で文を積み上げる
- Transformer: 本のページをまるごと目の前に広げて、蛍光ペンで関連単語どうしに線を引いていく方式
この違いがなぜ大きいのか。
- 前後の順番に関係なく一度に処理できる → 並列処理が可能 → GPUが本領を発揮できる
- すべての単語が他のすべての単語を直接見られる → 長い文でも前の情報を失わない
2つの問題が一気に解けます。
これが有名な「attention is all you need」の意味です。「順次処理はもう要らない。attentionさえあれば十分。」
4. で、単語を「一度に見る」ってどういうこと?
ここで絵をひとつ描かないとわからなくなります。
Transformerは単語をそのまま受け取りません。まず 数値ベクトル に変換します。
4-1. Embedding — 単語を座標に変える
比喩をひとつ。
世の中のすべての単語を とても大きな部屋 の中にばらまいたと想像してみてください。
- 意味が近い単語は近くに
- 関係ない単語は遠くに
たとえば:
- 「王」「女王」「国王」 → 部屋のある隅に集まっている
- 「りんご」「バナナ」「オレンジ」 → 別の隅に集まっている
- 「王」の近くに「男」があり、「女王」の近くに「女」がある
というふうに 単語ごとに部屋の中の座標 をひとつずつ決めてあると考えてみてください。
この座標こそが embedding vector です。
実際にはこの部屋は3次元ではなく 数百〜数千次元 です。(例: GPT-3は12,288次元)
人間は3次元までしか見られませんが、機械は10,000次元の空間で単語どうしの距離を計算できます。
この高次元空間にある 単語の位置 がembedding vectorです。
ⓘ Embedding自体がもっと気になる方は 👉 F5. Embedding — 単語を数値にする理由 で、「王 – 男 + 女 = 女王」の比喩を使って最後まで解きほぐします。
つまりTransformerに文が入ってくると、最初のステップは:
「今日は天気がいいね」
↓
[「今日」の座標, 「は」の座標, 「天気」の座標, 「が」の座標, 「いい」の座標, 「ね」の座標]
このように数値ベクトルのリストに変換されます。
4-2. 問題: で、「順序」はどこに行ったのか
ここで微妙な問題が生まれます。
上のベクトルリストには 単語の順序情報が入っていません。
「今日は天気がいいね」と「ね天気がいいは今日」を入れても、ベクトルリストそのものは同じベクトルの集まりです。
でも私たちの脳はわかりますよね。2つの文は意味が違うと。
RNNは順番に読んでいたのでこの問題がなかったのですが、Transformerは一度に見るため順序が飛んでしまいます。
4-3. 解決策: Positional Encoding — ページに行番号をつける
そこで、各単語のベクトルに 「あなたは文の何番目の位置にいる単語ですよ」 という信号を別に足してあげます。
たとえるなら:
本のページに単語だけを書くのではなく、各単語の隣にちいさく 座席番号 を書き込んでおく感じ。
1: 今日 / 2: は / 3: 天気 / 4: が / 5: いい / 6: ね
この座席番号を数学的に単語ベクトルに足し込むのが positional encoding です。
だからTransformer側から見ると:
- 「今日」ベクトル + 「1番席」信号
- 「は」ベクトル + 「2番席」信号
- …
という形で入力が入ります。これで順序を失わないまま、一度に処理できるようになりました。
5. いよいよ有名な「Attention」の登場
さて、各単語が ベクトル + 座席番号 の形でそろいました。
ここからTransformerの仕事の 中核動作 が出てきます。
5-1. Attention の一行比喩
「今見ている単語と、他の単語たちの間に、蛍光ペンで線を引け。
関係のある単語には濃く、ない単語には薄く。」
たとえばこの文を処理するとします。
「あの猫は毛が多くて、彼女は 毎日ブラッシングをしないといけなかった」
「彼女は」が指しているのは何でしょう?
人間なら当然わかります。主人公が女性である文脈では『彼女』は猫ではなく飼い主のことだろうとか、文脈によって違いますが、「彼女は」が文のどの部分と一番関係しているかをつかまないと 答えが出ません。
Attentionがやっていることがこれです。
「彼女は」のベクトルが、他のすべての単語のベクトルを見渡して、「あなた、私とどのくらい関係あるの?」というスコアを付けます。
- 「猫」との関連度 → 0.1
- 「毛」との関連度 → 0.05
- 「ブラッシング」との関連度 → 0.3 (この人が何をする人か教えてくれる)
- 「しないといけなかった」との関連度 → 0.2
- (その他)
このスコアを使って「彼女は」のベクトルを 周りの単語から更新 します。文脈に合わせて「彼女は」の意味を計算し直している わけです。
これがattentionの核心です。
「各単語は自分の周りの単語を見て、自分自身の意味を文脈に合わせて調整する。」
5-2. Query, Key, Value — この3つは何者か
Transformerの説明を聞いているとQuery, Key, Value(Q, K, V)という言葉が必ず出てきます。
比喩でつかんでみましょう。
図書館に行ったと想像してみてください。1冊本を探したい。
- Query(質問): 「私、『猫の毛の手入れ』についての本が探したいんだけど」
- Key(本のタグ): 各本の表紙に貼られたキーワードラベル。「猫」「犬」「料理」…
- Value(本の中身): 本の中に詰まっている情報そのもの
探し方はこうです:
- あなたのQueryと各本のKeyを比べる → 「私の質問とこの本のラベル、どれくらい合う?」
- 一番よく合う本たちを選ぶ → それらの本のValue(中身)を多めに混ぜて持ってくる
Attentionもまさにこう動きます。
- 各単語は自分だけの Queryベクトル を作ります(「私はこういう情報が必要」)
- 各単語は同時に自分だけの Keyベクトル を作ります(「私のラベルはこう」)
- 各単語は同時に自分だけの Valueベクトル を作ります(「私の実際の中身はこう」)
そしてある単語のQueryが全単語のKeyを調べて:
– 関連度の高い単語のValueは多めに取ってきて
– 関連度の低い単語のValueは少しだけ取ってくる
この「混ぜて持ってきたValue」が、その単語の 新しいベクトル表現 になります。
初めて聞くと抽象的ですが、私はQuery、あちらはKeyとValue という図書館の比喩をひとつ頭に置いておけば、Transformerの説明が途中で切れずにつながります。
Q・K・Vはどこから来るのかというと、もとの単語ベクトルに 別々の3つの行列を掛けて 作られた3つの変形版です。同じ原本から取り出した、3つの別々の用途を持つベクトルです。
ここまでつかめれば十分です。
ⓘ このQ/K/Vの数式レベルまで深掘りしたい方は 👉 F4. Attention Is All You Need 解説 へどうぞ。mathbullet YouTubeの解説も添えてあります。
6. Multi-head Attention — 複数人がそれぞれ違う蛍光ペンで
ここはTransformerでもうひとつ強く光る部分です。
attentionを1回だけ回すのではなく、同じ文を何度も、並列で、それぞれ違う視点から回します。
たとえるなら:
同じ文を複数の編集者に同時に渡します。
– Aさんは 文法関係 を中心に蛍光ペンを引き
– Bさんは 意味のつながり を中心に引き
– Cさんは 指示語-先行詞 を中心に引き
– Dさんは 単語の距離 を中心に引き
…
その人たちの結果を合わせて総合判断します。
これがMulti-head Attentionです。
GPT-3はこのheadが96個ありました。96人の編集者が同時に文をそれぞれ違う角度から読むわけです。
なぜこれが強力かというと、単語間の関係は1種類ではないから です。
- 主語-動詞の関係
- 指示語-先行詞の関係
- 修飾-被修飾の関係
- 原因-結果の関係
- …
これをひとつのattentionですべて捉えるのは無理です。だから複数のheadで並列に捉えて、あとで合わせたんです。
7. Feed-forward Layer — 各単語がちょっと「考えを整理」する
Attentionによって、各単語が周りの文脈を取り込んで自分のベクトルを更新しました。
次のステップは意外とシンプルです。
各単語ベクトルを1つずつ取り出して、同じ小さなニューラルネットに通します。
たとえるなら:
会議室でお互いの話を聞いた社員たちが(attentionのステップ)
それぞれ自分の席に戻って、聞いた内容を一人で整理する時間(feed-forwardのステップ)
attentionが「周りを参考にする」だったなら、feed-forwardは「自分の席で一人で処理する」です。
この2ステップ(attention + feed-forward)が、Transformerの1ブロック の基本構成です。
8. 層を積む — 1回ではうまくいかないから
Transformerの1ブロックを通ると、各単語ベクトルが1回更新されます。
でも1回では足りません。文脈を1回見たあと、もう1回見ると、より精密な関係を捉えられます。
だから このブロックを何十個も積みます。
- GPT-3は96層
- GPT-4はもっと多い(正確な数は非公開)
- Claude、Geminiも数十〜数百層
各層ごとに:
– 周りをまた参照し(attention)
– 各席で整理する(feed-forward)
これを繰り返しながら、単語ベクトルがだんだん 文脈によくフィットした表現 になっていきます。
初期の層では「この単語は名詞か動詞か」のような低レベルの関係が捉えられ、後ろの層では「この文の論理構造」のような高レベルの関係が捉えられる傾向があります。(人間が解釈してみたらそうだったという研究結果です。モデルが「意図して」そうしているわけではありません。)
9. EncoderとDecoderの話を少しだけ
もともと Attention Is All You Need の論文は 翻訳機 用でした。
たとえば英語 → フランス語の翻訳。
- Encoder: 英語の文を読んで意味ベクトルに圧縮する部分
- Decoder: その意味ベクトルを受け取ってフランス語の文に展開する部分
2つの塊からなる構造でした。
ところが今私たちが使っているChatGPTやClaudeのような対話型LLMは decoder-only構造 です。
なぜencoderを外したのか?
その話をしているとこの記事が長くなりすぎます。それを1本の記事として別に切り出しました。
ⓘ 「翻訳機だったものがなぜ対話型になったのか」 → 👉 F3. Encoder/Decoder へ行くと全体の流れが見えます。
ここでは 「Transformerの原型は encoder + decoder の2つの塊で、今私たちが使っているLLMのほとんどは、そのうちの decoder 側だけを大きく育てたバージョン」 とだけ捉えて進んでください。
10. なぜ「ほぼすべてのLLM」がTransformerなのか
2017年に論文が出て以降、NLP分野はほぼまるごとTransformerに乗り換えました。
なぜでしょう。
理由は3つに整理できます。
-
並列化ができる。
GPU・TPUが本領を発揮します。学習速度がRNN比で数十〜数百倍速くなります。 -
長い文脈を失わない。
すべての単語が他のすべての単語を直接見られるので、前のほうの情報が後ろに行ってもかすみません。 -
規模を大きくすれば性能が予測可能に上がる。
パラメータを10倍にすれば性能がだいたいこれくらい良くなる、という scaling law が観察されました。これはRNNではできなかったことです。
この3つのおかげで、人々は「同じ予算ならもっと大きなTransformerを回せば、より良いモデルが得られる」という方程式を押し進め、結果が実際に追いついてきました。
そうして生まれたのが GPT-2、GPT-3、GPT-4、Claude、Gemini、Llamaのようなモデルたちです。
このすべてのモデルの骨格が、2017年論文のTransformerです。
11. で、Transformerは「考えて」いるのか?
短い答え: いいえ。
Transformerは結局 一度の順伝播(forward pass) を計算するマシンです。
入ってきた文を:
– embeddingに変換し
– positional encodingを足し
– attention + feed-forwardのブロックを何度も通し
– 最後に「次のトークンの確率分布」を出力する
これがすべてです。
「考え」と呼べそうなものは、この過程の結果として私たちの目に見える 「パターンに合った出力」 にすぎません。
でもこれが凄い理由は、このシンプルな構造を 十分に大きく作り、十分な量のデータで学習させれば、人が文字でやってきたほとんどすべてを真似られるようになる、という点です。
Transformerそのものが賢いのではなく、Transformerという 並列可能な文脈計算構造 が規模を受け止められるようにしてくれたから、モデルの中に 世界に対するとてつもないパターン圧縮 が可能になった、ということです。
12. ここまで来ると見えてくること
もうTransformerを「絵」としてつかめたと思います。まとめるとこうです。
- 入力文を トークンに切り、embeddingベクトルに変え、positional encodingを足す
- 各単語が Q, K, V として自分のアイデンティティを3つに分ける
- Attention で、周りの単語のうち関連のあるもののValueを取り込み、自分のベクトルを更新する
- Multi-head で複数の角度から同時にattentionを回す
- Feed-forward で各単語の席で一人で整理する
- このブロックを 何十回も積み重ねて だんだん精密な表現を作る
- 最後に 次のトークンの確率分布 を出力する
この7ステップを頭の中の絵として持っておけば、これからTransformer関連のどんな文章を読んでも流れが途切れません。
締めの一文
Transformerの核心は「attentionという不思議な魔法」ではなく、「文を順番に読むのではなく、一度に広げて、各単語が他のすべての単語を並列に参照できるようにした構造」 です。このシンプルな設計変更がモデルサイズを扱えるようにし、それが今日私たちが使っているすべてのLLMの出発点になりました。
毎週月曜日、AIトレンドニュースレター配信中
会員登録すると、毎週月曜日に「今週のAI・バイブコーディング最新情報」をお届けします。
バナー広告なし・本当に役立つ情報だけを厳選するクリーンなAI専門メディアです。
FAQ
Q1. Transformerは翻訳用だったのに、どうやって対話用になったんですか?
もともと2017年論文のTransformerは encoder(入力読み取り) + decoder(出力生成) の2つの塊の構造で、英語→フランス語翻訳のような作業用でした。ところが decoder 側だけを大きく育てて「次の単語をひたすら予測させる」形で学習させると、会話、文章作成、コード生成までぜんぶできるとわかったので、今使っているほとんどのLLMは decoder-only 構造に移りました。詳しい話は F3. Encoder/Decoder で扱います。
Q2. Attentionが「ただ関連のある単語を見る」ということなら、人間の注意と似たものですか?
比喩としては似た使い方ができますが、実際の動きは違います。人間の注意はある瞬間に一〜二か所に集中しますが、Transformerのattentionは すべての単語がすべての単語を同時にスコアで見ています。関連度0の単語も完全に無視するのではなく、スコアを低くつけているだけです。なので「選択的集中」よりも「すべてのペアに対する重み計算」という表現の方が正確です。
Q3. もっと大きなTransformerなら無条件にもっと良いのですか?
しばらくはそうでした。パラメータを10倍にすれば性能が予測可能に良くなるscaling lawが何年かよく当てはまっていましたから。でも最近は 同じサイズでより良いデータで学習すること、推論時間をより長く使わせること(reasoning、thinkingモード)、ハーネスやツールを付けること といった別の軸のほうが重要になってきました。Transformer自体が良くなったのではなく、周りをうまく組む方向へ競争が移った、ということです。
- ◀ 前の編: F1. LLMとは何か
- 今の編: F2. Transformer 構造 (3/20)
- ▶ 次の編: F3. Encoder/Decoder
ニュースレターのご案内
こうして一つひとつの概念を絵としてつかめるよう解きほぐす技術解説を、毎週月曜日の朝にメールでお届けしています。受け取ってみたい方は ニュースレター会員登録(無料・30秒) からどうぞ。
著者: バイブコーディング テイラー(Lovable公式アンバサダー)
運営: テイラーの隠れ家(shuntailor.net)
Transformer構造の感覚を掴むの位置にある編です。前後編のリンクは記事下部のマップ上の現在地ボックスで確認してください。
本のページを丸ごと広げて関連語を蛍光ペンでつなぐ比喩で、attention·multi-head·stackingを1つの絵として掴みます。
ソースリスト
- テイラー知識百科事典 — AIのしくみ地図カテゴリ(本シリーズ20編全編)
- AIのしくみ地図 エントリーマップ — 全体構造 + 3つの読み方
- “Attention Is All You Need” (Vaswani et al., 2017)
- Anthropic · OpenAI · Google 公式ドキュメント
- mathbullet (YouTube) / Jay Alammar “Illustrated Transformer” / 3Blue1Brown — 易しい解説のリファレンス
著者: バイブコーディング テイラー (VibeCoding Tailor) — Lovable公式アンバサダー. AI·バイブコーディング専門メディアshuntailor.net運営.
本シリーズ「AIのしくみ地図」20編は、ウィキの蓄積と公式論文・公式ドキュメントを根拠に整理した体系的学習カリキュラムです。