ニューラルネットワーク基礎

Softmax そふとまっくす

Softmax活性化関数多クラス分類確率分布出力層
Softmaxについて教えて

簡単に言うとこんな感じ!

複数のクラスに対してそれぞれ「確率」を出力する活性化関数だよ。すべての出力を合計すると必ず1になる。「猫:70%、犬:20%、鳥:10%」みたいに確率として解釈できるから、多クラス分類の出力層でよく使われるんだ!


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のサンプリングで温度を調整して
「出力の多様性」をコントロール

関連用語