← STEP 6・訓練+推論 に戻る

temperature ― 見積りの保守度(堅実⇔強気)のつまみ

記事で詰まったところ

「temperature」「logits を temperature で割る」「creativity を上げる」が、生成にどう効くのか分からない。

機械学習ではこう言う

推論時、次の文字のスコア(logits)をソフトマックスにかける前に temperature で割る。低いと分布が尖って最有力の字ばかり選び(堅実)、高いと分布が平らになり多様な字を選ぶ(強気・創造的)。

決算見積りの保守度(堅実⇔強気)

決算見積りの保守度のつまみに近い。同じ材料(logits)でも、堅実に倒すなら最有力のシナリオ1本に大きく寄せ、強気に倒すならどのシナリオにも満遍なく確率を配る。temperature はその「寄せ具合」を一括で回すダイヤル。

temperature を下げる(低温)=堅実。最有力の文字の確信度がぐっと上がり、生成は無難で予測どおりになる。引当を最有力ケースに集中させる保守的な見積りに対応。

temperature を上げる(高温)=強気・多様。確率が平準化され、ふだん選ばれない文字も出てきて、生成は創造的だが当たり外れが増える。複数シナリオに薄く張る楽観的な見積りに対応。

言葉の対応表

microGPT(機械学習)
会計・簿記の言葉
logits ÷ temperature
シナリオ評点を保守度で割り引く/効かせる
低温(小さい T)
堅実:最有力ケースに集中(確信度↑)
高温(大きい T)
強気:複数シナリオに満遍なく配る(多様)
生成の creativity
見積りの保守⇔楽観のスタンス

触って確かめる

最有力の字の確信度78.8%
「a」スコア 3.078.8%
「n」スコア 2.215.9%
「e」スコア 1.53.9%
「o」スコア 0.81.0%
「·(終端)」スコア 0.30.4%

同じスコアでも、temperature を下げると最有力の「a」に確率が集中(堅実・無難な生成)上げると全候補に満遍なく散って多様な字も出る(強気・創造的)。 決算見積りでいう「最有力ケースに寄せる保守」⇔「複数シナリオに薄く張る楽観」のスタンスを、生成の側で回すダイヤルです。

⚠️ ソフトマックスの temperature と同じ仕組みを、推論(文字生成)の保守度という別の切り口で見たもの。

実際のコード(microgpt.py L187, 195-196)

この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。

temperature = 0.5  # (0,1] 生成の「創造度」。低い=堅実、高い=多様
# ... 推論ループ内 ...
probs = softmax([l / temperature for l in logits])  # logits を T で割ってから正規化
token_id = random.choices(range(vocab_size), weights=[p.data for p in probs])[0]

logits を temperature で割ってから softmax。低温なら最有力の字に尖り(堅実)、高温なら平準化して多様(強気)な生成になる。

出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)