LLMはどうやって次の単語を予測するのか — 非エンジニアのためのAI解説

読了 7分

ChatGPTに質問を投げかけると、まるで人がじっくり考えた上で答えているように見えます。そのため、多くの方はLLMを「とても賢い検索エンジン」あるいは「考えるコンピュータ」だと推測します。ところが、その中で実際に起きていることは思ったより単純です。

大規模言語モデル、つまりLLMがやっていることは一文で要約できます。これまで与えられた文章に続けて、次に来るもっともらしい単語を確率で予測することです。この記事では、この一行がどうやってChatGPTのような会話につながるのか、そしてなぜこの原理を知っているとAIをうまく使えてだまされにくくなるのかを、ひもといていきます。

LLMは考えずに次の単語を予測します #

スマートフォンでメッセージを打つとき、キーボードが次の単語を先回りして提案してくれる機能を思い浮かべるとよいです。「今日の天気は」と打つと「いいです」のような単語を提案します。LLMは、このオートコンプリートを想像しにくいほど巨大に育てた機械だと考えると、大きな枠組みとしては合っています。

違いは規模と精緻さです。スマートフォンのオートコンプリートは、すぐ前の単語をいくつか見るだけで単純に提案します。一方、LLMはこれまでの文脈全体を見渡して、その後に来る単語をはるかに精緻な確率で計算します。だからこそ、出力は一文を超えて長い文章、コード、翻訳にまで自然につながっていきます。

ここで大事な点があります。LLMは質問の意味を人のように理解したり、どこかから正解を探してきたりするわけではありません。ただ「この文章の次にはどの単語が来る確率がもっとも高いか」を計算しているだけです。

モデルは単語ではなくトークンを扱います #

もう少し正確に言うと、LLMは単語ではなく、トークン(token)というさらに細かく刻んだ単位を扱います。トークンは一つの単語であることもあれば、単語の一部の断片であることもあります。たとえば「オートコンプリート」という一つの単語が、モデルの内部では「オート」と「コンプリート」のような二つの断片に分かれて処理されることもあります。

なぜこのように刻むのでしょうか。世の中のすべての単語を丸ごと覚えるより、よく登場する断片の組み合わせで扱うほうが、初めて見る単語や打ち間違いまで柔軟に処理できるからです。だから正確に表現すると、LLMは「次の単語」ではなく「次のトークン」を予測します。ただし理解のために、この記事ではトークンを単語とほぼ同じ意味で使います。

インターネット上のテキストで次のトークン当てを繰り返して学びます #

それでは、モデルは何がもっともらしい次の単語なのかをどうやって知るのでしょうか。答えは学習です。

LLMは本、記事、ウィキ、ウェブページなど、インターネットに積み上がった膨大なテキストを材料にします。学習の過程は、意外にも単純な繰り返しです。文章の一部を隠したうえで、モデルに隠した部分の次の単語を当てさせます。間違えたら内部の数値を少しずつ調整し、もう一度当てさせます。

この過程を天文学的な回数だけ繰り返します。その結果、モデルは何か正解を覚えるのではなく、言語に込められたパターンを統計的に身につけます。文法の規則、単語どうしが一緒に使われる習慣、よく登場する事実、特定の文体の雰囲気まで、すべてが「どの単語の次にどの単語が来る傾向があるか」という形でモデルの中に根づきます。

知識のように見えるものも、実はこの統計の結果です。「大韓民国の首都は」という文の次に「ソウル」が来る確率が圧倒的に高いというパターンを数えきれないほど見てきたからこそ、モデルはその答えを自信を持って差し出します。

一単語ずつつなげて文を完成させます #

学習を終えたモデルが実際に答えを作る過程も見ていきます。核心は、一度に文章全体を書くのではなく、単語を一つずつつなげていくという点です。

モデルはまず、もっともらしい次の単語を一つ選びます。その次には、いま選んだ単語まで含めた文章をふたたび入力として、その後に来る単語をもう一度予測します。このように、自分が書いた結果をふたたび入力として戻し入れながら、一単語ずつ伸ばしていく方式を自己回帰(autoregressive)と呼びます。ChatGPTの回答が左から一文字ずつ流れ出てくるのも、このためです。

このときモデルは、いつも確率がもっとも高い単語だけを選ぶわけではありません。温度(temperature)という値を調整して、安全で無難な単語を選ぶか、もう少し多様で意外な単語を選ぶかを調整します。同じ質問でも答えが毎回少しずつ変わるのは、このためです。

前に与えられた文脈が予測を変えます #

LLMの予測は真空の状態で行われるわけではありません。モデルはそれまでに与えられた会話と指示を一緒に見て、次の単語を計算します。この入力全体をコンテキスト(context)と言います。

同じ「はる」という単語でも、前に季節の話があったのか、針金を巻いたばねの話があったのかによって、続く単語の確率はまったく変わります。モデルが前の内容を一緒に見ているからこそ可能なことです。

プロンプトが大事だという話は、ここから出てきます。私たちがどんな文脈と指示を前に用意するかによって、モデルが計算する確率と、その出力が丸ごと変わります。役割を決めたり、望む形式や条件を具体的に書いたりするほど、モデルはその文脈に合う単語を選び出します。良い答えを得ることは、良いコンテキストを整えることとほぼ同じです。

だからハルシネーションが起きます #

この原理を理解すると、LLMの最大の弱点も自然に説明できます。それがハルシネーション(hallucination)、つまり間違った内容を事実であるかのように自信を持ってでっち上げる現象です。

モデルは、ある情報が事実かどうかを別途判断しません。ただ「もっともらしい次の単語」をつなげていくだけです。だから、実際には存在しない本のタイトル、にせの論文、間違った統計も、文法的になめらかでもっともらしく作り出せます。モデルの立場では、本物の情報ともっともらしい嘘のあいだに本質的な違いはありません。どちらも確率の高い単語の並びにすぎないのです。

そのうえ、モデルが学習したテキストには時点があります。学習より後に起きた最新の出来事や、変わった情報はモデルの中に含まれていません。したがって、重要な事実、最新の情報、数字、引用については、LLMの答えをそのまま信じず、別途確認する習慣が必要です。最近は検索や外部資料を一緒に活用してこの弱点を補う方式も広く使われていますが、最後の確認はやはり人の役目です。

原理を知ればうまく使えてだまされにくくなります #

ここまでの話を整理します。LLMは考えたり検索したりする機械ではなく、膨大なテキストで次のトークン当てを繰り返して言語のパターンを身につけたうえで、与えられた文脈に続けて単語を一つずつ確率で選んでつなげる機械です。

このシンプルな原理が、翻訳、要約、文章作成、コーディングまでこなす驚くべき能力の土台です。同時に、事実を保証できないという限界の理由でもあります。強力ですが限界がはっきりした道具だということです。

原理を知ってしまえば、使い方もはっきりします。良い文脈と指示を丁寧に整えて、出力のうち事実にあたる部分は自分で検証することです。そうすれば、同じ道具でもはるかに良い結果を得られて、もっともらしい嘘にだまされにくくなります。

ちなみに、文字や単語がコンピュータの中で結局は数字として扱われるという、より根本的な話はコンピュータはどうやって0と1ですべてを表現するのかの記事で扱いました。LLMがトークンを数字に変えて計算するという点と自然につながるので、一緒に読んでいただけるとよいです。

X