回答編集履歴
2
追記
test
CHANGED
@@ -17,3 +17,75 @@
|
|
17
17
|
|
18
18
|
|
19
19
|
ということでアバウトに捉えれば、何かしらの出力が出てきて次の層(ないしネットワークの出力)に情報を伝えることが発火です。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
### コメント欄でのやり取りを受けて
|
24
|
+
|
25
|
+
もう少し説明が必要かな、と思ったのでまとめておきます。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
大昔(ごく初期)のニューラルネットワークで用いられた形式ニューロンは、出力が0と1だけでした。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
詳細はwikipedia([形式ニューロン - Wikipedia](https://ja.wikipedia.org/wiki/%E5%BD%A2%E5%BC%8F%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%AD%E3%83%B3))とかを見てください。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
これは発火が1、非発火が0に対応するという、わかりやすいモデルです。活性化関数には階段関数というものを使っていました。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
それから色々あって、活性化関数にシグモイド関数(とか、その変種のロジスティック関数やtanhだったり、他の何かだったり、とにかく色々なもの)などというものを使うようになりました。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
この辺のことは質問文に貼ってある記事でも触れられていますが、誤差逆伝播法で微分を計算するためには階段関数のような非連続関数では都合が悪かったということが大きな理由です。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
このおかげでニューラルネットワークが色々なタスクに使えるようになってよかったね、ということなのですが、ニューロンの出力を単純に発火、非発火に対応させることはできなくなりました。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
それでも、これらの活性化関数は、入力をマイナス無限大から無限大として、出力はロジスティック関数なら0~1、tanhは-1~1に収まりますから、そのどちら側に近いかで発火していない、しているとみなすことはできました。ちょうど真ん中(ロジスティック関数は0.5、tanhは0)ということは滅多にはないので、まあそういう表現をしても良いかな、といったところです。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
近年登場したReLUだとまた事情が異なり、0から無限大まで出力が変化します。到底「どれくらいなら発火しているか」なんて言えないのですが、関数としてはx=0で非連続なので(それでも微分値を0か1のどちらかに決め込んで微分を計算してしまいます。劣微分といいます)、ここを境に非発火と発火をわけるという考え方をすることは可能です。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
それでえっと、勾配消失の問題でしたっけ。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
先に順伝播について考えます。直感的には、「入力に近い層のパラメータが出力にたいして影響しなくなる」という現象と捉えることができます。一応影響はするんだけど、出力層のパラメータの1/100とかもっと小さいスケールになっちゃう、みたいな。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
参考:
|
70
|
+
|
71
|
+
[Deep Learning覚え書き(Gradient vanishing問題) - 八谷大岳の覚え書きブログ](http://hirotaka-hachiya.hatenablog.com/entry/2015/05/11/224508)
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
逆伝播では勾配(=誤差関数に対する重みの微分係数)を計算する訳ですが、上のことから考えると、直感的に「凄く小さい勾配になっちゃうんだろうな」ということがわかります。
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
勾配に基づいて重みの更新量を決める訳ですから、入力層に近い層はぜんぜん学習しないという現象が起こります。これが勾配消失です。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
で、
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
> ReLUを使ったBackpropで特徴的なのは,各層に発火している細胞がある限り,逆伝播において消失が起きないという点です.これは直感的には,各層が十分に広いネットワークにすれば毎回各層でどれかの細胞が発火してくれそうなもんで,そのような構造をもったネットワークは毎回入力層まで勾配消失が起こらない多層パーセプトロンになっていると考えられます.
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
という文章ですが、上に書いたとおりReLUは出力が0より大きい、つまりReLUの微分係数が1になる領域であれば「発火している」と捉えることができます。微分係数1って要はy=xですから、上に書いたような勾配消失の問題は原理的に起こらないことが直感的にもわかります。これが**各層に発火している細胞がある限り,逆伝播において消失が起きない**の意味です。
|
1
追記
test
CHANGED
@@ -13,3 +13,7 @@
|
|
13
13
|
|
14
14
|
|
15
15
|
ただしこれは少しアバウトな説明で、厳密に考えればsigmoidなんかはマイナス無限大でやっと0になるので「何らかの出力は常に出ている。すごく小さいかもしれないけど」と捉えるべきかもしれません。出力がないときが0でない活性化関数、出力の値がマイナスになる活性化関数なども考えられますが、とりあえず無視しています。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
ということでアバウトに捉えれば、何かしらの出力が出てきて次の層(ないしネットワークの出力)に情報を伝えることが発火です。
|