Abstract
NeurIPS 2023
Dream-OOD라고 불리는 해당 논문은 최근 딥러닝 모델의 성능 향상에 따라 Out-of-Distribution(OOD) 데이터에서 얼마나 신뢰성 있게 작동하는지가 중요한 연구 주제로 떠오르고 있다. 해당 논문은 이러한 OOD 탐지 문제를 효과적으로 해결하기 위해 VOS와 NPOS 논문의 outlier embedding을 synthesis하는 방법에 Diffusion model을 추가하여 pixel level의 OOD data를 만들어내는 방법을 제시한다.
Background
VOS (Virtual Outlier Synthesis)
text, image를 encoding하고 latent space에 올려서 gaussian distribution에서 벗어난 embedding vector들을 outlier라고 정의하여 해당 embedding을 synthesis해서 ood를 잡아내는 방식이다.
NPOS (Non-Parametric Outlier Synthesis)
다른 개념은 VOS와 거의 갖게 가져가지만 outlier를 정의하는 방법을 단순히 정해진 distribution을 사용하는 것이 아니라 논문의 제목 그대로 Non-Parametric 하게 Outlier를 정의하고 Synthesis하는 것이다.
당연히 위 논문들은 이렇게 가볍게 넘어갈 논문들은 아니다. 그러나 이번에 살펴볼 논문인 Dream-OOD에 겹치는 내용이 많을 것이니 해당 글을 보고 위 논문들을 다시 본다면 쉽게 읽혀질 것이다.
Overall Flow
논문에 있던 그림을 첨부한다. 사실 아래 그림이 이 논문의 모든 것을 담고 있다. 핵심이 모두 담겨있어서 자세히 이해해보면 큰 도움이 된다.
Input으로 text와 image쌍을 입력 해주면 text는 정해져있는 encoder를 이용하여 embedding되고 image encoder만 학습을 시킨다. 그렇게 embedding을 text-conditioned latent space에 올리고 outlier를 선정하여 diffusion model에 넣어서 OOD image를 만들어낸다. 각 과정을 자세히 살펴보자.
Text-Conditioned Latent Space
우선 Text encoder는 고정이 되어있기 때문에 우선 Latent Space에 올라가고 주어진 text token embedding과 일치하도록 image encoder를 학습시켜 image embedding을 latent space에 올린다.
이때 image embedding을 일치하는 text embedding에 가깝게 만드는 loss function은 clip loss와 거의 같다.
다만 이때 vMF(von Mises Fisher) 분포의 특성을 따라서 단위 구면위에 확률 분포를 정의한다. C라는 class에서의 pdf는 아래와 같이 정의 되고
특정 벡터 z가 클래스 c에 속할 확률은 아래와 같이 정의된다.
vMF 분포는 위와 같이 생겼다. 이 분포를 따르기 때문에 위에서 살펴본 overall flow에서 latent space가 구형으로 생겼던 것이다.
Sampling OOD embedding
Dream-OOD는 기본적으로 NPOS논문을 기반으로 하고 있기 때문에 Non-parametric sampling을 진행한다. Non-parametric이란 특정한 분포를 가정하지 않고 데이터의 분포를 기반으로 sampling한다는 것이다.
ID embedding의 경계 부분을 여러번 sampling하고 K-NN distance를 이용하여 그 값이 최대인 sample을 선택한다. 따라서 ID embedding의 경계 값이 anchor 역할을 하게 되는 것이다.
In-distribution data 집합과의 거리를 계산하여 가장 먼 값을 찾는다는 뜻이다.\
그렇게 선정된 anchor를 기준으로 주변에 gaussian noise를 걸어주어 embedding을 synthesis하고 diffusion model에 넣을 embedding으로 결정한다.
누가봐도 더 먼 값을 선택하는 VOS의 sampling보다 데이터 구조에 따라 확률적으로 sampling하여 그중 선정하는 NPOS의 sampling 기법을 사용하는 것이 성능이 더 높다는 것이 신기할 따름이다.
Generate Outlier image
최종 sampling된 OOD embedding v를 diffusion model을 통해 decoding하여야 한다. 이때 decoder의 token embedding T(y)자리를 v로 바꾸기만 하면된다.
이렇게 생성된 이미지는 Downstream Task에서 학습을 규제하는데 유용하게 사용될 수 있다.
아래는 Dream-OOD로 생성해낸 outlier image이다. 각 클래스 별로 얼마나 벗어나게 설정하는가에 따라 변하는 outlier image를 확인할 수 있다.
OOD를 만드는 방법은 다양하게 있다. 가장 흔한 방법인 Add gaussian noise, Add learnable noise, Interpolate embeddings, Disjoint class names등과 같은 기법들의 성능과 Dream-OOD를 비교해보자.
Dream-ID
추가로 K-NN값을 최소로 하는 ID data를 sampling해서 이미지를 생성하고 augmentation 역할을 수행시켰을때 imagenet에 대해서 좋은 성능을 내는 것을 확인할 수 있다.
Conclusion
현재 수행중인 프로젝트에서 Dream-OOD를 적극적으로 차용하여 진행하고 있기에 읽어본지는 꽤 지난 논문이지만 상세하게 리뷰한 글이 많지 않은 것 같아서 다시 정리도 할겸 논문 리뷰 글을 작성해본다. Outlier Image 자체를 생성해내는 훌륭한 아이디어를 제시한 재밌고 좋은 논문이었다.