Softmax そふとまっくす
Softmax活性化関数多クラス分類確率分布出力層
Softmaxについて教えて
Softmax関数
Softmax(xᵢ) = e^xᵢ / Σⱼ e^xⱼ
例:3クラスの場合(スコア x = [2.0, 1.0, 0.5])
e^2.0 = 7.39
e^1.0 = 2.72
e^0.5 = 1.65
合計 = 11.76
出力:
クラス1: 7.39/11.76 ≈ 0.63(63%)
クラス2: 2.72/11.76 ≈ 0.23(23%)
クラス3: 1.65/11.76 ≈ 0.14(14%)
─────────────────────────────
合計 = 1.00(100%)✓
Softmaxの特性
指数関数の効果:
スコア差が小さくても確率差を大きくする
(差が増幅される = winner-take-all的)
x = [3.0, 1.0]
e^3.0 ≈ 20.1, e^1.0 ≈ 2.7
確率 = [88%, 12%](差2→差76%pt)
数値安定化テクニック:
数値オーバーフロー防止のため最大値を引く
Softmax(xᵢ) = e^(xᵢ-max) / Σⱼ e^(xⱼ-max)
交差エントロピー損失との組み合わせ
分類問題では通常セットで使う:
出力層 → Softmax → 確率 → 交差エントロピー損失
損失計算:
L = -Σ yᵢ × log(pᵢ)
(y:正解ラベル、p:予測確率)
PyTorchでは:
nn.CrossEntropyLoss() が
Softmax + 対数損失を内部で計算
( logits を直接渡す)
温度パラメータ(Temperature Scaling)
Softmax(xᵢ/T) = e^(xᵢ/T) / Σⱼ e^(xⱼ/T)
T = 1.0(通常):標準の確率分布
T < 1.0(低温):確率が最大クラスに集中(確信度↑)
T > 1.0(高温):確率が均一に近づく(多様性↑)
LLMのサンプリングで温度を調整して
「出力の多様性」をコントロール