일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- #object detection
- #annotation
- #pytorch
- #Linux
- #비선형
- #activation function
- #Anaconda
- pytorch
- #선형
- #torchvision
- #gpu training
- #landmark
- Linux
- #Jetson nano
- Today
- Total
Wooks_learning
Anomaly detection 개념 및 방법론 본문
Anomaly detection은 산업, 의료, 보안 분야 등 다양한 영역에서 데이터 분포와는 다른 이상치를 감지하여 제품의 결함, 병변 탐지 그리고 이상행동 분류 등을 수행한다. 해당 작업을 이해하기 위해 다음과 같은 목차로 글이 진행된다.
1. 이상치의 종류
- Novelty
- Anomaly
- Outlier
2. Anomaly detection algorithm
- Autoencoder based detection
- GAN based detection
1. 이상치의 종류
우리가 흔히 이상치라고 하면, outlier를 많이 떠올리곤 한다. 하지만, 딥러닝에서 이상치는 크게 세 가지 용어로 쓰이게 되는데 novelty, anomaly, outlier라는 용어로 쓰임을 달리한다.
Novelty란?
Novelty는 무언가 새롭고 특이한 의미의 이상치를 표현할 때 쓰인다. 예를 들어 호랑이라는 분포가 존재할 때, 백호라는 희귀한 종이 나타났다고 가정하자. 백호는 본질적인 특성은 같지만 기존 분포와는 유형이 다르고, 호랑이의 분포 중에서 novelty가 있다고 표현할 수 있다. 즉, novelty란 본질적인 특성은 같지만 유형이 다른 데이터에 대한 긍정적 느낌의 표현이라고 이해하면 좋을 것 같다.
Anomaly란?
해당 표현은 novelty와 비슷하지만, 부정적인 의미를 강하게 띤다. 예를 들어, 위와 같이 호랑이의 분포가 있을 때, 줄무늬가 있는 게 호랑이의 고유한 특징이다. 하지만, 어떠한 이상으로 인해 줄무늬가 아예 없는 호랑이가 있다고 하면 이는 anomaly라고 표현할 수 있다. 즉, 기존 데이터 분포에서 예상치 못한 이벤트 혹은 이상현상을 의미하고, 정상 데이터로 분류되지 않을 때 anomaly라는 표현을 쓰곤 한다.
Novelty와 anomaly의 예를 보았을 때, 무언가 찜찜한 느낌을 지울 수 없다. 줄무늬가 없는 것이 희귀하다고 생각할 수 있고, 하얀색 호랑이가 이상현상이라고 얘기하는 사람도 있을 것이다. 그래서 결국, 두 용어는 구분하기가 굉장히 모호하고 "이 데이터는 anomaly입니다"라고 예를 들기가 애매하다. 그래서 두 단어를 새로운 데이터 패턴에서 긍정적인지 부정적인지 detection의 대상이다라고 받아들이면 되고, 데이터가 필요없으니 지우거나 변형하지 않는다는 것을 알고 넘어가면 될 것 같다.
Outlier란?
이 표현은 위의 두 표현과는 다르게 전혀 모호하지 않다. 명확하게 부정적인 의미이며, 데이터의 본질적인 분포에서 특성이 전혀 다른 데이터를 outlier라고 한다. 호랑이 분포가 있을 때 사자가 있는 경우, 해당 데이터 포인트는 지워야하는 대상이 된다.
2. Anomaly detection algorithm
그러면, anomaly를 찾기 위한 다양한 접근법이 있는데, 세 가지 기반 방법론에 대해서 정리하고자 한다. 특히, 다루는 방법론은 학습 데이터에 label이 없는 unsupervised based 방법론에 대해 알아보고자 한다.
Autoencoder based detection
Autoencoder는 그림 1.과 같은 구조를 띤다. Input image를 압축하는 encoder와, 압축한 벡터를 이용하여 다시 복원하는 decoder로 이루어진다. Input을 다시 똑같은 것으로 복원하는 구조가 무슨 필요가 있냐?라고 생각할 수 있지만, 해당 구조는 input image를 잘 압축한다면 원본과 유사하게 복원할 수 있고 즉 이는 latent space상의 벡터를 잘 생성하기 위한 구조라고 생각하면 된다.
$\mathcal{L}_{recon} = ||x-x'||^2_2$
그래서 해당 구조를 통한 anomaly detection은 input 이미지를 압축 및 복원하는 네트워크로 학습하며, 위의 수식과 같이 input과 output간의 reconstruction error를 이용해 정상인지, 이상치인지 판별할 수 있다. 만약 정상 이미지를 넣는다면 input과 output간의 reconstruction error가 낮을 것이고, 불량 이미지를 input으로 사용할 경우 reconstruction error가 높게 형성될 것이다. 예를 들어, 호랑이 이미지만을 학습에 사용한 모델에 백호 이미지를 넣었을 경우, 다시 백호로 온전하게 복원되지 않는 특징을 이용한다고 생각하면 된다.
GAN based detection
GAN은 적대적 네트워크로, 이미지의 생성을 담당하는 generator와 생성된 이미지가 real인지 fake인지 탐지하는 discriminator로 나뉘게 된다. 특히, DCGAN에서 input vector의 값을 조금씩 변화시키면, 생성되는 output도 조금씩 변화가 생긴다는 것을 이야기하였고, 이를 walking in the latent space라고 표현한다. 이러한 특성을 이용하여 anomaly detection을 하는 방법인 AnoGAN에 대해서 소개하겠다.
일반적으로 GAN을 통해서 이미지를 생성할 때 그림 2.처럼 random noise를 삽입하여, 어떠한 데이터셋을 잘 생성하는 것을 목적으로 둔다. 따라서, anomaly detection을 위해 처음에는 정상 이미지(normal)만을 이용해서 GAN을 학습하고, generator가 normal 이미지를 잘 생성하도록 유도한다. 그 후, abnormal 데이터인지, normal 데이터인지 아래의 두 수식을 합친 하나의 스칼라 값을 이용하여 판단하게 된다.
$\mathcal{L}_{residual} = \sum|X-G(Z)|$
$\mathcal{L}_{discriminate} = \sum|f(x) - f(G(Z))$
residual loss의 경우, input image와 generator가 생성한 image의 차이(generator는 정상 이미지만을 잘 생성하도록 학습됨.)를 계산하여 pixel간의 차이를 비교한다. 또한, 이미지가 아닌 저차원 임베딩 공간의 벡터끼리도 비교하여 그 차이를 살핀다. 즉 이는, normal image만을 잘 생성하는 네트워크와, 실제 데이터를 픽셀 공간, 저차원 공간 모두에서 비교하여 그 차이로 인한 anomaly detection을 수행하는 과정이라고 이해하면 된다.
이처럼 이상치의 용어 간 차이가 무엇인지, 어떠한 base 방법론이 있는지에 대해 알아보았고 나중에는 최신 연구를 기반으로 글을 작성할 예정이다.
'딥러닝 > 딥러닝 이론' 카테고리의 다른 글
딥러닝에서의 Heuristic 뜻은 무엇일까? (2) | 2022.04.29 |
---|---|
(3) What is a Linear model? (0) | 2021.10.13 |
(2) Convolutional Neural Network(CNN)이란 무엇일까? (0) | 2021.09.25 |
(1) 딥러닝이란 무엇일까? (0) | 2021.09.16 |