본문 바로가기

머신러닝 읽어주는 남자

오분류(misclassify), 상관 없는 데이터(out-of-distribution)

반응형

A baseline for detecting missclassified and out-of-distribution examples in NN

분류기를 만들다보면 오분류되는 건 당연히 문제가 듣도 보도 못한 새로운 데이터가 와서 엉뚱한 클래스에 꽂혀버린다.

우리가 분류기를 만들 때 세상에 모든 클래스를 커버할 수 없기에 당연히 발생하는 문제다

 

문제는 뉴럴넷이 너무 over confidence하여 이를 걷어내기 어렵다. 

즉 틀렸음에도 점수가 너무 높다. (낮으면 쓰레스홀딩으로 걷어내면 될텐데 말이다.)

 

이를 야기하는 원인은 몇가지가 있는데

- sigmoid, softmax의 슬로프의 급격함

- depth 중가

- filter 수 증가

- batch norm 의 존재

- weight decay 감소

이다

 

Accuracy는 불필요한 것을 잘 걷어내는 것(rejection) 확인하기에 적합하지 않고

 

-AUROC:

TPR = TP/(TP+FN) : 실제 in 중에 얼마나 제대로 in으로 분류하는지 

FPR = FP/(FP+TN) : 실제 out 중에 얼마나 잘못 분류하는지

를 이용하여 그린 그래프의 면적

 

-AUPR

Precision = TP/(TP+FP) : in으로 분류한 것 중에 얼마나 제대로 분류

Recall = TPR = TP/(TP+FN) : 실제 in 중에 얼마나 제대로 in으로 분류하는지 

 

Mnist 기준 top1의 확률이

in: 평균 0.91, out: 0.86 정도로 out의 확률이 지나치게 높긴하지만,

AUROC, AUPR 기준으로 보면 in, out이 안 나뉘는 것은 아니다

 

그래서 sigmoid layer보다 abnormality module을 이용하여 학습을 시키면 좀더 향상을 시킨다.

abnomality 모듈의 입력은

- 확률값,

- 아웃풋 레이어 이전 레이어 값

- AE처럼 재생한 것과 원본과의 차이

로 이루어져 있고 이를 받아서 1~0값을 통해 in과 out을 검출한다.

그러면 전체적인 성능 향상이 있다.

 

그 외에도

- 확률이 유니폼하게 나오는 out 데이터를 gan으로 생성하여 학습하는 방법(training confidence-calibrated classifier for detecting out-of-distribution)

- 마할라노비스 거리를 통해서 out을 찾는 방법(A simple unified framework for tetecting out-of-distribution samples and adversarial attacks)

- 아웃데이터의 확률이 유니폼되도록 학습하는 방법(deep anomaly detection with outlier exposure)

 

 

 

반응형

'머신러닝 읽어주는 남자' 카테고리의 다른 글

음악 생성 테크트리  (0) 2020.03.01
docker에 대한 모든 것  (0) 2020.01.10
model knowledge distillation  (0) 2019.10.15
Adversarial examples  (0) 2019.01.15
NLP 관련 용어 총정리-1  (1) 2018.11.08