이번 포스팅은 지난번 포스팅한 Anomaly Detection과 연관된 내용을 가지고 있습니다.
[딥러닝 with Python] Anomaly Detection이란? (이상 탐지)
1. Anomaly Detection 문제 접근 방법
- 비교적 과거에 연구되어온 Anomaly Detection 문제를 접근하는 방법은 아래와 같이 크게 3가지 정도로 볼 수 있습니다.
1) Classification 기반 방법론 : Normal vs Abnormal 또는 Normal vs Faulty Type에 대해 이진 분류를 하는 것입니다. 이때 일반적으로 Abnormal class의 경우 소수 클래스에 속하기 때문에 Oversampling 또는 Undersampling을 통해 클래스 불균형을 해결한 뒤 학습 시키는 경우가 많았습니다.
2) One Class Learning : Normal data만을 많이 포함하고 있는 특정 영역을 찾아내는 학습 방법입니다. 그리고 새롭게 들어온 데이터에 대해서, 앞서 학습된 특정영역의 외부에 위치하면 outlier로 간주하고 그렇지 않고 영역의 내부에 속하게 된다면 normal로 간주하는 학습법입니다.
* 대표적으로 One-class SVM, SVDD, isolation Forest 등이 있습니다.
3) Reconstruction based Approach : Normal 데이터만으로 학습된 Reconstruction 모델에 Abnormal 데이터가 들어가게 될 경우 제대로 Reconstruction이 되지 않을 것이다라는 아이디어를 바탕으로 출발하는 모델입니다.
* 대표적으로, PCA, Auto Encoder, AnoGAN 등이 있습니다.
4) 최근의 Anomaly Detection 접근 방법들에는 Contrastive Learning, Self-supervised learning, Pretrained network, multi-modal approaches 등을 활용하고 있는 추세입니다.
2. Reconstruction Based Approaches : Auto Encoder, AnoGAN
- 이번에는 위에서 알아본 Reconstruction Based Approaches 중 Auto Encoder와 AnoGAN 방법론에 대해서 간략히 정리해보고자 합니다.
1) Auto Encoder
* Auto Encoder는 고차원의 데이터를 저차원으로 축소시키고 이를 다시 원래 차원으로 회복시켜 재구성하여 이 과정을 학습시키는 방법을 말합니다.
* 여기서 주요 학습 네트워크는 고차원의 데이터를 저차원으로 축소시키는 Encoder 부분이라고 할 수 있으며, 이를 통해 데이터의 representation을 효과적으로 압축하는 네트워크가 나오게 될 수 있습니다.
* Auto Encoder의 Cost Fuction은 재구성 오차이며, 주로 MSE(Mean Squared Error)를 활용하고 있습니다.
* 이렇게 나온 Reconsturction Error를 기준으로 일종의 Threshold를 부여하여 정상 또는 비정상을 구분합니다.
- 이러한 Auto Encoder는 차원을 축소시켜가는 Encoder 네트워크와 축소된 차원에서의 데이터의 Representation을 나타내는 BottleNeck, 그리고 이 축소된 Representation을 다시 복원해서 원본 데이터의 차원과 동일하게 맞추는 Decoder 네트워크로 구성되어 있습니다.
- 이때 차원 축소 및 확장에 다양한 네트워크가 활용될 수 있으며, 이미지에서 효과적으로 작용할 수 있는 CNN을 활용한 Convolutional AutoEncoder는 아래와 같이 작동할 수 있습니다.
2) AnoGAN(Anomaly Generative Adversarial Network)
- 해당 모델은 " Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery" (2017) 이라는 논문에서 제안되었습니다.
- 의료 데이터 부분에서 질병의 존재 여부를 판단하기 위해 대량의 데이터를 확보하면 좋으나 이와 같은 전문가들의 지식을 바탕으로 레이블링을 해야되는 분야에서는 데이터의 확보 및 레이블링 적인 문제에 어려움을 겪는게 일반적입니다.
- 의학 분야 또는 제조공정 분야에서 정상에 대한 데이터는 얻기 상대적으로 쉬우나 결함이 있는 부분에 대해서는 이를 얻기가 어렵습니다.
- 따라서 해당 논문에서는 비지도학습을 이용해 이미지 안에서 이상 탐지하는 방법 중 GAN 네트워크를 활용하는 방법을 제안하고 있습니다.
- 아래 네트워크가 AnoGAN의 Framework입니다.
1) Preprocessing : 먼저, 원본 데이터를 사전에 전처리하는 단계로, 의료 영상을 사용해 특정 영역을 잘라내거나 강조해서 GAN 모델에 학습시키기 적합현 행토로 변환을 합니다.
2) GAN 모델 학습 : 정상 데이터만을 활용해 GAN 모델을 학습 시킵니다. 이 과정에서 GAN은 정상 데이터의 특성을 학습하며, Genrator와 Discriminator가 서로 경쟁하면서 정상 패턴을 잘 재현하도록 학습됩니다.
3) Identifying anomalies : 학습된 모델을 사용해 보지 않은 새로운 데이터를 분석합니다. 여기에서 AnoGAN은 입력된 데이터를 Genrator와 비교하여 정상 패턴과 얼마나 차이가 있는지를 평가합니다.
* 빨간색 영역은 정상과 다른 영역을 의미합니다.
- 아래 그림은 GAN의 구조를 나타내고 있습니다.
* 일반적인 GAN과 동일한 방식이며, 정상 데이터만을 통해 GAN의 Generator를 학습시킨다는 점에서 차이가 있습니다.
* 이때 GAN은 DC-GAN을 활용했습니다.
* 왼쪽 그림의 t-SNE의 예시처럼, 정상 데이터는 학습된 latent space에서 일종의 군집을 형성하며 비정상 데이터는 그 군집에서 일정 경계를 두고 밖에 위치하고 있는 것을 알 수 있습니다.
[머신러닝 with Python] t-SNE란? (차원축소, 시각화)
- AnoGAN에서 활용한 Total Loss는 Residual Loss와 Discriminator Loss이고 이를 식으로 표현하면 아래와 같습니다.
* Residual Loss : 입력 이미지 x와 생성된 이미지 G(x) 간의 차이를 최소화하는 손실을 말합니다.
* Discriminaotr Loss : Discriminator가 생성된 이미지인 G(x)를 진짜 라고 인식하게끔 학습하는 손실을 말합니다. AnoGAN에서는 판별기의 중간 레이어에서 추출된 특징맵인 D(x)와 D(G(z))의 차이를 최소하여 더 높은 차원의 특징 공간에서 입력 이미지와 생성된 이미지의 유사성을 평가할 수 있도록 합니다.
* Total Loss : 위 두 Loss를 합친 것입니다.
* 이를 통해 AnoGAN은 입력이미지와 유사한 이미지를 생성하면서도 판별기를 잘 속일 수 있는 방향으로 학습되며, 이를 통해 이상탐지에 효과적으로 활용이 됩니다.
- 해당 논문에서 제시하는 실험 결과는 아래와 같습니다. AnoGAN을 사용해 Anomalies를 픽셀 단위로 식별하는 과정을 여러 단계로 시각화 한 예시입니다. 각 행은 서로 다른 단계를 보여주며, 이를 통해 입력 이미지에서 Anomalies인 영역을 어떻게 탐지하고 표시하는지를 설명하고 있습니다.
* 첫번째 행 : 실제 입력이미지이며 OCT 볼륨의 스캔 이미지가 포함되어 있고, 정상 및 질병 이미지가 함께 포함되어 있습니다.
* 두번째 행 : 제안된 매핑 방식을 통해 모델이 생성한 이미지이고, 정상 데이터와 비교할 때 비정상인 부분을 발견하기 위해 사용됩니다.
* 세번째 행 : Residual Score를 이용해 비정상 부분을 시각화한 것으로, 빨간색 부분은 입력 이미지와 생성된 이미지 간의 차이를 나타냅니다. 이는 Residual scor에 따라 이상으로 판정된 부분입니다. (빨간색은 Residual score에 따른 anomalies를, 노란색은 Discrimination score에 따른 anomalies를 나타냅니다)
* 네번째 행 : 실제 이상 영역을 수동으로 labeling 해놓은 곳으로, 초로색은 망막의 액체를 나타내고 있습니다. 이는 Ground Truth로 보시면 되겠습니다.
- 아래는 다른 모델들과의 비교 결과를 나타내고 있으며, False Positive Rate와 True positive Rate를 통해 알아볼 수 있는 ROC Score를 기준으로 봤을때 AnoGAN이 기존 모델들보다 더 좋은 결과를 나타내고 있음을 알 수 있고, 해당 모델에서 제시하는 Residual score를 바탕으로 Anomalies를 구분했을때 높은 ROC score를 나타내고 있습니다. 또한, 정상인 train data와 정상인 test 데이터, 그리고 비정상인 데이터의 residual score의 distribution을 시각화 해놓은 것으로 일부 겹치는 영역을 제외하고 상당부분 Anomalies를 정상과 잘 구분하고 있음을 알 수 있습니다.
댓글