回答編集履歴
5
修正
test
CHANGED
@@ -2,15 +2,17 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
DNNのl層目においてcost Cがweightに関
|
5
|
+
DNNのl層目において**cost C**がl層目の**weight**に関する勾配:
|
6
6
|
|
7
|
-
∂C/∂w[l,jk] = a[l-1,k]*δ[l,j]
|
7
|
+
##∂C/∂w[l,j,k] = a[l-1,k]*δ[l,j]
|
8
8
|
|
9
|
-
a[l-1,k] : 前層(l-1)のunit kからの出力;
|
9
|
+
a[l-1,k] : 前層(l-1)のunit kからの**出力**;
|
10
10
|
|
11
|
-
δ[l,j] : 本層(l)のunit jの誤差。
|
11
|
+
δ[l,j] : 本層(l)のunit jの**誤差**。
|
12
12
|
|
13
|
+
|
14
|
+
|
13
|
-
∴ 勾配∝誤差
|
15
|
+
**∴ 勾配∝誤差**
|
14
16
|
|
15
17
|
|
16
18
|
|
4
訂正と追加
test
CHANGED
@@ -1,24 +1,34 @@
|
|
1
|
-
**【DNNの
|
1
|
+
**【DNNの勾配(∝誤差)問題をはっきりにします】** 間違ったところをご指摘下さい。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
+
DNNのl層目においてcost Cがweightに関数勾配:
|
6
|
+
|
7
|
+
∂C/∂w[l,jk] = a[l-1,k]*δ[l,j]
|
8
|
+
|
9
|
+
a[l-1,k] : 前層(l-1)のunit kからの出力;
|
10
|
+
|
11
|
+
δ[l,j] : 本層(l)のunit jの誤差。
|
12
|
+
|
13
|
+
∴ 勾配∝誤差
|
5
14
|
|
6
15
|
|
16
|
+
|
7
|
-
|
17
|
+
勾配(∝誤差)の**不安定性**についてactivation関数の**導関数**によく注目されていますが、実は
|
8
18
|
|
9
19
|
DNNのweightにも同様に関係します。
|
10
20
|
|
11
|
-
例えば、i-層に対応するコスト関数の
|
21
|
+
例えば、i-層に対応するコスト関数の勾配(∝誤差)は以下のよう成分が含まれています。
|
12
22
|
|
13
23
|
---------scalar版(各層に一つunitしかない場合):
|
14
24
|
|
15
|
-
##w[i]*w[i+1]*...*w[N]*σ(z[i])*σ(z[i+1])*...*σ(z[
|
25
|
+
##w[i]*w[i+1]*...*w[N]*σ(z[i])*σ(z[i+1])*...*σ(z[L])
|
16
26
|
|
17
|
-
|
27
|
+
w: DNNのweight, scalar; σ: activation関数の**導関数**, scalar; L:総層数
|
18
28
|
|
19
29
|
なので
|
20
30
|
|
21
|
-
**case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各
|
31
|
+
**case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各wの値がよっぽど大きくなければ、式全体の値が0に近くなります ⇒ 『勾配(∝誤差)消失』問題発生。
|
22
32
|
|
23
33
|
|
24
34
|
|
@@ -26,13 +36,13 @@
|
|
26
36
|
|
27
37
|
**case 2:** σ>=1 の場合も、w同士がほとんど1以下の場合、
|
28
38
|
|
29
|
-
その積が**もっと**1より小さいので、 ⇒ 『
|
39
|
+
その積が**もっと**1より小さいので、 ⇒ 『勾配(∝誤差)消失』問題発生。
|
30
40
|
|
31
41
|
|
32
42
|
|
33
43
|
**case 3:** σ>=1の場合、 w同士がほとんど1以上の場合(例えば w=10)、
|
34
44
|
|
35
|
-
すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『
|
45
|
+
すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『勾配(∝誤差)爆発』問題発生。
|
36
46
|
|
37
47
|
|
38
48
|
|
@@ -46,11 +56,11 @@
|
|
46
56
|
|
47
57
|
|
48
58
|
|
49
|
-
なので、NNの層数が多いほどfeedbackしてきた前端への
|
59
|
+
なので、NNの層数が多いほどfeedbackしてきた前端への勾配(∝誤差)値は0か天文数値かのような極端な値になりがちです。
|
50
60
|
|
51
61
|
これは掛け算の性質によります。
|
52
62
|
|
53
|
-
つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた
|
63
|
+
つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた勾配(∝誤差)値0と天文数値の間で大きく振れることは
|
54
64
|
|
55
65
|
オリジナルタイプのDNNに限り、原理的に避けられません。
|
56
66
|
|
3
式訂正
test
CHANGED
@@ -1,30 +1,24 @@
|
|
1
|
-
**【DNNの勾配問題をはっきりにします】** 間違ったところをご指摘下さい。
|
1
|
+
**【DNNの~~勾配~~☞誤差問題をはっきりにします】** 間違ったところをご指摘下さい。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
DNNのfeedback勾配の不安定性についてactivation関数の導関数によく注目されていますが、実は
|
7
|
+
DNNのfeedback~~勾配~~☞誤差の不安定性についてactivation関数の導関数によく注目されていますが、実は
|
8
8
|
|
9
9
|
DNNのweightにも同様に関係します。
|
10
10
|
|
11
|
-
例えば、i-層に対応するコスト関数の勾配は以下のよう成分が含まれます。
|
11
|
+
例えば、i-層に対応するコスト関数の~~勾配~~☞誤差は以下のよう成分が含まれています。
|
12
12
|
|
13
|
-
|
13
|
+
---------scalar版(各層に一つunitしかない場合):
|
14
14
|
|
15
|
-
|
15
|
+
##w[i]*w[i+1]*...*w[N]*σ(z[i])*σ(z[i+1])*...*σ(z[N])
|
16
16
|
|
17
|
+
ここのw,σは全部scalarです。N:総層数
|
17
18
|
|
19
|
+
なので
|
18
20
|
|
19
|
-
上記式は理解しにくいので、scalar版(各層に一つunitしかない場合)を以下のようになります:
|
20
|
-
|
21
|
-
##w[i]*w[i+1]*...*W[N]*σ(z[i])*σ(z[i+1])*...*σ(z[N])
|
22
|
-
|
23
|
-
ここのw,σは全部scalarです。
|
24
|
-
|
25
|
-
なので、
|
26
|
-
|
27
|
-
**case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各Wの値がよっぽど大きくなければ、式全体の値が0に近くなります ⇒ 『勾配消失』問題発生。
|
21
|
+
**case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各Wの値がよっぽど大きくなければ、式全体の値が0に近くなります ⇒ 『~~勾配~~☞誤差消失』問題発生。
|
28
22
|
|
29
23
|
|
30
24
|
|
@@ -32,13 +26,13 @@
|
|
32
26
|
|
33
27
|
**case 2:** σ>=1 の場合も、w同士がほとんど1以下の場合、
|
34
28
|
|
35
|
-
その積が**もっと**1より小さいので、 ⇒ 『勾配消失』問題発生。
|
29
|
+
その積が**もっと**1より小さいので、 ⇒ 『~~勾配~~☞誤差消失』問題発生。
|
36
30
|
|
37
31
|
|
38
32
|
|
39
33
|
**case 3:** σ>=1の場合、 w同士がほとんど1以上の場合(例えば w=10)、
|
40
34
|
|
41
|
-
すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『勾配爆発』問題発生。
|
35
|
+
すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『~~勾配~~☞誤差爆発』問題発生。
|
42
36
|
|
43
37
|
|
44
38
|
|
@@ -52,16 +46,16 @@
|
|
52
46
|
|
53
47
|
|
54
48
|
|
55
|
-
なので、NNの層数が多いほど前端の勾配値は0か天文数値かのような極端な値になりがちです。
|
49
|
+
なので、NNの層数が多いほどfeedbackしてきた前端への~~勾配~~☞誤差値は0か天文数値かのような極端な値になりがちです。
|
56
50
|
|
57
51
|
これは掛け算の性質によります。
|
58
52
|
|
59
|
-
つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端
|
53
|
+
つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた~~勾配~~☞誤差値0と天文数値の間で大きく振れることは
|
60
54
|
|
61
55
|
オリジナルタイプのDNNに限り、原理的に避けられません。
|
62
56
|
|
63
|
-
**ReLU**でなくて、**ReN
|
57
|
+
**ReLU**でなくて、**ResNet** 等は "本当のソリューション"かもしれません。
|
64
58
|
|
65
59
|
|
66
60
|
|
67
|
-
【ただ、偶然にも、沢山のWの値と沢山の
|
61
|
+
【ただ、偶然にも、沢山のWの値と沢山のσの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】
|
2
修正
test
CHANGED
@@ -56,14 +56,12 @@
|
|
56
56
|
|
57
57
|
これは掛け算の性質によります。
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
当然沢山のWと沢山のΣの積は偶然的にも極端的な値にならなかった場合もあります。
|
62
|
-
|
63
|
-
**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
|
59
|
+
つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
|
64
60
|
|
65
61
|
オリジナルタイプのDNNに限り、原理的に避けられません。
|
66
62
|
|
63
|
+
**ReLU**でなくて、**ReNET** 等は "本当のソリューション"かもしれません。
|
67
64
|
|
68
65
|
|
66
|
+
|
69
|
-
|
67
|
+
【ただ、偶然にも、沢山のWの値と沢山のΣの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】
|
1
追加
test
CHANGED
@@ -43,3 +43,27 @@
|
|
43
43
|
|
44
44
|
|
45
45
|
ましてや100層であれば、前端の勾配値が10^100 order になり、天文数値ですよね ⇒『宇宙爆発』
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
ReLUの導関数値は1であっても、そしてNNのweightに正則化をかけても、weightの値は皆1以下でなければ、
|
50
|
+
|
51
|
+
沢山の積算によって莫大な数値になるのは『必然的な』出来事で、ReLUとはそれほど関係ありません。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
なので、NNの層数が多いほど前端の勾配値は0か天文数値かのような極端な値になりがちです。
|
56
|
+
|
57
|
+
これは掛け算の性質によります。
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
当然沢山のWと沢山のΣの積は偶然的にも極端的な値にならなかった場合もあります。
|
62
|
+
|
63
|
+
**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
|
64
|
+
|
65
|
+
オリジナルタイプのDNNに限り、原理的に避けられません。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
ReULでなくて、ReNET 等は本当のソリューションかもしれません。
|