이번 포스트에서 다룰 내용은 self-supervised 를 통해 추출한 representation을 이용해 이상탐지를 수행하는 two-stage 이상탐지에 관한 논문 "Learning and Evaluating Representations for Deep One-Class Classification" 입니다.
이상탐지를 위한 전통적인 방법으로는 크게 데이터 분포를 추정해 확률이 낮은 곳에 위치하는 데이터를 이상치로 판단하는 KDE (Kernel Density Esitmation) 와 one-class 주변에 decision boundary를 구축하는 OCSVM (One-class SVM) 이 있습니다. 이러한 전통적인 방법의 문제는 deep neural networks 와 달리 데이터의 representation 을 스스로 추출하는 능력이 부족하여 고차원 데이터에 대한 성능이 매우 저하된다는 점입니다. 또한 deep neural networks 를 이용한 Deep-SVDD에서 보았듯이 deep neural networks 의 단순한 훈련은 모든 데이터를 한 점으로 쏠리게 하는 hypersphere collase 현상을 일으킵니다.
따라서 논문에서는 1) deep neural networks 로 데이터 representation 을 학습하고, 2) 학습하여 얻은 representation 위에 KDE/OCSVM 을 사용하여 one-class 분류를 수행하는 two-stage 프레임워크를 제안합니다. Figure 1(a) 에서와 같이 geometric 변환, 대조 학습 방법을 사용하여 추출한 representation 위에 KDE/OCSVM 을 통해 이상치 여부를 판단하겠다는 것이죠. KDE/OCSVM 를 이러한 방법으로 사용한다면 기존의 다른 deep neural networks 기반 이상탐지 방법들보다 성능이 좋았다고 합니다.
Two-stage framework for deep one-class classification
First stage
SimCLR의 경우에서처럼 feature extractor $f$와 projection head $g$를 self-supervision 을 위한 representation 학습에 사용합니다. 특히 $f$의 출력에 직접적으로 self-supervision 목적함수를 적용하지 않고 $g$에 대해 적용하고 테스트 시에는 $f$를 사용하는 방법은 SimCLR, BYOL 등에서 사용되었는데요, 맨 끝단의 representation 은 feature 학습을 위한 목적함수에 지나치게 쏠려 데이터의 중요한 정보를 상실하여 전 단계의 representation 이 주로 이용되는 self-supervised learning 의 흔한 technique 입니다. (사실 설명이 매우 정성적이고 empirical 한 부분이긴 합니다.)
먼저 self-supervised learning 을 위한 가장 기본적인 방법은 해당 이미지의 rotation 을 discriminative 하게 예측하게 함으로써 representation 을 학습하는 것입니다. (Deep Anomaly Detection Using Geometric Transformations) Equation 1에서 볼 수 있듯이 transformation $A$를 거친 데이터에 대해 90/180/270/0 의 4가지 회전 방향을 예측하게 하는 것이죠. 하지만 이 방법은 representation 을 학습하기 위한 proxy task (회전 예측) 에 지나치게 과적합될 가능성이 있어 이상탐지를 위한 representation 학습에 적합하지 않을 수 있습니다. (참고로 proxy task 란 본래 목적의 task (downstream task) 를 달성하기 위한 부가적인 task 를 말합니다.)
다음은 SimCLR 입니다. SimCLR 에 사용된 대조 학습 방법은 같은 데이터로부터 나온 $A(x), A'(x)$의 representation $\phi(A(x)), \phi(A'(x))$는 비슷하게, 다른 데이터로부터 나온 $A(x), A'(x')$의 representation은 서로 다르게 강제함으로써 representation을 학습하는 것으로 목적함수는 Equation 2와 같습니다. ($\Vert \phi(x)\Vert=1$)
하지만 이 방법은 일반적인 다중 분류 문제에는 적합할지 모르나 그대로 one-class classification에 적용하기에는 적합하지 않습니다. 먼저 class collision 문제가 있습니다. Equation 2는 negative 샘플 $(x, x')$ ($x\neq x'$) 쌍의 representation 이 서로 멀어지도록 강제하는데 이상탐지에서는 일반적으로 하나의 정상 클래스만 존재합니다. 따라서 같은 정상 클래스에서 추출된 2개의 정상 데이터는 서로 다르다는 이유만으로 representation 이 멀어지게 되는 것이죠. 이는 본래 이상탐지가 정상 데이터의 representation이 특정 중심 $c$ 근방으로 모이게 한다는 점에서 모순됩니다.
두 번째로는 Equation 2의 분모로 인해 데이터의 representation 이 hypershpere 상에서 균등한 분포를 가지는데 있습니다. 이 경우에는 정상 데이터가 균등하게 퍼져 있으므로 이상치가 정상 근처에 존재할 확률이 높아지며 결국 구분하기 어려워집니다. (Figure 2(a))
결과적으로 one-class classification 을 위한 representation 학습으로 먼저 hypersphere 상의 representation uniformity를 줄이기 위해 SimCLR 과 같이 매우 큰 배치 사이즈를 잡는 것이 아닌 적당한 크기의 배치 사이즈를 잡습니다. (이는 실험에서 보일 계획입니다.)
특히 논문에서 제안한 방법으로는 distribution augmentation 으로 훈련 데이터 $P_X$ 에 augmentation 을 통한 데이터들까지 훈련 데이터로 포함시키는 방법입니다. 이때 distribution augmentation에 사용된 augmentation은 대조 학습을 위한 augmentation과 다른 종류로서 논문에서는 Deep Anomaly Detection Using Geometric Transformations 방법과 같이 geometric 변환을 사용합니다.
Figure 3에서 보듯이 왼쪽 상단의 개 이미지와 90도 오른쪽으로 회전된 개 이미지가 실은 같은 이미지에서 파생되었음에도 불구하고 서로 다른 데이터로 보겠다는 것이죠. 따라서 왼쪽 상단의 개 이미지와 오른쪽으로 회전된 개 이미지는 서로 멀어지게끔 훈련됩니다. 이 방법은 훈련 데이터를 늘리면서 Figure 2(c)에서와 같이 기존 훈련 데이터가 hypershpere 상에서 상대적으로 밀집되게 만들어 이상치를 파악하기 쉽도록 해주는 효과가 있습니다.
Second stage
첫 번째 stage 에서 representation 을 잘 학습한 이후에는 Figure 1(b) 처럼 representation 을 고정시키고 그 위에 KDE/OCSVM 을 올려 representation 에 대해 one-class classification 을 수행합니다. 특히, KDE 와 deep neural networks 의 gradient 를 계산하여 이미지의 어떠한 부분이 이상탐지에 영향을 미쳤는지 파악합니다.
홍머스 정리
- Two-stage framework 의 장점이 잘 드러나지는 않은 듯함. (실험 부분의 성능을 더 보아야 할듯)
- Geometric 변환을 이용해 간접적으로 이상치를 판단하는 것보다는 OCSVM/KDE 가 본래 one-class classification을 수행하므로 더 적절하다고 주장
- Representation 학습과 one-class classifier 를 분리함으로써 SOTA representation 학습을 flexible 하게 이용할 수 있다고 주장
참조
다음 포스트
'Machine Learning Tasks > Anomaly Detection' 카테고리의 다른 글
Learning and Evaluating Representations for Deep One-Class Classification (2) (0) | 2021.05.07 |
---|---|
NeuTraL AD (0) | 2021.05.04 |
Isolation Forest (2) | 2021.05.02 |
Local Outlier Factor (LOF) (0) | 2021.05.01 |
RAPP (0) | 2021.04.30 |