DeepLearning
活性化関数
softmax

deep learningの出力層でsoftmax関数が活性化関数として使われているけどなんで?

なんでsoftmaxの関数を使う必要があるの?

deep learningの最後の出力の前にsoftmax関数を挟む。なぜなら
softmax関数を使うことで、全ての要素を足すと1になる数に変換できるので、確率として扱うことができるようになるからである。

ここで疑問は2つで

  1. 分類問題の場合、分類結果として一番可能性が高いものだけを答えとして返すので、わざわざ足して1になるように変換する必要が無いのでは?

  2. 全ての要素を足した値でそれぞれの要素をわれば、確率に変換できるのでは?

こたえ

  1. このケースではわざわざsoftmax関数で変換する必要がない。出力結果が一番大きい値をとっている分類1つだけ返すだけなので、max関数で判定してOK

  2. 使う活性化関数によっては、最終出力が負の数の場合があり、負の数になると全ての要素を足した値で割れなくなる可能性があるので、全ての要素を足した値で割るというのは駄目。
       ex 最終出力が[-1, 0.3, 0.7]の場合、 合計値0になり、割れない。
    負の数というのは、何かと扱いづらいので、正の数に変換したいのと、単調増加の関数でかつ足して1になるような良い変換をしてくれるのがsoftmax関数だというわけ。

とりあえず納得!