LLMの仕組み解説

対話形式で学ぶ大規模言語モデルの基礎

LLMの仕組み解説

はじめに

この記事は、orangeGemini(Google AI)に「LLMって結局どう動いてるの?」と質問していった対話をまとめたものです。

専門用語を噛み砕きながら、ワードベクトルからRLHFまで一気に駆け抜けます。エンジニアでなくても読める内容を目指しつつ、詳しく知りたい人向けの補足も随所に入れています。

目次

  1. ワードベクトル — 言葉を数字に変える
  2. ワードベクトルの具体的なデータ構造
  3. 未知の単語への対処 — サブワード分割
  4. Attention機構 — 文脈を理解する仕組み
  5. Transformer — AIの全体構造
  6. 事前学習 — AIに知識を叩き込む
  7. 確率の計算方法 — 記憶ではなく計算
  8. パラメータと行列演算
  9. 誤差逆伝播 — 「罰」の仕組み
  10. 総まとめとファインチューニング

ワードベクトル — 言葉を数字に変える

LLMの出発点っていうかワードベクトルという概念とデータの作り方を解説して

LLM(大規模言語モデル)の「出発点」としてワードベクトルに着目するのは、非常に鋭い視点です!

ワードベクトル(単語埋め込み)は、「コンピュータに『言葉の意味』を数学的に理解させるための翻訳技術」と言えます。これがないと、現在のAIは成立しません。

そもそも「ワードベクトル」とは?

コンピュータは計算機なので、「リンゴ」や「愛」といった文字そのものを理解することはできません。コンピュータが理解できるのは「数字」だけです。

そこで、言葉を「数字の列(ベクトル)」に変換します。

人間にとっての「王様」
偉い人、男性、冠をかぶっている...
コンピュータにとっての「王様」
[0.52, −1.23, 0.88, ...]

このように、ひとつの単語を数十〜数千個の数字の並びで表現したものが「ワードベクトル」です。

なぜ「ベクトル(矢印/座標)」にするのか?

ただの数字のID(例:リンゴ=1, ミカン=2)ではなく、ベクトル(座標)にすることで、「言葉の意味の近さ」を「距離」として計算できるようになるからです。

有名な例:王様の計算

ワードベクトルが画期的なのは、言葉で足し算・引き算ができる点です。

王様 − 男性 + 女性 = 女王

ベクトル空間(言葉の地図)の中で、「王様」という地点から「男性」成分を引き、「女性」成分を足すと、不思議なことに座標が「女王」の地点にピタリと重なるのです。

どうやってデータを作るのか?(学習の仕組み)

では、どうやって「王様」を [0.52,...] という具体的な数字にするのでしょうか? 人間が一つ一つ数値を決めているわけではありません。AIが大量の文章を読んで自動的に決定します。

その基本的な考え方は、「分布仮説」という言語学のルールに基づいています。

分布仮説
「単語の意味は、その単語の『周囲にある単語』によって決まる」

データの作り方:穴埋め問題トレーニング

AIに大量のテキスト(Wikipedia、ニュース、小説など)を読ませ、ひたすら「穴埋め問題」を解かせます。

例文
「かわいい 猫 が こたつ で 丸くなる」

AIへの学習プロセス:

  1. ターゲット: 「猫」という単語に注目します。
  2. 周囲を見る: 周りには「かわいい」「こたつ」「丸くなる」という単語があります。
  3. 推測と調整: AIは、「かわいい」や「こたつ」の近くに来る単語は、どうやら「猫(のようなもの)」らしい、と学習します。

もし、AIが適当な数字を持っていて「車」と予測したら、「違うよ、正解は猫だよ」と叱られます。するとAIは、「猫」のベクトル(数値)を、少しだけ「かわいい」や「こたつ」のベクトルに近づけます。

これを何億回、何兆回と繰り返すと、最終的に以下のような「意味の地図」が出来上がります。

  • 「猫」と「犬」: どちらも「かわいい」「走る」「ペット」などの近くに現れるので、ベクトル(座標)が近くなる。
  • 「猫」と「冷蔵庫」: 一緒に使われることが少ないので、座標は遠くなる。

LLMへの進化

ワードベクトルは「単語の意味」を捉えることに成功しましたが、これだけでは今のChatGPTのような対話はできません。

ワードベクトルの限界
「銀行(Bank)」と「土手(Bank)」のように、同じ単語でも文脈によって意味が変わる場合、昔のワードベクトル(Word2Vecなど)では区別できませんでした。
LLM(Transformer)の登場
最新のLLMは、単語を固定されたベクトルとして見るだけでなく、「その文の中で、どの単語と強く結びついているか(Attention機構)」を計算します。

まとめ

  • ワードベクトルとは: 言葉を「数字の座標」に変換し、意味の近さを計算できるようにしたもの。
  • データの作り方: 大量の文章を読み、「その単語の周りにどんな単語があるか」という統計データから、自動的に座標(数値)を調整していく。

ここが出発点となり、「単語」の理解から「文脈」の理解へとAIは進化していきました。

ワードベクトルの具体的なデータ構造

ワードベクトルってどんなデータ? 辞書サイズとか 次元数とか

ワードベクトルの中身は、ざっくり言うと「巨大な乱数表(エクセルのような表)」です。

専門用語では「埋め込み行列(Embedding Matrix)」と呼びます。

データの見た目(イメージ)

頭の中で巨大なエクセル表を思い浮かべてください。

  • 行(タテ): 辞書にある単語(トークン)のリスト
  • 列(ヨコ): その単語の意味を表す数値の列(次元数)
ID 単語 (Token) 次元1 次元2 次元3 ... 次元4096
0 <unk> 0.012 -0.982 0.332 ... 0.115
1 0.552 0.123 -0.005 ... -1.221
2 0.882 -0.551 0.993 ... 0.441
... ... ... ... ... ... ...
128000 宇宙 0.119 -0.332 1.552 ... -0.991

コンピュータに「猫」と入力されると、AIはこの表の「2番」の行を見に行き、そこに書かれている横一列の数字(ベクトル)を引っ張り出してきます。これが「ワードベクトル」の正体です。

辞書サイズ(行数):単語はいくつある?

ここが面白いところで、昔と今で考え方が逆転しています。

時代 辞書サイズ 備考
昔(Word2Vecなど) 約300万語 「走る」「走ります」「走れば」を全部別の単語として登録
今(Llama 3) 128,256 トークン Subword技術で効率化
今(GPT-4) 約 100,256 トークン Subword技術で効率化

なぜ減った?: 「Subword(サブワード)」という技術を使うようになったからです。「Unhappiness」を「Un」+「happi」+「ness」のように部品に分解して覚えるため、少ない辞書サイズで無限の言葉に対応できるようになりました。

次元数(列数):数字の列はどれくらい長い?

次元数は「意味の解像度」だと思ってください。数字が多ければ多いほど、微妙なニュアンスを区別できます。

モデル 次元数 特徴
Word2Vec(昔) 300次元 画期的だが、同音異義語の区別は困難
Llama 3 (8B) 4,096次元 高度な意味表現が可能
GPT-3 (175B) 12,288次元 皮肉や文脈依存の意味も表現

データ容量はどれくらい?

実際にこの「表」がどれくらいのデータサイズになるか計算してみましょう(Llama 3 8Bの場合)。

辞書サイズ (128,256) × 次元数 (4,096) × データサイズ (2バイト/数値) ≒ 約 1GB

80億パラメータ(8B)あるモデル全体の中で、最初の「言葉を数字に変換する辞書」だけで1GBも容量を使っているわけです。ここがLLMの知識の土台となります。

まとめ

  • データ構造: 巨大な数値の表(行列)
  • 辞書サイズ: 最近は10万前後(部品で覚えるから効率的)
  • 次元数: 最近は4,000〜12,000(超高解像度)

未知の単語への対処 — サブワード分割

知らない単語ってどう扱ってるの? なんでも辞書に詰めておけないよね?

昔のAIにとって、辞書にない言葉は「未知の単語(Unknown)」としてエラー扱い(または <unk> という記号に変換)され、そこで思考停止していました。

しかし、今のLLMには「未知の単語」は実質的に存在しません。そのカラクリは、「言葉のレゴブロック化(サブワード)」という手法にあります。

レゴブロック戦略(Subword Tokenization)

LLMは、辞書にない難しい単語に出会ったとき、諦めるのではなく「知っている単位まで分解」します。

例:「スマホ中毒」が辞書にない場合
  1. 検索: 「スマホ中毒」はあるか? → ❌ ない
  2. 分解:
    • 「スマホ」はあるか? → ⭕️ ある!(ID: 3422)
    • 「中毒」はあるか? → ⭕️ ある!(ID: 5911)
  3. 解決: 「スマホ」+「中毒」という2つのベクトルの組み合わせとして処理

これが、辞書サイズが小さくても(約10万語)、世の中のあらゆる言葉に対応できる理由です。

具体的な分割の例

例1:複合語や活用形

「食べ歩き」が辞書にない場合:

「食べ」 + 「歩き」

それぞれの意味(ベクトル)は持っているので、「食べて、歩くことだな」と意味を合成できます。

例2:英語の長い単語

「Unfriendliness(不愛想)」が辞書にない場合:

"Un" (否定) + "friend" (友) + "li" (接尾辞) + "ness" (名詞化)

接頭辞や接尾辞レベルまで分解すれば、初めて見る単語でも「友好的じゃないことだな」と推測できます。

例3:完全な造語や謎の文字列

「XyZ123」のような無意味な文字列の場合:

"X" + "y" + "Z" + "1" + "2" + "3"

最悪の場合、アルファベット1文字(バイト単位)まで分解します。文字単位のベクトルは必ず持っているので、エラーにならずに処理できます。

この仕組みの凄さ

この「分解アプローチ」のおかげで、LLMは以下のことができるようになりました。

  • 新語・造語への対応: 「ググる」「インスタ映え」などが辞書になくても、「ググ(Googleっぽさ)」+「る(動詞)」のように分解してなんとなく理解します。
  • プログラミングコードの理解: print_hello_world のような変数名も print hello world に分解して意味を理解します。
  • 多言語対応: 日本語も英語も中国語も、同じ「レゴブロック(トークン)」の組み合わせとして処理できるため、言語の壁を越えやすくなりました。

まとめ

  • 昔: 辞書にない言葉 → エラー(未知語)
  • 今: 辞書にない言葉 → 「知っている部品(サブワード)」にバラして理解する

こうして、どんなテキストが来ても、とりあえずすべて「ベクトル(数字)」に変換して取り込む準備が整いました。

Attention機構 — 文脈を理解する仕組み

(単語が解っても文章の理解にはなってないよね? どうやって「理解」してるの?>Attention機構です>それを実現しているというAttention機構について教えて(お願いします)

ここがLLM(大規模言語モデル)の一番の山場であり、最重要ポイントです。

Attention(アテンション)機構。一言でいうと、これは単語同士の「会議」です。

これまで作った「ワードベクトル」は、まだ「辞書に載っている固定の意味」しか持っていません。Attentionは、これらを「文脈に合わせた意味」に変化させる魔法です。

なぜAttentionが必要なのか?(Before / After)

Before (Word2Vec)

「Bank(銀行)」という単語は、どんな文の中でも常に同じベクトル(数値)でした。

  • 例文A:「Bankにお金を預ける」
  • 例文B:「川のBank(土手)を歩く」

AIの悩み:「どっちのBankかわからない…数値が一緒だから区別できない!」

After (Transformer / LLM)

Attentionを使うと、文脈によってベクトルの中身が書き換わります。

  • 例文AのBank → 「金融機関」成分が強化されたベクトルに変身
  • 例文BのBank → 「地形」成分が強化されたベクトルに変身

Attentionの仕組み:単語同士の「スポットライト」

イメージしてください。真っ暗な部屋に、単語たちが一列に並んでいます。

例文
「彼は 猫が 好きだ」

「彼」のターン:

  1. 「彼」という単語がスポットライト(Attention)を持って、周りの単語を照らします。
  2. 「自分(彼)の意味をハッキリさせるために、重要な単語はどれだ?」と探します。
  3. この文では、「好きだ」という単語に強い光(注目)を当てます。「誰が」と「どうした」は関係が深いからです。

情報の吸収(ミキシング):

「彼」は、「好きだ」という単語から「感情」や「動作」という意味(ベクトル成分)を少し吸い取ります

すると、「彼」というベクトルは、ただの「男性」という意味から、「猫が好きな男性」という文脈を含んだベクトルに進化します。

これを、すべての単語が同時に、お互いに対して行います。

ちょっと専門的な話(Q, K, V)

この「スポットライト」の計算を、数学(行列計算)では「Q, K, V(クエリ・キー・バリュー)」という3つの役割で行います。

役割 英語 説明
探す人 Query (Q) 「私の意味を補完してくれる情報はどこ?」と問い合わせる係
目印 Key (K) 「私はこういう単語ですよ」と看板を掲げている係
中身 Value (V) その単語が持っている実際の意味内容

処理の流れ:

  1. ある単語の Q が、全員の K と照合(内積)します。
  2. 相性が良い(関連性が高い)ほど、スコアが高くなります。
  3. スコアが高い単語の V(中身)を、たくさん取り込みます。
Attention(Q, K, V) = softmax( QKT / √dk ) V

この数式は、「関連度(QK)を計算して、その重み分だけ中身(V)を混ぜ合わせる」という意味です。

具体例:代名詞の謎を解く

Attentionが最も威力を発揮するのは、代名詞(それ、彼、これ)の解釈です。

例文
「その動物は道路を渡らなかった。なぜならそれは疲れすぎていたからだ。」

人間なら、「それ=動物」だとわかりますよね? でも、文の構造だけだと「それ=道路」の可能性もあります。

LLM(Attention)の頭の中:

  1. 「それ(it)」という単語が周りを見渡します。
  2. 候補は「動物」と「道路」。
  3. 文脈の手がかりは「疲れすぎていた(tired)」。
  4. LLMの知識:「道路は疲れない。動物は疲れる。」
  5. 結果:「それ」から「動物」へのAttention(注目度)が強くなり、「それ」のベクトルは「動物」の意味を強く帯びるようになります。

まとめ

  • ワードベクトル(出発点): 辞書にある「固定の意味」
  • Attention(加工プロセス): 周りの単語を見て、「文脈に応じた意味」にベクトルを書き換える機能

このAttentionを何層も(例えば96層とか)積み重ねることで、AIは「単語の意味」だけでなく、「文章全体の意図」や「行間」まで理解できるようになったのです。

Transformer — AIの全体構造

Transformer全体はどういう構造になっているの? 積み重ねて、どうするの?

では、最強のAIアーキテクチャである「Transformer(トランスフォーマー)」の全体構造について解説します。

これまで解説した「ワードベクトル」や「Attention」は、あくまで部品です。これらをどう組み立てれば、ChatGPTのような巨大な知能になるのか?

その姿は、「超高層ビル」に例えると非常に分かりやすくなります。

Transformerの全体像:96階建てのオフィスビル

最新のLLM(例えばGPT-4クラス)は、同じ構造の「ブロック(層)」を何十回も積み重ねた構造をしています。

イメージしてください。ここには、言葉を処理する専門家たちが働く「96階建てのビル」があります。

階層 役割
1階(入力) 「猫」などの単語が入ってきます
低層階 文法や、単語同士の単純な関係(「猫」は主語だな、など)を処理
中層階 もう少し深い意味(「猫」と「かわいい」の関係など)を理解
高層階 文脈、論理、皮肉、意図といった高度な概念を処理
屋上(出力) 最終的に「次にくる単語は『丸くなる』だ!」と確率を出します

昔のAIは数階建てでしたが、今のLLMは層を深く(Deepに)することで、人間のような深い思考を可能にしています。これが「ディープラーニング」と呼ばれる所以です。

ひとつの「階(ブロック)」の中身

では、このビルの「1つのフロア」の中では何が行われているのでしょうか? どの階も基本的には同じ間取りで、大きく2つの部屋(機能)があります。

部屋A:Attention(会議室)

  • 役割: 「周りの情報を集める」
  • さっき解説した機能です。単語同士が話し合い、「彼は」が「好きだ」と関係している、といった文脈情報を整理します。
  • ここでは、あくまで「今、入力された文章の中での関係」を処理します。

部屋B:Feed-Forward Network(個人の作業デスク)

  • 役割: 「知識を思い出す・加工する」
  • Attentionで周りの状況を把握した後、その情報を個別に持ち帰り、自分の頭の中にある「知識」と照らし合わせます。
  • 実は、AIが学習した「事実や知識(フランスの首都はパリ、など)」の多くは、この部屋(のパラメータ)に保存されていると言われています。
入力 → 【会議室で文脈理解(Attention)】 → 【デスクで知識適用(FFN)】 → 次の階へ

これを96回(96層)繰り返すことで、情報はどんどん洗練されていきます。

GPTは「Decoder」という片割れ

実は、2017年に発表されたオリジナルのTransformerには、2つの塔がありました。

構成要素 役割 使用例
Encoder(エンコーダー) 文章を「読む・理解する」専門の塔 BERT
Decoder(デコーダー) 文章を「書く・生成する」専門の塔 GPT

ChatGPTなどのGPTシリーズは、このうち「Decoder(書く塔)」だけを巨大化させたモデルです。「ひたすら次の単語を予測して書き続ける」ことに特化させた結果、逆に「書くためには深く理解しないといけない」という進化を遂げ、理解力も手に入れました。

忘れてはいけない「位置エンコーディング」

Transformerには一つだけ弱点があります。それは、「一度に文章全体を見るため、順番がわからない」ことです。

以下の2つの文は、含まれる単語のセットは同じですが意味が全く違います:

  • 「犬 が 猫 を 噛んだ」
  • 「猫 が 犬 を 噛んだ」

Attention機能だけだと、この2つの区別がつきにくくなります。そこで、データの入り口(1階)で、各単語に「番号札(Positional Encoding)」を貼り付けます。

犬(1番目) → が(2番目) → 猫(3番目) → を(4番目) → 噛んだ(5番目)

この番号札があるおかげで、LLMは語順を理解できるのです。

構造のまとめ

LLM(Transformer)の構造を一言で言うなら:

「単語の位置情報をつけたベクトルを、『文脈理解(Attention)』と『知識処理(FFN)』のセットに何十回も通して、徐々に意味を深くしていく巨大な多層ビル」

事前学習 — AIに知識を叩き込む

ここまでの話って、単語をどう理解するか文章をどう理解するか、だけど、どうやって「知識」をAIに教え込むの? 単語の意味がいくらわかっても、ハリー・ポッターの出だし渡しだけで続き書けないよね?

いよいよ、「事前学習(Pre-training)」の解説です。

ビル(Transformer)を建てただけでは、中のAIはまだ「あー」とか「うー」しか言えない赤ちゃんの状態です。ここに、インターネット上のあらゆる知識を詰め込むプロセスが事前学習です。

これは、人間が何年もかけて学校に通うプロセスを、数ヶ月で一気に終わらせるような壮絶な工程です。

学習の方法:ひたすら「次単語予測」

AIは、人間のように教科書を読んで「ふむふむ、1192年に鎌倉幕府ができたのか」と覚えるわけではありません。

AIがやることはたった一つ、「次の単語当てゲーム」です。

学習のルール
「昔々、あるところに、おじいさんと【?】がいました」
  1. 隠す: AIに文章の続き(【?】の部分)を隠して見せます。
  2. 予測: AIは今の知識(最初は適当な乱数)で予測します。
    AIの回答:「...戦車?」
  3. 答え合わせ: 正解を見せます。
    正解:「おばあさん」
  4. 叱る(誤差逆伝播): 「違う!『昔話』の文脈で『おじいさん』ときたら、高い確率で『おばあさん』だ!」と、AIの脳神経(パラメータ)を修正します。

これを、Wikipedia、ニュース記事、ブログ、論文、プログラムコードなど、数兆単語(Token)にわたって繰り返します。

「知識」ではなく「確率」を覚える

ここが面白い点ですが、AIは知識を「事実」として暗記しているわけではありません。「確率的な繋がり」として圧縮して覚えています。

人間
「日本の首都は東京」という事実を覚える
AI
「『日本の首都は』という単語の列が来たら、次に『東京』という単語が来る確率が99.8%だ」というパターンを覚える

結果的に、歴史も数学もプログラミングも、すべて「単語の確率パズル」として習得してしまいます。このプロセスは、インターネット全体の情報を、巨大な関数(モデル)の中に「圧縮」しているとも言えます。

コストと規模:電気代だけで数億円

この「事前学習」は、とてつもない計算量が必要です。

項目 規模
GPU(計算機) NVIDIAの最高級GPU(H100など)を数千枚〜数万枚使用
期間 数ヶ月間、24時間フル稼働
コスト 電気代と機材費で、一回の学習に数十億円〜百億円以上

これが、GoogleやOpenAIなどの「ビッグ・テック」しか高性能な基盤モデル(Foundation Model)を作れない理由です。

出来上がるもの:「Base Model(ベースモデル)」

こうして数ヶ月の特訓を経て完成したAIを「Base Model(ベースモデル)」と呼びます。(例:GPT-4 Base, Llama 3 Baseなど)

しかし、実はこの時点では、AIはまだ「チャット(会話)」ができません。ただの「続きを書くマシーン」だからです。

Base Modelとの会話例

人間: 「おいしいカレーの作り方を教えて」

Base Model: 「...そして、おいしい肉じゃがの作り方はこちら。」

(解説)AIは「質問に答える」という使命を知りません。ネット上の「レシピ記事の羅列」を学習しているので、「カレーのレシピの次には、他の料理のレシピが続くことが多い」という確率に従って、勝手に続きを書いてしまうのです。

まとめ

  • やることは一つ: ひたすら「次の単語」を予測し続ける
  • 規模: ネット上の数兆語のテキストを読み込む
  • 成果物: 知識は凄いが、空気の読めない「続きを書くマシーン(Base Model)」が完成する

確率の計算方法 — 記憶ではなく計算

次の単語の確率はどこに書いておくの? 膨大な組み合わせについて確率を全て準備するの?

いい質問ですね!そこが人間の直感と、AI(ニューラルネットワーク)の仕組みが決定的に違うところです。

結論から言うと、確率は「どこにも書いてありません」。そして、膨大な組み合わせの確率表も「準備していません」。

もし「全ての組み合わせの確率表」を作ろうとしたら、宇宙にある原子の数よりも多くの紙が必要になり、物理的に不可能です。

ではどうしているのか? 「保存している」のではなく、「その場で毎回計算している(算出している)」のです。

「辞書」ではなく「計算機(関数)」

AIの中身は、巨大な「対応表(データベース)」だと思われがちですが、実際は巨大な「計算式(関数)」です。

対応表方式(辞書)

かけ算の答えを全部メモしておく方法。

「2×3=6」「2×4=8」……「987×654=…」

これだと、桁が増えると無限にメモが必要になりますよね?

計算式方式(LLMはこちら)

「かけ算のやり方(筆算のルール)」だけを覚える方法。

これなら、「12345×67890」という見たことのない問題が来ても、その場で計算して答えを出せます。

LLMもこれと同じです。「この単語の並びが来たら、次はこれ」というリストを持っているのではなく、「今までの文脈を入力すると、次の単語の確率が出力される」という超複雑な計算式(パラメータの塊)を持っています。

確率が出る瞬間の仕組み(Softmax層)

では、どうやって計算結果が「確率」になるのでしょうか? LLMの最後の最後、96階建てのビルの「屋上」で行われている処理を見てみましょう。

AIの辞書に単語が5万個あるとします。

  1. 入力: 「日本の首都は」という文章がビルに入ります。
  2. 計算: 96層のフロアを通る過程で、ベクトル(数値)がこねくり回されます。
  3. 出力(ロジット): 最終層から、5万個の数字がドサッと出てきます。これはまだ確率(%)ではなく、ただのスコアです。
    単語スコア
    東京15.2
    大阪8.4
    バナナ-5.3
    0.1
    ...(残り49,996個)...
  4. 変換(Softmax関数): この5万個のスコアを、全部足すと100%(1.0)になるように変換します。
    単語確率
    東京95.5%
    大阪3.2%
    バナナ0.00001%
    ......

こうして、その瞬間に計算された5万個の確率の中から、サイコロを振って(あるいは一番高いものを選んで)次の単語を決定します。

1単語ずつ生成される仕組み

重要なのは、LLMは1トークンずつしか生成できないということです。「日本の首都は」と入力すると、まず「東京」が出力され、次に「です」が出力され…という具合に、1つずつ順番に出てきます。

そして、新しいトークンが生成されるたびに、Attention機構が全体に対して再計算されます。つまり:

  1. 「日本の首都は」→ Attentionで文脈を理解 → 「東京」を生成
  2. 「日本の首都は東京」→ Attentionを再計算して文脈を更新 → 「です」を生成
  3. 「日本の首都は東京です」→ また再計算 → 「。」を生成

このように、1単語増えるごとにAttentionが「今までの全体」を見直して、次の1単語を決めています。長い文章を書くときも、毎回この計算を繰り返しているのです。

なぜ「見たことない文章」でも続きが書けるのか?

「確率表」を持っていないからこそ、LLMは柔軟なんです。

もし確率表方式だったら、「昔々、あるところに、ピンク色の象とダンスが大好きなおじいさんがいました」という文章が来た瞬間、「そんな例文はリストにない!」と停止してしまいます。

しかしLLMは計算式なので:

  • 「ダンスが大好き」 → 「楽しい」「踊る」という要素を加点
  • 「おじいさん」 → 「高齢」「男性」という要素を加点
  • それらを総合して計算し、「次は『楽しく』とか『踊って』が来る確率が高いな」と、その場で数値を弾き出せるのです。

まとめ

  • 確率はどこにある?: どこにも保存されていません。入力があるたびに、リアルタイムで計算されます。
  • 何を保存している?: 計算に使うための「パラメータ(重み)」という数字だけを保存しています。これが数千億個あります。
  • メリット: どんなに珍しい文章が来ても、計算式に当てはめれば何かしらの確率(答え)が出せます。

パラメータと行列演算

それはワード(トークン?)の持つパラメータの乗算?で導かれるのか

その通りです!非常に鋭いですね。AIが行っている計算の正体は、まさに「パラメータ(数字)の掛け算と足し算」の嵐です。

ただ、一つだけ修正するとすれば、「ワード(トークン)が持つパラメータ」だけではなく、「モデル(脳みそ)が持つパラメータ」との掛け算がメインになります。

誰がパラメータ(数字)を持っているの?

計算に使われる「数字」は、大きく2箇所に保管されています。

保管場所 説明 役割
ワードが持つパラメータ(Embedding) 最初に話した「辞書」の部分。「猫」という単語は、固有の数字の列(ベクトル)を持っている。 食材(インプット)
モデルが持つパラメータ(Weights/重み)
← ここが圧倒的に多い!
96階建てのビルの「壁」や「機械」に埋め込まれている数字。単語に関係なく、固定された巨大な数字の表(行列)。 調理器具(プロセッサー)

具体的にどんな計算をしている?(行列演算)

LLMの中では、次のような「掛け算」が何百億回も行われています。

イメージ:ベルトコンベアと加工機

  1. 入力(食材): 「猫」というベクトル(例:4,096個の数字の列)が流れてきます。
  2. 加工(調理): そこに、モデルが持つ「巨大なパラメータの行列」がガシャン!とかけ合わされます。
    新しいベクトル = 今のベクトル × モデルの行列(パラメータ)

    この「モデルの行列」には、事前学習で覚えた「文脈の読み方」や「知識」が数字として詰まっています。

  3. 変化: 掛け算をすると、ベクトルの数字がガラッと変わります。これを96回(96層)繰り返すことで、「ただの猫」というベクトルが、「こたつで丸くなっている猫」という複雑なベクトルへ加工されていきます。

最後の確率を出す瞬間

そして、質問にあった「次の単語の確率」を出す最後の瞬間も、やはり「ワードのパラメータとの掛け算」で決まります。

96階まで加工され終わった「文脈ベクトル(例:こたつ猫)」に対して、辞書にある全単語(5万語)のパラメータ(Embedding)を一斉に掛け算(内積)します。

  • 「こたつ猫」×「丸くなる」のベクトル → 数字が大きくなる(方向が似ているから)
  • 「こたつ猫」×「走る」のベクトル → 数字が小さくなる(方向が違うから)

この「掛け算の結果(スコア)」が大きい単語ほど、確率が高いと判定されるのです。

まとめ

ユーザーさんの直感通り、すべては「パラメータの乗算」で導かれます。

  • 入力: ワードのパラメータ(ベクトル)
  • 処理: モデルのパラメータ(行列)との掛け算
  • 判定: 全単語のパラメータとの総当たり掛け算(内積)

この「足し算と掛け算」を1秒間に何千兆回もできる計算機(GPU)があるからこそ、今のAIは喋ることができるのです。

誤差逆伝播 — 「罰」の仕組み

間違ってたら罰を与える、褒めると言っていたが どこにどう与えるのか

「罰を与える」「褒める」というのは、比喩表現としては分かりやすいですが、エンジニア視点で見ると、もっとドライで数学的な「引き算」のことです。

どこに、どうやって与えるのか。その現場は、さきほどの「96階建てのビル(モデル)」全体と、そこに住む数千億個のパラメータ(数字)です。

専門用語ではこれを「誤差逆伝播法(バックプロパゲーション)」と呼びます。

「罰」の正体:損失(Loss)

まず、AIが答えを間違えたとき、システムは「間違いの大きさ(距離)」を計算します。これを「損失(Loss)」と呼びます。

  • 正解: 東京 (ベクトル A)
  • AIの予測: 大阪 (ベクトル B)

このとき、ベクトルAとBがどれくらいズレているかを計算します。「正解から 0.5 ズレているぞ!」というこの数値(0.5)が、いわゆる「お説教の強さ」になります。

「どこ」に与えるのか?

罰を受ける対象は、モデルの中にある全てのパラメータ(行列の中の数字)です。

ただし、「連帯責任」ではありません。「誰が戦犯か?」を厳密に特定します。

現場検証のイメージ(逆伝播)

  1. 屋上(出力層): 「おい!答えがズレたぞ!一番上の責任者(パラメータ)出てこい!」
  2. 責任者: 「すいません、僕が変な計算をしたのは、その下の部下(下の層)から変なデータが来たからです」
  3. 下の層: 「いや、僕のせいじゃなくて、さらにその下の部下が……」

こうして、屋上から1階まで、「間違いの原因を作ったパラメータ」を特定しながら、責任(誤差)を分配していきます。これが「逆伝播(Back Propagation)」と呼ばれる理由です。

「どう」与えるのか?(数値の更新)

ここが一番のポイントです。「罰」とは具体的に「パラメータの数値を書き換えること」です。

もし、あるパラメータ w が「3.5」という数字を持っていて、それが原因で予測が大きくなりすぎたなら、「数字を少し減らせ」という命令が下ります。

新しい数値 = 今の数値 − (学習率 × 間違いへの寄与度)
計算例
  • 今の数値: 3.5
  • 間違いへの寄与度(勾配): 「お前が数値を上げすぎたせいで誤差が出たんだ!」 → +2.0
  • 学習率: 一気に変えると壊れるので、少しずつ変える → 0.01
新しい数値 = 3.5 − (0.01 × 2.0) = 3.48

このように、数千億個あるパラメータのひとつひとつに対して、「お前は上げろ」「お前は下げろ」と微調整を行います。これが「罰を与える」の正体です。

「褒める」とは?

この「次単語予測」の段階における「褒める」とは、「罰を与えない(修正しない)」ことです。

  • AIが完璧に正解した場合、損失(Loss)は「0」になります。
  • 引き算するものが何もないので、パラメータはそのまま維持されます。
  • 「今のままでいいよ、その調子!」というわけです。

まとめ

  • どこに?: モデル内の数千億個のパラメータ(行列の数値)全てに
  • どうやって?:
    1. 特定: 出力(屋上)から逆算して、誰が間違いの原因か(勾配)を特定する
    2. 修正: 原因となったパラメータの数値を、ほんの少しだけプラスまたはマイナスする(勾配降下法)

これを何兆回も繰り返すことで、パラメータの数字たちは「どんな入力が来ても、正解に近い確率を出せる完璧な数字の組み合わせ」へと徐々に近づいていくのです。

総まとめとファインチューニング

ここまでの話を振り返り 自然言語でまとめを書いて それからファインチューニングの話して

かしこまりました。ここまでの冒険は、「ただの記号(文字)」を「賢い知能(AI)」に変えるまでの旅でした。

まずは、ここまでのあらすじを、専門用語をなるべく使わずに「自然な物語」としてまとめます。

第一部:ここまでのあらすじ(LLMが生まれるまで)

1. 言葉を「数字の地図」に変える(ワードベクトル)

コンピュータは言葉が分からないので、すべての単語を「数字の列(座標)」に変換しました。これにより、「王様」と「王子」は地図上で近くにいる、「猫」から「かわいさ」を引くと別の意味になる、といった「意味の計算」ができるようになりました。

2. 文脈を読み解く「会議室」(Attention / Transformer)

単語たちは、ただ並んでいるだけではありません。「彼は」という単語が、「好きだ」という単語にスポットライトを当てて意味を吸収するように、単語同士がお互いに影響し合って「文脈」を作ります。これを何十回も繰り返すことで、AIは深い意味を理解します。

3. 知識を圧縮する「計算式」(パラメータ)

AIは知識を「辞書」として持っているのではなく、巨大な「計算式」として持っています。入力された数字に対して、何千億回の掛け算と足し算を行うことで、その場で答え(確率)をひねり出します。

4. スパルタ教育(事前学習)

この計算式を完成させるために、AIはインターネット上の文章を読みまくり、ひたすら「次の単語当てクイズ」をやらされました。間違えるたびに、脳内の数字(パラメータ)を微調整され続け、最終的に「どんな文章でも続きが書ける物知りなAI(ベースモデル)」が完成しました。


第二部:人間らしく振る舞うための「仕上げ」(ファインチューニング)

さて、ここで完成した「ベースモデル」には、致命的な欠点があります。それは、「空気が読めない」ことです。

ベースモデルの欠点

ユーザー:「風邪の治し方を教えて」

ベースモデル:「……という質問はよくある。また、骨折の治し方は……」
(ネット記事の続きを書いてしまう)

これでは使い物になりません。そこで行うのが「ファインチューニング(微調整)」です。ここには2つの段階があります。

ステップ1:会話のルールを教える(Instruction Tuning)

まずは、「質問されたら答えるんだよ」という対話の形式を教え込みます。

  • やり方: 人間が作った「良質なQ&A集」をテキストとして読ませます。
    • 入力:「風邪の治し方を教えて」
    • 正解:「まずは暖かくして寝ることです。」
  • 効果: これも「次単語予測」の学習ですが、教材がネットの雑多な文章ではなく「模範解答」なので、AIは「アシスタントとしての喋り方」を覚えます。

ステップ2:人間の「好み」を教える(RLHF)

ここが現代AIの真骨頂です。「Reinforcement Learning from Human Feedback(人間のフィードバックによる強化学習)」、略してRLHFです。

さきほど「間違えたら罰を与える」という話をしましたが、ここでは「人間が採点官」になります。

  1. 答えを比較させる: AIに、同じ質問に対して2〜3パターンの答えを出させます。
    • 回答A:「風邪? 寝ろ。」(正しいけど冷たい)
    • 回答B:「お辛いですね。水分を摂って暖かくしてください。」(親切)
  2. 人間がランク付けする: 人間がこれを見て、「Bの方が良い!」と評価します。これが「ご褒美(Reward)」の元データになります。
  3. 報酬モデル(Reward Model)を作る: 人間の評価基準を真似した「採点専用のAI(報酬モデル)」を作ります。「こういう答えだと人間は喜ぶ(高得点)、こういう答えは嫌がる(低得点)」という基準を数値化します。
  4. AIを矯正する(強化学習): 最後に、本体のLLMに対し、「この採点専用AIから高得点をもらえるように喋れ」という特訓を行います。
    • AIが暴力的なことを言う → 採点AIが「-100点(大罰)」を与える → パラメータが大きく修正される
    • AIが親切なことを言う → 採点AIが「+100点(ご褒美)」を与える → その行動が強化される

最終まとめ

こうして、

  1. 事前学習: ネットの海で「言葉の確率」と「知識」を大量に詰め込み(怪物のような知能の誕生)
  2. ファインチューニング: 人間の手で「会話のマナー」と「倫理観」を教え込まれた(社会性の獲得)

その結果、あなたの質問に対して自然な日本語で、かつ役に立つように答えるAIが完成したのです。

🎉 これで、LLMの仕組みについての解説は完了です! 🎉

← orange-wks