問題タブ [overfitting-underfitting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - RNN/GRU 検証損失は増加するが、平均絶対誤差は減少する
私は深層学習が初めてで、RNN (2 つの GRU レイヤーを使用) を実装しようとしています。最初は、ネットワークは非常にうまく機能しているように見えます。ただし、現在、損失と精度の曲線を理解しようとしています。以下の写真を添付しました。濃い青色の線はトレーニング セットで、シアンの線は検証セットです。50 エポックの後、検証の損失が増加します。私の推測では、これはオーバーフィッティングを示しています。ただし、検証平均絶対誤差が依然として減少する理由はわかりません。アイデアはありますか?
私が念頭に置いていた 1 つの考えは、これは私のデータセット内のいくつかの大きな外れ値によって引き起こされる可能性があるということでした. したがって、私はすでにそれをきれいにしようとしました。また、適切にスケーリングしようとしました。また、さらに正則化するためにいくつかのドロップアウト レイヤーを追加しました (レート = 0.2)。ただし、cudnn は tensorflow からの recurrent_dropout をサポートしていないように見えるため、これらは単なる通常のドロップアウト レイヤーです。
備考: 負の対数尤度を損失関数として使用し、テンソルフロー確率分布を出力密層として使用しています。
何を調査すべきかヒントはありますか?前もって感謝します
編集:コメントで推奨されている非確率プロットも添付しました。ここでは、平均絶対誤差が正常に動作しているようです (常に改善されるわけではありません)。
python - LASSO 回帰の Mse 値
私はなげなわ回帰に取り組んでいます。データセットには 155 行と 6 つの入力列があるため、最後のモデル (デシジョン ツリー reg、SVR、rfr ..) にはオーバーフィッティングの問題があります。k 分割交差検証を使用してなげなわ回帰を試したところ、以下の結果が得られました。
トレーニングとテストの MSE 値に従って評価する場合、投げ縄モデルを十分に評価できますか?
tensorflow - 画像の CNN + LSTM モデルは、検証データセットでうまく機能しません
私のトレーニングと損失曲線は以下のようになります。はい、同様のグラフに「古典的なオーバーフィッティング」などのコメントが寄せられています。
私のモデルは以下のようになります
上記のモデル構築コードで、コメント行をこれまでに試したアプローチの一部と考えてください。
この種の質問に対する回答とコメントとして与えられた提案に従いましたが、どれもうまくいかないようです。たぶん私は本当に重要なものを見逃していますか?
私が試したこと:
- さまざまな場所でさまざまな量のドロップアウト。
- 高密度レイヤーの包含と排除とそのユニット数で遊んだ。
- LSTM レイヤーのユニット数をさまざまな値で試しました (1 から始めて、現在は 16 で、最高のパフォーマンスが得られています)。
- 重みの正則化手法に出くわし、上記のコードに示すようにそれらを実装しようとしたため、さまざまなレイヤーに配置しようとしました(単純な試行錯誤の代わりに、それを使用する必要がある手法を知る必要があります-これは私がしたこととそれは間違っているようです)
- 一定数のエポックの後にエポックが進行するにつれて学習率を下げる学習率スケジューラーを実装しました。
- return_sequences = true を持つ最初のレイヤーで 2 つの LSTM レイヤーを試しました。
これらすべての後、私はまだオーバーフィッティングの問題を克服できません。私のデータセットは適切にシャッフルされ、80/20 のトレイン/ヴァル比率で分割されます。
データ拡張は、私がまだ試していない一般的に示唆されているもう 1 つのことですが、これまでに間違いを犯していないかどうかを確認し、それを修正して、今のところデータ拡張の手順に飛び込むことを避けたいと考えています。私のデータセットのサイズは次のとおりです。
表示されている数字はサンプルで、各サンプルには 3 つの画像があります。基本的にCNN
、モデルの説明に示されているように、3 つのメイジを一度に 1 つのサンプルとして時間分散に入力し、その後に他のレイヤーを入力します。それに続いて、トレーニング画像は 6780 * 3 で、検証画像は 1484 * 3 です。各画像は 100 * 100 で、チャネル 1 にあります。
RMS prop
テストよりも優れたパフォーマンスのオプティマイザーとして使用してadam
います
アップデート
いくつかの異なるアーキテクチャといくつかの再正規化とドロップアウトをさまざまな場所で試しましたが、新しいモデルである 59% 以下の val_acc を達成できるようになりました。
tensorflow - 検証の損失はトレーニングの損失よりも低いのですが、正則化を取り除く必要がありますか?
多くの人がいくつかの原因について話しているのを聞いたことがありますが、修正する必要があるかどうかについて実際に答えることはありません. データセットのリークをチェックし、TFRecords データセットからランダムに検証セットの 20% を取得しました。モデルに正則化レイヤーが多すぎるのではないかと疑い始めています。正規化を減らして、トレーニング行の上に検証行を取得する必要がありますか? それとも本当に問題ですか?