質問: 例えば、DeepLearningによって訓練された、画像中の犬と猫を分類する精度の高い分類器があるとします。 この分類器に犬の画像を入力したとき、犬ラベル(犬らしさを表す確率など)が出力されると思います。 猫の場合も同様です。 しかし、犬ではない画像、例えば人の画像を入力した場合、そもそも犬でも猫でもないので「犬でも猫でもない」と出力したいのですが、どのようにすれば良いのでしょうか。特に何も対処しないと、人の画像を入力しても犬か猫のどちらかに分類されてしまうと思います。 分類器を訓練するときに、犬猫に加えて人の画像も訓練データとして扱うなど考えましたが、 あまり詳しくなく申し訳ないのですが、何か他に有効な方法はありますでしょうか。
回答: シンプルなのは犬でも猫でもない画像を収集して3クラス識別モデルを構築することです。ただ、このアプローチは犬でも猫でもないの境界が決まっていることが条件になります。質問に記載のように人の画像をくわえた場合、花の画像に対してどのような結果になるのかを保証することができません。 「ではない」に境界が決められないような場合は、自己符号化器を活用するといいかと思います。自己符号化器は、与えられたデータから次元を小さくしたベクトルを抽出し、このベクトルをインプットに元のデータを復元するニューラルネットワークです。この自己符号化器に犬と猫のデータのみ使って学習させます。うまく学習できると犬と猫に過剰適合したモデルになります。これは犬や猫以外だとうまく復元しないことを意味します。 この特徴を生かして犬猫以外を識別します。つまり復元画像が元画像に近似していれば犬猫で、そうでなければ以外と判定します