【入門】分布外検知【Out of Distribution Detection】

分布外検知とは

一般的に機械学習のデータセットでは学習用・検証用のデータとも
学習したデータ分布と同じデータ分布(分布内のデータ)からサンプルされたデータがモデルに入力されることを仮定しています。
例えば、犬、猫とラベル付けされたデータセットで学習した際には、テスト時にも犬か猫の画像しかないデータセットで評価します(図1)。

図1:犬、猫を分類するモデルの学習時

しかし、実際にデプロイした際には、犬や猫以外の画像(分布外のデータ)が入力されることがあるはずです。例としては、犬と猫の分類をするモデルに、人間や猿などの犬・猫以外のデータが入力される可能性がありますが、この時にはこのモデルは正しく推論できません(図2)。

図2:犬・猫以外のデータが入力された時

ですので、分布外のデータが入力されたことを検知しアラートを上げるようにするべきです。
つまり、モデルが知らないデータが入力された時には知らないとしっかり通知できるような仕組みが必要になってきます。

このように分布外のデータを検知することを目標とした分野がOut of Distribution Detection(分布外検知)という分野です。

実際、この話は機械学習モデルに限らず、ルールベースのシステムでも同じような考え方は大事になってきます。
つまり、ルールを決めたデータから外れたデータは、予め決めておいたルールでは対応できないためです。

問題設定の種類

One Class 分布外検知(分類)

分布内のデータはすべて同じクラス(ワンクラス)で、そのクラス以外のデータが入力された時にそれを検知できるか?という問題設定です。
例えば、人だけで学習したデータに犬や猫などの人以外のデータ
が入力された時に検出できるかを計測します。

Multi Class 分布外検知(分類)

分布内データに複数のクラス(マルチクラス)があって、その複数のクラス以外のデータが
入力された際にそれを検知できるかを問う問題設定です。
例えば、犬・猫を分類しているモデルに人が入力された時に
それを検知できるかを検証します。

さらにこの中にラベルが使えるか使えないかで
問題設定が分かれてきます。

タイトルとURLをコピーしました