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

質問編集履歴

3

表題変更

2021/06/12 03:13

投稿

MagMag
MagMag

スコア80

title CHANGED
@@ -1,1 +1,1 @@
1
- 深層学習の学習曲線はなぜloss値が上下するのか?
1
+ 深層学習の学習曲線はなぜloss値が上下するのか?(なぜ単調減少でないのか?)
body CHANGED
File without changes

2

誤字修正

2021/06/12 03:13

投稿

MagMag
MagMag

スコア80

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ディープラーニングの学習曲線について、epochを増やして学習を重ねているのに、なぜlossが上がったりすることがあるのでしょうか?
2
2
 
3
- 例えば、以下の図では、train_lossも、test_accuracyも単調減少、単調増加ではなく、たまに上下しています。自分なりに考えた仮説は以下ですが、他にも理由はありますでしょうか?
3
+ 例えば、以下の図では、train_lossも、test_accuracyも単調減少、単調増加ではなく、たまに上下しています。自分なりに考えた仮説は以下ですが、他にも理由はありますでしょうか?(図はイメージなので、この図を出した学習方法に依存した回答でなくて問題ありません)
4
4
 
5
5
 
6
6
  1、SGDを使っている場合、勾配更新が選択したミニバッチに依存するため、真の微分係数とは別の方向に更新されてしまうことがある (train_lossがばらつくのもこれが主原因?)
@@ -9,7 +9,7 @@
9
9
 
10
10
  また、この例だと、test_accuracyは下にスパイク(外れ値)を出していますが、逆に上にスパイクを出す場合、最終的なパラメータはスパイクしたものも含めてtest_accuracyの一番高い値を選択すべきでしょうか?それとも、(判断基準は必要ですが)スパイクしていないものの中で最大値を取得するべきでしょうか?
11
11
 
12
- 考え方として、汎化性能が高いパラメータを選択する、という意味合いでスパイクも含めてパラメータ選定すべきかと思いますが、スパイク値となっているパラメータを採用するのがどうも気持ちいです(例えば、全体の学習曲線の傾向に関係なく、1つだけtest_accuracyの高いスパイクが発生している場合など)。
12
+ 考え方として、汎化性能が高いパラメータを選択する、という意味合いでスパイクも含めてパラメータ選定すべきかと思いますが、スパイク値となっているパラメータを採用するのがどうも気持ちいです(例えば、全体の学習曲線の傾向に関係なく、1つだけtest_accuracyの高いスパイクが発生している場合など)。
13
13
 
14
14
 
15
15
  ![学習曲線](0922d7642d6aed63323dfec9e4d2d61c.png)

1

表現追記

2021/06/12 03:12

投稿

MagMag
MagMag

スコア80

title CHANGED
File without changes
body CHANGED
@@ -1,16 +1,15 @@
1
1
  ディープラーニングの学習曲線について、epochを増やして学習を重ねているのに、なぜlossが上がったりすることがあるのでしょうか?
2
2
 
3
- 例えば、以下の図では、trainのlossも、test_accuracyも単調減少、単調増加ではなく、たまに上下しています。
3
+ 例えば、以下の図では、train_lossも、test_accuracyも単調減少、単調増加ではなく、たまに上下しています。自分なりに考えた仮説は以下ですが、他にも理由はありますでしょうか?
4
- 自分なりに考えた仮説は以下ですが、他にも理由はありますでしょうか?
5
4
 
5
+
6
- 1、SGDを使っている場合、勾配更新が選択したミニバッチに依存するため、真の微分係数とは別の方向に更新されてしまうことがある
6
+ 1、SGDを使っている場合、勾配更新が選択したミニバッチに依存するため、真の微分係数とは別の方向に更新されてしまうことがある (train_lossがばらつくのもこれが主原因?)
7
-  (train_lossがばらつくのもこれが主原因?)
8
7
  2、損失関数の底での振動
9
8
  3、損失関数が多峰性であり、局所解を抜ける途中
10
9
 
11
10
  また、この例だと、test_accuracyは下にスパイク(外れ値)を出していますが、逆に上にスパイクを出す場合、最終的なパラメータはスパイクしたものも含めてtest_accuracyの一番高い値を選択すべきでしょうか?それとも、(判断基準は必要ですが)スパイクしていないものの中で最大値を取得するべきでしょうか?
12
11
 
13
- 考え方として、汎化性能が高いパラメータを選択する、という意味合いでスパイクも含めてパラメータ選定すべきかと思いますが、スパイク値となっているパラメータを採用するのがどうも気持ちい場合があります
12
+ 考え方として、汎化性能が高いパラメータを選択する、という意味合いでスパイクも含めてパラメータ選定すべきかと思いますが、スパイク値となっているパラメータを採用するのがどうも気持ちいです(例えば、全体の学習曲線の傾向に関係なく、1つだけtest_accuracyの高いスパイクが発生している場合など)
14
13
 
15
14
 
16
15
  ![学習曲線](0922d7642d6aed63323dfec9e4d2d61c.png)