Hello Computer Vision

비전공생의 Learning Confidence for OOD detection in Neural Networks 논문리뷰 본문

Out of Distribution

비전공생의 Learning Confidence for OOD detection in Neural Networks 논문리뷰

지웅쓰 2023. 9. 27. 18:27

https://arxiv.org/pdf/1802.04865.pdf

 

Introduction

무언가를 결정할 때 어떤 것을 알고 모르는 것은 매우 중요하다. 그러나 최근 딥러닝 분류기는 성능이 좋기도 하지만 높은 값의 확률을 주면서 틀린 값을 주기도 한다. 또한 이러한 모델들은 OOD데이터에 대해서도 잘 구분하지 못한다. 이러한 문제점은 AI saftey 의 큰 문제점이라고도 할 수 있다. 따라서 해당 논문에서는 분류기로 하여금 confidence estimate를 각 input에서 뽑도록 훈련시킨다.

 

Confidence Estimation

모델로 하여금 input에 대해 confidence 를 산출하는 것은 어려운 일이다. 따라서 저자는 모델에게 인센티브를  따로주었다고한다.

 

해당 방법에 대한 motivation은 다음과 같다. 만약 시험을 보고 있는 상황에서 학생은 힌트를 받을 수 있다. 그러나 힌트를 받을 때마다 약간의 penalty(아마 약간의 마이너스점수?)를 받는다. 따라서 학생은 총점에서 좋은 점수를 받기 위해서는 자신있는 문제에 대해서는 그대로 풀고 자신 없는 문제에 대해 힌트를 받는 전략을 사용할 수 있다. 이러한 비슷한 방식으로 저자는 ground truth label없이 confidence estimate(ood 인지 아닌지 판별하는 지표)을 가르쳤다고 한다.

 

confidence estimation branch 는 기존 네트워크에서 추가로 layer가 붙어있으며 같은 input을 받는다. output으로는 0~1의 스칼라 값을 내뱉으며 sigmoid 함수를 가지고있다. confidence value c는 모델이 input에 대하여 correct prediction 을 뱉는지안뱉는지를 측정하는데 모델이 confident 하다면 1, 그렇지 않다면 0을 내뱉는다. 

앞에서 언급한 힌트를 모델에게 주기위해 softmax prediction probabilities는 original prediction - target probability distribution인 y 사이에서 interpolation을 갖게된다. 이 interpolation의 정도는 confidence값을 이용한다. 

식을 보면 알 수 있겠지만 만약 모델이 confident하다면 (c = 1) y값을 활용하지 않고 본인이 뱉은 값만을 이용할 것이고 confident하지 않다면 y값을 활용하게 된다.

Loss는 기본적으로 calibrated 된 NLL loss(Cross Entropy)를 사용하게 된다. 그러나 모델은 c = 0 값을 계속 뱉어 loss를 낮추는 방법을 사용할 수 있다. 따라서 추가적인 regularizer loss를 추가한다.

따라서 모델은 c값을 확실한 input에 대해서는 1과 가깝게 내도록 노력하고 확실하지 않은 input에 대해서는 0을 뱉도록 노력한다. 그러나 이러한 과정에서 모든 sample 에 대하여 c값을 loss가 낮도록 일정한 값을 내뱉는 것이 발견됐다고 한다. 따라서 앞에서 hyper parameter인 $\beta $를 도입해 confidence loss를 weighting 하는 $\lambda $를 조절한다.(해당 방법에 대해서는 논문에 잘 언급되어 있지 않은데 관심있으시다면 공식 github에서 확인하면 될 거 같다!) 

 

Out of Distribution Detection

 OOD데이터가 들어온다면 c값을 낮을 것이기 때문에 일정 threshold값을 두어 ood인지 아닌지 판별한다.

 

Result