ODIN 논문의 제목은 Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks다. (링크)
저자는 Shiyu Liang, Yixuan Li, R. Srikant다.
ICLR 2018에 게재된 논문으로 Out-of-Distribution (OOD) 문제를 다루는 논문이다.
OOD는 모델이 배우지 않은 색다른 데이터가 들어왔을 때의 문제를 다루는 분야다.
딥러닝 모델의 신뢰성과 안전성이 중요한 자율주행과 같은 분야에서 활용한다고 알고있다.
Abstract
신경망에서의 OOD (out-of-distribution) 이미지 문제를 다룬다. 저자들은 ODIN이라 불리는 간단하면서 효율적인 방법을 소개하는데, 사전 학습된 뉴럴 네트워크가 필요하지 않다. Temperature scaling과 small perturbations를 입력에 더하는 작업을 활용한 observation 관찰에의해 동작한다. 이는 in-distribution 이미지와 out-of-ditribution 이미지 각각의 softmax score distributions를 분리하여 효율적인 탐지를 가능하게 한다. 베이스라인에 비해서 큰 폭의 성능 향상을 보이며 SOTA를 달성했다. 예를 들어서 ODIN은 (CIFAR-10과 Tiny-ImageNet에 적용하여) false positive rate를 베이스라인 DenseNet의 34.7%에서 4.3%로 감소시켰으며 true postivie rate는 95%를 달성했다.
ODIN은 Out-of-DIstribution detector for Neural networks의 약자다.
2. Problem Statement
본 논문에서는 pre-trained neural netwrok 상에서의 in-ditribution images와 out-of-ditribution images를 서로 구분하는데 각각의 분포들을 $P_X$와 $Q_X$로 나타내며, image space $\mathcal{X}$ 상에서 정의된다. Neural network $f$는 in-distribution $P_X$에서 뽑힌 데이터셋으로 부터 학습된다. 테스트 과정에서 $\mathcal{X} \times {0, 1}$ 상에서 정의되는 mixture distribution $\mathbb{P}_{X \times Z}$로 부터 새로운 데이터를 추출한다. 이때 conditional probability distribution $\mathbb{P}_{X | Z = 0} = P_X$ and $\mathbb{P}_{X | Z = 1} = Q_X$로 나타낸다. 주어진 mixture distribution $\mathbb{P}_{X \times Z}$로 부터 추출된 이미지 $X$에 대해서, 어떻게 $P_X$라는 in-distribution에 속하는지 아닌지를 판단할 수 있을지가 핵심이다.
본 논문에서는 out-of-ditribution images의 탐지에 초점을 맞춘다. 하지만 이미지가 in-distribution에 속하는 경우 올바른 클래스로 분류하는 사항 또한 동등하게 중요하다. 하지만 이는 쉽게 달성 가능한데, 만약 이미지가 in-distribution이라고 탐지한 경우 단순히 오리지널 이미지를 NN에 보내서 분류하면 된다. 따라서 in-distribution 이미지에 대한 NN의 예측은 변화하지 않고, OOD 이미지에 대한 탐지 성능 향상에만 집중하면 된다.
3. ODIN: Out-Of-Distribution Detector
현재 섹션에서는 ODIN을 소개하는데, 탐지기는 2가지 요소로 구성된다. Temperature scaling과 input preprocessing이다.
Temperature Scaling
$f = (f_1, ..., f_N)$은 $N$개의 클래스를 분류하기 위해 학습되었다고 가정한다.
각각의 입력 $x$에 대해서 NN은 라벨 $\hat{y}(x) = argmax_i S_i (x; T)$을 할당하며, 각 클래스에 대한 softmax ouput을 계산한다.
$S_i(x; T) = \frac{\text{exp}(f_i (x) / T)}{ \sum_{j=1}^N \text{exp}(f_j (x) / T) }$ ... (1)
이때, $T \in \mathbb{R}^+$로 temperature scaling parameter로, 학습시에는 1로 설정한다.
주어진 입력 $x$에 대해서, maximum softmax probability, $S_{\hat{y}}(x; T) = max_i S_i(x; T) $를 softmax score라고 한다.
이후에 $S_{\hat{y}}(x; T) $와 $S(x; T)$는 서로 동일하게 사용한다.
기존의 연구들에서는 temperature scaling을 NN에서의 knowledge distillation이나 classification에서의 prediction condidence의 계산에 사용했다. 저자들은 이를 in-distribution 이미지와 out-of-distribution 이미지의 softmax scores의 분리 목적으로 사용한다. 이는 ODD 탐지를 더 효과적으로 하기 위함이다.
Input Preprocessing
Temperature scaling에 더불어서 small perturbations를 입력에 더하는 전처리를 수행한다.
$\tilde{x} = x - \epsilon \, \text{sign}(- \triangledown_x \text{log} S_{\hat{y}}(x; T) ) $ ... (2)
이때 파라미터 $\epsilon$은 perturbation magnitude다. 이 방법은 GAN 논문에서 영감을 받았으며, small perturbations를 더함으로써 true label에 대한 softmax score를 감소시키고, NN으로 하여금 잘못된 예측을 강제한다. 반면에 실제 목표는 주어진 입력에 대한 softmax score의 증가다. 추후에 살펴보겠지만 이러한 perturbations는 in-distributions 이미지에 더 큰 영향을 끼쳐서 OOD 이미지와 서로 더욱 분리하게 되는 효과를 가져오게 된다. Perturbations는 Cross-entropy loss의 그라디언트를 백프로퍼게이션하는 과정에서 쉽게 계산할 수 있다.
Out-of-distribution Detector
앞서 설명한 두 구성요소를 합치면 우선 각각의 이미지 $x$에 대해서, 식 (2)에 의해 전처리된 이미지 $\tilde{x}$를 생성한다. 다음으로 전처리된 이미지를 NN에 삽입해서, softmax score인 $S(\tilde{x}; T)$를 계산하고 threshold인 $\delta$와 비교한다. Softmax score가 주어진 threshold보다 크다면 주어진 이미지 $x$는 in-distribution으로 분류되고, 그렇지 않다면 OOD로 분류한다. 수학적으로 표현하면 다음과 같다.
$$
g(x; \delta, T, \epsilon)=
\begin{cases}
1 & \text{if} \, max_i \, p(\tilde{x}; T) \leq \delta \\
0 & \text{if} \, max_i \, p(\tilde{x}; T) \gt \delta \\
\end{cases}
$$
파라미터 $\delta, T, \epsilon$은 true positive rate가 95%가 되도록 선택된다.
4. Experiments
DenseNet과 ResNet의 두 가지 SOTA 모델을 사용했다.


Table 2와 3을 보면, ODIN이 기존의 방법 보다 더 나은 OOD 성능을 달성했음을 확인할 수 있다.
여담
대학원 시절 수업 때 알게된 논문인데 뒤늦게 블로그에 올린다.
NLP에서의 OOD라면 Out of Vocabulary OOV 문제가 있겠다.
이때는 보통 subword 를 사용하는 BPE로 해결하는데, 이미지는 이렇게 검출하는구나 싶었던 논문이다.
연관되는 키워드로는 normalizing flow, aleatoric uncertainty, episdemic uncertainty가 있겠다.
OOD에 대한 대응으로는 다음의 방법이 있겠다.
- OOD 데이터에 대해서는 'unknown'으로 분류. 모르는걸 제대로 모른다고 대답하게 한다.
- 인간의 개입, Human in the loop.
- 로그에 기록하여 추후 데이터 수집 및 재학습이나 기타 후속 조치
References:
https://www.lgresearch.ai/blog/view?seq=555
http://dmqa.korea.ac.kr/activity/seminar/439
'Deep Learning' 카테고리의 다른 글
| GPT-OSS와 딥마인드의 월드 모델 Genie 3 (4) | 2025.08.07 |
|---|---|
| Quantization 정리 (0) | 2025.05.20 |
| KAN (2024) 논문 리뷰 (0) | 2025.05.15 |
| Floating-point Number와 Mixed Precision (0) | 2025.04.29 |
| Meta, Few-shot, Zero-shot, Active Learning (0) | 2024.10.25 |