핸즈온 머신러닝 2판에서 해당되는 내용을 작성한 것이다.
VAE와 이전 AE와의 다른 점:
1. Probablistic AE (확률적 오토인코더)이다: 훈련이 끝난 후에도 출력이 부분적으로 우연에 의해 결정 된다. (Denosing AE는 훈련 시에만 무작위성을 사용)
2. Generative AE (생성 오토인코더)이다: 마치 훈련 세트에서 샘플링된 것 같은 새로운 샘플을 생성할 수 있다.
-> 이 두 속성이 VAE를 Restricted Boltzmann machine과 유사하게 만든다.
but 훈련이 더 쉽고 샘플링 과정이 더 빠르다. + VAE는 효율적인 근사 베이즈 추론 방법인 variational Bayesian inference(변분 베이즈 추론)를 수행한다.
(RBM은 새로운 샘플을 만들기 전에 네트워크가 '열평형' 상태로 안정될 때까지 기다려야된다.)
과정:
1. 아래 그림과 같이 인코더는 mean coding인 $\mu$와 표준편차 $\sigma$를 만든다. (보통 AE는 이 과정 없이주어진 입력에 대한 코딩을 바로 만든다.)
2. 실제 코딩은 평균이 $\mu$이고 표준편차가 $\sigma$인 가우시안 분포에서 랜덤 샘플링하게 된다.
3. 디코더가 샘플링된 코딩을 보통 AE처럼 디코딩한다.
latent variable space == 코딩 공간.
latent variable == 코딩
-> 위 그림에서와 같이 VAE는 입력이 매우 복잡한 분포를 가지더라도, 간단한 가우시안 분포에서 샘플링된 것처럼 보이는 코딩을 만들 수 있다. *(꼭 가우시안 분포가 아니어도 된다.)
훈련하는 동안 비용 함수가 코딩을 가우시안 샘플들의 군집처럼 보이도록 coding space (latent space) 안으로 점진적으로 이동시킨다.
-> VAE는 훈련이 끝난 뒤 새로운 샘플을 쉽게 생성할 수 있다. 가우시안 분포에서 랜덤한 코딩을 샘플링해 디코딩하면 된다.
비용 함수란?
비용 함수는 아래 두 가지로 구성된다.
1. AE가 입력을 재생산하도록 만드는 일반적인 재구성 손실. (cross-entropy 사용)
2. 단순한 가우시안 분포에서 샘플된 것 같은 코딩을 가지도록 AE에 강제하는 latent loss. (목표 분포인 가우시안 분포와 실제 코딩 분포 사이의 KL-divergence 사용)
가우시안 잡음을 이용하여 코딩 층으로 전달될 수 있는 정보 양을 제한한다. (-> AE가 유용한 특성을 학습하게 만든다.)
VAE는 이 가우시안 잡음이 포함된다.
$ \ell = -\frac{1}{2}\sum_{i=1}^{n} 1 + log({\sigma}_{i}^{2} ) - {\sigma}_{i}^2 - {\mu}_{i}^2$
<변이형 오토인코더의 latent loss>
$\ell$: latent loss. $n$: latent (coding)의 차원
$\mu$와 $\sigma$: i번째 코딩 원소의 평균과 표준편차. 모든 $\mu$와 $\sigma$를 포함하는 벡터 $\mu$와 $\sigma$는 위 그림에서 왼쪽인 인코더의 출력.
수학적으로 안정적이고 훈련 속도를 높이는 방법:
인코더가 $\sigma$가 아니라 $ \gamma = log(\sigma^2)$를 출력하게끔 한다.
$ \ell = -\frac{1}{2}\sum_{i=1}^{n} 1 + \gamma_{i} - exp({\gamma}_{i}) - {\mu}_{i}^2$
<반영하여 다시 쓴 latent loss>
'AI_ML' 카테고리의 다른 글
[Boostcamp AI Tech] 추천 시스템 Basic(2) (0) | 2022.03.31 |
---|---|
[Boostcamp AI Tech] 추천 시스템 Basic(1) (0) | 2022.03.30 |
Hello 파이토치 (0) | 2021.08.20 |
Notation ambiguity: Y = np.dot(X, W) vs np.dot(W.T, X) (0) | 2021.08.11 |
어텐션을 이용한 텍스트 요약 (0) | 2021.07.30 |