최근 OOD detection을 연구하면서, 해당 task와 유사한 다양한 task와 혼동되는 정의 및 활용을 명확히 정리하기 글을 쓰게 되었다. 아래의 링크는 정리를 위해 참고한 survey 논문이다.
https://arxiv.org/abs/2110.11334
- Introduction
OOD detection은 딥러닝 모델의 신뢰성과 안전성이 중요한 분야에서 활용이 되고 있으며, 예를들어 의학진단, 불량품 검출, 자율주행자동차를 예를 들 수 있다. 반면 몇몇의 다른 문제, 예를들어 anomaly detection(AD), novelty detection(ND), open set recognition(OSR), outlier detection(OD)들을 해결하는데 있어서 해당 문제들은 OOD와 motivation과 방법론이 매우 유사하여 연구자들과 실무자들에게 혼동을 주는 경우가 종종 있다. 따라서 이러한 문제들에 대한 차이를 이해하고 연관지어 하나의 연구분야로 일반화 하는것은 연구의 방향과 발전에 도움을 줄 수 있다.
위의 (a)에 대한 Sensory Anomaly Detection 문제는 하나의 class에 대해서 ID로 학습을 진행하고, test 단계에서 covariate shift된 OOD를 탐지하는 문제이다. covariate shift는 adversarial example, domain shift, style change가 있으며, 데이터 분포 P(X)에 대한 distribution shift로 여겨진다. (이미지가 나타내는 대상은 같다. = P(Y)는 같다.)
(b)는 One-Class Novelty Detection을 나타내며, (a)와 마찬가지로 학습시에는 하나의 class에 대해서 ID로 학습을 진행한다. 하지만 test 단계에서 탐지되는 OOD data는 semantic shift 된 이미지이며, 이를 탐지하는 것을 목표로 하는 task이다. semantic shift는 P(Y)에 대한 shift로 여겨지며, 즉 이미지가 나타내는 대상(label)이 달라지는 것(shift)을 의미한다.
(c)는 Multi-Class Novelty Detection이다. 해당 task는 학습시 하나의 class가 아닌 여러개의 class를 ID로 학습을 수행하며, test시에 (b)와 마찬가지로 semantic shift된 이미지를 OOD로 여겨 탐지하는 task이다.
(d)는 Open Set Recognition 혹은 Out-of-Distribution Detection을 나타내며, 해당 task는 (c)와 동일하게 학습하고 test하지만, 차이점은 test시에 ID에 대해서 prediction을 수행한다는 차이점이 있다.
(e)는 Outlier Detection으로 train과 test의 단계로 나눠지지 않으며, 다수의 distribution으로 부터 shift된 outlier를 탐지하는 것을 목표로 한다.
위의 모든 problem은 모두 open world assumption에서 ID와 OOD를 정의한다는 공통점이 있다. 해당 문제들은 covariate, semantic shift의 따라서, single class인지 multi class인지에 따라서, classification prediction의 필요 여부에 따라서 inductive와 transductive에 따라서 topic이 나누어진다.
- Anomaly Detection
Anomaly Detection의 핵심은 nomal을 명확하게 정의하고(일반적으로 sub-class 없이) 일부 특정 시나리오에서 가능한 모든 anomaly example을 탐지하는 것이다. 위의 그림을 보면 알 수 있듯이, Novelty detection과 Sensory Anomaly Detection을 통틀어 Anomaly Detection이라 하며, semantic/covariate shift에 따라서 정의를 나눌 수 있다.
AD는 adversarial defense, biometric과 artwork의 위조 인식, 이미지 포렌식, industrial inspection 등에 활용된다. 가장 유명한 academic AD benchmark는 industrial inspection을 위한 MVTec-AD이다.
Academic benchmark의 예시로 훈련중 MNIST의 하나의 클래스를 ID로 학습하고, 테스트 중 모델에게 나머지 9개의 클래스를 구분하는 task를 수행한다. 또한 Evaluation을 위해 AUROC와 AUPR을 사용한다.
- Novelty Detection
Novelty Detection은 훈련 카테고리 범주안에 속하지 않은 데이터를 detect하는데 초점을 맞춘다. novelty detction은 train 단계에서의 class 갯수에 따라 one class ND, multi class ND로 나눠진다. multi class ND는 class가 맞더라도 오직 Novel인지 아닌지에만 초점을 맞춘다.
ND는 영상 감시, 행성 탐사, incremental learning에 활용이 된다. 해당 실험은 MNIST를 예시로 들면, one-class의 경우 하나의 class에 대해서 ID로 간주하고 나머지 class에 대해서 novel로 간주하며, multi-class의 경우에서는 6개의 class를 ID로 간주하고 나머지 4개를 OOD로 간주하여 실험을 진행한다. 해당 평가지표 역시 AD와 동일하게 AUROC, AUPR, F-scores를 사용할 수 있다.
- Open Set Recognition
Open set recognition은 multi-class classifier가 ID에 대해서는 잘 분류하고, OOD에 대해서는 잘 detect하는 것을 동시에 요구한다. OSR은 OOD samples이 semantic shift라 가정한다. OSR과 multi-class ND는 거의 비슷하며, 유일한 차이점은 ID에 대해서 정확한 classification을 수행한다는 차이점이 있다.
OSR은 multi-class ND와 같이 MNIST에 대해서 6개의 class를 ID로 간주하고 나머지 4개를 OOD로 간주하여 실험을 진행한다. ND와의 차이점은 ID로 간주한 6개의 class에 대해서 좋은 classificer를 요구한다는 점이다. OSR은 ND와 동일한 AUROC, AUPR, F-scores를 평가 지표로 사용하며, 추가적으로 ID에 대한 accuracy를 사용할 수 있다.
- Out-of-Distribution Detection
deep learning model은 overconfident한 경향성을 갖기 때문에, OOD detection에 대한 중요성이 커지며, OSR과 마찬가지로 OOD에 대한 detection을 잘 수행하는 능력 뿐 만 아니라, ID에 대해 classification하는 능력이 요구된다. OSR과 OOD의 차이점은 3가지가 있는데 다음과 같다.
1. Different benchmark setup : OOD와 OSR은 실험 setup에 차이가 있으며, OSR은 하나의 데이터셋에서 ID와 OOD 클레스를 쪼개어 사용하는 반면, OOD는 하나의 데이터셋을 ID로 두고, 해당 데이터셋의 클레스와 겹치지 않는 다른 데이터셋을 OOD데이터로 두어 setup한다. OSR과 OOD는 benchmark dataset setting은 다르지만, 같은 semantic shift detection problem을 해결한다.
2. No additional data in OSR : OSR은 theoretical open-risk bound(무슨 말인지 모르겠음.)를 보장하기 위해 학습시 추가적인 데이터를 사용하지 않는다. 이말은 즉, Outlier Exposure과 같이 보조 데이터셋을 사용하지 않는다고 설명되어있다.
3. Broadness of OOD detection : OSR과 비교하여 OOD는 learning task를 광범위 하게 포괄한다.(예를들어, OOD의 learning task는 mulit-label classification과 같은 문제를 포괄한다.)
- Outlier Detection
OD는 위의서의 AD,ND,OOD와 다르게 모든 observation을 직접 처리하고 contaminated dataset으로부터 이상치를 select하는 것을 목표로한다. OD는 train과 test 절차를 따르지 않으며, 모든 observation에 접근한다. 해당 접근은 일반적으로 inductive(귀납적)보다 transductive(변환적)이다..?
OD은 covariate shift 혹은 semantic shift로 인해서 주어진 set에서 두드러지게 다른 sample을 detect하는것을 목표로한다. 다른 sub-topic과 다르게 OD는 ID를 sample의 대부분으로 정의를 하며, outlier는 covariate shift 혹은 semantic shift로 인해 발생한다.
OD는 주로 데이터 마이닝 작업에 적용되며, 비디오 감시 및 dataset cleaning과 같은 작업에도 사용된다. OD의 benchmark setting은 inlier로 적용할 하나의 class를 선택하고, 다른 class의 small fraction을 outlier로 선택한다. OD의 성능은 다른 task와 동일하게 AUROC, AUPR, F-score를 사용할 수 있으며, 이외에도 작업에 따른 추가적인 성능 지표를 사용할 수 있다. 예를들어 dataset cleaning task에서 clean된 dataset으로 학습된 classifier의 성능을 예로 들 수있다.
이상 각 sub-topic에 대해 정리를 해봤습니다. 다음 글을 통해 각 topic에 해당하는 방법론에 대해 정리를 해볼 생각입니다.