2016-05-04 12 views
5

私は、13000のトレーニング画像と3000のバリデーション画像で11クラスの画像分類器を構築しようとしています。私はmxnetを使って訓練されている深いニューラルネットワークを使用しています。トレーニングの精度は向上しており、80%を超えていますが、検証の精度は54〜57%の範囲で増加していません。 ここで問題になるのは何ですか?私はイメージの数を増やすべきですか?ディープニューラルネットによる検証の精度を上げるには?

+0

妥当性の確度は、54-57%に固定されるまで段階的に増加しましたか?それとも、最初からほぼ同じだったのでしょうか? –

+0

妥当性の確度は段階的に増加していませんでしたが、54-57%に固定されました – sau

+0

トレーニングの精度はどのように計算されましたか?あなたが訓練したバッチごとに計算しましたか?または、トレーニングセット全体について? – Chaine

答えて

17

ここで問題となるのは、ネットワークがある時点で有用な一般的な機能の学習をやめ、トレーニングセットの特色に適応し始めることです。あなたは便利な機能を学習保つために、ネットワークを「強制」したいとあなたはここでいくつかのオプションがあります:

  1. 使用量の正則。体重を低く抑えようとすると、より一般化されることがよくあります。異なる正則化係数を試してみてください。 0.1,0.01,0.00を試してみて、精度にどのような影響があるかを見てください。
  2. 入力を無効にします(たとえば、一部のピクセルを黒または白でランダムに置き換えます)。これにより、入力から情報を削除し、ネットワークに重要な一般的な機能を引き継ぐよう強制します。入力のどの程度が壊れているかを決定するノイズ係数を試してみてください。研究によれば、15%〜45%の範囲のものはどれもうまく機能します。
  3. トレーニングセットを展開します。画像を扱っているので、あなたの既存の画像を(提案されているように)回転/拡大縮小などして拡大することができます。画像を前処理することもできます(例えば、白黒、グレースケールなどにマッピングするなど)。
  4. ノイズ除去基準を使用してレイヤーを事前にトレーニングします。。ネットワーク全体を細かく調整する前に、ネットワークの各レイヤーを個別に事前にトレーニングします。入力信号を再構築するのに有用な重要な一般的な特徴を拾うために、「強制」レイヤーを事前にトレーニングします。たとえば、自動エンコーダを見てください(過去に画像分類に適用されています)。
  5. ネットワークアーキテクチャで実験してください。ネットワークに十分な学習能力がない可能性があります。異なるニューロンのタイプ、層の数、隠れたニューロンの数を試してみてください。アーキテクチャ(入力よりもニューロンが少ない)と疎なアーキテクチャ(入力よりも多くのニューロン)を圧縮しようとしてください。

残念ながらうまく一般化訓練ネットワークのプロセスは、(あなたがこのアプローチを採用する多くの研究作品が表示されます)の実験と人間の監督のビットを持つパラメータ空間のほぼブルートフォース探査の多くが含まれます。各パラメータについて3〜5の値を試して、どこかにつながるかどうかを確認するとよいでしょう。

反復回数の関数として精度/コスト/ f1をプロットし、その動作を確認するとき。多くの場合、テストセットの精度がピークに達し、その後は連続的に低下します。したがって、優れたアーキテクチャー、正規化、破損などを除けば、最良の結果を生み出す反復の数を探していることになります。

もう1つのヒント:各トレーニングエポックで画像の順序がランダム化されていることを確認してください。

+0

答えをありがとう。 私は体重正則化を0.0001で使用しています。今度は、開始時とは異なる値でモデルを再学習し、正規化値を変更した時代に保存されたモデルでトレーニングを再開する必要があります。 私はいくつかのパラメータ値を使って試してみるつもりです。私はトレーニングイメージを増やすつもりです。 – sau

+0

startと異なる値を試してください。保存したモデルは使用しないでください。また、正則化係数の値を大きくすると、0.001,0.01,0.1となります。 – krychu

+0

私は0.001で試しましたが、今はモデルが収束していません。最後の10エポックモデルのトライアングと検証精度は9〜10%です。また、私は神経回路網の中でドロップアウトを使用しています。 – sau

1

これはモデルが特定の値に固定されるまで妥当性検査の精度が段階的に改善されているため、モデルがトレーニングセットをオーバーフィットしているように見えます。学習率がもう少し高いと、トレーニングの精度が向上し、検証精度が低下することになります。

トレーニングセットの数を増やすことが、この問題の最適な解決方法です。また、さまざまな変換(少し大きめの画像からランダムな部分を切り抜く)を既存の画像セットに適用し、モデルがよりよく学習しているかどうかを確認することもできます。

+0

高い学習率でトレーニングの精度も低下すると思います。私はそれを確認した。しかし、はい、私はそれぞれのイメージを自分で選んだので、それがどうして起こったのか疑問に思っています。トレーニングイメージを正確に認識できれば、同じ精度の検証イメージも認識する必要があります。トレーニングと検証の画像は非常に似ています。 – sau

+0

トレーニングと検証のイメージが「非常に似ている」と仮定すると、物を解釈するというあいまいなアイデアです。検証のために全く同じトレーニングイメージを維持しようとするのはどうでしょうか?それは訓練と同じ精度ですか? –

関連する問題