回答編集履歴

5

修正

2018/04/14 00:46

投稿

oookabe
oookabe

スコア126

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

訂正と追加

2018/04/14 00:46

投稿

oookabe
oookabe

スコア126

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
- DNNのfeedback~~勾配~~☞誤差の不安定性についてactivation関数の導関数によく注目されていますが、実は
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[N])
25
+ ##w[i]*w[i+1]*...*w[N]*σ(z[i])*σ(z[i+1])*...*σ(z[L])
16
26
 
17
- ここのw,σは全部scalarです。N:総層数
27
+ w: DNNのweight, scalar; σ: activation関数の**導関数**, scalar; L:総層数
18
28
 
19
29
  なので
20
30
 
21
- **case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各Wの値がよっぽど大きくなければ、式全体の値が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してきた前端への~~勾配~~☞誤差値は0か天文数値かのような極端な値になりがちです。
59
+ なので、NNの層数が多いほどfeedbackしてきた前端への勾配(∝誤差)値は0か天文数値かのような極端な値になりがちです。
50
60
 
51
61
  これは掛け算の性質によります。
52
62
 
53
- つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた~~勾配~~☞誤差値0と天文数値の間で大きく振れることは
63
+ つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた勾配(∝誤差)値0と天文数値の間で大きく振れることは
54
64
 
55
65
  オリジナルタイプのDNNに限り、原理的に避けられません。
56
66
 

3

式訂正

2018/04/14 00:38

投稿

oookabe
oookabe

スコア126

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
- ##W[i]*Σ(z[i])*W[i+1]*Σ(z[i+1])*...*W[N]*Σ(z[N])
13
+ ---------scalar版(各層に一つunitしかない場合):
14
14
 
15
- W:DNNのweight matrix; Σ:activation関数の導関数の列vector; z:その層の入力
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の層数が多くなると、前端勾配値0と天文数値の間で大きく振れることは
53
+ つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた~~勾配~~☞誤差値0と天文数値の間で大きく振れることは
60
54
 
61
55
  オリジナルタイプのDNNに限り、原理的に避けられません。
62
56
 
63
- **ReLU**でなくて、**ReNET** 等は "本当のソリューション"かもしれません。
57
+ **ReLU**でなくて、**ResNet** 等は "本当のソリューション"かもしれません。
64
58
 
65
59
 
66
60
 
67
- 【ただ、偶然にも、沢山のWの値と沢山のΣの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】
61
+ 【ただ、偶然にも、沢山のWの値と沢山のσの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】

2

修正

2018/04/13 12:58

投稿

oookabe
oookabe

スコア126

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
- ReULでなReNET 等本当のソリューションかもしれません
67
+ 【ただ、偶然にも、沢山のWの値と沢山のΣの値うま組み合わせその積極端的な値にならなった場合ありまょう

1

追加

2018/04/13 04:03

投稿

oookabe
oookabe

スコア126

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 等は本当のソリューションかもしれません。