teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

修正

2018/04/14 00:46

投稿

oookabe
oookabe

スコア126

answer CHANGED
@@ -1,11 +1,12 @@
1
1
  **【DNNの勾配(∝誤差)問題をはっきりにします】**    間違ったところをご指摘下さい。
2
2
 
3
- DNNのl層目においてcost Cがweightに関勾配:
3
+ DNNのl層目において**cost C**l層目の**weight**に関する勾配:
4
- ∂C/∂w[l,jk] = a[l-1,k]*δ[l,j]
4
+ ##∂C/∂w[l,j,k] = a[l-1,k]*δ[l,j]
5
- a[l-1,k] : 前層(l-1)のunit kからの出力;
5
+ a[l-1,k] : 前層(l-1)のunit kからの**出力**
6
- δ[l,j] : 本層(l)のunit jの誤差。
6
+ δ[l,j] : 本層(l)のunit jの**誤差**
7
- ∴ 勾配∝誤差
8
7
 
8
+ **∴ 勾配∝誤差**
9
+
9
10
  勾配(∝誤差)の**不安定性**についてactivation関数の**導関数**によく注目されていますが、実は
10
11
  DNNのweightにも同様に関係します。
11
12
  例えば、i-層に対応するコスト関数の勾配(∝誤差)は以下のよう成分が含まれています。

4

訂正と追加

2018/04/14 00:46

投稿

oookabe
oookabe

スコア126

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

3

式訂正

2018/04/14 00:38

投稿

oookabe
oookabe

スコア126

answer CHANGED
@@ -1,34 +1,31 @@
1
- **【DNNの勾配問題をはっきりにします】**    間違ったところをご指摘下さい。
1
+ **【DNNの~~勾配~~☞誤差問題をはっきりにします】**    間違ったところをご指摘下さい。
2
2
 
3
3
 
4
- DNNのfeedback勾配の不安定性についてactivation関数の導関数によく注目されていますが、実は
4
+ DNNのfeedback~~勾配~~☞誤差の不安定性についてactivation関数の導関数によく注目されていますが、実は
5
5
  DNNのweightにも同様に関係します。
6
- 例えば、i-層に対応するコスト関数の勾配は以下のよう成分が含まれます。
6
+ 例えば、i-層に対応するコスト関数の~~勾配~~☞誤差は以下のよう成分が含まれています。
7
+ ---------scalar版(各層に一つunitしかない場合):
7
- ##W[i]*Σ(z[i])*W[i+1]*Σ(z[i+1])*...*W[N]*Σ(z[N])
8
+ ##w[i]*w[i+1]*...*w[N]*σ(z[i])*σ(z[i+1])*...*σ(z[N])
9
+ ここのw,σは全部scalarです。N:総層数
10
+ なので
8
- W:DNNのweight matrix; Σ:activation関数の導関数の列vector; z:その入力
11
+ **case 1:** 各σ<1であれば、れらをたくさん掛け算すれば0に近くなるで、各W値がよっぽど大きくなければ、式全体の値が0に近くなります ⇒ 『~~勾配~~☞誤差消失』問題発生。
9
12
 
10
- 上記式は理解しにくいので、scalar版(各層に一つunitしかない場合)を以下のようになります:
11
- ##w[i]*w[i+1]*...*W[N]*σ(z[i])*σ(z[i+1])*...*σ(z[N])
12
- ここのw,σは全部scalarです。
13
- なので、
14
- **case 1:** 各σ<1であれば、それらをたくさん掛け算すれば0に近くなるので、各Wの値がよっぽど大きくなければ、式全体の値が0に近くなります ⇒ 『勾配消失』問題発生。
15
-
16
13
  ところが、
17
14
  **case 2:** σ>=1 の場合も、w同士がほとんど1以下の場合、
18
- その積が**もっと**1より小さいので、 ⇒ 『勾配消失』問題発生。
15
+ その積が**もっと**1より小さいので、 ⇒ 『~~勾配~~☞誤差消失』問題発生。
19
16
 
20
17
  **case 3:** σ>=1の場合、 w同士がほとんど1以上の場合(例えば w=10)、
21
- すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『勾配爆発』問題発生。
18
+ すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『~~勾配~~☞誤差爆発』問題発生。
22
19
 
23
20
  ましてや100層であれば、前端の勾配値が10^100 order になり、天文数値ですよね ⇒『宇宙爆発』
24
21
 
25
22
  ReLUの導関数値は1であっても、そしてNNのweightに正則化をかけても、weightの値は皆1以下でなければ、
26
23
  沢山の積算によって莫大な数値になるのは『必然的な』出来事で、ReLUとはそれほど関係ありません。
27
24
 
28
- なので、NNの層数が多いほど前端の勾配値は0か天文数値かのような極端な値になりがちです。
25
+ なので、NNの層数が多いほどfeedbackしてきた前端~~勾配~~☞誤差値は0か天文数値かのような極端な値になりがちです。
29
26
  これは掛け算の性質によります。
30
- つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端勾配値0と天文数値の間で大きく振れることは
27
+ つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端へfeedbackされてきた~~勾配~~☞誤差値0と天文数値の間で大きく振れることは
31
28
  オリジナルタイプのDNNに限り、原理的に避けられません。
32
- **ReLU**でなくて、**ReNET** 等は "本当のソリューション"かもしれません。
29
+ **ReLU**でなくて、**ResNet** 等は "本当のソリューション"かもしれません。
33
30
 
34
- 【ただ、偶然にも、沢山のWの値と沢山のΣの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】
31
+ 【ただ、偶然にも、沢山のWの値と沢山のσの値うまく組み合わせ、その積は極端的な値にならなかった場合もありましょう。】

2

修正

2018/04/13 12:58

投稿

oookabe
oookabe

スコア126

answer CHANGED
@@ -27,9 +27,8 @@
27
27
 
28
28
  なので、NNの層数が多いほど前端の勾配値は0か天文数値かのような極端な値になりがちです。
29
29
  これは掛け算の性質によります。
30
-
31
- 当然沢山のWと沢山のΣの積は偶然的にも極端的な値にならなかった場合もあります。
32
- **ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
30
+ つまり、**ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
33
31
  オリジナルタイプのDNNに限り、原理的に避けられません。
32
+ **ReLU**でなくて、**ReNET** 等は "本当のソリューション"かもしれません。
34
33
 
35
- ReULでなReNET 等は本当ソリューションかもしれせん
34
+ 【ただ、偶然にも、沢山のWの値と沢山のΣの値うま組み合わせ積は極端的な値にならなった場合ありしょう

1

追加

2018/04/13 04:03

投稿

oookabe
oookabe

スコア126

answer CHANGED
@@ -20,4 +20,16 @@
20
20
  **case 3:** σ>=1の場合、 w同士がほとんど1以上の場合(例えば w=10)、
21
21
  すると、10層があれば W[1]*w[2]*...*w[10] = 10*10*10.... = 10^10 order ⇒『勾配爆発』問題発生。
22
22
 
23
- ましてや100層であれば、前端の勾配値が10^100 order になり、天文数値ですよね ⇒『宇宙爆発』
23
+ ましてや100層であれば、前端の勾配値が10^100 order になり、天文数値ですよね ⇒『宇宙爆発』
24
+
25
+ ReLUの導関数値は1であっても、そしてNNのweightに正則化をかけても、weightの値は皆1以下でなければ、
26
+ 沢山の積算によって莫大な数値になるのは『必然的な』出来事で、ReLUとはそれほど関係ありません。
27
+
28
+ なので、NNの層数が多いほど前端の勾配値は0か天文数値かのような極端な値になりがちです。
29
+ これは掛け算の性質によります。
30
+
31
+ 当然沢山のWと沢山のΣの積は偶然的にも極端的な値にならなかった場合もあります。
32
+ **ReLU**にしても, **sigmoid**にしても、NNの層数が多くなると、前端の勾配値0と天文数値の間で大きく振れることは
33
+ オリジナルタイプのDNNに限り、原理的に避けられません。
34
+
35
+ ReULでなくて、ReNET 等は本当のソリューションかもしれません。