ソフトマックス関数(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になります。
メリット
- 出力値を確率解釈しやすい
- 勾配計算が容易で、ニューラルネットワークの学習に使いやすい
デメリット
- 計算コストが比較的高い
- すべての入力値が正である必要がある
まとめ
ソフトマックス関数は、ニューラルネットワークの出力層でよく用いられる活性化関数であり、出力値を確率分布に変換することで、多クラス分類問題に適しています。また、勾配計算が容易であるため、ニューラルネットワークの学習にも使いやすいというメリットがあります。