目次
LLMのAPIを使ったことがある人は「temperature」というパラメータを見たことがあるはずだ。0から2の間の数値で設定できるこのパラメータは、「生成の創造性」「ランダム性」などと説明されることが多い。
しかし正確には何を制御しているのか、そして実際にどう使い分けるべきか、メカニズムから理解しよう。
Softmaxと確率分布
LLMがトークンを生成するとき、最終的な処理ステップで「次に来るべきトークンの確率分布」が計算される。
モデルの最終層が生成するのは「ロジット(logit)」と呼ばれる生の数値スコアだ。語彙サイズ(数万〜数十万トークン)それぞれに対して、スコアが割り当てられる。このスコアを「確率」(0〜1で合計1)に変換するのがSoftmax関数だ。
Softmax の数式:
P(token_i) = exp(logit_i) / Σ exp(logit_j)
Temperatureはこのsoftmaxの計算に組み込まれる:
P(token_i) = exp(logit_i / T) / Σ exp(logit_j / T)
Tがtemperatureだ。この1行の変化が、確率分布の形状を劇的に変える。
Temperatureが確率分布を変える仕組み
**Temperature = 1.0(デフォルト)**の場合、ロジットがそのままsoftmaxに渡される。モデルが学習した本来の確率分布が使われる。
**Temperature < 1.0(例:0.2)**の場合、ロジットをTで割ると値が増幅される(0.2で割ると5倍になる)。高いスコアのトークンはさらに高くなり、低いスコアのトークンはさらに低くなる。確率分布が「尖る(シャープになる)」——一部のトークンに確率が集中し、上位トークンが選ばれやすくなる。
**Temperature > 1.0(例:1.5)**の場合、ロジットをTで割ると値が小さくなる(1.5で割ると2/3になる)。高いスコアと低いスコアの差が縮まる。確率分布が「平坦(フラット)になる」——多様なトークンに確率が分散し、予測しにくい・多様な選択が増える。
Temperature = 0は特殊ケースで、常に最も高い確率のトークンを選ぶ(Argmax)。完全に決定論的な出力になる。同じ入力から常に同じ出力が返る。
直感的なイメージ
Temperature = 0は「最も確実な答え」だけを選ぶシステムだ。試験の回答でいえば、確実に正しい選択肢のみを書く。
Temperature = 1.0は「モデルの素のサンプリング」だ。学習した確率に従って選ぶ。
Temperature = 2.0は「カオス状態」だ。まったく予測しにくいトークンが選ばれやすくなり、しばしばアクセス困難な組み合わせが生まれる。実用上は1.5を超えると出力品質が急低下することが多い。
Top-PとTop-K——別の多様性制御パラメータ
Temperatureだけが生成の多様性を制御するわけではない。Top-P(Nucleus Sampling)とTop-Kも重要なパラメータだ。
Top-Kは「確率上位K個のトークンだけをサンプリング候補にする」制約だ。K=50なら、どれだけ小さな確率のトークンでも上位50位以内のものしか選ばれない。
**Top-P(Nucleus Sampling)**は「累積確率がP以上になるまでの最小セットのトークンからサンプリングする」制約だ。Top-P = 0.9なら、確率の高い順に並べたとき累積確率が90%になるトークン群だけを候補にする。
Top-Pの利点は「確率分布の形状に適応する」点だ。一部のトークンに確率が集中している場面では候補が少なく(精確に)、確率が分散している場面では候補が多く(創造的に)なる。
用途別の推奨設定
理論を踏まえた上で、実際の用途別設定を整理する。
コード生成・技術的な回答: Temperature 0〜0.2が推奨される。正確性が最重要で、ランダム性は不要だ。Top-P = 0.95程度で組み合わせることが多い。
事実確認・要約・翻訳: Temperature 0.2〜0.5。ある程度の流暢さと自然さが必要だが、ランダムな誤りは避けたい。
一般的な会話・Q&A: Temperature 0.7〜1.0。自然で人間らしいバリエーションが望ましい。
創作・ブレインストーミング・詩: Temperature 1.0〜1.5。多様性と意外性が創造的な価値を生む。
ロールプレイ・フィクション: Temperature 0.8〜1.2。流暢さと多様性のバランス。
ただし、これらはあくまで出発点だ。実際のモデル・タスク・目標によって最適値は異なり、実験で確認することが重要だ。
Temperatureだけに頼らない
最後に注意点として、Temperatureは出力品質の唯一の決定要因ではない。
高品質な出力を得るには、Temperatureパラメータの調整よりも、明確で詳細なプロンプトの設計、CoTの活用、Few-shotの例示の方が本質的に重要なことが多い。Temperatureは「最終的な微調整」として捉え、まずプロンプト設計に注力することを推奨する。
まとめ
Temperatureパラメータは、LLMのSoftmax関数に組み込まれたスケーリング係数だ。
値が小さい(0に近い)ほど確率分布が鋭くなり、最も確率の高いトークンが選ばれやすくなる(決定論的・保守的)。値が大きい(2に近い)ほど確率分布が平坦になり、多様なトークンが選ばれる(ランダム・創造的)。
Top-PやTop-Kと組み合わせることで、より細かな生成の制御が可能だ。用途に応じて適切な設定値を選ぶことが、LLMを効果的に活用する実践的な知識となる。
免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。