なぜソフトマックス関数にeを使うのか
ソフトマックス関数はニューラルネットワークにおいてスコア(affine layerから出力された値)を確率に変換する役割を持っている。しかしなぜわざわざを底として累乗するのだろうか。
ソフトマックス関数とは
ソフトマックス関数による出力値はニューラルネットワークでは確率として捉えることができる。すなわち、任意のソフトマックス関数による出力値は[0, 1]の範囲の実数値を得ることになる。これは分類問題では、あるクラス(出力層のユニット)に分類される確率として解釈可能である。なお確率なのですべてのユニットの確率を足し合わせると1になる。ソフトマックス関数は以下の数式で表される。
ここでは出力層のユニットが全部で個ある場合の番目のクラスに属する確率、右辺の分母はを各ユニットのスコアで累乗したものの総和、分子はを番目のスコアで累乗したもの、はスコアの値である。
確率を求めるなら、スコアをスコアの総和で割ったものを確率とみなすことはできないのかと疑問になるかもしれない。しかしスコアは負の値を取ることもあるため、そのままでは負の値を出力することもあり確率にはならない。もう一度確認しておくがソフトマックス関数を使う目的はスコアを確率に変換することである。任意のスコアを[0, 1]の範囲の実数値に変換できなければ確率にはならない。
では、絶対値を取って同じ作業をすればよいだろうか。残念ながらこれも確率にはならない。
ネイピア数の説明はググればいくらでも出てくるので細かいことはそちらに任せるとして、ここではネイピア数がソフトマックス関数に使われる理由を理解するためにという関数の特徴にフォーカスする。
これはのグラフであるが、見てわかる通りスコアが負の値でもを通すと正の値になる。また、右肩上がりの単調増加関数である。
大事なのはは正の値を返す単調増加関数であることだ。
スコアの値に正の値と負の値が混在している場合、絶対値を取るとスコアの大小関係がごちゃごちゃになってしまう。例えば[5, -3, 2]というスコアが得られた場合、大小関係はである。しかし絶対値を取るとという順序に大小関係が変わってしまう。これを解決してくれるのが単調増加関数である。は非線形関数であるため、大小の比率を保つことはできないが、大小関係は維持されるのである。
ソフトマックス関数の出力値を確率と捉えることの妥当性
という非線形変換を行って確率と捉えてよいのだろうか。結論としては近似値であり予測値でもあるので少々目をつむって確率と捉えてよいである。確率に変換したいのだから線形な関数で変換したいところだが、必ず[0, 1]の範囲の値を返す線形な単調増加関数は存在しない。そもそも活性化関数に線形関数を用いると層を重ねる意味がなくなってしまう。また勾配を求めて損失を逆伝搬させる際には微分してもであるという性質上便利であるということから、ソフトマックス関数にを用いることは好都合なのだ。しかし各書でソフトマックス関数の出力値を確率として解釈可能であると当然のように書かれていることには疑いの目を持ってよいだろう。