凡田さん、おはようございます。…珍しく早いですね。
川口の方こそ、こんな時間からどうした。…昨夜、寝つきが悪くてさ。広告会社時代の同期と飲んだ後、ふと思い出したんだよ。同じ商品プレゼン でも、新卒の頃は 「これしかないです、これで行きましょう」って1案絶対推し、中堅になると 「3案ありますが推奨はAです」、最後の頃は 「5案ほぼ均等にいきますんで選んでください」 って、同じ知識量でも提示の集中度が全然違った な、って。
(凡田さん、それ完全に 温度(Temperature) の話です。同じロジットでも、softmax 前に T で割る だけで、分布が 1位独占 にも 均等 にもなる。ジュニア時代=温度 0.1、中堅=1.0、後期=2.0、と理想的に対応しますね。…と言いたいけど、まだ朝7時で説明モードに入ると2杯目のコーヒーが必要になる。)
新卒の頃は 1案で押し切れる気がしてた んだよなぁ。今は5案均等の方が 「対等な議論」 で 安全 に見えるけど、結局クライアントが選べなくて持ち帰りで二度手間。結局の 「塩梅」 が一番難しい。…で、その 「塩梅のダイヤル」 って、LLM にもあるんだろ?
(凡田さん、勘がいい。…はい、あります。temperature という1つの数字で、ChatGPT が 毎回同じ答えを返す保守モード から 毎回違う答えを返すクリエイティブモード まで動きます。凡田さんの新卒→中堅→後期の変化は、AI で言えば 同じモデル・同じプロンプトで T を 0.1 → 1.0 → 2.0 と上げただけで再現できる現象。本人がたどり着いてくれて感慨深い。)

- 温度 T は、AI の答えの 「ばらけ具合」 を決めるつまみ。中身の予測は同じでも、このつまみ1つで出力が堅実にも奔放にも変わる、AI の 「個性ダイヤル」。
- 低い温度ほど 堅実(いつも無難な1位を選ぶ)、高い温度ほど 多様(意外な候補まで拾って創造的)。だから書き物には高め、ファクトチェックには低めと、用途で使い分ける重要なつまみ。
- イメージは、提案の 「推し方」。1案だけ強く推すか、いろんな案を均等に並べるか — 同じ材料でも見せ方の 「とがり具合」 を変えるダイヤル(仕組みは本文で)。
softmax (#040) は、ロジット (#039) の実数ベクトルを 「合計1の確率分布」 に変換する関数だった。でもその出力分布、いつも 同じとがり方 していいのか?
たとえば LLM が小説を書く時と、ファクトチェックする時で、同じ 「確信のとがり方」 でいいわけがない。1つの 「とがらせ具合のつまみ」 がほしい — それが 温度(Temperature)。
定義 — softmax の 「前」 にロジットを T で割る、たった1つの数
温度 T の使い方は驚くほどシンプル。softmax を通す前に、ロジット全体を T で割る。それだけ。
def softmax_with_temperature(z, T):
z = z / T # ← これが 「温度」 の効き目
z = z - z.max() # 安定化(softmax 記事で見た)
exp_z = exp(z)
return exp_z / exp_z.sum()
T = 1 のとき、何も変わらない(普通の softmax)。T を 小さくする(例 T=0.5)と、ロジットの差が 拡大される(2倍に開く)。T を 大きくする(例 T=2.0)と、ロジットの差が 縮められる(半分に潰される)。
御託の銘酒会の例で見ると分かりやすい。元のロジットは [+8.5, +7.8, +6.2, +4.0]。これを各温度で割ると:
| 温度 T | ロジット ÷ T | softmax 後の確率分布 | 性格 |
|---|---|---|---|
| T = 0.5(低) | [+17, +15.6, +12.4, +8.0] | [0.80, 0.20, 0.008, 0.0001] | 1位独占(保守的) |
| T = 1.0(標準) | [+8.5, +7.8, +6.2, +4.0] | [0.62, 0.31, 0.06, 0.01] | 標準(softmax記事と同じ) |
| T = 2.0(高) | [+4.25, +3.9, +3.1, +2.0] | [0.44, 0.31, 0.14, 0.05] | 均等寄り(創造的) |
| T = 10(超高) | [+0.85, +0.78, +0.62, +0.40] | [0.28, 0.26, 0.22, 0.18] | ほぼ均等 |
同じロジットなのに、T 1つで 1位の確率が 0.28 〜 0.80 まで動く。AI の 「性格」 がこの1つの数で決まる、と言ってもいい。
なぜ 「割る」 だけで、こんなに変わるのか
仕組みの直感: softmax は exp() で 「差を増幅」 する関数(softmax 記事 (#040) で見た)。差が大きいほど確率は極端に振れる。だから:
- T で 割る = ロジットを縮める → 差も縮む → exp の増幅が 弱まる → 分布は 均等に近づく
- T が 小さい(0.5) → 全要素が2倍に拡大される → 差も2倍に → 増幅は強力に → 分布は とがる
- T が 大きい(2.0) → 全要素が半分に潰される → 差も半分に → 増幅は穏やかに → 分布は ならされる
例: ロジットの差 0.7 は、T=0.5 なら 1.4(2倍)、T=2.0 なら 0.35(半分)。exp(差) の比率 で確率比が決まるので、差を変えるだけで分布の形が劇的に変わる。
極限 — T→0 で完全1位独占、T→∞ で完全均等
温度を 極端な値 に振った時の挙動を知っておくと、効き目の直感がさらに固まる:
- T → 0(限りなく小さく): ロジットの差が 無限大に拡大。1位の確率が 1.0、それ以外は 0。これは argmax と完全に同じ動作。LLM の greedy decoding(常に1位を選ぶモード)は、実質 T→0 の softmax を意味する。
- T → ∞(限りなく大きく): ロジットの差が 0 に縮む。全要素が同じ値に。softmax 後は 一様分布(全候補が等確率)。実用ではここまで上げないが、極限として理論的に重要。
つまり温度ダイヤルは、「argmax(確定的)」と「一様分布(完全ランダム)」の間を、なめらかに繋ぐつまみ。AI の振る舞いを「確実性」から「多様性」まで連続的に動かす、たった1つの数。
コンサル感覚 — クリエイティブ性と再現性のトレードオフ
本記事の核心メッセージは 「温度は AI の 「個性ダイヤル」、低くすると保守的、高くすると創造的」。これを実務で意識するメリット:
① タスク別に温度を使い分ける: ファクト抽出・要約・データ整形には 低温度(0〜0.3)。アイデア出し・物語生成・ブレストには 高温度(0.8〜1.5)。クライアント案件で「AI を使ったら毎回違う答えが返って困る」と言われたら、温度を下げる ことを最初に提案。逆に「AI の出力がつまらない、定型的」と言われたら 温度を上げる。たった1つの数字で大きく変わる。
② 再現性の管理: 業務 AI を本番投入する場合、同じ入力 → 同じ出力 が求められることが多い(監査・コンプラ対応)。この場合は T=0(greedy decoding) が基本。逆に 「AI に飽きさせず驚きを与えたい」 UX 設計では T=0.7〜1.0 を選ぶ。
③ コスト感覚: 温度は計算コストを 変えない(softmax 前の割り算1回分、無視できる)。なのに振る舞いが劇的に変わる、「無料で効くチューニング」 の代表格。クライアントから「精度を上げたい」「個性を出したい」と言われた時、いきなり高い fine-tuning を提案する前に 温度調整で済むか を1度試すのが筋。
俺の 「いいねいいね、全部いいよ」 って、典型的な 高温度 モードか…。AI に置き換えたら、たぶん T=5 くらいで全案均等のロジット出してるな、俺。温度下げる訓練 をした方がいいのかもしれない。…って、なんで休日のキャンプ場の焚き火の話と AI の話が繋がるんだ、今日の俺。
あら、私の 銀座カフェ巡り Instagram も、新人時代は 毎回同じカフェの写真 ばかり投稿してましたわ(温度 0.2)。最近は 5店舗をローテーション して投稿してます(温度 1.5)。フォロワー2,800人を維持するには、たまに 意外な路地裏の喫茶店 を混ぜないと飽きられる、という直感。これも温度の話なんですのね。
フッ、ようやく 温度 の話か。私が銘酒会で言った “体調係数” の正体がこれだ。疲れた夜は私の 温度ダイヤルが 0.3 になって、十四代1本に集中する。元気な夜は 2.0 で20本全部を試したくなる。…ちなみに STAX SR-X9000 でクラシックを聴く時の選盤も同じ。気分が乗らない日は カラヤン1択、調子のいい日は 20指揮者の聞き比べ をしてしまう。
君ら、何を朝から騒いどるんだ。…まあ、銀行員の融資審査でも同じだ。新人 の頃は教科書通りで 1社1スコア確定(低温度)、ベテランになると 1案件を3軸4軸で多面的に見て、いい意味で迷う ようになる(高温度)。迷うのも経験値 だぞ。AI とやらも、迷えるようになったら一人前ってことだろう。
(社長、新人時代を 「低温度」、ベテランを 「高温度」 と整理されたの、たぶん私が朝広告時代を振り返って言った話の 真逆 に聞こえる解釈なんですけど…まあいい、温度ダイヤルは 「用途次第」 なので、結局どちらも正解。)

応用 — ChatGPT API で実際に触れるダイヤル
本記事の余談として、温度パラメータが実務でどう露出しているか:
- ChatGPT / Claude / Gemini の API: ほぼ全ての主要 LLM API で
temperatureパラメータが 0〜2 の範囲 で公開されている。デフォルトは 1.0、ファクト系タスクでは 0.0〜0.3、創造系は 0.7〜1.2 が定石。 - OpenAI Playground / Anthropic Console: スライダー UI で温度を直接動かせる。「同じプロンプトで温度だけ変えて出力比較」が、AI 挙動を理解する最速の実験。
- 業務ツール内蔵 AI: 多くのクライアント案件で「AI 出力が安定しない」と相談される時、temperature が 1.0 のままデフォルト で運用されているケースが大半。0.0 に下げるだけ で再現性問題の8割が解決する。
- Top-k / Top-p との併用: 温度は 分布の 「形」 を変える、Top-k/Top-p は 選ぶ 「範囲」 を絞る。両者は補完関係で、実務では両方を組み合わせるのが標準(深掘り別記事予定)。
コンサル感覚: クライアントが「AI を導入したけど思った通りに動かない」と言ってきた時、最初に確認すべきは 「温度はいくつで運用していますか?」。これを聞くだけでプロっぽさが3段階上がる(し、本当に大半の問題はここで解決する)。