Autoencoder의 모든 것 - 이활석(NAVER) 을 정리한 것입니다.
https://www.youtube.com/watch?v=o_peo6U7IRM
Autoencoder 기본 개념
Autoencoder는 입력과 출력이 같은 구조로 되어 있다.
보통은 중간에 위치하는 Hidden Layer를 입력과 출력보다 적은 노드의 개수로 가져간다.
Bottleneck Hiddenlayer 표현 방식
- Code
- Latent Variable
- Feature
- Hidden representation
Autoencoder는 Unsupervised Learning을 Supervised Learning으로 바꾸어 문제를 해결할 수 있는 방법이다. Autoencoder를 사용하다 보면 2가지 직관을 얻을 수 있게 된다. 첫 번째 Decoder가 최소한 학습 DB에 있는 데이터는 잘 생성해 낼 수 있게 된다. 두 번째는 Encoder가 학습 DB에 있는 데이터들은 latent vector로 잘 표현할 수 있게 된다. 즉, 새로운 것을 창조하더라고 우리의 학습 DB안의 내용과 비슷한 결과가 나오게 된다. 최소한의 결과는 보장해준다는 의미로도 해석할 수 있는데, 뒤에 배울 GAN은 이런 식으로 최소한의 성능을 보장하는 방법은 아니다.
- 수식
- Input Data를 Encoder Network에 통과시켜 압축된 z값을 얻습니다
- 압축된 z vector로부터 Input Data와 같은 크기의 출력 값을 생성합니다
- 이때 Loss값은 입력값 x와 Decoder를 통과한 y값의 차이입니다
- 학습 방법
- Decoder Network를 통과한 Output layer의 출력 값은 Input값의 크기와 같아야 합니다(같은 이미지를 복원한다고 생각하시면 될 것 같습니다)
- 이때 학습을 위해서는 출력 값과 입력값이 같아져야 합니다
General Autoencoder와 Linear Autoencoder의 차이는 Activation Function의 차이이다. Linear Autoencoder는 Activation Function을 사용하지 않기 때문에 결국 Linear한 가중치들의 곱으로 나오게 된다. Linear neuron과 Squared loss를 사용하는 Autoencoder는 PCA와 같은 Subspace를 갖게 된다고 한다.
여러 가지 Autoencoder 방법들
Stacking Autoencoder(Pretraining)
딥러닝에서 초기값 설정은 매우 중요한 요소 중에 하나이다. Vanishing Gradient Problem을 해결하기 위한 수단 중에 하나로 초기값 설정을 조절하는데, 초기값 설정에 사용이 되었지만 요즘은 잘 사용되지 않는다. Stacking Autoencoder는 Pretranining에 사용되는 방법으로 기존의 NN에서 각 단계의 Weight들을 초기화하는 방식이다.
초기값 설정에 사용하는 방법은 간단하다. Input 값과 그다음 Layer를 기준으로 다시 Input 값이 나오도록 계속 반복하여 가중치를 학습하는 것이다. 그것을 딥러닝의 초기값으로 사용하여 Backpropagation을 하는 것이다.
Denoising AutoEncoder(DAE)
Denoising AutoEncoder는 random 한 noise를 추가하여 AutoEncoder를 하면 더 잘 Manifold를 찾을 수 있다는 방법이다. 같은 데이터에 noise를 추가하여도 manifold로 가서는 같은 곳에 mapping이 되어야 한다는 개념이 중요하다.
DAE의 Loss Function을 보면 \(L(x,y)\)가 아니라 \(L(x,g(h(\tilde x))\)으로 바뀌었다.
또한 기댓값이 씌워졌는데 이는 noise 값이 random 하기 때문이다. 따라서 샘플에 대한 평균으로 대체하는 것이다.
실제로 AE보다는 DAE가 더 좋은 성능을 보인다. pretraining 부분에서도 더 좋은 성능을 보인다.
하지만 noise를 너무 크게 할수록 점차 성능이 나빠진다는 것은 명심해야 한다.
Stochasic Contractive AutoEncoder(SCAE)
SCAE는 위의 DAE와 거의 같은 개념이지만 Loss Function에 Stochastic Regularization 텀을 넣어주는 것이다.
Contractive AutoEncoder(CAE)
CAE는 SCAE에서 Loss Function을 테일러 전개를 이용하여 Stochastic이 아닌 Deterministic 텀으로 넣어 준 것이다.
'DL Study' 카테고리의 다른 글
Generative Adverarial Network(GAN) (0) | 2022.09.22 |
---|---|
#4 Autoencoder의 모든 것 - Variational Autoencoder (2) | 2022.09.20 |
#2 Autoencoder의 모든 것 - Manifold Learning (2) | 2022.09.15 |
#1 Autoencoder의 모든 것 - 2가지 관점으로 DNN Loss 함수 이해하기 (0) | 2022.09.14 |
LSTM(Long Short-Term Memory) (0) | 2022.09.13 |