Auto Encoder (Anomaly Detection)

03_6 : Anomaly Detection : Auto-Encoder, 1-SVM, SVDD

Auto encoder 자체는 다양한 분야에 활용되는 모델이다. 이 글에서는 간단하게 어떤식으로 이상치 탐지에 이용되는지 알아볼 것이다.

Auto Encoder (Auto-Associative Neural Network)

이미지를 처리하는 경우 Convolutional Auto Encoder를, 시계열이나 자연어와 같은 데이터를 처리하는 경우 RNN 기반의 Auto Encoder를 사용하는 등 다양한 응용이 있다. 하지만 이 글에서는 가장 기본적인 Feed-forward neural network에서 Auto Encoder를 이해해보자.

Auto Encoder의 목적은 입력으로 주어진 data를 출력으로 최대한 원본에 가깝게 reproduce 하는 것이다. 목적함수인 Loss function을 살펴보자.
  • Loss function
l(f(x)) = \frac{1}{2}\sum_k(\hat{x}_k-x_k)^2

입력값 x_k와 reproduce 한 \hat{x}_k의 차이가 loss function이다.
  • Encoder
h(x) = g(a(x)) = sigmoid(b+Wx)
activation function으로 Sigmoid 함수를 사용한 예시이다. 입력 x\in R^Dh(x)\in R^d로 인코딩한다. 이때 반드시 d<D이어야 한다. 왜냐하면 인코딩 과정에서 정보의 축약(손실)이 일어나야지만 입력 data의 특징을 잘 보존하는 hidden layer를 학습할 것이고, 이를 통해 이상치 탐지를 할 수 있기 때문이다. (이후에 좀더 자세히 알아보자)
+ hidden layer를 latent vector라고 부르기도 한다.
  • Decode
\hat{x} = o(\hat{a}(x)) = sigmoid(c+W^*h(x))
Encoding된 h(x)를 다시 원래 차원의 data \hat{x}로 복원하는 과정이다. 여기서 W^*W행렬의 Conjugate transpose(켤레 전치)를 의미한다. (W^* = W^\dagger = \overline{W^T}) 복소수를 사용하지 않는 일반적인 경우 W^* = W^T 이다. 식에서 W^*를 사용하는 것은 W가 유니터리(unitary) 행렬이라면 W^{-1} = W^*임을 이용한 것이다.

Normal data로 학습된 Auto Encoder는 normal data가 주어졌을 때 loss값이 작게 잘 복원할 것이다. 하지만 abnormal data가 주어진다면 이 데이터로는 학습하지 않았음으로 loss값이 크게 복원될 것이다. 결론적으로 위 loss function을 Anomaly score로 사용하여 Anomaly를 판단한다.
위 그림에서 bottleneck(hidden) layer에 해당하는 h(x)의 dimension이 반드시 input의 dimension보다 작아야 하는 이유를 다시 살펴보자. 만약 input layer의 차원 D와 bottleneck(hidden) layer의 차원 d가 같다면, 인코딩과 디코딩 과정에서 정보의 손실 없이 그대로 값을 복사하도록 학습될 것이다. 이렇게 된다면 Anomaly data가 주어졌을 때, 그대로 손실 없이 reconstruction 하게 될 것이다. 이렇게 되면 원하던 Anomaly detection을 수행할 수 없다.


※ 이 글은 고려대학교 산업경영공학과 강필성 교수님의 IME654 강의를 정리하고, 공부한 내용을 추가하여 작성되었습니다.

댓글

이 블로그의 인기 게시물

One-Class SVM & SVDD

Support Vector Regression (SVR)

Support Vector Machine (SVM) - Soft margin