イータサンプリング(イータサンプリング)
LLMテキスト生成において、動的な確率閾値(η)を適用し確率が低すぎるトークンを自動除外するデコーディング手法。エントロピーに基づいて閾値を動的に変化させることで、ニュークリアスサンプリングの固定閾値の問題を解決する。
イータサンプリングとは
Eta Sampling(ηサンプリング)は2022〜2023年にPeter Hewitt、John Hewitt、Percy Liang(Stanford大学)が発表した論文「Truncation Sampling as Language Model Desmoothing」で提案されたデコーディング手法。同論文では「εサンプリング」も同時提案されており、ηサンプリングはその改良版として位置づけられる。
問題意識:Top-pの静的閾値
Nucleus Sampling(Top-p)は閾値pを固定するため、文脈のエントロピーによって選択するトークン数が大きく変動する:
低エントロピー文脈(次のトークンがほぼ確定): top-p=0.9でも少数のトークンしか選ばれない→良い動作 高エントロピー文脈(次のトークンが均等分布): 多数のトークンが選ばれ意味のない低確率トークンも混入
動的閾値の仕組み
ηサンプリングはトークンtを除外する条件: p(t) < min(η, sqrt(η) × exp(-H(context)))
- 低エントロピー(H小): exp(-H)が大→動的閾値上昇→積極的に低確率トークンを除外
- 高エントロピー(H大): exp(-H)が小→動的閾値がηに近づく→より多くのトークンを許容
結果としてnucleusサイズが文脈の不確実性に自動適応する。
εサンプリングとの関係
同論文で提案されたεサンプリングは単純な確率下限の設定: p(t) < ε のトークンを除外。シンプルだが固定閾値のため文脈依存性がない。ηサンプリングはεサンプリングにエントロピー適応項を加えた改良版と解釈できる。
Hugging Face実装
output = model.generate(
input_ids,
do_sample=True,
eta_cutoff=3e-4, # 推奨値: 3e-4〜2e-3
)
Hugging Face Transformersではeta_cutoffパラメータとして実装済み(v4.25以降)。εサンプリングはepsilon_cutoffパラメータ。
実用的な位置づけ
学術的に興味深い手法だが商用LLM APIでの採用はまだ少ない。Ollama/llama.cppには未実装の場合が多い。研究・実験環境ではHugging Face経由で試せるが、実用では依然としてTop-pまたはTop-kとTemperatureの組み合わせが主流。ηサンプリングは「デコーディング手法の改善研究」の文脈で参照されることが多い。