일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BERT
- ue5.4
- Few-shot generation
- NLP
- 오블완
- 딥러닝
- Generative Model
- 디퓨전모델
- CNN
- motion matching
- WinAPI
- multimodal
- Diffusion
- UE5
- userwidget
- 언리얼엔진
- ddpm
- 폰트생성
- animation retargeting
- RNN
- deep learning
- WBP
- Font Generation
- dl
- cv
- Stat110
- GAN
- Unreal Engine
- 생성모델
- 모션매칭
- Today
- Total
Deeper Learning
Variational autoencoder 본문
VAE는 생성을 목표로 하는 모델로 AE와 형태는 비슷하나 근간은 명백하게 다르다.
생성모델의 목표는 주어진 dataset $x$ 를 사용하여 density estimation을 통해 $p(x)$를 근사하는 것
generator를 구성하는 모든 parameter set을 $\theta$ 라고 하자
샘플링가능한 분포 $z$ 에서 샘플링한 $z^i$ 는 decoder(generator)인 $g_\theta$ 를 통과하여 데이터를 생성
생성결과 = $g_\theta(x|z=z^i)$
generator까지 고려하였을 때 최대화 해야하는 대상은 $p_\theta(x|z)$ (parameter set $\theta$ 로 구성된 generator를 사용하였을 때 prior $z$ 에서 $x$ 를 생성할 확률)
샘플링가능한 분포 $z$ 에서 generator의 input을 샘플링하기 때문에 최대화 해야하는 대상 $p_\theta(x)$ 를 조건부확률 식을 사용하여 아래와 같이 등식을 세울 수 있다
$p_\theta =\int p(x|g_\theta(z))p(z)dz =\int p_\theta(x|z)p(z)dz$
Q. prior $z$ 는 추정하고자 하는 고차원 공간의 매니폴드의 역할을 하는데 단순한 Uniform, Normal distribution을 사용하여도 괜찮은가?
→ Generator의 초기 layer가 latent variable $z$ 를 더 이상적인 latent space로 매핑하는 역할을 담당하도록 있도록 학습될 수 있음
Q. prior $z$ 를 가우시안 분포로 가정하면 바로 학습이 가능하지 않을까?
→ $z$ 에서 샘플링한 $z^i$ 에 대해 알맞은 $x^i$ 를 매핑할 수 없음, 학습의 어려움 존재 (image일 경우 $z^i =0.02$ 일 경우 데이터셋의 수많은 이미지 중 어떤 이미지를 $x^i$ 로 설정할 것인가?)
수식이 바뀌어도 목표는 동일함, generator를 통과한 생성결과가 $x$ 와 비슷하도록
학습을 위한 data pair 구성의 어려움 ($z^i$ 와 $x^i$ 의 매핑)을 해결, 더 알맞은 분포를 추정하기 위해 $x^i$ 를 evidence로 $z^i$ 를 설정
이상적인 분포 $p(z|x)$ 를 찾게 되면 $x$ 의 정보를 사용하여 얻은 $z$ 로 $x$ 를 generate 하는 식으로 학습이 가능
$p(z|x)$ 는 어떤 분포인지 전혀 알 수 없음
→ Variational Inference(변분추론)을 사용
Variational Inference란 알 수 없는 분포를 다루기 쉬운 Approximation class의 parameter를 조정해가며 목표로 하는 분포를 근사하는 기법
parameter set $\phi$ 를 사용한 Approximation class $q$ 를 사용하여 $p$ 를 근사
$q_\phi(z|x) \approx p(z|x)$
$p(x), p(z|x), q(z|x)$ 의 관계식을 세우면 다음과 같다
$\log(p(x)) = \int \log(p(x))dz = \int \log(p(x))q_\phi(z|x)dz$
$=\int \log(\frac{p(x,z)}{q_\phi(z|x)}\cdot \frac{q_\phi(z|x)}{p(z|x)})q_\phi(z|x)dz$
$= \int \log(\frac{p(x,z)}{q_\phi(z|x)})q_\phi(z|x)dz + \int \log(\frac{q_\phi(z|x)}{p(z|x)})q_\phi(z|x)dz$
마지막 줄의 둘째 항은 $KL(q_\phi(z|x)||(p(z|x))$ 와 같으며 0보다 큰 값이다.
첫째 항 = ELBO(Evidence LowerBOund)
$log(p(x))$ 는 ELBO와 $KL(q||p)$ 의 합이며 두 항의 값은 Approximation class $q$ 의 parameter set $\phi$ 에 의해 변함
앞에서 $p(z|x)$ 는 알 수 없는 분포로 이를 근사하기 위해 Variational Inference를 사용 → KL 항은 계산이 불가능하기 때문에 KL 항을 최소화 하는 대신 ELBO항을 최대화한다
최적의 parameter set $\phi$ 를 $\phi^*$ 라고 하면 $q_{\phi^*}(z|x) = \underset{\phi}{argmax}(ELBO(\phi))$
ELBO를 전개해 보면
$ELBO(\phi) = \int \log(\frac{p(x|z)p(z)}{q_\phi(z|x)})q_{\phi}(z|x)dz$
$= \int \log(p(x|z))q_\phi(z|x)dz - \int \log(\frac{q_\phi(z|x)}{p(z)})q_\phi(z|x)dz$
$=E_{q_\phi(z|x)}[log(p(x|z)] - KL(q_\phi(z|x)|p(z))$
이상적인 함수 $p(z|x)$ 를 Variational Inference를 통해 근사한 $q_\phi$ 를 Neural Net을 통해 추정하면 모델의 형태는 input이 $x$ 이며 output이 $z$ 인 형태의 Encoder가 됨
따라서 최종 모델 구조는 아래와 같으며 이는 latent variable의 sampling 부분을 제외하면 Autoencoder와 동일하다.
Encoder와 Decoder를 나누어 생각해보면
$\phi$ 에 대해 maximize하는 것은 Variational Inference와 관련이 있으며 z를 샘플링 하는 Encoder가 이상적인 함수가 되도록 하고
$\theta$ 에 대해 maximize하는 것은 $p(x|z)$ 에서 MLE개념과 맞닿아 있으며 given z에서 Decoder가 $x$ 분포에 속하는 결과물을 생성하도록 함
ELBO를 objective function으로 사용하면 아래와 같다
$L_i(\phi, \theta,x_i) = -E_{q_{\phi}(z|x_i)}[\log(p(x_i|g_\theta(z)))]+KL(q_\phi(z|x_i)||p(z))$
우변의 첫 항을 Reconstruction Error로 해석이 가능하며 둘째 항을 Regularization term으로 생각할 수 있다
Reconstruction Error는 $x$ 를 evidence로 Variational Inference를 통해 얻은 $q_\phi$ 를 사용하여 $z$ 를 샘플링 하고 $z$ 를 입력으로 하여 $p_\theta$ 를 사용하여 얻은 최종 생성 결과가 $x$ 가 될 기댓값
Regularization은 Variational Inference를 위한 Approximation class가 prior와 같은 분포가 되도록 규제하며 prior로는 주로 다루기 쉬운 분포(Gaussian distribution)을 사용
KL Regularization에 의해 latent space에서 하나의 데이터 포인트에 대응하는 공간은 prior distribution의 형태를 띄게 됨
Reference
[0] 오토인코더의 모든것 - https://www.youtube.com/watch?v=rNh2CrTFpm4
[1] https://lilianweng.github.io/lil-log/2018/08/12/from-autoencoder-to-beta-vae.html
'AI > Deep Learning' 카테고리의 다른 글
ConvNeXt: A ConvNet for the 2020s (0) | 2022.01.30 |
---|---|
MLP-Mixer: An all-MLP Architecture for Vision (0) | 2022.01.28 |
Few-shot Font Style Transfer between Different Languages (0) | 2022.01.07 |
DeiT: Training data-efficient image transformers & distillation through attention (0) | 2022.01.05 |
CoAtNet: Marrying Convolution and Attention for All Data Sizes (0) | 2022.01.01 |