Top-p sampling — Top-pサンプリング

From Systems analysis wiki
Jump to navigation Jump to search

Top‑pサンプリングTop-p sampling)は、核サンプリング(英語: Nucleus Sampling)としても知られ、テキスト生成のために大規模言語モデル(LLM)で使用される確率的なデコーディング手法です。この手法は2019年にAri Holtzmanらによって、固定的なTop‑kサンプリングの改良版として提案されました。その考え方は、生成の各ステップで累積確率のしきい値pに基づいて候補の集合を動的に選択することです。[1]

コンセプト

Top‑pの基本的な考え方は、各ステップで、合計確率が指定されたしきい値p以上となるような、最も確率の高いトークンの最小集合(、英語: nucleus)を選択することです。数学的には、語彙Vに対する条件付き確率分布P(xx1:i1)について、核V(p)は次のように定義できます:

xV(p)P(xx1:i1)pandSV(p): xSP(xx1:i1)<p.

これと同等の定義として、トークンをP(xx1:i1)の降順でソートし、累積確率質量がp以上となる最短のプレフィックスを取る方法があります。[1]

核が決定された後、V(p)外のトークンの確率はゼロに設定され、核内部の確率は再正規化されます(合計が1になるように調整されます)。次のトークンは、この切り詰められた分布からサンプリングされます。

動的な適応

  • 「鋭い」分布(モデルの確信度が高い場合)では、核は小さくなります。少数のトークンで累積確率がp以上に達するため、一貫性が向上します。
  • 「平坦な」分布(もっともらしい続きの候補が多い場合)では、核は大きくなります。選択肢が広がり、多様性が増します。[1]

他のデコーディング手法との比較

Top‑p vs. Top‑k - Top-pとTop-kの比較

  • Top‑kは常に、最も確率の高い固定数k個のトークンから選択を行います。「鋭い」分布では、これにより確率の低い不要な選択肢が「数を満たすために」追加される可能性があり、逆に「平坦な」分布では、トップkに入らなかった妥当な続きが切り捨てられることがあります。
  • Top‑pは各ステップのデータに応じて候補集合のサイズを調整するため、異なるタイプの分布に対してより柔軟で安定した挙動を示します。[1]

Top‑p vs. Temperature - Top-pとTemperatureの比較

  • Temperature(温度)は、分布全体の形状を再形成する(より鋭く、またはより滑らかにする)が、トークンを切り捨てることはないため、確率の低い選択肢でさえゼロではない確率を保持します。[2]
  • Top‑pは、分布の裾を厳密に切り捨てるため、低確率のトークンはサンプリングから完全に除外され、明らかに不適切な続きが生成されるのを防ぐのに役立ちます。[1]

プロバイダーからの実践的なアドバイスとして、スタイルやランダム性を調整する際には、通常`temperature`または`top_p`のいずれかを変更し、両方を同時に変更することは避けるべきだとされています。これは、分布への「二重の」影響を避け、診断を容易にするためです。[3]

実践的な応用と推奨事項

Top-pは、その柔軟性と制御性の組み合わせにより、現代のLLMで広く利用されています。

  • 典型的な値の範囲 実践では、p0.900.95が頻繁に使用されます(Transformersのガイドや例を参照。多くのSDKでは0.95が「デフォルト」または推奨値として挙げられています)。[2][4]
    • 1.0に近い値(例:0.98–0.99)は多様性を高めます。より多くのトークンが核に含まれるようになります。
    • 小さな値(例:0.80–0.90)は決定性を高め、出力の「抑制」を強めます。
    • p=1の場合、切り捨ては行われなくなり、語彙全体から(temperatureを考慮して)選択が行われます。[2]
  • ライブラリおよびAPIとの互換性
    • TransformersにはTopPLogitsWarperが実装されており、そこでは追加のしきい値`min_tokens_to_keep`(通常≥1)が使用されます。これは、非常に小さなpと「鋭い」分布の場合に核が空になるのを防ぎます。[5]
    • いくつかのAPIでは`top_p`パラメータが利用可能である一方、`top_k`は存在しない場合があります。パラメータのサポートとそのセマンティクスは、特定のモデルやプロバイダーに依存します(例えば、一部の推論モデルでは確率的設定が制限されることがあります)。詳細はOpenAI、Azure、Googleの公式ドキュメントを参照してください。[6][3][4]
  • 長文テキストと反復性 一連の実験により、nucleus samplingは、特に長いシーケンスにおいて、greedy/beamサーチや固定Top-kと比較して、テキストの変質(反復、決まり文句)への傾向を低減させることが示されています。[1][7]

参考文献

  • Holtzman, A. et al. (2020). The Curious Case of Neural Text Degeneration. arXiv:1904.09751.
  • Fan, A. et al. (2018). Hierarchical Neural Story Generation. arXiv:1805.04833.
  • Meister, C. et al. (2023). Locally Typical Sampling. arXiv:2202.00666.
  • Su, Y.; Collier, N. (2022). Contrastive Search Is What You Need for Neural Text Generation. arXiv:2210.14140.
  • O’Brien, S.; Lewis, M. (2023). Contrastive Decoding Improves Reasoning in Large Language Models. arXiv:2309.09117.
  • Yu, S. et al. (2023). Conformal Nucleus Sampling. ACL Findings 2023.
  • Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925.
  • Finlayson, M. et al. (2024). Basis‑Aware Truncation Sampling for Neural Text Generation. arXiv:2412.14352.
  • Chen, S. J. et al. (2025). Decoding Game: On Minimax Optimality of Heuristic Text Generation Methods. arXiv:2410.03968.
  • Sen, J. et al. (2025). Advancing Decoding Strategies: Enhancements in Locally Typical Sampling for LLMs. arXiv:2506.05387.

脚注

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Holtzman, A., Buys, J., Du, L., Forbes, M., & Choi, Y. (2019). The Curious Case of Neural Text Degeneration. arXiv:1904.09751. [1]
  2. 2.0 2.1 2.2 Hugging Face Transformers. Generation strategies (top‑k, top‑p, temperature). [2]
  3. 3.0 3.1 Microsoft Learn (Azure OpenAI). Text/Chat Completions — parameters. 「temperatureまたはtop_pのいずれかを変更するが、両方を同時に変更しない」という推奨。[3]
  4. 4.0 4.1 Google AI / Vertex AI. Generation parameters (topP/topK) for text/Gemini. Examples with topP≈0.95. [4] [5]
  5. Transformers API. TopPLogitsWarper (parameters and behavior, including `min_tokens_to_keep`). [6]
  6. OpenAI API Reference. top_p. [7]
  7. Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925. [8]

関連項目

  • 温度
  • 大規模言語モデル