AI・機械学習
中級

Top-p(Nucleus Sampling)(トップピー)

LLMのサンプリング手法の一つで、確率の高いトークンから累積確率がp以上になるまでのトークン集合(nucleus)からのみサンプリングする方式。Top-p=0.9なら上位90%の累積確率に含まれるトークンのみが候補となり、低確率の不自然なトークンを除外できる。

0 回閲覧
0 いいね

Top-p(Nucleus Sampling)とは

Top-p サンプリング(別名 Nucleus Sampling)は、2019年にHoltzmanらが論文「The Curious Case of Neural Text Degeneration」で提案した LLM のテキスト生成手法である。確率分布の上位から累積確率が閾値 p に達するまでのトークン集合(nucleus)を動的に構成し、その中からサンプリングを行う。

動作原理

Top-p サンプリングの処理フローは以下の通りである。

  1. モデルが各トークンの確率を算出する
  2. トークンを確率の降順にソートする
  3. 上位から確率を累積していき、合計が p を超える直前までのトークンを候補集合(nucleus)とする
  4. nucleus 内のトークンの確率を正規化(合計1.0に再スケーリング)する
  5. 正規化された確率分布からサンプリングする
Top-p 値Nucleus の大きさ出力の特性
0.1非常に小さい(1〜3トークン)ほぼ決定的
0.5小さい(5〜15トークン)保守的で一貫性が高い
0.9中程度(数十トークン)バランスの取れた多様性
0.95やや大きい自然な多様性
1.0全トークン(フィルタなし)Temperature のみで制御

Top-k との違い

Top-k サンプリングは固定数の上位 k 個のトークンから選択するのに対し、Top-p は確率分布の形状に応じて候補数が動的に変化する。

  • 確率が集中している場合(例: 次のトークンがほぼ確定): Top-p は自動的に少数のトークンに絞り込む
  • 確率が分散している場合(例: 複数の妥当な続きがある): Top-p は多くのトークンを候補に含める

この適応的な挙動が Top-p の最大の利点であり、Top-k の「固定数」という制約を解消している。

主要 API での Top-p 設定

APIパラメータ名デフォルト値設定範囲
OpenAItop_p1.00.0〜1.0
Anthropictop_p未指定時は無効0.0〜1.0
Google Geminitop_pモデル依存0.0〜1.0
Hugging Facetop_p1.00.0〜1.0
vLLMtop_p1.00.0〜1.0

Temperature との組み合わせ

Top-p と Temperature は異なるレイヤーで出力を制御する。Temperature はソフトマックス前のロジットを調整し、Top-p はソフトマックス後の確率分布をフィルタリングする。

OpenAI は公式に「Temperature と top_p の両方を同時に変更することは推奨しない」としている。一方を固定して他方を調整するアプローチが一般的である。

FAQ

Q1: Top-p=0.9 と Top-p=1.0 の違いは大きいですか?

A1: 実用上の差は小さいが、p=0.9 は極めて低確率のトークン(タイポや無関係な単語)を除外する効果がある。安全策として p=0.9〜0.95 に設定するケースが多い。

Q2: Top-p と Top-k は併用できますか?

A2: 併用可能で、両方のフィルタを通過したトークンのみが候補になる。Hugging Face Transformers や vLLM では両方を同時に指定できる。

Q3: Top-p の値はタスクによって変えるべきですか?

A3: 基本的には Temperature の調整を優先し、Top-p は 0.9〜0.95 程度に固定するのが無難。コード生成など正確性重視のタスクでは 0.1〜0.5 に下げると効果的。