[Tips] Temperature TopK TopPの設定値について - krugle-jp/Krugle-Library GitHub Wiki
TopK、TopP、Temperature は、LLM が次に出すトークンをどう選ぶかを調整する代表的なサンプリング参数です。 ざっくり言うと、
• Temperature は「全体の確率分布をどれだけ平らにするか」
• TopK は「上位何候補までに絞るか」
• TopP は「確率の合計が何%になるまで候補を残すか」
を決めます。
この3つは似ていますが、役割はかなり違います。
⸻
0. まず前提
LLM は、文章を1文字ずつではなく、トークン単位で次の候補を出します。
例えばある時点で次の候補がこうだったとします。 • "です" : 0.40 • "でした" : 0.20 • "ます" : 0.15 • "。" : 0.10 • "かな" : 0.05 • その他 : 0.10
この「候補と確率分布」に対して、 • Temperature で分布の尖り方を変える • TopK で候補数を切る • TopP で累積確率で切る
という順で調整するイメージです。 実装によって順番は少し違うことがありますが、概念的にはこう考えると分かりやすいです。
⸻
1. Temperature とは
Temperature は、確率分布の“尖り具合”を変えるパラメータです。
直感的な意味
• 低い Temperature
→ もっと無難・保守的・決まりきった出力になりやすい • 高い Temperature → もっと多様・創造的・意外性のある出力になりやすい
イメージ
元の確率がこうだったとします。 • A: 0.50 • B: 0.20 • C: 0.15 • D: 0.10 • E: 0.05
Temperature を下げると
高確率の候補がさらに有利になります。 • A: 0.75 • B: 0.12 • C: 0.07 • D: 0.04 • E: 0.02
つまり、勝ちそうな候補がますます勝つ感じです。
Temperature を上げると
低確率候補も相対的に出やすくなります。 • A: 0.30 • B: 0.22 • C: 0.18 • D: 0.16 • E: 0.14
つまり、候補同士の差を縮める感じです。
⸻
Temperature の典型値
• 0.0 付近
• ほぼ決定論的
• 毎回似た出力になりやすい
• 要約、分類、抽出、変換向き
• 0.2〜0.5
• やや安定寄り
• 実務文書、説明文、コード生成で使いやすい
• 0.7〜1.0
• バランス型
• 会話、アイデア出し、自然な文章生成
• 1.0 超
• かなり自由
• 創作、ブレインストーミング向き
• ただし破綻やノイズが増えやすい
⸻
Temperature の注意点
Temperature を上げると「創造的になる」とよく言われますが、実務では必ずしも良いことばかりではありません。
高すぎると、 • 事実性が落ちる • 文体がぶれる • 指示追従が弱くなる • コード生成でバグが増える • 長文で話が逸れやすい
ことがあります。
⸻
2. TopK とは
TopK は、次トークン候補の上位 K 個だけを残して、残りを捨てるパラメータです。
例
候補がこうあるとします。 • A: 0.40 • B: 0.20 • C: 0.15 • D: 0.10 • E: 0.08 • F: 0.04 • G: 0.03
TopK = 3
残るのは上位3つだけです。 • A: 0.40 • B: 0.20 • C: 0.15
D 以下は候補から外れます。 その後、A/B/C の中で再正規化して選びます。
⸻
TopK の意味
TopK は、候補数で上限をかける方法です。 • 小さい TopK • 無難 • 安定 • 多様性が下がる • 大きい TopK • 多様性が増える • 変な候補も残りやすい
⸻
TopK の典型イメージ
• TopK = 1
• 常に最有力候補だけ
• ほぼ greedy decoding
• TopK = 10
• 上位10候補まで
• かなり安定的
• TopK = 40
• よく使われる中間
• 多様性と安定性のバランス
• TopK = 100 以上
• 候補をかなり広く残す
• 創作向きだがノイズが増えやすい
⸻
TopK の弱点
TopK は単純で分かりやすいですが、分布の形を見ないのが弱点です。
例えば、
ケースA • A: 0.70 • B: 0.10 • C: 0.05 • D 以下: 微小
ケースB • A: 0.10 • B: 0.09 • C: 0.08 • D: 0.07 • E: 0.06 • …
両方とも TopK=5 なら 5件残しますが、 A が圧勝しているケースAと、候補が拮抗しているケースBでは、本来同じ切り方が最適とは限りません。
この弱点を補うのが TopP です。
⸻
3. TopP とは
TopP は nucleus sampling とも呼ばれます。 これは、確率の高い順に候補を並べて、累積確率が P に達するまで残す方法です。
例
候補がこうだとします。 • A: 0.50 • B: 0.20 • C: 0.15 • D: 0.10 • E: 0.05
TopP = 0.80
累積していくと、 • A まで: 0.50 • A+B まで: 0.70 • A+B+C まで: 0.85
ここで 0.80 を超えるので、A/B/C を残します。
TopP = 0.95 • A+B+C+D = 0.95
なので A/B/C/D を残します。
⸻
TopP の意味
TopP は、候補数ではなく確率の塊を基準に切る方法です。
これが TopK より賢いと言われる理由です。 • 分布が尖っているときは候補を少なくする • 分布が広がっているときは候補を多めに残す
つまり、その場の確率分布に応じて柔軟に候補数が変わるわけです。
⸻
TopP の典型値
• 0.7
• かなり保守的
• 安定寄り
• 0.8〜0.95
• よく使われる範囲
• バランスが良い
• 0.95〜0.99
• 多様性高め
• 創作や自然会話向き
• 1.0
• 実質的に切らない
• 全候補対象
⸻
TopP の特徴
TopP は TopK より実務で好まれることが多いです。 理由は、モデルが今どれくらい自信を持っているかに合わせて候補数が自動調整されるからです。
⸻
4. TopK / TopP / Temperature の違いを一言で
Temperature
確率分布の形を変える
TopK
候補数で切る
TopP
累積確率で切る
⸻
5. 3つの関係
この3つは独立ではなく、組み合わせて使われます。
典型的な流れ
1. モデルが次トークン候補の確率を出す
2. Temperature で分布を調整
3. TopK / TopP で候補を絞る
4. 残った候補からサンプリングする
⸻
実務上の考え方
多くの場合、TopK と TopP を両方強くいじる必要はあまりありません。
よくある考え方はこうです。 • Temperature + TopP を調整する • TopK はデフォルトか中程度で固定する
あるいは • TopK を使う • TopP は 1.0 に近くして実質無効にする
という使い方です。
両方を強く絞ると、候補が狭くなりすぎて不自然になることがあります。
⸻
6. どう使い分けるか
正確性重視
用途: • 要約 • 分類 • 情報抽出 • コード変換 • テストケース生成
おすすめ:
• Temperature: 0.0〜0.3
• TopP: 0.8〜0.95
• TopK: 小さめ〜中程度
理由: • ブレを減らしたい • 毎回ほぼ同じ答えが欲しい
⸻
自然な会話重視
用途: • チャット • FAQ応答 • 説明文作成
おすすめ: • Temperature: 0.4〜0.8 • TopP: 0.9〜0.95 • TopK: 中程度
理由: • 単調すぎず、破綻もしにくい
⸻
創作重視
用途: • キャッチコピー • ストーリー • アイデア出し • ネーミング
おすすめ: • Temperature: 0.8〜1.2 • TopP: 0.95〜1.0 • TopK: やや大きめ
理由: • 意外性や多様性を出したい
⸻
コード生成
用途: • 実装補助 • リファクタ • テストコード生成
おすすめ: • Temperature: 0.0〜0.3 • TopP: 0.9 前後 • TopK: 小さめ〜中程度
理由: • コードは創造性より整合性が大事
⸻
7. よくある誤解
「Temperature を上げると賢くなる」
違います。 賢くなるのではなく、ランダム性が増えるだけです。
「TopP は TopK の上位互換」
半分正しいですが、完全にそうとも言えません。 TopP の方が柔軟ですが、TopK の単純さが有利な場面もあります。
「全部大きくすると表現力が増す」
実際には、 • ノイズが増える • 一貫性が落ちる • ハルシネーションが増える ことが多いです。
⸻
8. 実務でのおすすめ
実務ではまず次のどれかから始めると安定です。
無難設定
• Temperature: 0.2
• TopP: 0.9
• TopK: 40
より安定
• Temperature: 0.0〜0.1
• TopP: 1.0
• TopK: 1〜20
会話寄り
• Temperature: 0.7
• TopP: 0.95
• TopK: 40〜50
⸻
9. まとめ
Temperature
• 分布の尖り方を変える
• 低いと安定、高いと多様
TopK
• 上位 K 候補だけ残す
• 単純で分かりやすい
TopP
• 累積確率 P まで候補を残す
• 分布に応じて柔軟に絞る
実務の基本
• 正確性重視なら Temperature 低め
• 多様性重視なら Temperature / TopP 高め
• TopK と TopP は両方強く絞りすぎない