SonJJU

AutoEncoder…1

지난번 GAN에 이어 Generative Model 중의 하나인 autoencoder를 보자. 이 모델은  단지 Generating만 하는 것이 아니라 다른 것들도 하는 neural net이라 재미있다.  Autoencoder는 단어 그래도 자동으로 encode를 하는 Neural Net이다.  encode가 뭔지는 뒤에서 설명한다.

Unsupervised Learning

비지도 학습은   라벨이 없이 데이터 X만이 있고 데이터만을 이용해 어떠한 것을 학습하는 학습이다. 어떠한 것들엔 클러스터링, 차원 축소, 변수 선택 등이 있다. Autoencoder는 변수 선택, 학습에 쓰이기도 한다.

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으로 가지는 모델로 학습한다. 그러면 anomal 데이터는 보통의 데이터와는 MSE차이가 클 것이다. 이것이 autoencoder가 anomaly detecting을 하는 대략적인 방법이다.

저작자 표시 비영리 변경 금지
신고
DISQUS 로드 중…
댓글 로드 중…

블로그 정보

SonJJU - 손주형

Data Scientist, SonJJU

최근에 게시된 글

티스토리 툴바