活性化関数
活性化関数とは
活性化関数とは、ニューラルネットワークにおいてノード(人工ニューロン)の線形変換後に適用する非線形変換を行う関数です。
よく用いられる活性化関数として、
- ステップ関数
- 恒等関数
- シグモイド関数
- ランプ関数
- ソフトマックス関数
などがあり、他にも多項式、絶対値、ウェーブレット、maxoutなどがあります。
ニューラルネットワークの伝達は、神経細胞のシナプス伝達をモデル化したものです。
中間層のノードは1つ以上の入力層から出力を受け取ります。
重み付けされた総和と、バイアス項の和が新たな入力となり、活性化関数に渡されてその出力を次の層に伝達します。
活性化関数の変遷は、ニューラルネットワークの進化と並行しています。
パーセプトロンが登場した頃の1950年代は、活性化関数としてステップ関数が多く用いられました。
その後、1986年の誤差逆伝播(バックプロパゲーション)法の登場以降は、シグモイド関数が最も一般的になりました。
シグモイド関数に似た形で、値域が異なる双曲線(ハイパーボリック)関数tanhもよく用いられました。
一般にディープラーニングと呼ばれる現在の多層(深層)ニューラルネットワークでは、ReLU(正規化線形関数)などのランプ関数がよく用いられています。
ReLUには多くの派生があり、
- Leaky ReLU(LReLU)
- Parametric ReLU(PReLU)
- ERU
などが知られています。
例えば、中間層でよく用いられるReLUやシグモイド関数は、負の入力を0または0に近い出力に変換します。
そして、入力に比例して出力を高めます。このことは全てのノードが学習に寄与しているわけではなく、活性化関数によって学習への寄与の高いノードが選択されることを示唆します。
また、ソフトマックス関数は非正規化項を確率分布に正規化するため、多クラス分類問題などの出力層でよく用いられます。
初期の活性化関数であるシグモイド関数や双曲線関数には、欠点がありました。
入力が大きくなると出力が1に近づくため、傾きが0に近づくことで最適値が求まらなくなる、いわゆる勾配消失問題が起きたのです。
ReLUなどランプ関数を用いることで、必ず定数項が残り勾配が保たれ、学習がうまく収束するようになりました。このような活性化関数の改善による勾配消失問題の解決がディープラーニングの発展の一因となりました。