【そふとまっくすかんすう】
ソフトマックス関数 とは?
💡 生の数値を確率に変換する「AIの翻訳機」
📌 このページのポイント
ソフトマックス関数って具体的に何をするの?
例えばモデルが「猫: 5.0、犬: 2.0、鳥: 1.0」という生の数値(ロジット)を出力したとする。ソフトマックスを通すと「猫: 93.6%、犬: 4.7%、鳥: 1.7%」みたいに合計100%の確率に変換されるんだ。「一番可能性が高いのは猫」と分かりやすく判断できるようになるよ。
シグモイド関数とはどう違うの?
シグモイドは1つの値を0~1に変換するから「はい/いいえ」の2択向き。ソフトマックスは複数の値をまとめて確率分布に変換するから「猫/犬/鳥のどれ?」みたいな多択向き。2クラス分類ならシグモイド、3クラス以上ならソフトマックスを使うのが基本だよ。
Transformerでも使われてるの?
ソフトマックスの「温度」パラメータって何?
ソフトマックスの式の中に温度パラメータTを入れると、確率分布の「とがり具合」を調整できるんだ。Tが小さいと確率が最大の候補に集中して、Tが大きいと各候補の確率が均等に近づく。実はAIのTemperatureパラメータの正体は、このソフトマックスの温度を調整しているんだよ。
ソフトマックスの計算で数値が爆発するって聞いたけど?
鋭い質問だね。e^xの計算は入力が大きいとオーバーフローを起こす。たとえばe^1000は計算できないよね。実装上は入力の最大値を引いてから計算するトリックを使う。log-sum-expという安定化テクニックで、フレームワークは内部的にこの処理をしているから普段は意識しなくていいけど、自分で実装するときには必須の知識だよ。
まとめ:ざっくりこれだけ覚えればOK!
「ソフトマックス関数」って出てきたら「複数の数値を合計1の確率分布に変換する、分類問題の出力に使う関数だな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Softmax」 = 柔らかい最大値
💬 「Soft(柔らかい)」+「Max(最大値)」。最大値だけを選ぶハードな判定ではなく、全ての値を滑らかな確率に変換する「柔らかい」最大値関数という意味だよ