活性化関数について

活性化関数は入力の値と重み、バイアスから計算をして得られた値を出力信号に変換する関数のことを指す。
ニューラルネットワークは分類問題と回帰問題の2つがあるが、問題によって出力層の活性化関数を変更する必要がある。
回帰問題には恒等関数(何も手を加えず出力する)、分類問題にはソフトマックス関数を用いるのが一般的とか
以下に関数の例をメモ

ステップ関数

これは x <= 0 の時出力の値を 0にし、 x > 0 の時は 1 にする関数。
非線形関数

シグモイド関数

f:id:Owatank:20170621171737p:plain
この関数に何か値を入力すると [0,1) の間の値を返す。
h(x) を シグモイド関数とすると、 h(1.0) = 0.731… , h(2.0) = 0.880… とかになる。
非線形関数
ステップ関数との共通点として、入力の値が大きいほど返ってくる値は 1 に近づき、 小さいほど値は 0 に近づくという点がある。

ReLU関数

ReLU関数は上記二つと違って、入力の値が 0より大きければその入力をそのまま出力し、
0以下ならば 0 を出力する関数。
個人的によく中間層で使われているのを見る。

ソフトマックス関数

f:id:Owatank:20170621170946p:plain
出力層がn個あるとき、k番目の出力 y_k を求める計算式を表している。
分子は入力信号の指数関数、分母は全ての入力信号の和から構成されている。
ソフトマックス関数の出力は 0 から 1.0 の間の実数で、総和は 1 となる。
この 総和が 1 となる性質がとても重要で、出力を 確率として見ることができる。
例えば3クラス分類の学習モデルを考えるとして、活性化関数にソフトマックスを適用した時、出力が [ 0.0182, 0.2451, 0.7365 ] だったとすると、
0番目の値を 0.018(1.8%), 1番目を 0.2451(24.5%), 2番目を 0.7365(73.3%)と解釈できる。
この結果から、ある入力は 2番目のクラスに分類できると判断することができる。
ある問題に対して確率的な対応ができるようになるのはとても大切なことらしい。