LLMがテキストを生成する際に次のトークンを選択するアルゴリズムの総称。Greedy Decoding・Beam Search・Temperature Sampling・Top-k・Top-p・Min-p・Mirostat など多数の手法があり、タスクの性質に応じて使い分けることで出力品質を最適化する。
LLM サンプリング戦略は、言語モデルが次のトークンを選択する際のアルゴリズムを包括的に指す概念である。モデルが算出する確率分布から「どのトークンを選ぶか」の方法論であり、同一のモデルでもサンプリング戦略の違いで出力品質が劇的に変わる。
| 手法 | 概要 | 長所 | 短所 |
|---|---|---|---|
| Greedy Decoding | 最高確率のトークンを常に選択 | 高速・決定的 | 繰り返しが多く単調 |
| Beam Search | 複数の候補パスを並列探索 | 翻訳等で高品質 | 計算コスト大、多様性低 |
| Temperature Sampling | ソフトマックスのシャープさを調整 | シンプルで直感的 | 単独では低確率トークン排除不可 |
| Top-k | 上位k個のトークンに限定 | 実装が簡単 | 確率分布に非適応 |
| Top-p (Nucleus) | 累積確率pまでのトークンに限定 | 分布に適応的 | Top-kよりやや複雑 |
| Min-p | 最大確率の一定割合未満を除外 | 分布形状に自然に適応 | 比較的新しく普及途上 |
| Mirostat | 出力のパープレキシティを目標値に維持 | 一貫した品質 | 実装がやや複雑 |
| Typical Sampling | 情報量が「典型的」なトークンを優先 | 人間らしい出力 | パラメータ調整が難しい |
Greedy Decoding は最もシンプルな手法で、各ステップで最高確率のトークンを選択する。Temperature=0 や Top-k=1 と実質同等である。高速だが、最適な文全体を生成するとは限らない(局所最適に陥る)。
Beam Search は beam width(ビーム幅)で指定した数の候補パスを並列に維持し、最終的に最も高いスコアの系列を選択する。機械翻訳や要約では高品質だが、オープンエンドな対話では繰り返しの多い退屈な出力になりやすい。
2023年に提案された比較的新しい手法で、最大確率トークンの確率に対して一定の割合(min_p)未満の確率を持つトークンを除外する。
例えば最大確率トークンが 0.8 で min_p=0.1 の場合、0.8×0.1=0.08 未満のトークンが除外される。確率分布が集中している場合は少数に絞り込み、分散している場合は多くを残す点で Top-p に似た適応性を持つ。
llama.cpp や Ollama などのローカル LLM ランタイムで採用が進んでおり、Top-p の代替として注目されている。
Mirostat(2020年提案)は出力テキストのパープレキシティ(困惑度)を一定の目標値に維持するよう、サンプリングパラメータを動的に調整する手法である。
Ollama では mirostat 2 がデフォルトで利用可能で、長文生成での品質安定に効果がある。
多くの推論エンジンでは複数のサンプリング手法が順番に適用される。llama.cpp の標準的な順序は以下の通りである。
この順序はフレームワークによって異なり、カスタマイズ可能な場合もある。
A1: まず Temperature のみを調整することを推奨する。Temperature 0.7 + Top-p 0.9 の組み合わせが多くのタスクで良い出力を得られる汎用的な設定である。
A2: チャット型 LLM ではほとんど使われていない。Beam Search は翻訳・要約など正解がある程度決まったタスクに向いており、オープンエンドな対話には不向きとされる。
A3: 理論的には Min-p の方が確率分布の形状に自然に適応するが、実用上の差は小さい。llama.cpp コミュニティでは min_p=0.05〜0.1 が推奨されており、Top-p からの移行が進んでいる。