今さらTransformer入門:LLMの革命的メカニズムを解剖
はじめに
こんにちは!
ネクスタで、SmartFという生産管理SaaSの開発エンジニアをしている日野岡です。
私は今年の10月から、東京大学の松尾・岩澤研究室が主催する「大規模言語モデル(LLM)2025基礎編」の講座を受講しています。LLMへの理解を深めたいという思いで受講したのですが、「Transformer」の講座内容は非常に難解で、一度聞いただけで完全に理解するのは困難だと感じました…。
そこで今回は、自分自身の復習も兼ねて、なぜTransformerがこれほどまでに重要なのか、そしてどのような仕組みで動いているのかを、私なりに噛み砕いて整理した内容をブログとしてまとめてみたいと思います(もし、間違い等あればコメントいただけると幸いです)。
本記事では、LLMの根幹を支えるTransformerについて、言語モデルの歴史的背景から、その革新的な仕組みまでを解説していきます。Transformerがどのようにして現代のLLMを支えているのか、その秘密に一緒に迫っていきましょう!
第1部:Transformerはなぜ必要だったのか?
言語モデルの進化と課題
まず、「言語モデル」という言葉の基本からおさらいします。非常にシンプルに言うと、言語モデルは 「単語の並び(文章)が、どれくらい"それらしい"か」を確率で評価するモデル です。
例えば、「日本の首都は」という文章に続いて「東京」が来る確率は高く、「パリ」が来る確率は低い、と予測するのが言語モデルの役割です。近年のLLMは、この予測をニューラルネットワークを用いて超高精度で行う ニューラル言語モデル が巨大化したものと言えます。
しかし、Transformerが登場する以前のモデルには、大きな壁がありました。
N-gramモデルの限界:遠い単語の関係がわからない
ニューラルネットワーク以前の主流だったN-gram言語モデルは、直前のいくつかの単語(N-1個)だけを見て次の単語を予測する統計的な手法でした。これにより、ある程度の予測は可能になりましたが、長距離の単語間の関係性を捉えられないという根本的な課題がありました。
例えば、「私が住んでいるフランスの首都は……(中略)……その都市の名前は」という文章で、最後の空欄(正解:パリ)を予測したいとします。私たち人間なら、ずっと前にある「フランス」という単語を見てすぐに答えられます。 しかし、N-gramモデルは極端に視野が狭いため、直前の「都市の名前は」という数単語しか見えていません。「フランス」という決定的なヒントが視界に入っていないため、「どこの都市の話だよ!」となってしまい、正しく予測することができませんでした。
RNNモデルの限界:情報が薄れ、学習が遅い
次に登場したのが、ディープラーニングを用いた RNN(Recurrent Neural Network) です。RNNは、文章を単語の先頭から一つずつ順番に読み込み、内部の状態を更新していく仕組みで、理論上は長い文章も扱えると期待されていました。
しかし、RNNにも次のような限界がありました。
- 長距離依存性の消失: 文章が長くなるほど、初期の単語の情報が更新を重ねるうちに薄れてしまい、やはり遠く離れた単語間の関係を捉えるのが苦手でした。
- 学習の遅さ: 単語を一つずつ順番に処理するため、並列計算が難しく、膨大な計算リソースと時間が必要でした。
| モデル | 主なアイデア | 課題 |
|---|---|---|
| N-gram | 直近のN-1単語から予測 | 長距離の依存関係を捉えられない |
| RNN | 単語を順番に処理し状態を更新 | 長距離依存性の消失、学習が遅い |
| Transformer | Attention機構ですべての単語間の関連度を計算 | (RNNの課題を解決) |
Transformerのブレークスルー:「Attention」という革命
これらのRNNが抱える課題を、全く新しいアプローチで解決したのが、2017年にGoogleの研究者らが発表したTransformerです[1]。
Transformerの最大の特徴は、RNNの逐次的な処理を完全に撤廃し、アテンション(Attention)機構を全面的に採用した点にあります。
アテンション機構とは、一言でいえば 「文章中のどの単語に注目すべきか」を動的に計算する仕組み です。これにより、Transformerは2つの大きなブレークスルーを達成しました。
-
長距離依存性の克服: 文章中のすべての単語間の関連度を直接計算するため、どれだけ単語が離れていても、その関係性を強力に捉えることができる(ただし、トレードオフとして「計算量が文章の長さの2乗(
)で増える」という弱点(メモリ馬鹿食い問題)もあり)。O(N^2) - 学習の高速化: 文章中の全単語を一度に並列処理できるため、GPUの性能を最大限に引き出し、学習を大幅に高速化・安定化させることが可能になった。
この革新的なアーキテクチャによってモデルの巨大化が可能になり、GPTシリーズやGemini、Claudeといった現代の高性能なLLMが誕生したのです。
第2部:Transformerの全体構造と各パーツの役割
Transformerの全体像:Encoder-Decoderモデル
オリジナルのTransformer論文で提案されたモデルは、 Encoder(エンコーダ) と Decoder(デコーダ) という2つの部分から構成されています。
- Encoder: 入力された文章(例:翻訳したい元の文)を読み込み、文脈を捉えたベクトル表現に変換する(下記の図の左側の部分)。
-
Decoder: Encoderが作ったベクトルと、既に出力した単語を基に、次の単語を予測し文章を生成する(下記の図の右側の部分)。

図1: Transformerの全体構造(Encoder-Decoderモデル)[2]
この構造は機械翻訳などを得意としますが、GPTシリーズのようにDecoderだけでも非常に高性能な言語モデルが作れることが分かり、現在ではそちらが主流となっています(この理由は後述)。
各パーツの役割を例えるなら…
Transformerの内部は複雑ですが、各パーツの役割をチームの仕事に例えると、少しイメージしやすくなるかもしれません。
Encoderチーム:文章を深く理解する専門家
| パーツ名 | 役割 | 例えるなら |
|---|---|---|
| Input Embedding | 私たちが使う「単語」を、AIが計算できる 「数値のリスト(ベクトル)」 に変換する | 日本語を、AIにとっての母国語である 「数値の世界の言葉」に通訳する 係 |
| Positional Encoding | 並列処理で失われてしまう「単語の順番」情報を、ベクトルに足し合わせる | ページ番号が振られていない書類の束に、「これは1ページ目、これは2ページ目」と番号を書き込んで、正しい順序がわかるようにする係 |
| Multi-Head Attention | 同じ文章を、複数の異なる「視点(ヘッド)」で同時に分析し、結果を統合する | 文法係、意味係、文脈係など、異なる専門分野を持つ8人の担当者が、一斉に同じ文章をチェックする作業 |
| Feed Forward | Attentionで集めた文脈情報を、一層ごとにさらに複雑で抽象的な情報へと 加工・変換 する | 会議(Attention)で得た情報を持ち帰り、自分の脳内の知識や経験と照らし合わせて、より深い理解へと昇華させる個人作業 |
| Add & Norm | 処理前の情報(入力)を忘れずに足し合わせ、データの数値を扱いやすい範囲に整える(残差接続と層正規化) | 上司からの赤ペン修正(処理結果)だけでなく、「元の企画書(入力)」も捨てずに合体させ、最後にフォーマットを綺麗に整える係 |
Decoderチーム:理解した内容から文章を生成する専門家
| パーツ名 | 役割 | 例えるなら |
|---|---|---|
| Masked Multi-Head Attention | 未来の単語(正解)を見えないように隠し、これまで生成した単語だけで次の単語を予測する | 推理小説の犯人(未来の展開)をネタバレされないように隠しながら、これまでの情報だけで犯人を推理する |
| Multi-Head Attention (Cross) | 生成中の単語(Decoder)に関連する情報が、元の文章(Encoder)のどこにあるかを探し出して取り込む | 翻訳家が訳文を書く最中に、原文の該当箇所を指差して確認し、ニュアンスを汲み取る作業 |
最終工程:AIの思考を言葉に変換する
| パーツ名 | 役割 | 例えるなら |
|---|---|---|
| Linear | Decoderが作った「意味のベクトル」を、辞書にある全単語(数万語)分のスコアに変換する(線形変換) | AIが抱いた抽象的なイメージを、辞書にある全ての単語と照らし合わせ、「どれくらい当てはまるか」の点数(ロジット)をつける係 |
| Softmax | 全単語のスコアを、合計が1(100%)になるような 「確率」 に変換して整理する | 選挙管理委員会が、各候補者の得票数を集計し、「A候補の当選確率は90%、B候補は9%...」という最終結果を発表する係 |
第3部:Transformerの心臓部「Attention」の仕組み
ここからは、Transformerで一番重要な 「Attention(注意)機構」 の中身を解剖していきます。 少し複雑に見えますが、やっていることは 「膨大な情報の中から、今必要な情報だけを検索して、混ぜ合わせる」 という処理です。
入力準備:言葉を「意味の座標(ベクトル)」に変換する
Transformerが文章を処理する前には、テキストをAIが理解できる数値(ベクトル)に変換する準備が必要です。
- Tokenization(単語の分割): 文章を「トークン」という最小単位にバラバラにします(例:「吾輩」「は」「猫」「で」「ある」)。
- Embedding(埋め込み): 各トークンを、数千個の数字の並び(ベクトル)に変換します。これにより、「猫」と「犬」は数字の並びが似ている、「猫」と「車」は似ていない、といった「意味の距離」が計算できるようになります。
- Positional Encoding(位置情報の付与): Transformerはすべての単語を同時に読み込むため、そのままだと「犬が人を噛んだ」と「人が犬を噛んだ」の区別がつきません。そこで、サイン関数やコサイン関数を用いた、「君は1番目」「君は2番目」という位置情報を表す波形データを足し合わせることで、語順を理解させます。
Self-Attention:AIの「注目力」の正体
いよいよ本丸の Self-Attention(自己注意)機構 です。これは文中のある単語が、文中の他のすべての単語(自分自身含む)と「どれくらい関係があるか」を計算する仕組みです。
この仕組みは、よく Query (Q) , Key (K) , Value (V) の3つの要素で説明されます。夏目漱石の「吾輩は猫である」という文章を例に考えてみましょう。
「吾輩は猫である」という文において、「吾輩」が何を指しているのかをモデルが理解するプロセスを考えます。
| 役割 | 意味 | 「吾輩は猫である」での例え |
|---|---|---|
| Query (Q) | 「今、注目している単語」からの質問 | 「吾輩」という単語が「私は一体、何者だろう?」と問いかける |
| Key (K) | 「その単語が持つ属性」。質問に答えるためのキーワード | 各単語が持つ属性情報(例:「猫」は「動物である」という属性を持つ) |
| Value (V) | 「その単語が持つ情報そのもの」。具体的な内容 | 各単語が持つ意味情報(例:「猫」という単語が持つ具体的なイメージ) |
図2: Self-Attention機構の処理フロー(「吾輩は猫である」の例)
Attentionの計算は、以下のステップで行われます。
- Q, K, Vベクトルの生成: 入力された各単語のベクトルに対し、重み行列を用いた「線形変換」を行うことで、Q, K, Vという3種類のベクトルを生成します。
- スコア計算: ある単語の Query(Q) と、他の全単語の Key(K) の類似度を計算します。「吾輩」(Q)の「私は何者?」という問いと、「猫」(K)の「動物である」という属性の関連性が高い、というようにスコアが決まります。
- 重み計算 (Softmax): 計算したスコアを正規化し、各単語への「注目の度合い」を示す 重み(アテンションウェイト) に変換します。
- 出力計算 (加重平均): この重みと各単語の Value(V) を掛け合わせ、足し合わせます。これにより、関連性の高い単語の情報が強く反映された、新しいベクトルが生成されます。
この一連の処理を全単語に対して並列で行うことで、 1ステップで全単語間の依存関係を捉える ことができるのです。
この一連の処理の結果、「吾輩」という単語の新しいベクトル表現には、「猫」の情報が色濃く反映されます。これにより、モデルは「吾輩」と「猫」が強く関連している、つまり「吾輩 = 猫」であると理解するのです。
Multi-Head Attention:多角的な視点で理解する
さらにTransformerは、このAttention処理を複数個(例えば8個や12個)並列で実行します。これを Multi-Head Attention と呼びます。
これは、一人の専門家が多角的な視点を持つというより、 複数の専門家がそれぞれの視点で文章を分析する ようなものです。
| ヘッドの例 | 注目する視点 |
|---|---|
| ヘッド1 | 文法的な関係(主語と述語など)に注目する専門家 |
| ヘッド2 | 意味的な関係(「青い」と「空」など)に注目する専門家 |
| ヘッド3 | 距離的な関係(近くの単語、遠くの単語)に注目する専門家 |
それぞれの専門家(ヘッド)からの出力を統合することで、より豊かで深い文脈表現を獲得できるのです。
「吾輩は猫である」の例で言えば、あるヘッドは「『吾輩』と『猫』は、どちらも単独で意味をなす名詞である」という品詞の関係性に注目するかもしれません。また、別のヘッドは「『吾輩』という一人称と、『である』という断定の述語が呼応している」という文法的な構造に注目するかもしれません。
このように、複数の専門家(ヘッド)がそれぞれの視点で分析した結果を統合することで、文章をより深く、多角的に理解することができるのです。
Masked Multi-Head Attention:未来の「カンニング」を阻止する
Decoderは、前の単語を見て次の単語を予測しながら文章を作っていきます。しかし、学習時のデータには最初から「正解の文章すべて」が含まれています。
もし、何の制限もかけずにAttentionを行ってしまうと、予測したい場所(現在)から、まだ見ちゃいけないはずの「次の単語(未来)」が見えてしまいます。
これでは、テスト中に隣の人の答案が見えているようなもの。AIは法則性を学習せず、「ただ答えを写す」だけになってしまいます。これを防ぐのが Masked Multi-Head Attention です。
-
仕組み: 現在処理している位置より「後ろ」にある単語へのAttentionスコアを、強制的にマイナス無限大(
)にしてしまいます。-\infty - 結果: Softmaxを通した後の確率が「0」になり、未来の単語からの情報は一切入ってこなくなります。
例えるなら、「推理小説を読んでいる最中に、まだ読んでいないページの文字を黒塗りで隠されている状態」 です。こうすることで、これまでの文脈(過去)だけで、次の展開(未来)を推理するしかなくなるわけです。
Multi-Head Attention (Cross):翻訳家が原文を振り返る瞬間
もう一つ重要なのが、EncoderとDecoderをつなぐ架け橋、通称 Cross-Attention(交差注意) です(図1の右側真ん中の層)。
これまでのSelf-Attentionは「同じ文章の中」での関係性を見ていましたが、ここでは 「生成中の文章(Decoder)」 と 「元の文章(Encoder)」 という、異なる2つの情報の関係性を見に行きます。
ここで重要になるのが、先ほど学んだ Q, K, V の出処(でどころ)が変わる という点です。
| 要素 | 出処 | 役割のイメージ |
|---|---|---|
| Query (Q) |
Decoder (生成中の文) |
「今、翻訳しようとしているこの単語に対応する情報は、原文のどこにある?」 という検索リクエスト |
| Key (K) |
Encoder (元の文) |
「ここにあるよ!」 と、原文の各単語が自分のインデックス情報を提示する |
| Value (V) |
Encoder (元の文) |
キーが一致した場所にある、原文の具体的な意味情報 |
例えば、英語の「I am a cat」を日本語に翻訳している最中だとしましょう。 Decoderが「cat」という単語を生成しようとした瞬間、Cross-Attention機能が働きます。
- Decoder (Q):「『I am a...』まで訳したぞ。ここまでの文脈に対応する原文はどこにある?」
- Encoder (K):「吾輩」「は」「猫」「で」「ある」の中から、「猫」の部分が強く反応する。
-
Encoder (V):「猫」という単語が持つ意味のベクトルを取り出し、Decoderに渡す。
このように、「書き手が、必要なタイミングで教科書(原文)の該当箇所を指差確認しにいく」 ような動きをするのが、このCross-Attentionなのです。
おわりに
今回は、東大のLLM講座で学んだ内容を基に、Transformerの仕組みについて私なりに整理してみました。
正直なところ、講座で初めてAttentionの計算式(
LLMの世界は日進月歩で進化していますが、その根幹にあるTransformerの考え方を理解することは、この先の技術トレンドを追う上で非常に重要だと感じています。
本記事が、皆さんがLLMというエキサイティングな技術分野への理解を深める一助となれば幸いです。
-
Ashish Vaswani, et al. (2017). "Attention Is All You Need". Advances in Neural Information Processing Systems 30. https://arxiv.org/abs/1706.03762 ↩︎
-
Ashish Vaswani et al. (2017), “Attention Is All You Need”, NeurIPS2017 より引用 Attention is All you Need ↩︎
Discussion