본문 바로가기

Machine Learning Tasks/Anomaly Detection

Deep Anomaly Detection Using Geometric Transformations

반응형

이 논문은 이미지의 geo-transformation을 이용한 이상 탐지 알고리즘을 제안합니다. 입력 이미지에 대해  flipping, rotation 등의 transformation을 통해 얻은 self-labeled (자가 라벨) 데이터를 이용해 일반적인 classifier를 학습시키고 classifier의 score로부터 정상, 비정상 여부를 판단합니다.

이 방법은 classifier가 정상 데이터에 대한 geo-transformed 된 이미지를 어떠한 transformation을 적용하였는지 잘 구분하게 학습하게 되면 정상 데이터의 도드라지는 공통된 feature를 얻을 수 있게 되리라는 동기에서 출발하였습니다. 

Methods

Problem statement

먼저 문제를 정의하겠습니다. 주어진 정상 데이터 집합 $X$와 type-2 에러 (False Negative, 비정상으로 판단된 정상 데이터 비율) 제약 조건이 있을 때, type-1 에러 (False Positive, 정상으로 판단된 비정상 데이터 비율) 을 최소화하는 classifier $h_S (x): \mathcal{X} \to {0,1}$ 를 학습하고 싶은 문제입니다. ($\mathcal{X}$는 전체 데이터 집합) $x\in X$라면 $h_S (x)=1$, $x\notin X$라면 $h_S (x)=0$이 되어야겠죠. 

논문에서는 type-1 에러와 type-2 에러의 tradeoff를 조절하기 위해 scoring function $n_S (x): \mathcal{X}\to R$을 고안하여 $n_S (x)$의 임계치에 따라 다음과 같이 $h_S (x)$를 결정합니다. $n_S (x)$의 값이 높을 수록 정상일 확률이 높다고 세팅합니다.

논문에서는 지도 학습으로 $h_S (x)$를 직접적으로 학습시키는 것이 아니라 $n_S (x)$를 잘 구하는 것에 집중합니다. 또한, $n_S (x)$의 $\lambda$에 따라 성능이 달라지므로 AUROC (Area Under the ROC curve) 로 성능을 측정합니다.

Creating and learning the self-labeled dataset

$n_S$ 를 학습하기 위해 훈련 데이터셋 $S$ 전체에 대해 미리 정의한 기하학적 transformation $T$ 를 적용합니다. 따라서 전체 훈련 데이터의 크기는 $S\times T$가 되고 이를 $S_T$라 정의합니다. 훈련 시에는 이미지 $x\in S_T$에 대해 어떠한 기하학적 transformation 이 적용되었는지를 예측하기 위해 일반적인 multi-class classification 문제의 cross-entropy loss를 통해 최적화합니다. Inference 시에는 테스트 데이터에 대해 모든 $T$를 적용하여 얻은 $T$개의 이미지를 각각 classifier에 적용하고 이를 통해 얻은 $T$개의 softmax 벡터를 이용해 추후 살펴볼 $n_S$를 계산합니다.

List of geometric transformations

논문에서 쓰인 기하학적 transformations는 크게 1) 좌우대칭의 horizontal flip, 2) 이미지를 0.25배씩 상하좌우로 옮기는 translation, 3) 90도씩 회전하는 rotation 입니다. 이를 조합하면 horizontal flip은 2가지, translation은 9가지 (위아래로 3가지, 좌우로 3가지), rotation은 4가지 경우가 생겨 전체 transformations의 수는 72가지입니다. 전체 transformations 중에 자기 자신인 identity transformation은 첫 번째 transformation으로 고정됩니다. 

참고 vertical flip은 rotation과 겹치므로 일반적인 self-labeled나 data augmentation에 잘 사용되지 않습니다. 다른 geometric transformation이 사용될 수 있지만 $T$의 개수가 곱으로 늘게 되므로 훈련시켜야 하는 데이터가 매우 늘어나 훈련이 오래 걸리게 됩니다. 

Dirichlet normality score

$k$개의 transformation $T$=${T_0, T_1, ..., T_{k-1}}$이 있을 때, 입력 $x$에 대한 네트워크의 출력은 $y$는 classifier의 softmax 벡터가 됩니다. 먼저 $n_S (x)$를 다음과 같이 각 transformation $T_i$에 대해서 $T_i (x)$에 대한 log-likelihood를 더한 값으로 정의합니다.

이때, $y(T_i (x)|T_i) \sim Dir(\alpha_i)$ 로 조건부 확률을 정의합니다. Dirichlet 분포는 다변수 연속확률분포로서 $k-1$ simplex를 만족하는 $x_1, x_2, ..., x_k$에 대해 ($\sum_i^k x_i=1$) 다음과 같은 분포를 정의합니다.

$f(x_1, x_2, ..., x_k|\alpha_1, ..., \alpha_k) = \frac{1}{B(\alpha)}\prod_{i=1}^k x_i^{\alpha_i-1}$

$B(\alpha)=\frac{\prod_{i=1}^k \Gamma (\alpha_i)}{\Gamma (\sum_{i=1}^k \alpha_i)}, \alpha=(\alpha_1, ..., \alpha_k)$

이렇게 dirichlet 분포를 이용해 $n_S$를 정의한 이유는 1. softmax 벡터의 합은 항상 1로 simplex를 구성하므로 dirichlet 분포 조건을 자연스럽게 만족하면서 2. dirichlet 분포를 위한 $\alpha$를 추정하는 효율적인 최대 우도법이 있기 때문입니다. Dirichlet 분포를 위의 $n_S (x)$에 대입하면,

와 같게 되고 앞의 두 term은 dirichlet 분포의 상수 $B(\alpha)$항이므로 지워지면 다음과 같이 $n_S (x)$가 정의됩니다.

위에서 언급했듯이 두 개의 입력 $x_1, x_2$에 대해서 $n_S (x_1) > n_S (x_2)$일 경우 $x_1$이 $x_2$에 비해 더 정상이라고 생각할 수 있습니다.

Dirichlet 분포의 파라미터 $\alpha$는 밑의 그림에서 볼 수 있듯이 (8-13 번째 줄) $S_i={y(T_i (x))|x\in S)}$에 대해 fixed point iteration 방법으로 추정됩니다. 정리하면, 훈련 데이터의 softmax 결과를 통해 dirichlet 분포의 파라미터를 추정하고 이를 통해 $n_S$를 도출하게 됩니다.

 

Experiment

실험에 쓰이는 데이터셋은 CIFAR-10, 100, Fashion-MNIST, CatsVsDogs 입니다. CatsVsDogs는 25,000개의 데이터로 구성되어 있으며 개, 고양이 각각 12,500개의 데이터를 포함하고 있습니다.

실험의 기본적인 방법은 one-vs-all 방법으로 한 클래스를 정상, 다른 모든 클래스를 비정상이라 간주하고 AUROC를 측정합니다. 모델로는 Wide Residual Network 가 사용되었으며, 72개의 geometric transformations 가 사용되었습니다. 실험 결과는 다음과 같습니다.

모든 경우에 대해 압도적인 성능을 보였으며 CatsVsDogs와 같이 큰 이미지에 대해서 다른 baseline 방법들보다 훨씬 더 좋은 성능을 보인 것을 알 수 있습니다.

 

Discussion

먼저 geometric transformations가 아닌 Gaussian blur, sharpening 등의 방법은 오히려 성능이 악화되었다고 합니다. 이는 이러한 방법들이 이미지의 중요한 feature들을 제거하기 때문입니다. 즉, 논문에서 선택한 geometric transformations는 정상 이미지의 공간 feature를 잘 유지하면서 classifier가 상대적으로 예측하기 쉬운 조합이라고 생각할 수 있습니다.

이를 뒷받침하기 위에 geometric transformations를 2가지로 단순화한 실험을 수행했습니다.

Normal: 8, Anomaly: 3, Transformations: Identity and horizontal flip 인 경우에, 8과 3은 비슷하게 생겼을 뿐더라 8은 horizontal flip을 해도 모양이 거의 변하지 않아 classifier가 transformation을 구분하기 쉽지 않습니다. 역시나, 3을 anomaly로 측정해야 하는 상황에서 AUROC가 0.646으로 낮게 측정되었습니다.

Normal: 3, Anomaly: 3, Transformations: Identity and horizontal flip 인 경우에, 3의 horizontal flip은 본래와 모양이 다르므로 anomaly를 잘 구분하여 0.957 AUROC가 나왔습니다. Normal: 8, Anomaly: 3, Transformations: Identity and translation by 7 pixel 인 경우에도 transformation과 본래 이미지가 잘 구분되기 때문에 높은 AUROC (0.919)가 나왔습니다.

마지막으로 높은 $n_S$가 정상 데이터임을 보장할 수 있는지 알아보기 위해 높은 $n_S$에 대해 입력 이미지 자체를 최적화시켜 어떻게 변화는지 관찰했습니다. 즉, $n_S$를 최대화하기 위해 입력 이미지를 gradient ascent 방식으로 최적화를 수행해서 이미지가 어떻게 변하는지 다음과 같이 관측합니다. 이때, MNIST의 3에 대해 몇 가지 transformation을 예측하는 classifier를 미리 훈련시킵니다.

(a) 부분을 보면 0이 $n_S$를 높이기 위해 정상인 3과 비슷한 모양으로 변한 것을 볼 수 있습니다. 반대로 (b) 부분에서는 3이 높은 $n_S$를 가지기 위한 feature를 이미 가지고 있으므로 거의 변하지 않은 것을 볼 수 있습니다. 즉, classifier가 정상 데이터에 관련된 feature를 잘 학습했다고 볼 수 있습니다.

 

참조

반응형

'Machine Learning Tasks > Anomaly Detection' 카테고리의 다른 글

Local Outlier Factor (LOF)  (0) 2021.05.01
RAPP  (0) 2021.04.30
Classification-based Anomaly Detection for General Data  (0) 2021.03.17
Deep Semi-Supervised Anomaly Detection  (1) 2021.03.14
Deep One-Class Classification  (0) 2021.03.14