PUBLIC

Chapter 1 モデルの正体 / 1-1

LLMは次の1トークンを予測しているだけ

自己回帰生成のループ。「考えている」ように見える正体と、1トークンずつという性質。

いきなり身も蓋もない話をします。

LLMがやっているのは、「次に来るトークンを予測する」ことだけです。

「今日はいい」まで入力されたら、次に来るのは「天気」かもしれないし「日」かもしれない。それぞれの確率を計算して、一番それっぽいものを選ぶ。選んだら、それを含めた文章をもう一度入力に戻して、また次を予測する。

INPUT CONTEXT「今日はいい」過去の全トークンLLM ENGINE全重みをメモリから読込Attention & 行列積語彙ごとの出現確率を計算PREDICTED TOKEN「天気」(p = 74%)出力を入力末尾に加えて再実行 (100回)GENERATION STEP-BY-STEP (1トークンずつ進む過程)STEP 1「今日」→「は」STEP 2「今日は」→「いい」STEP 3「今日はいい」→「天気」STEP 4「今日はいい天気」→「です」
出力を入力に戻しながら、1トークンずつ進む。100トークンの文章を作るには、この処理を100回まわす。

これをひたすら繰り返しているだけです。スマホの予測変換の、とんでもなく賢いやつ。それがLLMの正体です。

じゃあ、なぜ「考えている」ように見えるのか

「次のトークンを予測する」というタスクを本気で極めようとすると、予測の精度を上げるために、世界の構造を理解せざるを得なくなるんです。

「日本の首都は」の次を当てるには、日本という国と首都という概念を知っている必要がある。「2+3=」の次を当てるには、足し算ができないといけない。「このコードのバグは」の次を当てるには、コードを読めないといけない。

つまり、次トークン予測は「知識と推論を身につけないと解けないタスク」です。膨大なテキストで訓練された結果、副産物として知識や推論能力が出てきた。少なくとも、そう見える振る舞いをするようになった。

ここは哲学的な議論があるところなので深入りしませんが、実装レベルでは「次のトークンを予測しているだけ」というのは動かしようのない事実です。

「1トークンずつ」が、この先すべての根っこになる

LLMは自分の出力を入力に戻しながら、1トークンずつ生成しています。これを自己回帰(autoregressive)と言います。

100トークンの文章を作るには、100回この処理を回す。1回で全部まとめて出てくるわけじゃない。

ここだけ覚えて次へ

この「1トークンずつ」という性質が、後に出てくる速度の話・メモリの話のすべての根っこになります。 なぜ生成が遅いのか、なぜメモリを食うのか、なぜバッチが効くのか ── 全部ここから説明がつきます。