負のクラスのインスタンスが非常に似ているバイナリ分類の問題に対処するにはどうすればよいですか?[複製]
Dec 01 2020
たとえば、固定サイズの写真に猫が含まれているかどうかを検出したいとします。しかし、データセットとして、猫の写真が10000枚、猫を含まないが互いに非常に似ている写真が30000枚あります。たとえば、「猫ではない」クラスの30000枚の写真には、1種類または2種類のクモの写真しか含まれていないとします。
CNNをトレーニングすると、テストセットで高スコア(ここでは高スコア=ほぼ完全に対角の混同行列)を達成できますが、現実の世界でCNNを使用したい場合は、ほとんどすべてが次のように分類されます。猫。
この場合、なぜネットワークはひどく一般化するのですか?データセットがデータの種類を表していない場合でも、CNNは現実の世界で見るでしょう。「私は猫の例を10000見たので、次のように見えないものは何でも見た」とCNNが言うのは簡単ではありません。猫は猫ではない」?
(より多くのデータを収集する以外に)この問題にどのように対処しますか?
回答
etiennedm Dec 01 2020 at 21:30
この場合のCNNは、猫とは何かを学習するのではなく、猫がいる画像と猫がいない画像を区別するものを学習します。
すべての「猫なし」の画像にスパイダーが含まれている場合、CNNはスパイダーを検出することによってのみ収束する可能性があります。スパイダーのある画像は「猫なし」に属し、その他の画像は「猫」に属します。 。これが、データのテストに関する非常に優れた混同行列と、実際のパフォーマンスの低さを説明しています。
このような状況を回避するためのいくつかのオプションがあります。
- あなたが言ったようにあなたの「猫なし」ラベルに他の画像を追加します(例えば公開データセットを使用して)
- 1クラスの分類アプローチを試してください。ニューラルネットワークに精通している場合は、オートエンコーダーの再構築エラーを掘り下げることができます(この投稿:1つのカテゴリのデータのみでデータセットを使用する方法またはこのsklearnガイドを参照してください)
それが役に立てば幸い