시계열 이상탐지 - TadGAN
이번 포스팅에서는 TadGAN(2020’)을 공유해보려고 합니다.
TadGAN
- 비지도 GAN-reconstruction 기반 이상탐지 방법 제안
- Generator 2개, Discriminator 2개 사용
- Cycle consistency GAN 구조를 통해 time series to time series 매핑
- 모델 자체 개선과 더불어, 후처리 공정에 힘씀
- Reconstruction Error 계산 시, Point difference, Area difference, DTW 등 척도 2개 사용
- Anomaly Score 계산 시, robust한 점수 도출 가능
- 시계열 벤치마크 데이터셋 11개 중 6개에서 높은 F1-score 기록
개요
- 다변량 시계열에서 정상 패턴을 따르지 않는 time segment 집합 찾기를 목표로 함
Model architecture
- Critic 2개와 Generator 2개로 구성
- Critix X : 어떤 데이터가 원본인지 판별
- Critix Z : Generator Encoder 성능 평가 (잘 매핑했는지)
- Generator Encoder : 시계열 시퀀스를 latent space로 바꿔주는 역할
- Generator Decoder : latent space를 시계열 시퀀스로 바꿔주는 역할
- 가중치 업데이트
Wasserstein loss
- Mode Collapse 문제 해결
- 결합분포는 추적이 불가능하기에 이를 k-lipschitz continuous를 만족하도록 제약시킴
- 1-lipschitz continous로 제약시킴으로써, 모든 W가 compact parameter가 됨 (G,D 모두, 특히 D)
- fw에 상한과 하한이 생기면서 제약을 강제로 만족 (gradient 손실이 없음)
- Vanilla GAN은 주어진 실제 확률분포와 예측분포 사이의 JSD(Jensen-Shanon Divergence)를 최소화함
- 단, 두 분포가 겹치지 않을때, 상수값을 가짐으로써 gradient 계산으로 Optimal을 찾을 수 없음
- WGAN의 Wasserstein loss (or Earth Mover distance)를 통해 거리를 추정
- gradient 소실문제 완화
Cycle consistency loss
- 순환구조 도입
- G: X -> Y 와 F: Y -> X, 두 함수 사용
- 순환구조를 통해 얻은 변환 결과가 원래의 입력에 가까워지도록 학습
Full Objective
- Vx : G와 유사한 데이터를 생성하도록, Cx는 생성된 데이터와 실제 데이터를 잘 구분하도록 학습
- Vz : E는 latent space 로 매핑을 잘하도록, Cz는 z로부터의 샘플과 E(x)를 잘 구분하도록 학습
- Vl2 : 잘 복원하도록 학습
- z 또한 해당 loss를 사용하려고 했으나, 실험 결과 효과가 없었음
Anomaly Score
- Anomaly Score = Reconstruction(x) + CriticX(x)
- Reconstruction score는 높을수록, Critic score 는 낮을수록 비정상 점수를 의미
- Combining both scores
- Z score를 계산한 후, linear하게 더해주거나 곱해줌
- Anomaly Socre Criterion: Reconstruction Error (택 1)
- Anomaly Socre Criterion: Critic Outputs
- 0과 1사이의 확률값(Realness)
Experiments
- 왼쪽 그림
- Baselines 간의 F1-score 비교
- AE 계열, GAN 계열 간의 비교는 딱히 볼게없음
- TADGAN이 6개의 모델에서 최고성능을 보였음
- ARIMA가 2개의 데이터셋에서 최고성능을 보였음
- 오른쪽 그림
- x축: ARIMA 기준 얼마나 개선되었는가 (데이터셋 평균 F1-score)
- TADGAN과 LSTM 만 개선되었음을 확인 가능 (%P인지 %인지는 모르겠음)
- Variations of TadGAN
- Anomaly Score Criterion 조합은 Critic과 DTW를 썼을 때 제일 좋았음
참고 논문
- TadGAN: Time Series Anomaly Detection Using Generative Adversarial Networks
- TadGAN: Github
- 가중치 업데이트 그림 참고(블로그)