MATH & ML

Autoencoder란 개략적 설명과 종류 본문

Machine Learning

Autoencoder란 개략적 설명과 종류

BlogYong 2018. 6. 15. 19:28

Autoencoder는 dimensionality reduction이면서 동시에 non-parametric Density Estimation인데

기존의 dimensionality reduction과의 차이 & 기존의 density estimation과의 차이는

바로 기존의 방법들이 Nerighborhood based training인데 이 Neighborhood기반의 방법들은 '고차원에서 가까운 애들은 왠만하면 manifold(저차원)에서도 가까울꺼야'라는 가정하에 진행한다. 하지만 고차원일수록 manifold를 잘 찾지 못하면 그 고차원에서의 거리는 실제 우리가 생각하는 거리와 다를 수 있다! 이것이 기존의 방법들과 autoencoder의 차이이다.

2000년 초반쯤에 나온 autoencoder는 Deep Neural network를 이용하여 데이터의 추상화를 위해 사용한다. 기존의 차원축소 문제들은 Unsupervised Learning이었는데 이를 encoder와 decoder로 이루어져있는 NN를 이용하여 supervised Learning문제로 바꾸어서 해결하였다. 학습시킬 data를 encoder에 넣고 이를 다시 decoder에 넣어서 나온 학습 결과가 기존 data와 비슷하게 되도록, 이 error를 줄이도록 학습을 시켜서 기존의 데이터를 잘 보존하는 가운데 latent feature들을 얻는다는데에 의미가 있다, 즉 다시말해 데이터를 압축해서 다시 복원을 해주는데 트레이닝 데이터에 대해서는 이 복원을 잘 해주는 잘해주는, 즉 최소한의 성능은 보존해주는 그러한 차원 축소를 하고 싶다고 해석할 수 있다.


(출처 : https://youtu.be/o_peo6U7IRM 의 발표자료 https://www.slideshare.net/NaverEngineering/ss-96581209)


보통 Autoencoder를 쓰는 테크닉은 데이터들을 Autoencoder로 먼저 압축을 시킨 후에 그 다음에 다시 고전적인 방법들로 다시 시켜서 결과를 보곤 한다.

그 중에서도 Linear Autoencoder는 activation function이 없이 그저 linear하게 학습을 하는건데, 1989년 논문에 의하면 이 Linear Autoencoder를 squared loss를 사용하여 축소한 차원의 manifold는 PCA를 이용하여 얻은 manifold와 같다고 한다.

Stacking Autoencoder는 기존의 NN에서 Weight들을 초기화 할 때에 autoencoder를  이용하여 각 단계의 Weight들을 초기화 한다. 각 단계를 autoencoder를  쌓아 가면서 pre-training한다고 해서 붙여진 이름이다.

Denoising Autoencoder(DAE)는 트레이닝 데이터에 노이즈를 추가하여 인코더에 넣어서 학습된 결과가 노이즈를 붙이기 전 데이터와의 error를 최소화 하는 목적을 가지는 Autoencoder이다.  같은 data를 error를 어떻게 추가해도 manifold로 가서는 같은 곳에 mapping이 되어야 한다는 개념으로 논문에 썰을 엄청 풀었다.

Stochastic Contractive Autoencoder(SCAE)란 기존 autoencoder에 noise를 추가하는 느낌을 Loss function에 Regularizer 텀으로 넣어주어 반영한것이 SCAE이고, 이를 테일러 전개를 이용하여 Stochastic이 아닌 Deterministic 텀으로 넣어준것이 Contractive Autoencoder(CAE)이다.

그 다음의 AE는 Variational Autoencoder(VAE)인데 이는 사실상 기존의 AE와는 다른데, AE는 manifold learning(차원축소)가 목적이기때문에 encoder부분이 필요한건데 이를 기존 방법과 다르게 supervised 방법으로 풀기 위해서 뒤에 decoder 텀을 붙여서 만든거라고 할 수 있다. 반면에 VAE는 애초에 목적이 data를 만들어내기 위한 목적인데, 뒷쪽부분을 학습시키기 위해 앞쪽이 붙여진것이고 이게 우연히 Autoencoder와 구조가 같게되어 AE라는 이름이 붙여졌다고 생각하면 된다. 

이 VAE는 다음 포스팅에서 Discriminative model이라는 것을 정확히 이해한 후에 정리하려한다.

Comments