ソフトマックス関数

ソフトマックス関数(softmax function)は、ニューラルネットワークの出力層でよく用いられる活性化関数です。

役割

  • 出力値を確率分布に変換する: ソフトマックス関数は、K個の入力に対して、K個の確率値を出力します。これらの確率値は、0から1までの範囲に収まり、かつ合計が1になります。つまり、各入力が出力される確率を表す確率分布となります。
  • 多クラス分類問題に適している: 上記のように、ソフトマックス関数は出力値を確率分布に変換するため、複数のカテゴリに分類する多クラス分類問題に適しています。例えば、画像認識タスクにおいて、入力画像が猫、犬、鳥のいずれであるかを分類する場合に用いられます。

定義

K個の実数値からなるベクトル z を入力として受け取り、入力の指数に比例する K 個の確率で構成される確率分布に正規化する関数です。数式で表すと以下のようになります。

σ(z)_j = \frac{exp(z_j)}{\sum_{k=1}^K exp(z_k)}

ここで、

  • σ(z)_j は、j番目の出力における確率
  • z_j は、j番目の入力
  • exp は、指数関数

となります。

3つの入力 (z1, z2, z3) に対するソフトマックス関数の出力を考えてみましょう。

σ(z)_1 = \frac{exp(z_1)}{exp(z_1) + exp(z_2) + exp(z_3)}
σ(z)_2 = \frac{exp(z_2)}{exp(z_1) + exp(z_2) + exp(z_3)}
σ(z)_3 = \frac{exp(z_3)}{exp(z_1) + exp(z_2) + exp(z_3)}

上記のように、各出力は0から1までの範囲に収まり、かつ合計が1になります。

メリット

  • 出力値を確率解釈しやすい
  • 勾配計算が容易で、ニューラルネットワークの学習に使いやすい

デメリット

  • 計算コストが比較的高い
  • すべての入力値が正である必要がある

まとめ

ソフトマックス関数は、ニューラルネットワークの出力層でよく用いられる活性化関数であり、出力値を確率分布に変換することで、多クラス分類問題に適しています。また、勾配計算が容易であるため、ニューラルネットワークの学習にも使いやすいというメリットがあります。