LSTMネットワークが過学習を起こしているときの対応
52 views (last 30 days)
Show older comments
LSTMネットワークを用いて為替市場の時系列データを学習させ予測させているのですが、予測時に予測値が一方方向に飛んで行ってしまい学習時に学習を初めてすぐに損失値が0.2あたりまで下がりその後ずっと横ばいだったことから過学習を起こしているのではないかと推測しました。そこでどのようにすれば過学習の対策が出来るのかご教授いただきたいです。学習データの個数は5000なのでデータ不足による過学習の可能性は少ないかなと思っています。
0 Comments
Answers (2)
Hiroshi Miyagawa
on 25 Nov 2022
LSTMネットワークの過学習を抑制する方法は色々なページで紹介されていますので、「LSTM」「過学習」「防ぐ」などのキーワードで調べていただくとして、
過学習を抑制する方法の一つとして「ドロップアウト」があります。MATLAB の Deep Learning Toolbox の lstmLayer をお使いであるならば以下のページが参考になると思います。
いくつか載っている「例」のうち「深い LSTM ネットワーク」をご確認ください。
本当に過学習なのか?という検証はおいといてます。
0 Comments
Hiro Yoshino
on 25 Nov 2022
<< 過学習について>>
- 損失値が小さくなり、その後横ばい: 学習が進んでいません。過学習では有りません
- データ不足: 過学習とは直接関係有りません。少ないデータが理由で、学習回数がデータに対して過多である場合に過学習になります
過学習かどうかは、テストデータを使って評価する必要が有ります。一般に、訓練誤差に対して汎化誤差が大きい時に"過学習"、訓練誤差&汎化誤差の両者が大きい場合は訓練不足 or モデルが適当でないと解釈します。
<< 解決案>>
[1] 汎化誤差を評価する
訓練誤差との乖離が確認できれば、”過学習”状態です
- Epoc 数を少なくし、汎化誤差が大きくなる直前に学習を打ち切ります
- 上記のドロップアウト等の、正則化のテクニックを使います。これは色々あるのでご自身で調べてください
乖離が確認出来ない場合、精度を向上させる予知が有ります
- ネットワークの学習率を小さくして、Epoc 数を増やします
- モデルをもっと複雑にして、表現力を上げます(おのずと学習時間は伸びます)
[2] 予測値が飛んで行ってしまい....
0 Comments
See Also
Categories
Find more on 時系列、シーケンス、およびテキストを使用した深層学習 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!