Sampling Strategies
Sampling Strategies は、LLM が次 token を生成するときに、logits から実際の token を選ぶための手順です。Model が出す確率分布はそのまま使うと単調になったり、逆に低確率 token を拾って破綻したりするため、deployment では temperature や top-p などを組み合わせて分布を整えます。
自作概念図。Logits に temperature をかけ、tail を truncation し、その後に sampling するという基本的な流れを示しています。
Decoding の位置づけ
LLM の autoregressive generation では、prefix が与えられたときに、次 token の分布を計算します。
ここで は logits です。Greedy decoding は最大確率の token を常に選びますが、文章生成、chat、creative writing では多様性が不足しやすくなります。一方で、完全な multinomial sampling は低確率 token を拾いやすく、話題逸脱や hallucination を増やします。Sampling strategy は、この二つの間で 品質、安定性、多様性 の trade-off を調整します。
Temperature
Temperature は、softmax の前に logits を割ることで分布の鋭さを調整します。
- では分布が鋭くなり、高確率 token が選ばれやすくなります。
- では model の元の分布をそのまま使います。
- では分布が平坦になり、低確率 token も選ばれやすくなります。
実務では、正確性が必要な QA や code では低め、brainstorming や creative writing では高めに設定します。ただし、temperature を上げるだけでは tail の低品質 token も増えるため、top-p や min-p と組み合わせることが多いです。
Top-k Sampling
Top-k sampling は、確率上位 個の token だけを残し、それ以外を確率 にしてから sampling します。
Top-k は直感的で実装しやすい一方で、固定値 が文脈に合わないことがあります。確信度が高い文脈では候補が多すぎ、曖昧な文脈では候補が少なすぎる場合があります。
Top-p / Nucleus Sampling
Top-p sampling は、確率を高い順に足していき、累積確率が を超える最小集合だけを残します。
Top-k が候補数を固定するのに対して、top-p は候補集合の大きさを分布に応じて変えます。Model が確信しているときは少数の token だけが残り、曖昧なときは多くの token が残ります。この適応性により、chat LLM の default decoding では top-p が広く使われています。
Min-p Sampling
Min-p sampling は、最大確率 token を基準にして、相対的に十分高い確率を持つ token だけを残します。最大確率を 、threshold を とすると、概念的には次の条件を満たす token を残します。
Min-p は top-p よりも「最有力 token との相対差」を重視します。Reasoning や chat で、確信度が高い局面では強く絞り、曖昧な局面では候補を広げるように働きます。ただし、library や serving engine によって細部の実装が異なるため、使用時には実装仕様を確認する必要があります。
Typical Sampling
Typical sampling は、単に確率が高い token ではなく、分布全体の entropy から見て典型的な surprisal を持つ token を残す方法です。Token の surprisal は であり、文脈の entropy に近い token が典型的と見なされます。
この値が小さい token を優先することで、過度に安全な token と、過度に意外な token の両方を避けようとします。
代表的な設定の考え方
| 用途 | Temperature | Truncation | 意図 |
|---|---|---|---|
| Factual QA | 0.0〜0.4 | top-p 低め | 再現性と正確性を優先する |
| Coding | 0.0〜0.6 | top-p 低〜中 | syntax 破綻を避ける |
| Chat | 0.6〜0.9 | top-p 0.8〜0.95 | 自然さと安定性を両立する |
| Creative writing | 0.8〜1.2 | top-p 高め / min-p | 多様性を増やす |
| Brainstorming | 0.9 以上 | top-p 高め | 予想外の候補を出す |
数値は absolute rule ではありません。Model、prompt、task、safety filter、system instruction によって最適値は変わります。
Seed と再現性
Sampling は stochastic なので、同じ prompt でも毎回同じ出力になるとは限りません。Experiment や評価では、temperature、top-p、top-k、seed、model version、prompt template を一緒に記録することが重要です。特に agent evaluation では、sampling の揺れが tool call や行動計画の差に増幅されます。
よくある落とし穴
- Temperature を上げすぎると、低確率 token が増えて coherence が落ちます。
- Top-p を下げすぎると、model が同じ表現を繰り返しやすくなります。
- Greedy decoding は deterministic ですが、最良の reasoning を保証しません。
- Long context では、後半の decoding が context pollution の影響を受けやすくなります。
- Safety-critical task では、sampling diversity より検証器、retrieval、structured decoding を優先すべきです。
数式で見る truncation 後の再正規化
Top-k や top-p は、候補 token の集合 を選んだ後、それ以外の token の確率を 0 にして再正規化します。元の分布を とすると、truncation 後の分布は次のように書けます。
この式の気持ちは、「信用できる候補集合だけを残し、その中で確率の比率を保ったまま sampling する」というものです。Top-k では が上位 個の token であり、top-p では累積確率が threshold を超える最小集合です。
Temperature は、logits の差を拡大または縮小します。二つの token の odds ratio は次のように変わります。
では logit 差が強調されるため、高確率 token がさらに選ばれやすくなります。 では logit 差が弱まり、分布が平坦になります。したがって、temperature は「候補の集合」を直接変えるのではなく、「候補間の相対的な鋭さ」を変える knob です。
関連ページ
- LLM Inference Optimization
- Reasoning Models
- In-Context Learning and Prompting
- LLM Evaluation
- AI Agents Overview
主なソース
- The Curious Case of Neural Text Degeneration: https://arxiv.org/abs/1904.09751
- Typical Decoding for Natural Language Generation: https://arxiv.org/abs/2202.00666
- Truncation Sampling as Language Model Desmoothing: https://arxiv.org/abs/2210.15191