본문 바로가기

AI/논문리뷰

[논문리뷰] A Baseline for Detecting Misclassified and Out-Of-Distribution Examples in Neural Networks

논문 링크 : https://arxiv.org/abs/1610.02136

 

A Baseline for Detecting Misclassified and Out-of-Distribution Examples in Neural Networks

We consider the two related problems of detecting if an example is misclassified or out-of-distribution. We present a simple baseline that utilizes probabilities from softmax distributions. Correctly classified examples tend to have greater maximum softmax

arxiv.org

 해당 논문은 Out-of-distribution을 다룬 최초의 논문으로 2017 ICLR conference에 실린 논문이다. 최근 Out-of-distribution detection 연구에 관심이 생겨 관련 논문을 survey하는 과정 중, milestone이 되는 해당 논문을 정리해놓을 필요성을 느꼈다. OOD detection task는 classification과 같은 일반적인 딥러닝 task에서 사용하는 accuracy가 아닌 별도의 metric을 사용하기 때문에 새로운 metric에 대한 이해와 OOD detection task에 대한 정확한 이해를 요구한다. 해당 논문은 이러한 OOD detection task에서의 용어들과 metric에 대해 정의하며, 앞으로 연구되어질 OOD detection task method의 baseline을 제공한다.

 

- OOD detection problem & Contirbution of this paper

 OOD detection problem은 우리가 학습할때 보았던 데이터셋을 in-distribution dataset으로 간주하여, in-distribution data와 나머지 데이터(out-of-distribution data)가 학습된 모델을 통과할 때  통과한 데이터가 in-distribution인지 out-of-distribution인지를 detection하는 problem이다. 위의 그림과 같이 CIFAR-10을 in-distribution이라고 간주한다면, 해당 데이터셋을 제외한 나머지(SVHN, LSUN, etc..., 경우에 따라 CIFAR-100도 가능) 데이터 셋들이 out-of-distribution에 속하게 된다. 이 때 in-distribution은 여러 데이터셋을 사용할 수 있으며, 이러한 task는 Mult-class와 One-class OOD로 나누어진다. Multi-class는 위와 같은 task를 말하고, one-class는 하나의 데이터 셋에 대해서 하나의 class만 학습을 하고 나머지 class 데이터 분포들은 모두 out-of-distribution으로 간주를 하는 problem을 말한다.

 

본 논문의 contribution은 위와 같으며, 짧게 정리하면 다음과 같다.

1. 논문에서는 incorrect(misclassified and out-of-distribution) 데이터 example이 correct한 example 보다 더 낮은 max prediction probability을 갖는다는 것을 보여준다.

2.  이러한 probability를 기반으로한 방법을 통해 OOD&misclassifed를 detection하는 baseline 방법을 제시하며, 해당 방법이 efficacy 하다는 것을 다양한 task에서의 실험을 통해 증명한다.

3. baseline의 성능을 능가하는 새로운 방법을 제안한다.

4. OOD detection의 성능을 측정할 수 있는 표준 metric을 제안한다.

 

 

- Evaluation Metrics

 우리는 모델을 평가하는데 있어서 일반적으로 Accuracy metric을 사용하며, 해당 metric은 OOD detection task에 적합하지 않다. 예를 들어 위의 그림과 같이 99마리의 파란색 물고기(in-distribution fish)가 있고, 1마리의 빨간색 물고기(out-of-distribution fish)가 있다고 가정할때, 무조건 파란색 물고기라고 판정을 내리는 Cheating model이 있다고 생각해보자. 해당 model의 성능은 99%의 accuracy를 가지며, accuracy 관점에서는 해당 모델을 아주 좋은 model이라고 결론을 내릴 수 있다. 하지만 real-world에서는 이러한 out-of-distribution이 매우 적은 수를 가지고 있기 때문에 (e.g.불량품 데이터) 위와 같은 상황이 빈번하게 발생하며, OOD detection 관점에 있어서 해당 metric을 사용하는 것은 매우 불합리하고 적절하지 못하다는 것을 알 수 있다. 따라서 해당 논문에서는 OOD detection의 성능을 잘 반영할 수 있는 새로운 metric을 제안한다.

 

 해당 논문에서 제안하는 두 가지 metric은 AUROC와 AUPR이다. 추후 연구에 가장 많이 사용하는 metric은 AUROC 이며, AUROC는 ROC curve 아래의 면적을 의미한다. 두 metric의 축이 되는 TPR, FPR, Precision, Recall은 위의 식과 같이 정의되며, TP는 True Postive, TN은 True negative, FP는 False Postive, FN은 False Negative를 의미한다.

 

 여기서 Positive는 판단자가 "그렇다"라고 판단했다는 의미이고, Ture는 옳게 판단한것, False는 틀리게 판단한 것을 의미한다. 예를 들어 환자가 암에 걸렸는지를 의사가 판단할때, True Postive는 환자가 암에 걸렸다고 판단한 사람중에 옳게 판단한 환자 수가 될것이고, False Negative는 암이 아니라고 판단한 했는데, 그것이 잘못판단된 환자의 수를 의미할 것이다.

 

 OOD detection task에서 in-distribution이라고 판단한 것을 positive, out-of-distribution이라고 판단한 것을 negative라고 할때, TP는 in-distribution이라고 제대로 판단한 example 수, FN은 원래 in distribution인데 out-of-distribution이라고 잘못 판단한 example 수가 될것이고 TPR은 in-distribution 중 얼마나 in-distribution이라고 잘 맞췄는지에 대한 비율이 될것이다. FP는 원래 out-of-distribution인데 in-distribution이라고 잘못 판단한 수가 될것이고, TN은 out-of-distribution이라고 제대로 판단한 수가 될것이다. 따라서 FPR은 원래의 전체 out-of-distribution 중 얼마나 in-distribution이라고 잘못 판단했는가(얼마나 누명이 씌워졌냐)를 나타낼것이다.

 

식으로 보면 직관적으로 이해하기 어려워서, 이를 그림으로 좀 더 자세히 설명해보고자 한다.

  왼쪽의 그림은 AUROC를 나타내며, 왼쪽 위로 그래프가 휠수록 좋은 성능을 나타낸다. (0,1)로 가깝게 수렴될수록 좋으며, 오른쪽 맨 위의 그래프가 가장 이상적인 그래프를 나타낸다. 오른쪽의 그래프들을 설명하기 위해 환자가 암에 걸렸는지를 의사가 판단하는 상황을 예를 들어보자. 오른쪽 분포 그래프의 가로축은 암일 확률을 의미하고, 빨간색 분포는 실제 암인 환자들의 분포, 파란색 그래프는 암이 아닌 환자들의 분포를 나타낸다. 오른쪽 맨위의 분포가 가장 이상적으로 분리된 분포이며, 이상적으로 암인 환자가 암일 확률이 더 높은 확률의 경향성을 보인다. (모델의 성능이 좋은 이상적인 경우)

  암인 환자와 아닌 환자를 잘 구분하지 못하는 모델일 수록 환자에 따른 암일 확률의 차이가 점점 없어질 것이고 최악의 경우 오른쪽 맨 아래와 같이 완전히 겹쳐질 수 있다. 이 때는 의사가 암 진단을 내릴때 암일 확률을 참고해서 진단을 내려도 random하게 진단이 될것이다. (모델의 성능이 좋지 않은 가장 최악의 경우)

  만약에 어떤 환자가 암일 확률이 45%라고 하자. 그러면 이경우에는 의사는 암이라고 진단해야할까? 50%보다 낮으니까 아니라고 진단해야할까? 이 때 의사가 50% 보다 낮으니까 암이 아니라고 진단했다면, 의사의 판단 threshold는 50이 된다. 그리고 이 threshold는 오른쪽 그래프에서 흰색 막대기를 나타낸다. 만약에 어떤 겁쟁이 의사가 암일 확률이 1%라도 있으면 암이라고 판단했다고 가정하자. 그렇다면 흰색 막대기는 맨 왼쪽에 있을 것이다. (막대기를 기준으로 오른쪽이 암, 왼쪽이 암이 아니라고 판단)

  이러한 threshold는 사람마다 다를것이고, 어떤 threshold가 옳은지는 알 수 없다. 이는 OOD detection을 하는 모델에서도 마찬가지이다. OOD가 max probability가 낮은 경향성을 가지고 있지만, OOD와 in-distribution을 구분 짓는 probability를 정하기는 어렵다. 그래서 우리는 모든 threshold에 대해서 성능을 찍어보는 것이다. 위의 그림에서는 흰색 막대기가 왼쪽으로 갈수록 positive의 비율이 무조건 올라가기 때문에 AUROC의 점은 오른쪽으로 그래프를 그리면서 찍을것이다. 반대로 흰색 막대기가 오른쪽으로 갈 수록 postive의 비율이 무조건 줄것이기 때문에 AUROC의 점은 왼쪽으로 그래프를 그리면서 찍을것이다. 따라서 threshold에 따른 TPR, FPR을 찍을수 있고, 이러한 곡선이 AUROC가 되는 것이다.

  하지만 postive와 negative의 example 비율이 너무 많이 차이나게 되면 AUROC는 이를 반영할 수 없기 때문에 이러한 경우에는 비율을 반영한 AUPR은 많이 사용한다고 한다.

 

 위의 왼쪽 사진을 보면 MNIST dataset에서 스마일을 그리는 이미지가 들어왔을때, 이러한 out-of-distribution을 모델은 uniform한 distribution을 출력하는것이 합리적이라고 생각할 수 있다. 하지만 실제로는 왼쪽의 그림처럼 3이나 0이라고 모델이 판단을 하고, 이 때 probablity는 상당히 overconfident하다는 것을 알 수 있다.

 해당 논문에서는 Probablity Mean 값을 추가적인 실험 지표로 사용을 했는데, 오른쪽 실험 결과에서 알 수 있듯이, misclassfied된 데이터들의 probability가 우리의 직관과 다르게 상당히 overconfident하다는 것을 알 수 있다. 하지만 그래도 correct한 example의 probabilty에 비해 평균 max probability가 낮기 때문에 이러한 confident를 이용하여 detection을 할 수 있다고 논문에서는 말한다.

 

 위의 첫번째 table은 misclassified, 두번째 table은 OOD detection의 성능을 나타낸다. 두 task detection에서 빨간 점선의 Probability Mean값을 보면 overconfident 하다는 것을 알 수있다. 그래도 baseline을 통한 실험결과 괜찮은 성능의 AUROC, AUPR을 나타내고 있다.

 

 

- Improved Method

  해당 논문에서는 baseline의 OOD detection 성능을 높이기 위해 새로운 방법을 제안하면서, 앞으로의 성능 개선 가능성을 보여준다. 위는 해당 방법을 나타내며, 학습 방법은 다음과 같다.

  파란색으로 색칠된 네트워크를 indistribution data로 먼저 학습시키는데, 이때 위는 classifier, 아래는 reconstruction error를 갖는 decoder 모델을 학습시킨다. (classifier의 성능을 높일 수 있는 기존의 방법을 그대로 가져옴.) 이렇게 학습시켜서 converge된 model 파란색 layer들을 freeze 시킨 뒤, OOD sample과 in-distribution sample을 이용하여 빨간색 layer를 학습시킨다. 마지막 layer에서는 해당 data가 noised(OOD), clean(in-distribution)인지를 binary classification 하는 task를 수행한다.

 

 

  해당 방법을 이용하여 학습시킨 모델의 성능은 위의 슬라이드 테이블과 같으며, 성능 개선이 상당히 되었음을 보여준다.

 

Improved Method의 성능이 잘나오는 이유는 이미 봤던 OOD, in-distribution에 대해 성능평가를 하기 때문에 당연히 성능이 좋게 나올것이라고 생각한다. 그리고 데이터셋 역시 간단한 MNIST dataset을 사용했다. method 역시 매우 간단하기 때문에 해당 방법이 좋다는 관점 보다는 논문에서는 이렇게 기존의 baseline보다 더 OOD detection의 성능 개선을 할 수 있다고 가능성을 보여준다고 해석하는 것이 맞는것 같다.

 

이상 논문 리뷰를 마치겠습니다.

 

해당 논문 리뷰의 몇가지 그림과 설명은 다음의 링크들에서 가져오거나 도움을 받았습니다.

https://angeloyeo.github.io/2020/08/05/ROC.html

 

ROC curve - 공돌이의 수학정리노트

 

angeloyeo.github.io

https://www.youtube.com/watch?v=xaABseUoHAI