일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 논문리뷰
- ICCV
- CVPR2023
- docker
- NERF
- Vae
- linux
- pytorch
- Semantic Segmentation
- panoptic nerf
- 리눅스
- GAN
- 융합연구
- panoptic segmentation
- NeRF paper
- Deep Learning
- 딥러닝
- 논문 리뷰
- 파이토치
- Neural Radiance Field
- Computer Vision
- paper review
- 경희대
- Python
- 2022
- IROS
- ICCV 2021
- CVPR
- Paper
- 논문
- Today
- Total
윤제로의 제로베이스
Variational Autoencoders: VAE 본문
Auto-Encoder
Auto-Encoder란 input image를 가장 잘 표현하는 compressed representation을 찾기 위한 Encoder학습 모델이다.
Variational Auto-Encoder
Auto-Encoder의 주 목적은 Encoder를 잘 학습하는 것이었다면 Variational Auto-Encoder의 경우 Decoder의 학습이 주 목적이다. 즉 VAE에서 Encoder는 Generative Model, Decoder를 만들기 위해 사용하는 도구에 불과하다.
여기서 포인트는 VAE는 Generative Model이다..!
Decoder
좋은 Generator 즉 Decoder가 되기 위해 우린 Decoder가 학습하게 되는 확률분포 p(x)를 최대화하는 것이 목표이다. 즉 데이터에 대한 확률 분포를 찾아내는 것이다. 이 확률 분포를 찾게 되면 우린 확률분포 속에서 현실에 있을 법한 데이터도 찾을 수 있기 때문이다. 그렇다면 generative model의 역할을 수행할 수 있는 것이다!
p_theta(x)를 다시 쓰면 아래와 같다.
p_theta(x)자체는 우리가 곧바로 찾을 수가 없다. 그래서 우린 다음과 같은 수식을 통해서 이를 찾아내고자 한다.
log p_theta(x)를 전개하면 아래와 같은 수식이 된다. (자세한 건 베이지안 정리를 따로 한 번 정리하도록 하겠다.) 하지만 그럼에도 우린 p_theta(z|x)를 알 수가 없다. 여전히 알 수 없는 것들 밖에 없으므로 우린 Encoder를 사용한다. 여기서 우린 Encoder의 역할을 찾을 수 있다. 바로 찾을 수 없는 Decoder의 확률분포를 근사하는 q(x) 확률분포를 찾기 위함이다. 이를 활용하기 위해 3번째 줄과 같이 q_phi(z|x)를 추가하여 log p_theta(x) 수식을 두개의 수식으로 쪼개어 표현할 수 있게 된다.
ELBO(Evidence Lower Bound)
위 수식에서 우린 log p_theta(x)를 2개의 수식의 합으로 변형할 수 있다. 그 중 하나가 바로 ELBO(Evidence Lower Bound)이다. 이름에서도 알 수 있듯이 이는 Lower Bound(하한선)를 나타내는 것이다.
ELBO가 하한선이 되는 이유는 아래의 수식에서 알 수 있다.
가장먼저 log p_theat(x) = ELBO + D_KL로 나타나져 있다.
여기서 D_KL로 표현한 것은 KL Divergence라고 불리는 확률분포 간의 거리를 측정하는 수식 중 하나이다. 확률분포간의 거리를 측정하는 것은 주로 확률 분포의 유사성을 확인하는 척도로 사용하기 위해서 존재하는데 KL Divergence 외에도 많이 존재하지만 그 중에서 많이 사용되는 편이다. 여기서 KL Divergence를 다루지 않고 다른 포스팅에서 다루도록 하겠다. 여기서 특징 하나만 짚고 넘어가자면 KL Divergence의 경우 항상 양수이다. 이유는 생각보다 간단한데, 이는 '거리'를 계산하는 수식이기 때문이다. 따라서 ELBO + D_KL이 log p_theta(x)가 되는데 여기서 D_KL이 항상 양수이므로 ELBO는 log p_theta(x) 보다 항상 작은 어떤 식이 될 수 밖에 없는 것이다. 즉 ELBO <= log p_theta(x)이므로 Lower bond 가 되게 된다.
같은 맥락으로 우린 p_theta의 확률분포를 최대화 하기 위해서 ELBO를 최대화 하는 것으로 설정한다.
그럼 자연스럽게 log p_theta(x)의 확률분포가 maximize 될 것이다. 또한 결국 p_theta(x)도 확률이기 때문에 커질 수 있는 폭의 한계가 있다. 그렇다보니 결국 ELBO를 maximize하다보면 KL-Divergence가 줄어들 것이다. KL_Divergence는 tightness라고도 불린다. 즉 이 tightness가 줄어들면 훨씬 비슷한 확률 분포가 학습된다.
참고자료
'Self Paper-Seminar > VAE' 카테고리의 다른 글
Intro-VAE (0) | 2022.10.25 |
---|---|
InfoVAE: Information Maximizing Variational Autoencoders (0) | 2022.10.19 |
VQ-VAE (Neural Discrete Representation Learning) (0) | 2022.10.12 |
Beta-VAE (1) | 2022.10.05 |
Conditional Variational AutoEncoder: CVAE (0) | 2022.09.28 |