AI・機械学習
中級

Temperature Scaling(テンペラチャースケーリング)

LLMのデコーディング時にsoftmax関数の入力logitをTemperature値で除算し、出力確率分布の鋭さ(エントロピー)を制御するパラメータ調整手法。低Temperatureで確定的、高Temperatureでランダムな出力を生成する。

0 回閲覧
0 いいね

Temperature Scalingとは

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 → 0logitの差が極大化最大logitに確率集中決定論的(Greedy)
T = 1.0logitそのままモデル本来の分布標準的サンプリング
T > 1.0logitの差が縮小確率が均一に近づく高ランダム性
T → ∞全logitが0に近づく一様分布に収束完全ランダム

実務でのTemperature設定ガイド

Temperatureの最適値はタスクの性質によって大きく異なる。以下は主要LLMプロバイダーの推奨範囲と実務上の知見を統合したガイドラインである。

タスクカテゴリ推奨Temperature根拠
数学・論理推論0.0〜0.1正解が一意、ランダム性不要
コード生成0.0〜0.2構文正確性優先、創造性は限定的
事実ベースQ&A0.1〜0.3正確性重視、若干のバリエーション許容
ビジネス文書作成0.3〜0.7定型性と自然さのバランス
一般対話0.7〜1.0自然な多様性と応答性
創作・ブレスト0.8〜1.5高い多様性と意外性を促進

Temperatureとキャリブレーション

Temperature Scalingは元来、ニューラルネットワークの確率キャリブレーション手法としてGuo et al. (2017)により提案されたものである。モデルの出力確率と実際の正解率を一致させる(キャリブレーション)ために、検証データ上で最適なTを学習する。LLMのデコーディングでのTemperature調整とは目的が異なるが、数学的な操作は同一である。

注意すべき落とし穴

Temperature=2.0を超える設定では、極めて低確率のトークンが選ばれる確率が急上昇し、文章が意味不明になるケースが多い。OpenAI APIではTemperatureの上限を2.0に制限している。また、Temperature=0は多くの実装で内部的にGreedy Decodingに切り替わるため、seed値を指定しても再現性に影響しない。

FAQ

Q1: Temperature=0.5とTop-p=0.5は同じ効果?

全く異なる。Temperature=0.5はlogitの差を拡大して確率分布を鋭くする(高確率トークンをさらに高確率に)。Top-p=0.5は累積確率50%に達するまでのトークンのみを候補に残す。アプローチが根本的に異なるため、同じ値でも出力は大きく異なる。

Q2: Temperatureを変えるとトークン生成速度に影響する?

影響しない。Temperature Scalingはsoftmax計算時のlogit除算のみであり、計算コストは無視できるレベルである。生成速度に影響するのはモデルサイズ・バッチサイズ・シーケンス長などである。

Q3: TemperatureとRepetition Penaltyの関係は?

両者は独立したパラメータである。Temperatureは確率分布全体の形状を変え、Repetition Penaltyは既出トークンのlogitを減算する。高Temperatureで多様性を確保しつつRepetition Penaltyで繰り返しを抑制する、という組み合わせが効果的である。