Review/논문 리뷰

[논문 리뷰] 이상치 탐지 | DevNet, An End-to-end Anomaly Score Learning Network

어쩌다통계 2022. 11. 13. 17:43
728x90

이 글이 도움되셨다면 광고 클릭 부탁드립니다 : )

 

이번 포스팅에서는 anomaly detection 분야에서 SOTA 중의 하나인 DevNet에 대해 알아보도록 하겠습니다.

An End-to-end Anomaly Score Learning Network, DevNet은 2019년에 게재된 논문으로 딥러닝 기반 end-to-end 이상 탐지 방법을 제안하고 있습니다. 본 방법론이 나오게 된 배경과 컨셉, 구조 등에 대해 아래에서 살펴보겠습니다.


0. Abstract

딥러닝은 다양한 문제를 해결하는데 적용되고 있지만, 이상 탐지 문제에 있어서는 상대적으로 적용이 제한되어 있습니다.

현존하는 이상탐지 분야의 방법은 주로 data representation으로 indirect 하게 anomaly scoring을 수행하여 비효율적이고 라벨 된 데이터의 부족으로 대부분 unsupervised learning으로 설계됩니다. 그 결과, 이상 탐지에 있어서 미리 확보된 사전 정보가 있더라도 활용하기 어렵습니다.

본 논문에서는 이러한 한계를 개선하고자 representation learning이 아닌 neural deviation learning으로 end-to-end learning 하여 anomaly score를 계산하고, 여기서 소수의 라벨 이상 데이터와 정상 데이터를 활용한 사전 확률을 활용합니다. 이러한 개선으로 substantially more data-efficiently 하게 학습이 가능하고 SOTA보다 더 나은 anomaly scoring결과를 보입니다.

1. Introduction

이상치는 주로 majority of data에서 크게 벗어난 값입니다. 이상탐지는 이러한 이상치를 탐지하는 task로 사이버 보안, 금융, 의료 등 광범위한 분야에서 활용됩니다.

여러 이상 탐지 방법들이 나왔지만, 차원의 저주 및 비선형 feature으로 복잡한 관계를 가진 데이터에서는 이상 탐지에 어려움이 있습니다. 그래서 기존의 전통적인 방법에서 Neural Net을 기반한 딥러닝으로 고차원의 데이터의 복잡한 관계를 찾아내는 방법으로 발전되었습니다.

하지만 이러한 딥러닝 방법은 2가지 한계가 있는데, 레이블된 대규모의 데이터를 얻기 힘들다는 점과 이상치들 간 다를 수 있다는 점에 대해 깊은 고민이 부족했다는 점입니다. 이러한 한계를 극복하고자 unsupervused deep learning과 two-step approach를 적용하여, representation을 기반으로 reconstruction error나 distance based measure로 anomaly socre를 계산하였습니다.

Representation 학습은 이상 탐지 방법과는 별개이므로, suboptimal하거나 이상 탐지와는 관련 없는 representation을 만들어낼 수 있습니다. 또한 prior-knowledge의 부족으로 data noise나 uninteresting data도 이상치로 탐지해버리는 문제가 있습니다.

따라서 본 논문에서는 a few labeled anomalies를 사용하여 차별화된 end-to-end learning 방법을 제안합니다.

아래 그림에서 기존의 (a)pipline에서는 원본 데이터를 입력하여 New Feature Representaion을 만들었다면, DevNet, (b) pipline에서는 바로 이상 점수를 직접 학습하고 출력합니다.

또한, DevNet은 몇개의 labeled anomlies와 gaussian prior을 활용해 Z-score기반 deviation loss로 anomaly score계산에 direct optimization을 수행합니다.

이러한 구조로 data-efficient하게 학습할 수 있으며 다양한 패턴의 이상치를 탐지할 수 있고, Z-score기반의 deviation loss로 쉽게 해석할 수 있는 이상 점수를 생성할 수 있습니다.

2. DevNet

구조

DevNet의 framework는 아래 그림과 같이 Anomaly Scoring network와 Reference Score Generation로 구성됩니다.

Anomaly Scoring Network에서는 주어진 훈련 데이터로 이상 점수를 계산하고 Reference Score Generation에서는 l개의 normal 샘플을 뽑아서 해당 샘플들과 떨어진 정도를 anomaly 탐지에 활용(평균, 분산 정의)합니다.

 

 

Loss Function, Deviation loss

정상 데이터의 분포에서 upper tail에 있는 이상치들이 통계적으로 유의한 deiviation이 되도록 만들어주는 loss function을 정의합니다.

  • Deviation loss
    • 정상이면 샘플 데이터로 부터 추정된 정상분포 중심($\mu_R$)에 가깝게, 이상치면 정상분포와 떨어진 곳($\mu_R+a*\sigma_R$)과 가깝게 학습

  • Contrastive loss
    • deviation 정보를 측정하는 지표로 z-score 방법을 차용

  • anomaly scoring network
    • Intermediate representation space인 Q를 만드는 ψ네트워크와 anomaly score를 나타내는 η 네트워크로 구성

 

해석/이상치 판별 방법

z-score를 차용했다는 부분을 활용하여, anomaly scoring network에서 나온 결과 값인 $\phi(x)$가 $N(\mu, \sigma^2)$ 분포에서 위치하는 값을 기준으로 판단합니다. 즉, 정규분포의 신뢰구간 컨셉, 일정 구간에 들어오지 못하면 정상이 아닐 확률이 높다고 판단하게 됩니다.

 

3. 소스 코드

저자가 공개한 torch기반으로 작성된 코드 입니다.

https://github.com/GuansongPang/deviation-network/blob/master/devnet.py

 

GitHub - GuansongPang/deviation-network: Source code of the KDD19 paper "Deep anomaly detection with deviation networks", weakly

Source code of the KDD19 paper "Deep anomaly detection with deviation networks", weakly/partially supervised anomaly detection, few-shot anomaly detection, semi-supervised anomaly detecti...

github.com

 

반응형