今回は活性化関数についてです。
ニューラルネットワークの理解に必要な4つの要素の内の2つ目です。
- パーセプトロン(人口ニューロン) ✅
- 活性化関数 ← 今回はここ!
- 損失関数
- 勾配降下法
パーセプトロンの発火を決める関数が「活性化関数」というものです。
複数の入力に重みをかけて、バイアスを足したものが0を超えたら1を出力するとお話ししましたが、ここの部分が活性化関数と呼ばれるものですね。
早速、具体的に見ていきましょう!
活性化関数その1:ステップ関数
これは前回のパーセプトロンで使用していた関数です。
単純に閾値を超えたら1を返す関数になります。
入力がどれだけ大きい(小さい)値でも関係なく0か1を返します。(閾値だけが重要)
活性化関数その2:シグモイド関数
これはさっきのステップ関数に比べると滑らかな曲線を描きます。
入力に対して連続的に変化する関数になります。
特徴としては出力が必ず0から1の間になります。(つまり確率として解釈ができる)
式は以下の通り。
x:入力
exp: 自然対数
h(x) = 1/(1 + exp(-x))
活性化関数その3:ReLU関数
入力が0以下なら0、0を超えていれば入力をそのまま出力する関数です。
ニューラルネットワークで重要視されているスパース性を自然に獲得することができるというメリットがあります。
加えて勾配消失問題も起こりづらい。
このReLU関数が使用されるのがこの中だと一番多いようです。
式は以下の通り。
活性化関数をまとめると
こんな感じ。
ステップ | シグモイド | ReLU | |
長所 | 単純で計算が容易。 | 出力が0と1の間に制限されるため、確率的解釈が可能。 | 勾配消失問題が少なく、学習が速い。計算がシンプル。 |
短所 | 微分不可能であり、ニューラルネットワークの学習に向いていない。 | 勾配消失問題が発生しやすく、学習が遅くなることがある。 | 負の入力をすべて0にするため、死んだReLU (Dead ReLU) が発生することがある。 |
ここからは興味ある人向けに。
スパース性について
スパース性とは重みや活性化関数の値が0である状態(使用されないニューロンがある)のことを指します。
簡単にいえば一部のデータや学習を無視するということですね。
そんなことをしたら精度が悪くなるのではと思われるのではないかと思います。
その可能性はありますが、それ以上にメリットがあります。
まず0なので計算が容易になります。
さらに過学習の防止にもつながります。
なので、特に計算が多くなりがちなニューラルネットワークではスパース性が重要になっているのです。
勾配消失問題
これはこの後、実際にニューラルネットワークの学習の部分で解説しようと思いますが、勾配とは簡単にいうとニューラルネットワークが学習をする際に使用される指標です。
この勾配というのは学習の道筋を示してくれるようなものと思ってもらえれば大丈夫です。
勾配消失問題は学習を進めるほど勾配が小さくなっていき、学習が進まなくなってしまうことを指します。(道筋が途絶えてどっちに進めばいいか分からなくなる)
シグモイド関数で起きやすいという話をしましたが、それはシグモイド関数の値が必ず1以下であることに起因します。
0.XXと0.YYをかければだんだんと値が小さくなっていきますよね。
そのせいでだんだんと入力値が0に近づき学習が進まなくなってしまう。
ニューラルネットワークの初期にはこれが問題で一時期停滞してしまっていました。
今回はここまで。
次回は実際に簡単なニューラルネットワークを見てどんな事が起きてるかイメージできるようにしていきます。
コメント
コメントを投稿