AI・機械学習
中級

Top-kサンプリング(トップケイサンプリング)

LLMのデコーディングにおいて、確率上位k個のトークンのみを候補として残し、それ以外を除外した上でサンプリングする手法。kの値で出力の多様性と安全性のトレードオフを制御する。

0 回閲覧
0 いいね

Top-kサンプリングとは

Top-kサンプリングとは、言語モデルが次のトークンを生成する際に、確率分布の上位k個のトークンのみを候補として残し、残りの全トークンの確率をゼロに設定した上で、再正規化した分布からサンプリングする手法である。Fan et al. (2018)の論文「Hierarchical Neural Story Generation」で提案され、GPT-2の公開時にOpenAIが採用したことで広く知られるようになった。

Top-kの仕組み

Top-kサンプリングの処理は3ステップで行われる。(1) モデルの出力logitにsoftmaxを適用して確率分布を得る、(2) 確率の高い順にk個のトークンを選択し、それ以外のトークンの確率を0に設定する、(3) k個のトークンの確率を再正規化(合計が1になるよう調整)し、その分布からサンプリングする。

例: 語彙={猫, 犬, 鳥, 魚, 虫}, 確率={0.35, 0.25, 0.20, 0.15, 0.05}
k=3の場合:
  候補: {猫: 0.35, 犬: 0.25, 鳥: 0.20} → 再正規化 → {猫: 0.4375, 犬: 0.3125, 鳥: 0.25}
  魚(0.15)と虫(0.05)は除外

kの値と出力特性

k値候補数出力の特性典型的な用途
11Greedy Decodingと同一数学・論理推論
5-10少数高品質・低多様性事実ベースQ&A
20-50中程度バランス型一般対話
100-200多数高多様性・要注意創作・ブレスト
語彙全体全候補フィルタリングなし通常使わない

GPT-2のデフォルト設定ではk=40が採用されていた。現在の主要LLM APIでは、Top-kよりもTop-p(Nucleus Sampling)がデフォルトで有効化されているケースが多い。

Top-kの限界

Top-kサンプリングの根本的な問題は、kが固定値であることに起因する。確率分布の形状はコンテキストによって大きく変わるが、kは常に一定数のトークンを候補に残す。

確率が少数トークンに集中しているコンテキスト(例:「東京は日本の」→「首都」がほぼ確定)では、k=40は不要に多くの低確率トークンを候補に含めてしまい、ノイズの原因になる。逆に確率が広く分散しているコンテキスト(例:「好きな食べ物は」→多数の候補が同程度の確率)では、k=40では有望な候補を切り捨ててしまう可能性がある。

この問題を解決するために提案されたのがTop-p(Nucleus)サンプリングであり、確率分布の形状に応じて動的に候補数を調整する。

実装での注意点

Top-kフィルタリングはTemperature Scalingの後に適用される。Temperatureが高いと確率分布が平坦になるため、Top-kで切り捨てられるトークンの確率も相対的に高くなる。つまりTemperatureとTop-kの相互作用を考慮して両方のパラメータを調整する必要がある。

FAQ

Q1: Top-kとTop-pはどちらを使うべき?

一般的にはTop-pの方が推奨される。Top-pは確率分布の形状に動的に適応するため、コンテキストごとに適切な候補数が自動調整される。ただし、候補数を厳密に制御したい場合はTop-kの方が直感的で扱いやすい。

Q2: Google GeminiのTop-kデフォルト値は?

Gemini APIではTop-kのデフォルト値はモデルバージョンによって異なるが、一般的にk=40前後に設定されている。APIドキュメントで最新のデフォルト値を確認することを推奨する。

Q3: Top-k=1はTemperature=0と同じ?

結果は同じ(常に最高確率トークンを選択)だが、処理パスが異なる。Top-k=1はフィルタリング後に1トークンが残る。Temperature=0はsoftmaxの段階で確率を集中させる。実用上は区別する必要はない。