本文へスキップ

同じ質問でもモデルの回答が変わるのはなぜか?

貪欲法とサンプリングから回答のランダム性を理解し、Temperature、Top-p、Top-k の役割を学びます。

前回はトークン化を学びました。今回は、モデルが実際に次のトークンを選ぶ方法を詳しく見ていきます。

1. 貪欲法とサンプリング:次のトークンを選ぶ

前回の天気の例は、トークンとトークン ID を理解しやすくするためのものでした。そのため、モデルの出力を簡略化して説明しました。

実際には、モデルが直接一つのトークン ID を出すわけではありません。次の 2 段階に分かれます。

  • 第一段階:複数のトークン ID に対する確率分布を作る。
  • 第二段階:その確率分布から一つのトークン ID を選ぶ。

もう少し自由度のある例を考えましょう。モデルが「今日は雨。出かけるときに持っていくのは」に続く文章を生成するとします。まず、次のトークンの確率分布を計算します。説明しやすいように、ID ではなくトークンの文字を使います。例えば、次の結果が得られます。

  • 傘:50%
  • レインコート:30%
  • 上着:15%
  • 帽子:5%

次に、この確率分布から一つを選んで出力します。主な選択ルールには、貪欲法(Greedy)とサンプリング(Sampling)があります。

  • 貪欲法:毎回、確率が最も高い候補を選ぶ。
  • サンプリング:確率に従って選ぶ。各候補に選ばれる可能性がある。

貪欲法なら、確率が最も高い「傘」を選び、「今日は雨。出かけるときに持っていくのは傘」となります。サンプリングなら、確率に従って「傘」を選ぶことも、「レインコート」や「上着」を選ぶこともあります。そのため、毎回の結果が変わる場合があります。

現在の主要モデルが公開している推奨設定や評価設定では、サンプリングが比較的よく使われます。一般に、その結果を調整するための 3 つのパラメーターが用意されています。

2. Temperature:候補の確率を調整する

温度が低いほど、もともと確率の高い候補が有利になります。温度が高いほど、候補間の機会の差が小さくなります。

設定簡単な理解
低温、例えば 0.2有力な候補がさらに有利になり、選択が集中する
1.0温度によって元の確率分布を変えない。ランダムな選択は引き続き可能
高温、例えば 1.5確率の低い候補にも機会が増え、選択が分散する

先ほどの雨の例で、元の確率が次のようになっているとします。

  • 傘:50%
  • レインコート:30%
  • 上着:15%
  • 帽子:5%

Temperature は、くじを引く前に、各候補に割り当てるくじの枚数を調整するようなものです。

候補低温:0.5そのまま:1.0高温:2.0
傘約 68%50%約 38%
レインコート約 25%30%約 29%
上着約 6%15%約 21%
帽子約 1%5%約 12%

温度が 0.5 なら、「傘」は 50% から約 68% に上がり、もともと確率の低い「帽子」はさらに選ばれにくくなります。温度が 2.0 なら、「傘」は約 38% に下がり、「帽子」は約 12% に上がります。「傘」の優位が小さくなり、「帽子」にも機会が増えます。ただし、「傘」は依然として 1 位です。全候補の確率が等しくなるわけではありません。 温度が 0 より大きい場合、温度だけを変えても候補の順位は変わらず、確率分布だけが変わります。

3. Top-p:累積確率で候補を絞る

Top-p は、累積確率が p に達する候補だけを選択対象にします。候補の範囲を制限し、確率の低い候補が選ばれる機会を減らします。

同じ雨の例で見てみましょう。

設定残す候補理由
top_p = 0.8傘、レインコート合計が 50% + 30% = 80%
top_p = 0.9傘、レインコート、上着最初の 2 つでは足りず、3 つ目を加えると 95%
top_p = 1.0すべて

4. Top-k:個数で候補を絞る

Top-k は、確率が高い上位 k 個だけを選択対象にします。Top-p との違いは、Top-k が上位 k 個を残すのに対し、Top-p は累積確率が p に達する最小の候補集合を残すことです。どちらも候補の範囲を制限します。

設定残す候補理由
top_k = 1傘最も確率の高い 1 個だけを残す
top_k = 2傘、レインコート上位 2 個を残す
top_k = 3傘、レインコート、上着上位 3 個を残す
top_k = 4すべてこの例の候補は全部で 4 個

5. くじ引きで 3 つのパラメーターを理解する

くじ引きにたとえて整理します。

パラメーター制御するものくじ引きのたとえ
temperature候補の確率の集中や分散各候補のくじの枚数を調整する
top_k確率の高い上位 k 個を残す上位 k 位だけ参加できる
top_p累積確率が p に達する最小の集合を残す1 位から順に集め、必要な確率に達したら止める

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

最近は、これらのパラメーターを設定できないクローズドモデルも増えています。オープンモデルも推奨設定を示すことが多く、通常は変更する必要がありません。これらを知ることが、そのまま出力の改善につながるわけではありません。

ただし、確率の仕組みを理解すると、モデルが毎回同じ結果を返すとは限らないことが分かります。

モデルの出力には、ある程度のランダム性があります。これは従来のソフトウェアと大きく異なります。多くの従来型プログラムは固定ルールで動きますが、LLM は通常、確率に基づいてサンプリングするため、同じ入力でも結果が変わりやすいのです。

この生成方法には、ハルシネーション(Hallucination)という別の問題もあります。モデルは知らないことについて、必ずしも「分かりません」と答えません。確率に従って、ありそうな回答を選ぶ場合があります。そのため、誤った答えや、完全に架空の内容を生成することがあります。

例えば「今日の広州の天気はどうですか?」と質問すると、追加のツール呼び出しがない場合でも、「今日の広州は晴れで、気温は28 ℃です。」と答えるかもしれません。しかし、実際には雨かもしれません。モデルは自分の回答が誤っていると認識しているわけではなく、確率に従ってありそうな答えを選んだだけです。

7. 実績チャレンジ