本文へスキップ

モデルはトークンの確率をどう計算するのか?

簡単な式、候補のスコア、Softmax を使って、トークンの確率分布が得られる仕組みを理解します。

前回は、モデルが確率分布から一つのトークンを選ぶ方法を詳しく説明しました。今回は、その確率分布をモデルがどう作るのかを説明します。

1. 一つの式で入力とパラメーターを理解する

最も簡単な式から始めましょう。

y=ax+by = ax + b

x は入力、y は出力、a と b はパラメーターです。パラメーターの値によって、式が入力をどう処理するかが決まります。

2. 入力を式に代入して候補のスコアを計算する

第 3 講の「今日は雨。出かけるときに持っていくのは……」を、別の角度から説明します。複雑な確率論はいったん置き、単純な掛け算と足し算で考えましょう。

出力を「傘」とし、入力だけを変えてみます。「今日は晴れ。出かけるときに持っていくのは……」と「今日は雨。出かけるときに持っていくのは……」です。

違いは「晴れ」と「雨」です。そこで、雨を 1、晴れを 0 に簡略化します。つまり x(雨)= 1、x(晴れ)= 0 です。また、訓練によって a = 2、b = 1 というパラメーターが得られたとします。

式に代入すると、「傘」のスコアは次のようになります。

天気入力計算「傘」のスコア
雨x = 12 × 1 + 13 点
晴れx = 02 × 0 + 11 点

ここでは、スコアを確率に近いものとしてイメージしてください。入力が「雨」なら、「持っていくのは」に「傘」が続く可能性が高くなります。

「傘」に y(傘)= a(傘)x + b(傘)という式があるなら、「レインコート」や「帽子」など、他のトークンにも計算式があります。違うのは a と b の値です。

候補ab式への代入スコア
傘212 × 1 + 13
レインコート111 × 1 + 12
帽子-23-2 × 1 + 31

3. スコアを確率に変換する

一つの入力に対して複数の計算を行うことで、3 つの数値が得られました。最後に Softmax という数学的な変換を使い、合計 100% の確率にします。詳しい計算は覚えなくて構いません。スコアの高い候補ほど、高い確率を得ます。

候補式から得たスコア変換後の確率
傘3約 66.5%
レインコート2約 24.5%
帽子1約 9.0%

4. 単純なたとえから実際のモデルへ

実際の計算は、はるかに複雑です。ここでは、モデルがトークンの確率を得る仕組みを、できるだけ簡単な計算で説明しました。

実際に LLM が次のトークンを予測する流れは、次のように捉えられます。

  1. 入力内容
    今日は雨。出かけるときに持っていくのは…
  2. 相互につながる大量の計算
  3. 多くのスコアを算出
    1. スコア 1
      傘
    2. スコア 2
      レインコート
    3. スコア 3
      帽子
    4. …
      …
  4. サンプリング方針に従って トークン ID を選択
    傘

5. この概念を知ると何に役立つのか?

第一に、入力はモデルが計算する確率に影響します。

同じパラメーターでも、入力が「晴れ」から「雨」に変わると、「傘」のスコアが変わりました。実際の利用でも、追加した背景、要件、例がモデルの計算に入り、後続トークンの確率に影響します。

大規模言語モデルはどうやって回答を生成するのか?で説明したように、良い結果には十分な情報と正しい情報が必要です。現在のモデルでも、目的、背景、要件を明確に書くことは結果に大きく影響します。

第二に、トークンの確率は回答の正解率ではありません。

先ほどの「傘」の 66.5% は、この簡略化した例で、次のトークンとして選ばれる確率です。「傘を持っていくという助言が 66.5% の確率で正しい」という意味でも、モデルが回答全体にそれだけの確信を持つという意味でもありません。

文章が自然で断定的でも、誤りを含むことがあります。事実を確認するには、出典を調べる必要があります。モデルにもっと自信のある言い方をさせても、事実の信頼性は高まりません。

6. 実績チャレンジ