活性化関数、シグモイド・tanh・ReLU・Leaky ReLU・ソフトマックスと種類が多い
どこで何を使えばええん?
【疑問】隠れ層はReLU、出力はシグモイドかソフトマックス、ってどう使い分けるん?活性化関数まとめ【G検定】
前提のおさらい。多層パーセプトロンは、各層で重みつきの和をとって、それを活性化関数に通す。なめらかな関数にすると、誤差逆伝播法で重みを学習できる
>>1
そもそも活性化関数がないと、層を何層重ねても全体が1つの線形関数(重みつきの和)にまとまってまう
みたいに、掛け算を重ねても掛け算1回と同じ。曲がった関数をはさむから、層を重ねる意味が出る
シグモイド関数は出力が0〜1
微分は で、一番大きくても での0.25。 だともう約0.10
>>4
微分が最大0.25ってことは、層を通るたびに勾配が4分の1以下になるん?
>>5
そう。10層重ねると、多くても
前の層ほど勾配が消えてほとんど学習が進まん。これが勾配消失問題で、隠れ層にシグモイドを使わなくなった大きな理由
tanh関数は出力が −1〜1 で、。微分の最大は1で、シグモイドよりは勾配が消えにくい
出力の中心が0になるのも学習にはええ。でも が大きいと微分が0に近づくのは同じ
ReLU関数は 。正なら入力をそのまま、負なら0
正の側の微分はいつも1やから、何層重ねても勾配が小さくならん。計算も軽い。今の隠れ層では一番よく使われる
>>8
負のときは微分が0やろ。ずっと負の入力しか来んユニットは、まったく学習せんくなるんちゃう?
>>9
なる。そこで負の側にも小さい傾きをつけたのがLeaky ReLU関数。たとえば で
入力が なら、ReLUは0、Leaky ReLUは 。傾きが0にならんから、学習が止まりにくい
出力層は、タスクで決まる
2クラス分類:シグモイド(1つの確率)
多クラス分類:ソフトマックス(クラスごとの確率、合計1)
回帰:何も通さない(恒等関数)。値の範囲を縛らんため
>>11
隠れ層はReLUの仲間、出力層はタスクに合わせて、と分けて覚えると混ざらんな
管理人のひとこと
- 活性化関数がないと何層重ねても1つの線形関数になる。曲がった関数をはさむから層を重ねる意味が出る。
- シグモイドは0〜1で微分の最大は0.25。10層で になり勾配消失が起きやすい。tanhは −1〜1 で微分の最大は1。
- ReLUは で正の側の微分が1。負の側で学習が止まる問題を、Leaky ReLU(例:)が小さい傾きで和らげる。
- 出力層は2クラス分類でシグモイド、多クラス分類でソフトマックス、回帰で恒等関数。