LLMのテキスト生成時に出力のランダム性を制御するパラメータ。0に近いほど決定的(最も確率の高いトークンを選択)、高いほど多様で創造的な出力になる。一般的に0.0〜2.0の範囲で設定される。
Temperature は大規模言語モデル(LLM)がテキストを生成する際に、次のトークン選択のランダム性を制御するパラメータである。ソフトマックス関数の出力確率分布を調整することで、生成テキストの「創造性」と「一貫性」のバランスを決定する。
LLM は次のトークンを予測する際、語彙中の各トークンに対してロジット(logit)と呼ばれるスコアを算出する。このロジットをソフトマックス関数で確率分布に変換する際、Temperature パラメータ T で除算する。
数式: P(token_i) = exp(logit_i / T) / Σ exp(logit_j / T)
| Temperature 値 | 確率分布への影響 | 出力の特性 |
|---|---|---|
| T = 0.0 | 最大確率トークンのみ選択(greedy) | 完全に決定的、毎回同じ出力 |
| T = 0.1〜0.3 | 分布が非常に鋭い | ほぼ決定的、微小な変動のみ |
| T = 0.5〜0.7 | 分布がやや鋭い | バランスの取れた出力 |
| T = 1.0 | 元の確率分布のまま | モデル本来の多様性 |
| T = 1.5〜2.0 | 分布が平坦化 | 非常にランダムで予測困難 |
用途に応じた Temperature の設定指針は以下の通りである。
| API | デフォルト値 | 設定範囲 | 備考 |
|---|---|---|---|
| OpenAI GPT-4o | 1.0 | 0.0〜2.0 | top_p との併用は非推奨 |
| Anthropic Claude | 1.0 | 0.0〜1.0 | 範囲が0〜1に制限されている |
| Google Gemini | モデル依存 | 0.0〜2.0 | タスクタイプで自動調整機能あり |
| Meta Llama 3 | 0.6 | 0.0〜任意 | ローカル実行時は制限なし |
| Mistral | 0.7 | 0.0〜1.0 | API 経由では1.0が上限 |
Temperature は単独で使用することもできるが、top_p(nucleus sampling)や top_k と組み合わせて使用されることが多い。ただし OpenAI の公式ドキュメントでは Temperature と top_p の同時変更は推奨されていない。
一般的なベストプラクティスとして、まず Temperature を調整し、それでも出力品質が不十分な場合に top_p や frequency_penalty などの他パラメータを微調整するアプローチが採用される。
A1: ほぼ同じだが完全に同一とは限らない。GPU の浮動小数点演算の非決定性やバッチ処理の影響で、微小な差が生じることがある。完全な再現性が必要な場合は seed パラメータも併用する。
A2: まずタスクの性質に応じた推奨範囲から始め、出力を評価しながら0.1刻みで調整する。A/Bテストで複数の Temperature 値を比較するのが最も効果的。
A3: 1.5を超えると出力が支離滅裂になりやすい。低確率トークンが頻繁に選択されるため、文法的に不正な文や意味不明な文章が増加する。実用的な上限は1.2程度。