触ってわかる「LLMの仕組み」
LLMは、次の1トークンを
当て続けているだけです。
信じられないなら、このページのつまみとボタンを全部触ってみてください。
読むページではなく、触るページです。
案内このページの使い方
はじめての方へ。むずかしい知識はいりません。ボタンを押して、つまみを動かすだけです。
上から順に見ていくだけ
話は全部で7つあります。順番に下へスクロールしてください。とちゅうで分からない言葉が出てきても、気にせず先へ進んで大丈夫です。
触れる場所は3種類だけ
このページで操作するものは、次の3つしかありません。
- ボタン 押すと表示が切り替わります
- つまみ 左右に動かすと数字が変わり、グラフがその場で動きます(矢印キーでも動かせます)
- 入力らん 文字を打ちかえると、結果がすぐ変わります
壊れる心配はありません
どのボタンを押しても、何かがこわれたり、どこかに送信されたりすることはありません。おかしくなったと感じたら、ページを開き直せば元どおりになります。安心して全部触ってみてください。
まずはここだけ試してみてください
下へスクロールして 「4. 次トークン予測と temperature」 まで進み、青いつまみを右いっぱいまで動かしてみてください。棒グラフの形が変わります。ここがこのページで一番おもしろいところです。
文字が小さいと感じたら
画面のいちばん上にある 「文字サイズ」 ボタンを押してください。押すたびに 標準 → 大 → 特大 → 標準 と切り替わります。目が疲れにくい濃さにしたいときは、となりの 「テーマ」 ボタンで白い画面と黒い画面を切り替えられます。
注:このページはインターネットにつながっていなくても動きます。入力した文字がどこかへ送られることもありません。
§1トークン化 ─ モデルが見ている世界
モデルは文字でも単語でもなく、トークンという単位で文章を見ています。まずは自由に書き換えてみてください。分割がリアルタイムで変わります。
プリセットの日本語文と英語文は同じ意味です。切り替えてトークン数を見比べてください。日本語は英語よりトークンを多く消費します。同じ内容でも、処理量と(APIなら)コストが増えるということです。
注:これは教育用の近似シミュレーションです。実際のトークナイザ(BPE)とは分割結果が異なります。
§2埋め込み ─ 意味が座標になる
トークンは数値の並び(ベクトル)に変換されます。つまり単語が座標になります。座標になると、意味の「近さ」が距離として測れます。点をクリック(またはEnter)すると、意味が近い5語が線で結ばれます。
ベクトル演算 ─ 意味は足し算・引き算できる
「王」から「男」の成分を引いて「女」の成分を足すと、計算結果に最も近い単語は「女王」になります。意味に構造があるから、こんな算数が成立します。
注:座標は教育用に手作りしたものです。実際の埋め込みは数百〜数千次元あり、2次元に落とすと多くの情報が失われます。
§3Attention ─ どこを見ているか
「彼」「それ」が何を指すのか。モデルは文法規則を教わったわけではなく、各トークンが他のトークンに配る重み(注目度)としてこれを解いています。トークンをクリックすると、そのトークンがどこを見ているかが青の濃淡で表示されます。
注:重みは説明のために手作りした例です。実際のモデルの内部値ではありません。
§4次トークン予測と temperature
いよいよ本丸です。モデルの出力は「次のトークンの候補と、その確率」の一覧です。temperature(温度)のつまみを動かしながら、棒グラフの形を見てください。
temperature は「創造性のつまみ」ではありません。やっていることは確率分布を平らにする/尖らせる、それだけです。そして「日本の首都は」のように元の分布が極端に尖っていれば、温度を上げても答えはほぼ揺らぎません。逆に「今日の天気は」のような平らな分布は、少し温度を上げるだけで結果が散らばります。
§5サンプリング戦略 ─ どこで線を引くか
確率が決まったら、次はどの候補まで「くじ引き」に参加させるか。確率の高い順に並べて、どこで打ち切るか。それだけの話です。上の §4 と同じ分布(同じプロンプト・同じ temperature)を使います。
打ち切られた候補はグレー+取り消し線。採用された候補の確率は、合計が1になるように配り直されます(再正規化)。
§6実際に生成してみる
§4・§5 の設定をそのまま使って、本当に1トークンずつ文を作ります。ボタンを押すたびに「候補を並べる → くじを引く → 1トークン確定」が1回起きます。
同じ設定のまま、「最初から」→ もう一度やってみてください。
temperature が 0 より大きければ、毎回違う結果になります。これが「AIの答えが毎回変わる」の正体で、仕様であって不具合ではありません。temperature = 0 にすると、何度やっても同じ文になります。
§7まとめ ─ なぜAIは自信満々に嘘をつくのか
ここまで触ってきた仕組みだけで、この疑問には答えが出ます。新しい概念は要りません。
モデルがやっているのは「もっともらしい続きのトークンを選ぶ」ことだけで、それが事実かどうかを確かめる仕組みはどこにもありませんでした。§4〜§6 のどこにも「検算」の工程がなかったことを思い出してください。
「知らない」と答えるのも、ただのトークン列です。学習データの中で「知らない」という続きに高い確率が付いていなければ、それは選ばれません。もっともらしい別の続きが選ばれます。これが、いわゆるハルシネーション(もっともらしい嘘)の正体です。
そして §4 で見た通り、分布が平らな場面 ─ つまりモデルが迷っている場面ほど、くじ引きの結果は散らばり、出力は不安定になります。自信がない時ほど、出力は揺れるのに、文面は自信満々のままです。
LLMは、次の1トークンを当て続けているだけ。
それを知っていれば、AIとの付き合い方が変わります。