モデルのしくみ 中級
Top-pサンプリング
Nucleus Sampling
次に出す単語の候補を、確率の高い順に足して一定の割合に達するところまでに絞り、その中から選ぶ方法です。出力のばらつきを調整する設定値の1つです。値を下げると堅実に、上げると多様になります。
別の呼び方ニュークリアスサンプリング、top_p、核サンプリング
例ブレストでは温度を上げず、top_p を 0.9 に設定して、突飛すぎない範囲で案を出させた。
詳しく
Top-pサンプリング(ニュークリアスサンプリング)とは、LLM が次のトークンを選ぶときに、候補を「確率の合計が p に達するまで」に絞り、その範囲内から選ぶ方法です。出力のばらつきを調整するための設定値で、APIでは top_p という名前のパラメータとして用意されています。
しくみ
LLM は、次に来るトークンそれぞれに確率を割り当てます。たとえば「今日は」の続きとして「晴れ」が40%、「雨」が25%、「曇り」が20%、それ以外の何千もの候補が合計15%、といった具合です。
もし確率に従ってそのまま選ぶと、ごく低い確率の変な候補も、まれに選ばれてしまいます。そこで、確率の高い順に並べて足していき、合計が p(たとえば0.9)に達したところで打ち切り、残りの候補は捨てます。残った候補の中で、確率に従って選びます。
この方法の特徴は、候補の数が状況によって変わることです。答えがほぼ決まっている場面では、1〜2個の候補で p に達するので、安定します。一方、自由度が高い場面では、多くの候補が残り、多様な出力になります。
具体例
- p を小さく(例:0.1〜0.5):確率の高い候補だけを使うため、出力が堅実で、同じ入力に対して似た答えが出やすい
- p を大きく(例:0.9〜1.0):低い確率の候補も混ざり、表現が多様になる。1.0 は絞り込みなし
要約や抽出など、正確さが求められる作業では小さめ、アイデア出しや創作では大きめにするのが一般的な使い分けです。
使うときの注意・よくある誤解
- 温度(temperature)も出力のばらつきを調整する設定で、役割が似ています。両方を大きく動かすと挙動を読みにくくなるため、多くのサービスのドキュメントでは、どちらか一方を調整することが勧められています。
- 設定を決定的にしても、同じ答えが保証されるとは限りません。実行環境によって差が出ることもあります。
- 推論モデルなど、一部のモデルではこれらの設定が固定されていたり、指定できなかったりします。使えるかどうかは、各サービスのドキュメントで確認が必要です。
- 設定値を変えるより、プロンプトを具体的にするほうが、結果に効くことも少なくありません。
実際の設定の目安
利用するサービスの標準値で十分なことが多く、迷ったら触らないのも1つの選択です。変えるなら、1回に1つの設定だけを動かし、同じ質問を何度か試して、出力の違いを見比べてください。決まった形式(JSONなど)で出力させたい場合は、設定の調整よりも、構造化出力の機能を使うほうが確実です。
関連する考え方
候補の絞り込みには、確率の高い順に上位k個だけを残す「Top-k」という方法もあります。top-p は、候補の数を固定せず、確率の合計で決める点が異なります。
あわせて知りたい言葉
- 温度(temperature)LLM が次のトークンを選ぶときのばらつきを調整する設定値です。低くすると毎回似た無難な出力に、高くすると多様で意外性のある出力になります。用途に応じて使い分けます。
- トークンLLM がテキストを処理するときの最小単位で、単語や文字のかけらに相当します。料金・文脈長・出力の上限は、このトークン数で数えられるため、AIを使う際の基本の単位になります。
- 大規模言語モデル大量のテキストで学習し、文章の続きを予測することで、生成・要約・翻訳・質問応答などをこなすモデルです。ChatGPT、Claude、Gemini などのサービスの中核にあります。
- 推論(インファレンス)学習を終えた AI モデルに、実際に入力を与えて答えや生成物を出させる段階のことです。チャットで質問したり、画像を生成したりするときに裏で行われている処理を指します。
- 構造化出力LLM の出力を、指定した JSON Schema などの決まった形に従わせる機能です。プログラムで結果を扱うときに、形式の崩れによるエラーを防げるため、システム連携で重宝されます。