Auto-Encoder 란?
Auto-Encoder(AE)는 입력과 출력이 동일한 값을 가지도록 설계한 신경망 구조이다. 입력 데이터를 가공하여 Label을 출력하는 방식이 아니라서 Label이 없는 데이터 특성을 분석하거나 추출하는 용도로 사용된다.
ex) 이미지 노이즈 제거, Anomaly Detection 등
AE의 구조는 위의 사진과 같다. 입력 x를 넣으면 출력 x'이 나오는데 x와 x'은 거의 같은 값이 되게끔하는 신경망 구조이다. 레이어가 점점 줄어들다가 다시 커지는 형태로 좌우 대칭으로 구축된 구조를 가지고 있다. 이러한 형태를 빗대어 Diabolo Network라고도 한다.
**Diabolo는 좌우 대칭으로 생긴 팽이를 말함.
AE의 가장 중요한 목적은 차원축소이다. AE의 앞부분을 Encoder, 뒷부분을 Decoder라고 부른다.
Encoder는 Recognition Network라고도 하며 입력 데이터 x를 압축하여 Latent vector z를 만드는 일을 한다. Latent vector에는 입력 데이터의 중요한 정보가 압축되어있다. 사실 AE의 목적은 여기서 끝이다. 하지만 우리는 차원축소가 올바르게 되었는지 검증하기 위해 Decoder를 도입하여 Latent vector를 복원하여 입력 데이터와 비슷한지 여부로 압축이 잘 되었는지 판단해볼 수 있다. 따라서 AE는 입력데이터와 출력데이터가 같아지도록 학습시킨다.
AE는 데이터를 압축하는 앞부분은 Label이 없기 때문에 비지도학습이지만, 전체 구조를 보면 사실 입력 데이터 자체가 Label이 되므로 Self-supervised Learning 으로 볼 수 있다.
정리해보면 AE는 표현학습(representation learning), 특징학습(feature learning)을 비지도학습 형태로 훈련하는 신경망이다. 압축된 Latent vector를 Hidden representation 또는 Feature라고도 부르기 때문이다. AE를 훈련하면 데이터에서 중요한 점, 특징점을 자동으로 찾아준다.
추가로, AE에서 Encoder는 차원축소하는 역할, Decoder는 생성 모델 역할을 한다.
그런데 차원축소는 왜 필요한 것일까? 그 이유를 알아보기 위해 Manifold Learning을 이해해보자.
Manifold Learning이란?
Manifold란 데이터가 있는 공간을 뜻하는데, 고차원 데이터를 데이터 공간에 뿌리면 sample들을 아우르는 subspace가 존재할 것이라는 가정에서 학습을 진행하는 것이다. 다시 말해, Manifold를 학습한다는 말은 데이터가 위치한 공간을 찾아낸다는 말이다.
Manifold Learning의 목적
Manifold Learning의 목적은 크게 4가지이다.
1. Data Compression (데이터 압축)
데이터를 압축한 뒤 압축한 Latent vector를 다시 디코딩할 때, 원본 데이터로 복원이 제대로 된다면 압축이 잘 된 것이다.
2. Data Visualization (데이터 시각화)
시각화를 하는 이유는 데이터에서 직관을 얻거나 해석을 쉽게 하기 위함이다. t-SNE을 이용하여 시각화하는 점과 목적이 비슷하다.
3. Curse of Dimensionality (차원의 저주)
데이터의 차원이 증가할수록 해당 공간의 크기(부피)가 기하급수적으로 증가하기 때문에 동일한 개수의 데이터의 밀도는 차원이 증가할수록 급속도로 희박해진다. 따라서, 차원이 증가할수록 데이터의 분포 분석 또는 모델 추정에 필요한 샘플 데이터 개수가 기하급수적으로 증가하게 된다.
데이터가 같다면 차원이 증가할수록 데이터 밀도가 급격히 줄어들고 데이터 활용력은 떨어지게 된다. 그렇기 때문에 가능한 한 차원은 줄일수록 좋다.
4. Discovering most important features (유용한 특징 추출)
Manifold를 찾았다는 점 자체가 데이터에서 유용한 특징을 찾았다는 말과 같다. 고차원 데이터의 Manifold 좌표들을 조정해보면 Manifold의 변화에 따라 학습 데이터도 유의미하게 조금씩 변화한다는 것을 확인할 수 있다.
예를 들어, Manifold의 축을 따라가면 크기변화, 회전변화 등의 특징을 발견할 수 있기 때문이다. Manifold를 구했을 뿐인데 중요한 피쳐가 추출된 것이다.
Manifold의 실질적인 의미
왼쪽은 고차원 공간에서 세가지 데이터를 표시한 것이다. 고차원 공간에서는 유클리드 거리상 B가 A2보다 A1에 가깝다. 그런데 Manifold에서는 다르다. 오른쪽 Manifold에서는 B가 A1보다 A2에 가깝다.
이 예시는 고차원에서의 차원의 저주때문에 유의미한 거리 측정 방식을 찾기가 어렵다는 점을 보여준다.
진짜 차원을 줄여도 문제가 없을까?
Yes. 왜냐하면 Manifold Hypothesis 때문이다. Manifold Hypothesis란 고차원상 데이터에서 이 데이터 집합을 포함하는 저차원의 Manifold (subspace)가 있을 것이라는 가정이다. 다시 말해, 데이터는 고차원상에 고르게 분포되어 있지 않고, 특정한 곳에 몰려있을 것이라는 말이다. 그리고 그 몰려있는 데이터를 아우르는 Manifold를 찾을 수 있다는 가정이다.
PCA vs Auto-Encoder
PCA는 원 데이터를 공간에 뿌려 hyperplane을 찾는 방법이다. 이 때 PCA 알고리즘의 수식은 우리가 신경망에서 사용하는 Linear한 수식이 된다. 정리하면 PCA는 선형 차원 축소 기법이고 AE는 비선형 차원 축소 기법이다.