画像処理とか機械学習とか

画像処理や機械学習関連の事について気まぐれで書いていきます。歩行者検出関係が多いと思います。ハリネズミもたまに出現します。

Softmaxって何をしてるの?

ニューラルネットワークの出力は例えばニューロンが一つの場合は以下のようになります。

f:id:hiro2o2:20160203215759p:plain

f:id:hiro2o2:20160203220113p:plain

  • 各ノードの出力

まず、それぞれの入力xに重みwを掛け合わせ、全て足します。そして、閾値θを引いた式を、活性化関数に入力した結果が出力yとなります。活性化関数には、様々種類があり古いものではtanhやsigmoid関数などが使われてきました。

しかし、勾配消失問題というニューラルネットワークの層が深くなるにつれて、学習の際に勾配が0に近くなり、低い層で誤差が消失する問題がありました。
この問題に対応するために開発されたのが、ReLU(rectified linear unit)やMaxOutという活性化関数です。これらの手法では誤差消失問題を起こさないため、深い層のネットワークでも学習が可能となり、現在多くのネットワークで採用されています。

  • Softmaxとは

このような活性化関数を通して出力される値は、使用する活性化関数によっては負の値が出てきたりと、そのままでは扱いづらいです。そのため、この出力を確率に変換する式がSoftmaxになります。

以下の式がSoftmaxの式で、複数のノードの出力yiがある場合の各出力結果の確率piは以下の式で表すことができます。expで出力結果を正の値へ変換し、全ての出力のexpの和で割る事で、確率に変換する事ができます。
f:id:hiro2o2:20160721013200p:plain

f:id:hiro2o2:20160721013204p:plain

ディープラーニングのネットワークの出力の最後にほぼこのSoftmaxが付いていると思いますが、上記のように、ニューラルネットワークの出力結果を確率に変換することで、各クラスの確率を表現しています。