Top-p sampling — Top-pサンプリング
Jump to navigation
Jump to search
Top‑pサンプリング(Top-p sampling)は、核サンプリング(英語: Nucleus Sampling)としても知られ、テキスト生成のために大規模言語モデル(LLM)で使用される確率的なデコーディング手法です。この手法は2019年にAri Holtzmanらによって、固定的なTop‑kサンプリングの改良版として提案されました。その考え方は、生成の各ステップで累積確率のしきい値に基づいて候補の集合を動的に選択することです。[1]
コンセプト
Top‑pの基本的な考え方は、各ステップで、合計確率が指定されたしきい値以上となるような、最も確率の高いトークンの最小集合(核、英語: nucleus)を選択することです。数学的には、語彙に対する条件付き確率分布について、核は次のように定義できます:
これと同等の定義として、トークンをの降順でソートし、累積確率質量が以上となる最短のプレフィックスを取る方法があります。[1]
核が決定された後、外のトークンの確率はゼロに設定され、核内部の確率は再正規化されます(合計が1になるように調整されます)。次のトークンは、この切り詰められた分布からサンプリングされます。
動的な適応
- 「鋭い」分布(モデルの確信度が高い場合)では、核は小さくなります。少数のトークンで累積確率が以上に達するため、一貫性が向上します。
- 「平坦な」分布(もっともらしい続きの候補が多い場合)では、核は大きくなります。選択肢が広がり、多様性が増します。[1]
他のデコーディング手法との比較
Top‑p vs. Top‑k - Top-pとTop-kの比較
- Top‑kは常に、最も確率の高い固定数個のトークンから選択を行います。「鋭い」分布では、これにより確率の低い不要な選択肢が「数を満たすために」追加される可能性があり、逆に「平坦な」分布では、トップに入らなかった妥当な続きが切り捨てられることがあります。
- Top‑pは各ステップのデータに応じて候補集合のサイズを調整するため、異なるタイプの分布に対してより柔軟で安定した挙動を示します。[1]
Top‑p vs. Temperature - Top-pとTemperatureの比較
- Temperature(温度)は、分布全体の形状を再形成する(より鋭く、またはより滑らかにする)が、トークンを切り捨てることはないため、確率の低い選択肢でさえゼロではない確率を保持します。[2]
- Top‑pは、分布の裾を厳密に切り捨てるため、低確率のトークンはサンプリングから完全に除外され、明らかに不適切な続きが生成されるのを防ぐのに役立ちます。[1]
プロバイダーからの実践的なアドバイスとして、スタイルやランダム性を調整する際には、通常`temperature`または`top_p`のいずれかを変更し、両方を同時に変更することは避けるべきだとされています。これは、分布への「二重の」影響を避け、診断を容易にするためです。[3]
実践的な応用と推奨事項
Top-pは、その柔軟性と制御性の組み合わせにより、現代のLLMで広く利用されています。
- 典型的な値の範囲 実践では、が頻繁に使用されます(Transformersのガイドや例を参照。多くのSDKでは0.95が「デフォルト」または推奨値として挙げられています)。[2][4]
- 1.0に近い値(例:0.98–0.99)は多様性を高めます。より多くのトークンが核に含まれるようになります。
- 小さな値(例:0.80–0.90)は決定性を高め、出力の「抑制」を強めます。
- の場合、切り捨ては行われなくなり、語彙全体から(temperatureを考慮して)選択が行われます。[2]
- ライブラリおよびAPIとの互換性
- TransformersにはTopPLogitsWarperが実装されており、そこでは追加のしきい値`min_tokens_to_keep`(通常≥1)が使用されます。これは、非常に小さなと「鋭い」分布の場合に核が空になるのを防ぎます。[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.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.0 2.1 2.2 Hugging Face Transformers. Generation strategies (top‑k, top‑p, temperature). [2]
- ↑ 3.0 3.1 Microsoft Learn (Azure OpenAI). Text/Chat Completions — parameters. 「temperatureまたはtop_pのいずれかを変更するが、両方を同時に変更しない」という推奨。[3]
- ↑ 4.0 4.1 Google AI / Vertex AI. Generation parameters (topP/topK) for text/Gemini. Examples with topP≈0.95. [4] [5]
- ↑ Transformers API. TopPLogitsWarper (parameters and behavior, including `min_tokens_to_keep`). [6]
- ↑ OpenAI API Reference. top_p. [7]
- ↑ Tan, Q. et al. (2024). A Thorough Examination of Decoding Methods in the Era of Large Language Models. arXiv:2402.06925. [8]
関連項目
- 温度
- 大規模言語モデル