Nucleus Sampling
ニュークリアスサンプリング(top-p)がAIテキスト生成のためにどのようにトークンを選択するかを学び、top-k、貪欲デコーディング、温度と比較して出力の多様性を調整します。
ニュークレアスサンプリング(top-pサンプリングとも呼ばれます)は、AIによるテキスト生成時に次のトークンを選択する方法です。モデルは、常に最も確率の高いトークンを選ぶ代わりに、確率の合計が選択したしきい値以上になるショートリストを構築し、そのショートリストからランダムにサンプリングします。ショートリストは予測ごとに変化します。1つの継続が明らかな場合は小さくなり、複数の継続が妥当な場合は大きくなります。
ニュークレアスサンプリングの仕組み#
言語モデルは、考えられるすべての次のトークンに確率を割り当てます。これらの確率は通常、モデルの出力スコアからsoftmaxを使用して計算され、値の合計が1になります。ニュークレアスサンプリングは、トークンを確率の高い順に並べ、累積確率がしきい値 p に達するまで含め、残りのトークンを除外して、含まれるトークンからサンプリングを行います。ここで、p は個々のトークンの確率ではなく、確率質量を表します。PyTorchのsoftmaxドキュメントで確率変換について説明されており、IBMのデコードガイドで累積カットオフについて説明されています。(docs.pytorch.org)
考えられる次の4つのトークンの確率がそれぞれ0.50、0.25、0.15、0.10であると仮定します。top_p=0.80 の場合、最初の2つの合計は0.75にとどまるため、3番目も含まれ、ショートリストは0.90になります。4番目は除外されます。次にモデルは、最初の3つの間で正規化後の確率に比例してサンプリングを行います。それぞれに均等なチャンスを与えるわけではありません。しきい値を越えたトークンがショートリストに残るため、カットオフが p を超える場合があります。Google Cloudによるtop-pの説明では、同じトークン選択ルールについて説明されています。(cloud.google.com)
この選択は、生成されたすべてのトークンの後で再度行われます。文が展開するにつれて、モデルは新しい確率分布を計算し、したがって新しいニュークレアスを計算します。
Top-pとTop-k、貪欲デコード、および温度#
これらの設定は、生成のさまざまな部分に影響を与えます。
- Top-kサンプリングは、確率が最も高い5つのトークンのように、固定数の候補を保持します。Top-pは、確率しきい値に達するのに十分な数の候補を保持するため、ショートリストのサイズは固定されていません。
- 貪欲デコードは、常に最も可能性の高い単一のトークンを選択します。予測可能性は高くなりますが、サンプリングが提供するようなバリエーションは得られません。
- 温度は、選択前にモデルが高確率のトークンをどの程度強く優先するかを変更します。温度を下げると主要な選択肢に確率が集中し、温度を上げるとより広範囲に分散します。一方、Top-pは、結果の分布に対して累積カットオフを設定します。
実装ではこれらの制御を組み合わせることができますが、その相互作用により結果の解釈が難しくなります。実験を行う際は、一度に1つの設定を変更してください。OpenAIのChat Completionsパラメータリファレンスでは、top_p について説明しており、両方を同時に調整するのではなく、パラメータまたは温度のいずれかを調整することを推奨しています。(platform.openai.com)
実践における重要性#
カスタマーサポートのチャットボットにおいて、ニュークレアスサンプリングを使用すると、あらゆるありそうもない継続から引き出すことなく、定型的な回答の自然な言い回しを複数許可できます。たとえば、返品ポリシーを説明するアシスタントは、プロンプトで提供されたポリシーの詳細を保持しながら、最初の文を変更することができます。サンプリングはそれらの詳細を検証しません。流暢な回答でも依然として間違っている可能性があるため、事実確認と適切なグラウンディングを引き続き行う必要があります。
画像キャプション生成において、ビジョン言語モデルは、同じ街路の情景を説明する合理的な方法を複数持っている場合があります。Top-pを使用すると、確率の低いトークンの選択肢をフィルタリングしながら、キャプションの表現を変えることができます。ビジュアルパイプラインでは、まずUltralytics YOLO26をオブジェクト検出に使用し、次に検出されたオブジェクトをコンテキストとしてキャプション生成器に提供する場合があります。YOLOの検出ステップでは、オブジェクトラベルを選択するためにニュークレアスサンプリングは使用されません。その設定は、下流の言語生成ステップに適用されます。TensorFlowの画像キャプション生成チュートリアルは、視覚的入力とテキストデコーダーがどのように連携するかを示しています。(ibm.com)
ドキュメント化されたワークフローでのTop-pの試行#
Ultralytics LLMインターフェースは、互換性のある言語モデルエンドポイントのリクエスト引数を受け入れます。ultralytics[llm] をインストールし、OPENAI_API_KEY を設定した後、この例では top_p=0.9 を使用して短い応答を要求します。
from ultralytics import LLM
# Use an endpoint that supports the top_p request argument.
llm = LLM("gpt-4.1-mini", api="chat.completions")
prompt = "Describe a city bus in one friendly sentence."
response = llm(prompt, top_p=0.9)
message = response.choices[0].message
print(message.content)このコードでは、トークンの選択は言語モデルプロバイダーに任されています。再度実行すると異なる文言が生成される可能性がありますが、top_p=0.9 はすべての応答が異なることを保証するものではありません。同じ設定を他の場所で適用する前に、選択したモデルがサポートしているパラメータを確認してください。
有用な設定の選択#
モデルのデフォルトから始めて、代表的なプロンプトで出力を比較します。応答がありそうもない文言に迷い込む場合は top_p を下げ、不必要に繰り返される場合はより高い値を検討してください。多様性単体ではなく、タスクによって結果を判断してください。顧客向けの回答やキャプションについては、事実の正確性と、重要な詳細が含まれているかどうかを確認してください。より狭いショートリストにすることで不自然な継続を減らすことはできますが、根拠のない主張を真実にすることはできません。IBMの正確な出力生成に関するガイダンスでも同様に、デコードの選択はグラウンディングされた生成ワークフローの1つの要素にすぎないとして扱われています。(ibm.com)









