본문 바로가기
AI

오토인코더의 모든것.

by soypablo 2022. 11. 23.

임시저장하면 안올릴거 같아서 걍올림(1강까지만 작성)

AUTOENCODER의 4가지 키워드

  • Unsupervised learning
  • Manifold learning
  • Generative model learning
  • ML density estimation

Autoencoder를 학습할 때:

학습 방법은 비지도 학습 방법을 따르며, -> Unsupervised learning
Loss는 negative ML로 해석된다. -> ML density estimation

학습된 Autoencoder에서:

인코더는 차원 축소의 역할을 수행하며, -> Manifold learning
디코더는 생성 모델의 역할을 수행한다. -> Generative model learning

01. Revisit Deep Neural Networks

  • Machine learning problem
  • Loss function viewpoints 1: Back-propagation
  • Loss function viewpoints 2: Maximum likelihood
  • Maximum likelihood for autoencoders

Keyword: ML density estimation

Machine Learning Problem

1. Collect training data

2. Define functions

3. Learning/Training

4. Predicting/Testing

BackPropagation의 두가지 가정.
가정1. DNN의 총 Loss는 각각의 training sample의 합과 같다.
가정2. Loss를 구성할때, 네트워크의 출력값(output)과 정답(label)만 사용한다.(중간의 weight나 이런거 사용 안한다는 뜻?)

기본적인 Learning method:Gradient Descent
Gradient Descent는 Iterative Method이다. 즉 반복적으로 Gradient Descent를 수행하면서, Loss가 최소회 되는 지점을 찾는 것이다.

Maximum likelihood관점.

입력 x를 모델$f_\theta()$에 넣으면 아웃풋은? $p(y|f_\theta(x))$가 나온다.

기존의 머신러닝에서는, 결과가 정해진 값이 나오지만,

이 아웃풋의 의미는? 정해진 확률 분포에서 출력이 나올 확률이다.

Manifold는 뭔가?

Manifold는, 데이터($R^m$차원의)을 좌표공간상에, 표현했을 때, 이 점들의 집합을 표현하는 subspace가 존재할 것이다. 이 subspace를 Manifold라고 한다.

우리는 아주 큰 차원의 데이터 집합을 작은 차원안에서 최대한 손실없이 표현하고 싶다. 그렇다면, Manifold를 구해서, Manifold를 작은 차원에 정사영하는 것이 제일 손실이 적을 것이라는 가설이 우리의 Task를 가장 효율적으로 해결할 수 있는 방법이 될것이다.

데이터의 차원을 압축하면 장점이 뭔가?

  1. 데이터를 압축할 수 있다.(저장 용량이 줄어든다.
  2. 데이터 시각화에 도움을 준다(4차원 이상은 표현하기가 매우 힘드므로,)
  3. 차원의 저주에서 벗어나기 위함
  4. 중요한 특성을 발견할 수 있다.

차원의 저주는 뭔가?

데이터의 밀도와 관련된 이야기이다. 데이터의 차원이 1차원 늘어나면, 데이터의 부피는 지수적으로 증가한다.

즉 차원이 늘어날 수록, 데이터의 밀도가 급격히 줄어들어 모델추정에 필요한 데이터의 개수가 증가하게 된다.

차원 축소의 방식 전환.

기본적으로는 이웃 기반 학습을 통해 Manifold를 찾는 작업을 진행한다. (이웃을 정의하는 방식을 점차 똑똑하게 설계하는 것이 재미있다.)

isomap, LLE, parzen window 등등이 있다.

이웃을 정의하는 방식

  1. 단순히 데이터 차원에서 L만큼의 거리를 가진 점들을 이웃으로 간주한다.(제일 기본적인 접근)
  2. pca차원에서 L만큼의 거리를 가진 점들을 이웃으로 간주한다.
  3. 분포에 뉴럴넷을 적용하여 점들의 거리 정의를 트레이닝 한다?(맞는 표현인지 모르겟음).

이웃기반 학습의 문제점

고차원 데이터 간에서는, 이러한 거리기반(유클리디안 거리)을 통해 Manifold를 구하는 방식은 유의미하지 않을 수 있다.

이러한 이웃기반 학습의 문제를 Autoencoder가 해결할수 있다.

그리고 이러한 Autoencoder에서 manifold를 구하는 방식에서 Denoising에 관련된 아이디어가 등장한다.

(나중에 diffusion이 이 아이디어를 차용해 멋진 아이디어를 만들었다.)

Generative Model에서 우리가 찾고자 하는것.

우리는 x를 넣어서, x와 비슷한 샘플들을 잘 만들어낼 이상적인 확률분포 z를 구할 p(z|x)를 원한다.