본문 바로가기

Machine Learning Tasks/Anomaly Detection

RAPP

반응형

이번 포스트에서는 2020년 ICLR에서 발표된 마키노락스의 (Machine Intelligence 회사로 시스템에 대한 이상탐지 및 지능제어 솔루션을 제공합니다) 이상탐지 방법론의 논문입니다. 주목할 점은 새로운 학습 방법론을 제시하는 것이 아니라 anomaly score를 측정하는 새로운 방법론만으로 이상 탐지의 성능을 비약적으로 향상시키는 것에 있는데요, 한번 살펴보도록 하겠습니다.

오토인코더 (auto-encoder)는 데이터 $x$의 최대한의 정보를 남기게끔 압축한 이후에 이를 다시 복원시키는 모델로 비선형 관계를 표현할 수 있는 deep neural networks를 사용한 deep auto-encoder가 이상탐지 분야에서 매우 많이 사용되어 왔습니다. 정상 데이터를 통해 오토인코더를 정상 데이터의 feature를 최대한 담도록 훈련시키고 입력 데이터를 인코더를 통해 압축하고 디코더를 통해 원래 차원으로 복원한 이후의 복원 오차를 통해 정상/비정상 여부를 판별합니다. 만약 비정상 데이터라면 오토인코더가 정상 데이터의 특징만을 추출한 후 복원할 것이기 때문에 복원 오차가 높을 것입니다.

하지만 오토인코더를 이용한 기존 방법들은 입력 단에서만의 복원 오차만을 고려하여 정상/비정상 여부를 판별합니다. 하지만 이 방법은 deep auto-encoder의 중간 계층 (hidden layers) 의 representation을 충분히 활용하지 못하고 성능도 높지 않습니다. 또한 hidden layers 간의 복원 오차를 바로 비교할 수가 없는 것이 오토인코더가 중간 layer 간의 복원에 대한 고려없이 입력과 출력의 차이만 줄이도록 학습되기 때문입니다. 

Method

그렇다면 hidden layer의 representation을 활용하여 정상/비정상 여부를 어떻게 판단할 수 있을까요? RAPP 에서는 입력 $x$에 대한 오토인코더의 출력값 $\hat{x}=A(x)=f\circ g (x)$을 다시 인코더 $g$에 통과시킨 결과값을 사용합니다. 즉, $l$개의 층으로 이루어진 $g$에 대해서 $g_{:i}=g_i\circ ... \circ g_1$과 같이 정의할 때 기존 $g_{:i}(x)$와 $g_{:i}(A(x))$를 비교하겠다는 것이죠.

즉, RAPP는 오토인코더 훈련에 새로운 목적함수를 추가한다는 것이 아닌 기존 방법대로 정상 데이터에 대해 오토인코더를 잘 훈련한 이후 다음과 같이 $h_i (x), \hat{h}_i (x)$를 정의하고 기존 복원 오차에 $g$의 모든 레이어에 대해서 $h_i (x)$와 $\hat{h}_i (x)$의 차이를 비교함으로써 $x$의 이상 여부를 판단합니다.

전체 알고리즘은 다음과 같으며 $h_0 (x)=g_0 (x)=x$, $\hat{h}_0 (x)=g_0 (\hat{x})=\hat{x}$ 이므로 기존 복원 오차로 이상여부를 판단하는 metric을 hidden layers에 대해 확장하여 일반화시킨 것으로 볼 수 있습니다.

Metrics

알고리즘의 6번째 줄의 $s$는 $H$에 담긴 각 쌍의 거리를 어떻게 측정하느냐에 대한 metric 방법을 말합니다. 일단 가장 간단한 방법으로는 모든 레이어의 $l2$-norm을 (Euclidean 거리의 제곱) 비교하는 Simple Aggregraion Along Pathway (SAP) 방법이 있습니다.

단순하고 직관적인 방법이지만 SAP는 각 layer의 특성을 고려하지 않는다는 문제가 있습니다. $H$에 담긴 각 쌍은 서로 다른 층으로부터 추출된 것이고 각 층의 데이터의 분포 및 크기는 서로 다르므로 이를 같은 기준으로 거리를 계산하는 것으로는 이상 여부를 부정확하게 판단할 여지가 있습니다. 따라서 RAPP는 각 층의 정보를 정규화해서 거리를 계산하는 Normalized Aggregation Along Pathway (NAP) 방법을 제안합니다.

먼저 $\textbf{d}(x)=\textbf{h}(x)$-$\hat{\textbf{h}}(x)$를 정의하고 $i$ 번째 줄이 $\textbf{d} (x_i)$인 행렬 $D$를 구성합니다. ($D$의 사이즈는 데이터 개수 $n$과 $d$의 차원 $m$의 $n\times m$이 됩니다.) 이후 $D$를 각 열에 대해 평균을 빼준 이후에 ($\bar{D}$) Singular Value Decomposition (SVD) 를 적용하여 다음과 같은 Mahalanobis 거리를 각 층마다 계산합니다. ($\mu_X$는 각 열의 평균입니다.)

Mahalanobis 거리란 다변량 데이터 끼리의 거리에 대해 각 특징별 상호관계에 대한 개념을 추가시킨 것으로 기존 Euclidean 거리 개념에 각 변수간 스케일의 차이와 상관관계를 고려해 정규화한 거리로 $n\times p$ 크기를 가진 데이터 $x$에 대해서 $(x-m)^T C^{-1}(x-m)$으로 정의됩니다. ($C$는 $p\times p$ 크기를 가지는 Covariance matrix 입니다.) 여기에서는 SVD 를 통해 해당 배치에서 $\bar{D}^T \bar{D}$의 ($m\times m$, 배치 안의 feature statistics) 의 고유값 분해를 통해 얻어진 $V\Sigma\Sigma V^T$를 covariance matrix로 사용합니다.

참고로 SVD 계산은 파이토치의 SVD와 fbpca 패키지를 사용했다고 하며 시간이 크게 오래 걸리지는 않지만 타겟 행렬의 열의 수가 증가할수록 수행시간이 증가합니다.

Motivation

오토인코더를 사용한 기존의 이상 탐지가 입력/출력의 복원 오차에만 집중했던 이유는 입력/출력의 복원에만 목적함수가 적용되어 대응되는 hidden layer 사이의 복원 오차가 무의미하기 때문입니다. 따라서 RAPP 에서는 이를 간접적으로 측정하기 위해 오토인코더의 출력을 다시 feeding 하여 인코더 레이어 단에서 비교하게 됩니다. 즉, 관건은 $g_{i} (x)$에 대응하는 representation인 $f_{i} (x)$가 $g_{:i} (A(x))$와 같냐는 것이죠.

먼저 다음을 만족하는 가상의 디코더 $\tilde{f}$가 존재한다고 가정합니다. $M$은 매니폴드로 훈련된 오토인코더에서 $g$의 각 층에 존재하는 데이터 공간입니다.

따라서 $\tilde{f}$를 이용하여 $g_{i}(x)$의 대응하는 복원 $\hat{h}_i ' (x)$ 를 정의할 수 있습니다.

다음과 같이 $\hat{h}_i (x)$와 $\hat{h}_i ' (x)$가 같다고 보일 수 있습니다.

즉, $\tilde{f}_i$를 직접적으로 사용하지 않고 $g_i$와 $f$를 통해서 $\hat{h}_i ' (x)$를 구할 수 있고 매니폴드 $M_0$에 속한 $x$ (정상 데이터)는 $\hat{h}_i (x)$와 $\hat{h}_i ' (x)$가 같을 것이고 매니폴드 $M_0$에 속하지 않은 $x$ (이상치)에 대해서는 $\hat{h}_i (x)$와 $\hat{h}_i ' (x)$가 다르게 되므로 이를 이상 여부를 판별하는 metric으로 사용할 수 있는 것입니다. 또한 오토인코더 $A$가 $x\in M_0$에 대해 $x=A(x)$를 만족하도록 잘 훈련되었다면 $\tilde{f}=f$를 도출할 수 있고 이를 뉴럴 네트워크를 통해 구현할 수 있습니다.

 

Evaluation

실험은 tabular 데이터와 MNIST/FMNIST 에 대해 AE/AAE/VAE 에 대해 수행합니다. 정상 데이터에 대해 오토인코더를 훈련시키고 이상 여부에 대한 라벨이 없을 경우 1) 하나의 클래스만 이상 클래스이고 나머지 클래스 전부를 정상 데이터로 가정한 multimodal normality, 2) 하나의 클래스만 정상 클래스이고 나머지 클래스 전부를 이상치로 간주한 unimodal normality 형태로 실험을 수행합니다. 마지막으로 결과 metric으로는 threshold에 영향이 없는 AUROC를 사용합니다.

다양한 오토인코더에 대해 수행하였을때 기존의 복원 오차보다 더 뛰어난 성능을 보입니다. 특히 multimodal normality의 경우 더 뛰어난 모습을 보입니다. MNIST/FMNIST에 대한 다른 baseline에 대한 실험 결과는 다음과 같습니다. VAE에 NAP로 성능을 측정했을 때가 가장 성능이 높았습니다.

 

홍머스 정리

  • 오토인코더에서 각 hidden layer 쌍끼리의 복원 오차또한 목적함수로 훈련시켰을 때, 논문이 의도한 대로 hidden layer의 복원 오차를 metric으로 반영할 수 있겠지만 이렇게 훈련시켰을 경우 어떠한 문제가 생길까? 
  • 위와 같이 훈련할 경우 오토인코더의 bottleneck 부분은 모든 층의 목적함수에 영향을 받게 되므로 오토인코더의 본래의 목적인 차원 축소 후 복원 자체가 잘 안될 가능성이 높다. 각 층의 목적함수의 가중치를 적게 둘 수는 있겠지만 그럴 경우 각 층의 복원 오차를 다르게 적용해서 반영해야 한다. 

참조

반응형