深層学習day1 Section2:活性化関数

要点まとめ

ニューラルネットワークにおいて、次の層への出力の大きさを決める非線形の関数。入力値の値によって、次の層への信号のON/OFFや強弱を定める働きをもつ。 活性化関数の種類には、ステップ関数シグモイド関数ReLU関数 等がある。 ステップ関数以前用いられていたが、現在はあまり用いられない。 シグモイド関数は2分類問題の出力層等に用いられるが、層を重ねると勾配消失問題を引き起こすため、ReLU関数がよく用いられる。

実装演習

f:id:yui-gen-ron:20211121101559p:plain

実装演習考察

sigmoid関数が0~1の範囲を返すことが確認できた。

追加演習

ゼロつく①3.5.3 章より、分類問題の出力層に用いられる、ソフトマックス関数についてまとめ

 \displaystyle{
  y_k = \frac{\exp{(a_k)}}{\sum_{i=1}^n \exp{(a_i)}} \\
  = \frac{C \exp{(a_k)}}{C \sum_{i=1}^n \exp{(a_i)}} \\
  = \frac{\exp{(a_k + \log{C})}}{\sum_{i=1}^n \exp{(a_i + \log{C})}} \\
  = \frac{\exp{(a_k + C')}}{\sum_{i=1}^n \exp{(a_i + C')}}
}

実装

f:id:yui-gen-ron:20211124084156p:plain

活性化関数とは

ニューラルネットワークにおいて、次の層への出力の大きさを決める非線形の関数。入力値の値によって、次の層への信号のON/OFFや強弱を定める働きをもつ。

ステップ関数

しきい値を超えたら発火する関数であり、出力は常に1か0。パーセプトロンニューラルネットワークの前身)で利用された関数。0 -1間の間を表現できず、線形分離可能なものしか学習できなかった。

 \displaystyle{
  f(x) =
  \begin{cases}
    1 & (x \geq 0) \\
    0 & (x < 0)
  \end{cases}
}

シグモイド関数

0 ~ 1の間を緩やかに変化する関数で、ステップ関数ではON/OFFしかない状態に対し、信号の強弱を伝えられるようになり、予想ニューラルネットワーク普及のきっかけとなった。大きな値では出力の変化が微小なため、勾配消失問題を引き起こす事があった。

 \displaystyle{
  f(u) = \frac{1}{1+e^{-u}}
}

ReLU関数

今最も使われている活性化関数勾配消失問題の回避とスパース化に貢献することで良い成果をもたらしている。

 \displaystyle{
  f(x)=
  \begin{cases}
    x & (x > 0) \\
    0 & (x \leq 0)
  \end{cases}
}