LLMのデコーディング時にsoftmax関数の入力logitをTemperature値で除算し、出力確率分布の鋭さ(エントロピー)を制御するパラメータ調整手法。低Temperatureで確定的、高Temperatureでランダムな出力を生成する。
Temperature Scalingとは、言語モデルのデコーディングにおいて、softmax関数の入力logitをTemperatureパラメータTで除算することで、出力確率分布のエントロピー(不確実性)を制御する手法である。名称は統計力学のボルツマン分布における温度パラメータに由来する。
通常のsoftmax関数 P(i) = exp(z_i) / Σ_j exp(z_j) に対し、Temperature Scalingでは P(i) = exp(z_i / T) / Σ_j exp(z_j / T) とする。ここでz_iはモデルの出力logit、Tはtemperatureパラメータである。
| Temperature (T) | logit除算の効果 | 確率分布の形状 | 出力の特性 |
|---|---|---|---|
| T → 0 | logitの差が極大化 | 最大logitに確率集中 | 決定論的(Greedy) |
| T = 1.0 | logitそのまま | モデル本来の分布 | 標準的サンプリング |
| T > 1.0 | logitの差が縮小 | 確率が均一に近づく | 高ランダム性 |
| T → ∞ | 全logitが0に近づく | 一様分布に収束 | 完全ランダム |
Temperatureの最適値はタスクの性質によって大きく異なる。以下は主要LLMプロバイダーの推奨範囲と実務上の知見を統合したガイドラインである。
| タスクカテゴリ | 推奨Temperature | 根拠 |
|---|---|---|
| 数学・論理推論 | 0.0〜0.1 | 正解が一意、ランダム性不要 |
| コード生成 | 0.0〜0.2 | 構文正確性優先、創造性は限定的 |
| 事実ベースQ&A | 0.1〜0.3 | 正確性重視、若干のバリエーション許容 |
| ビジネス文書作成 | 0.3〜0.7 | 定型性と自然さのバランス |
| 一般対話 | 0.7〜1.0 | 自然な多様性と応答性 |
| 創作・ブレスト | 0.8〜1.5 | 高い多様性と意外性を促進 |
Temperature Scalingは元来、ニューラルネットワークの確率キャリブレーション手法としてGuo et al. (2017)により提案されたものである。モデルの出力確率と実際の正解率を一致させる(キャリブレーション)ために、検証データ上で最適なTを学習する。LLMのデコーディングでのTemperature調整とは目的が異なるが、数学的な操作は同一である。
Temperature=2.0を超える設定では、極めて低確率のトークンが選ばれる確率が急上昇し、文章が意味不明になるケースが多い。OpenAI APIではTemperatureの上限を2.0に制限している。また、Temperature=0は多くの実装で内部的にGreedy Decodingに切り替わるため、seed値を指定しても再現性に影響しない。
全く異なる。Temperature=0.5はlogitの差を拡大して確率分布を鋭くする(高確率トークンをさらに高確率に)。Top-p=0.5は累積確率50%に達するまでのトークンのみを候補に残す。アプローチが根本的に異なるため、同じ値でも出力は大きく異なる。
影響しない。Temperature Scalingはsoftmax計算時のlogit除算のみであり、計算コストは無視できるレベルである。生成速度に影響するのはモデルサイズ・バッチサイズ・シーケンス長などである。
両者は独立したパラメータである。Temperatureは確率分布全体の形状を変え、Repetition Penaltyは既出トークンのlogitを減算する。高Temperatureで多様性を確保しつつRepetition Penaltyで繰り返しを抑制する、という組み合わせが効果的である。