AutoEncoder 를 이용한 abnormally detection..1

AutoEncoder…1

Generative Model 중의 하나인 autoencoder를 보자. 이 모델은  단지 Generating만 하는 것이 아니라 다른 것들도 하는 neural net이라 재미있다.  Autoencoder는 단어 그래도 자동으로 encode를 하는 Neural Net이다.  encode가 뭔지는 뒤에서 설명한다. 기본적으로 Generative model이지만 GAN과 같은 좋은 성능의 generative model이 나온 지금은 다른 용도로 많이 쓰이는 듯하다. Feature extraction, pretrain, abnormally detection 과 같은 용도가 있다. 이번에는 AutoEncoder를 이용해 Abnormally detection을 하려고 한다.

Unsupervised Learning

비지도 학습은 라벨이 없이 데이터 X만이 있고 데이터만을 이용해 어떠한 것을 학습하는 학습이다. 기계 학습에서 unsupervised model은 주로 클러스터링을 하는 학습이다. Supervised model 보다는 학습의 종류가 많지는 않지만, 실제 데이터는 대부분이 라벨이 없는 데이터인 경우가 많아 중요한 분야이다.

Generative Models

그럼 다시 Generative Model를 짧게 설명하면, 주어진 데이터 X가 $P _ {data(X)} $의 분포를 가질때 이것과 같은 분포를 가지는 $P _ {model(X)} $를 학습을 통해 만드는 것이다. Generative model은 해상도 높이기, 색 입히기 등에도 쓰인다.

Autoencoders

오토인코더는 encoder와 decoder라는 두가지 부분으로 이루어져 있다. 먼저 데이터 X에서 중요한 특징을 뽑아내는데 이 과정을 Encoder라고 한다.  이 encoder 과정에서 차원 축소가 일어난다. 그 다음 decoder 과정을 통해 데이터 X와 같은 분포를 가지는 output 데이터를 생성한다. 다음 원본 데이터와 생성된 데이터를  L2 cost function등을 이용해 cost를 측정하며 학습을 한다.

 

이 과정을 통해 중요한 변수만을 갖는 차원 축소가 일어난다. 학습이 끝나면 이제 Encoder만을 이용하여 예측 데이터 y를 생성하고 이것을 원본 데이터 y와 비교 한다. 이 과정이 좀 더 복잡해지면(레이어가 많아지면) 이것을 Stacked Autoencoder 라고 부른다. 다른 Neural net과 마찬가지로 오토인코더도 여러가지 버전이 있다. ex. Denoising, Sparse, Variational등등

 

 

내가 현재 관심 있는 것은 Autoencoder를 이용하여 Anomaly Detection을 하는 것이다. 방법은 대략 이렇다. 먼저 라벨과  anomal을 뺀 데이터만을 가지고 오토인코더를 이용해 학습을 한다.  output은 anomal 데이터를 제외한 데이터와 비슷한 것들이 나올 것이다. 내가 원하는 것은 이 생성된 모델이 아니므로 사용하지 않고 학습 시켜놓은 encoder 부분을 사용한다. 이  encoder로 이번엔 anomal 데이터를 포함한 전체 데이터를 MSE를 output으로 가지는 모델로 학습한다. 그러면 abnomal 데이터는 보통의 데이터와는 MSE차이가 클 것이다. 이것이 autoencoder가 anomally detecting을 하는 대략적인 방법이다.

데이터는 신용데이터를 가지고 할 예정이다.