MRIデータを使用して癌に対する反応を予測する4層CNNがあります。ReLUアクティベーションを使用して、非線形性を導入します。列車の精度と損失はそれぞれ単調に増加および減少します。しかし、私のテストの精度は大きく変動し始めます。学習率を変更して、レイヤー数を減らしてみました。しかし、それは変動を止めるものではありません。私もこの答えを読み、その答えの指示に従ってみましたが、再び運はありませんでした。誰が私が間違っているのかを理解するのを手伝ってもらえますか?
MRIデータを使用して癌に対する反応を予測する4層CNNがあります。ReLUアクティベーションを使用して、非線形性を導入します。列車の精度と損失はそれぞれ単調に増加および減少します。しかし、私のテストの精度は大きく変動し始めます。学習率を変更して、レイヤー数を減らしてみました。しかし、それは変動を止めるものではありません。私もこの答えを読み、その答えの指示に従ってみましたが、再び運はありませんでした。誰が私が間違っているのかを理解するのを手伝ってもらえますか?
回答:
精度の定義を正しく理解していれば、精度(データクラスの%が正しく分類されている)は、たとえばMSE(平均二乗誤差)よりも累積的ではありません。そのためloss
、精度が変動している一方で、急速に増加していることがわかります。
直感的には、これは基本的に、正しいランダムな推測の数が常に変動するため、例の一部がランダムに分類され、変動が生じることを意味します(コインが常に「頭」を返す場合の精度を想像してください)。基本的にノイズに対する感度(分類によりランダムな結果が生成される場合)は、オーバーフィッティングの一般的な定義です(ウィキペディアを参照)。
統計および機械学習で最も一般的なタスクの1つは、「モデル」をトレーニングデータのセットに適合させて、一般的なトレーニングされていないデータの信頼できる予測を行うことです。オーバーフィッティングでは、統計モデルは基礎となる関係の代わりにランダムなエラーまたはノイズを記述します
過剰適合の別の証拠は、損失が増加していること、損失がより正確に測定されていること、シグモイド/しきい値(損失自体の場合のようです)によって押しつぶされていない場合、ノイズの多い予測により敏感であることです。直感的には、ネットワークが出力についてあまりにも確信している場合(間違っている場合)を想像できます。そのため、ランダムな誤分類の場合、しきい値から離れた値を与えます。
あなたのケースに関して、あなたのモデルは適切に正規化されていません、考えられる理由:
可能な解決策:
この質問は古いですが、まだ指摘されていないので投稿してください:
可能性1:トレーニングセットまたは検証セットのいずれかに何らかの前処理(ゼロの意味、正規化など)を適用していますが、もう一方には適用していません。
可能性2:トレーニング中およびスクラッチからの推論中に異なるパフォーマンスを実行するレイヤーを構築した場合、モデルが正しく実装されない可能性があります(例:トレーニング中にバッチ正規化の移動平均と移動標準偏差が更新されますか?ドロップアウトを使用する場合、ウェイトは適切にスケーリングされますか?推論?)。これは、コードがこれらをゼロから実装し、Tensorflow / Pytorchの組み込み関数を使用しない場合です。
可能性3:みんなが指摘しているように、過剰適合。検証の精度がエポック3から50%に固定されているため、特定の状況では他の2つのオプションがより可能性が高いと思います。手元に)。
@ dk14による回答への追加。モデルを適切に正規化した後でも変動が見られる場合、考えられる理由は次のとおりです。
あなたの状況で試すいくつかの方法があります。まず、バッチサイズを大きくしてみます。これにより、ミニバッチSGDの乱暴な動きが少なくなります。第二に、学習率を調整し、おそらくより小さく設定します。第三に、別のオプティマイザー、例えば、WRT機能の学習率を調整できるAdamやRMSPropを試してください。可能であれば、データを増やしてみてください。最後に、ドロップアウト近似を使用してベイジアンニューラルネットワークを試してください。これはYarin Galの非常に興味深い研究ですhttps://arxiv.org/abs/1506.02158