web-dev-qa-db-ja.com

CNNの畳み込み層での過剰適合の防止

TensorFlowを使用して、手話アプリケーションのたたみ込みニューラルネットワーク(CNN)をトレーニングしています。 CNNは27の異なるラベルを分類する必要があるため、当然のことながら、過剰適合に対処することで大きな問題が発生しています。私はこれを達成するためにいくつかのステップを踏みました:

  1. 高品質のトレーニングデータを大量に収集しました(ラベルごとに5000以上のサンプル)。
  2. 私は適度に洗練された前処理ステージを構築して、照明条件などの不変性を最大化できるようにしました。
  3. 完全に接続されたレイヤーでドロップアウトを使用しています。
  4. 完全に接続されたパラメーターにL2正則化を適用しています。
  5. トレーニングデータで0%に近い損失を達成できる最も単純なモデルを特定するために、(ハイパーウェアと時間の制限が与えられた場合に可能な限り)広範なハイパーパラメーターの最適化を行いました。

残念ながら、これらすべての手順を実行した後でも、約3%のテストエラーを達成することはできません。 (それはひどいことではありませんが、アプリケーションを実行可能にするには、大幅に改善する必要があります。)

正規化するために明示的な手順を踏んでいないので(層をできるだけ小さくする以外に)、オーバーフィッティングの原因は畳み込み層にあると思います。しかし、TensorFlowで提供される例に基づくと、正規化またはドロップアウトは通常、畳み込み層に適用されているようには見えません。

私がオンラインで見つけた唯一のアプローチは、畳み込み層での過剰適合の防止を明示的に扱っており、 確率的プーリング と呼ばれるかなり新しいアプローチです。残念ながら、これはTensorFlowに実装されていないようです。少なくともまだです。

つまり、TensorFlowで実現できるたたみ込み層の過剰適合を防ぐための推奨アプローチはありますか?または、確率的プーリングアプローチをサポートするカスタムプーリングオペレーターを作成する必要がありますか?

ご指導ありがとうございます!

13
Aenimated1

どうすればオーバーフィットと戦うことができますか?

  • より多くのデータ(またはデータ拡張)を取得する
  • ドロップアウト( paperexplanationcnnsのドロップアウト を参照)
  • DropConnect
  • 正則化(例については、85ページの my masters thesis を参照)
  • 機能スケールクリッピング
  • グローバル平均プーリング
  • ネットワークを小さくする
  • 早期停止

CNNを改善するにはどうすればよいですか?

トーマ、マーティン。 「 たたみ込みニューラルネットワークアーキテクチャの分析と最適化 」 arXivプレプリントarXiv:1707.09725(2017)。

分析手法については、2.5章を参照してください。その章の冒頭で述べたように、通常は次のことができます。

  • (I1)問題の定義を変更します(たとえば、区別されるクラス)
  • (I2)より多くのトレーニングデータを取得する
  • (I3)トレーニングデータを消去する
  • (I4)前処理を変更します(付録B.1を参照)
  • (I5)トレーニングデータセットを拡張します(付録B.2を参照)
  • (I6)トレーニング設定を変更します(付録B.3からB.5を参照)
  • (I7)モデルを変更する(付録B.6およびB.7を参照)

その他

CNNは27の異なるラベルを分類する必要があるため、当然のことながら、過剰適合に対処することで大きな問題が発生しています。

これがどうつながっているのかわかりません。過剰適合の問題なしに何百ものラベルを持つことができます。

15
Martin Thoma