「ソフトマックスで確率に変換」「指数を取って合計で割る」「temperature」が分からない。
スコア群を指数で強調してから合計で割り、合計1の確率分布にする。temperature で尖り具合を調整する。
セグメント別のスコア(利益見込み等)を、合計100%の構成比へ正規化するのに似ている。各セグメントの取り分(確率)を出す予算配分そのもの。
まず指数を取るのは「大きいものをより際立たせる」ため。差が開いている項目ほど取り分が大きくなる。そのうえで合計で割って100%にそろえる。
temperature は配分のメリハリ。低temp(堅実)なら勝ち筋に大きく寄せ、高temp(強気)ならどのセグメントにも満遍なく配る。推論時の「保守度」を決めるつまみ。
指数を取ってから合計で割るので、スコア差が開くほど取り分が大きくなる。 temperature を下げると勝ち筋に寄せ(堅実)、上げるとどこへも満遍なく配る(強気)。推論時の「保守度」のつまみです。
⚠️ スコアの大小関係と確率は厳密には指数で非線形に結びつく。ここは構成比の直感に寄せた例示。
この簿記アナロジーが、Karpathy のオリジナル200行のどの行に当たるか。
def softmax(logits):
max_val = max(val.data for val in logits)
exps = [(val - max_val).exp() for val in logits]
total = sum(exps)
return [e / total for e in exps]指数 exp を取り合計 total で割って構成比(合計1)に。- max_val はオーバーフロー防止の計算上の工夫。
出典: karpathy / microgpt.py (本体は原文ママ、コメントのみ日本語に補足)