VAE 논문 리뷰입니다.

논문 : Auto-Encoding Variational Bayes
저자 : Diederik P. Kingma, Max Welling
[1] Background
1) Auto Encoder

VAE는 Variational Auto Encoder의 약자로 기본적으로 위와 같은 모델 구조를 가지고 있습니다.
그럼 일단 Auto Encoder가 뭔지부터 알아야겠죠.

Auto Encoder는 위처럼 이미지를 Encoder 에 입력하고 Input Image와 동일한 Output 을 Decoder 가 생성하도록 학습되는 모델입니다.
위 예시에서는 2 Image를 입력하고 latent vector를 만든 후 latent vector를 Decoder에 전달해 2 Image 를 생성합니다.
일반적인 Auto Encoder는 Encoder를 학습하기 위해 Decoder를 사용하는데
VAE는 Decoder를 학습하기 위해 Encoder를 사용하는 모델입니다.
[2] Method

VAE에서 Input Image가 Encoder로 들어가게 되면 데이터의 2차원 형태의 벡터인 평균과 표준편차를 출력해냅니다.
평균과 표준편차를 알 수 있으므로 이를 활용해 정규분포를 구성할 수 있고 이렇게 만들어진 정규분포로부터 샘플링을 통해 z latent variable을 만들어내고 z를 Decoder에 통과시켜 output 값을 출력하는 구조입니다.
하지만 정규분포만 있다면 이를 나중에 어떻게 미분하고 어떻게 최적화를 할 수 있을까요?
못합니다 예.
그래서 미분이 가능하도록 Reparameterization Trick을 적용하여 미분가능한 식으로 만들어주는 과정이 필요합니다.
미분이 가능해야 역전파 학습이 이루어지고 최적화를 할테니까요.
그래서 μ와 σ를 토대로 latent vector z를 바로 sampling 하지 않고
표준 정규분포 N(0,I) 에서
z = μ + σ x ϵ 의 식으로 latent vector z를 정의합니다.

다음은 VAE의 loss function 입니다.
VAE Loss Funcion 은 Reconstruction Error 와 Regularization 으로 구성됩니다.
Reconstruction Error 는 일반적인 Auto Encoder와 동일하게 원본 입력값을 출력으로 생성할 수 있게 복원하는 loss function을 의미합니다. (output과 input 이미지 차이를 최소화)
→ 입력을 가우시안 분포라고 가정하면 MSE Loss가 되고 베르누이 분포라고 가정하면 Cross Entropy loss가 됩니다.
Regularization loss 는 Encoder를 통과하는 z의 확률분포가 Decoder의 확률분포와 최대한 가깝게 만드는, KL Divergence를 최소화하는 Loss function을 의미합니다.
→ KL Divergence는 쿨백-라이블러 발산을 뜻하며 cross entropy와 동일하게 두 확률분포간 차이를 측정하는데 쓰이는 방법입니다.
이 두 loss가 어떻게 구해지는지 더 자세하게 보겠습니다. ㅠㅠ

VAE에서 z를 생성하고 z를 가지고 x의 확률분포를 알아야 하기 때문에 x의 likelihood를 최대화하는 방식으로 최적화를 하면 되겠다고 생각할 수 있습니다.
그 likelihood 식은 아래와 같습니다.

likelihood p𝜽(x) 는 모든 z에 대해 적분하는 식으로 나타낼 수 있지만
잠재 변수 z가 연속적인 경우, 적분을 정확히 수행하는 것은 일반적으로 불가능하거나 매우 비효율적입니다.
사후 확률분포 식으로 문제를 바꿔서 바라봐도 분모의 p𝜽(x)를 구할 수 없기에 이 또한 불가능합니다.
그래서 Decoder 만으로 학습을 하는 것은 불가능하므로 Encoder를 사용해 확률분포를 근사시키는 방법론으로 접근한 것입니다.

수식 유도 과정을 보면,
p𝜽(x) 를 maxmize 하는데, 이 값에 log를 씌워줘도 무관하기 때문에 log를 씌워주고 기댓값의 형태로 나타냅니다.
1) 이후, 베이지안 룰에 따라 p𝜽(x)를 바꿔줄 수 있습니다.
2) 바꿔준 식 분모, 분자에 각각 q_ϕ(z|x^{(i)}) 를 곱해줍니다.
3) log 식이기 때문에 곱셈은 덧셈, 나눗셈은 뺄셈으로 각 항을 분리해줄 수 있어 분리합니다.
→ 3번의 가운데 기댓값은 역수를 취해서 나왔기 때문에 -1을 곱해줍니다.
4) 3번 식의 2, 3번째 기댓값은 KL Divergence로 바꿔줄 수 있기 때문에 바꿔주어 전개를 마무리합니다.
결과적으로, 4번식이 도출되었고 4번 식의 likelihood를 maximize 하면 되는데
1, 2번째 기댓값은 구할 수 있지만 3번째 기댓값에서 x로부터 구해진 z의 p값은 구할 수 없어 저 값만 빼놓고 나머지 두 기댓값을 최대화하도록 합니다.

즉, 4번 식의 앞 두 개 항을 ELBO(Evidence Lower Bound)라고 부르고, 3번째 항은 어차피 KL Divergence라 0 이상인 값이기 때문에 무시할 수 있습니다.
정리하자면, 아래와 같은 식이 도출됩니다.

이렇게 Method 앞부분에서 언급한 두 항을 유도해보았고 (Reconstruction Error / Regularization)
일반적으로 loss를 minimization 하므로 각 항의 부호를 바꿔주어 식이 마므리됩니다.
식은 구했는데 구체적으로 어떻게 계산해야 하는지 더 보겠습니다. ㅠㅠ
Regularization
Regularization loss term부터 먼저 보면, 아래의 두 가정을 하고 들어갑니다.


z는 표준 정규분포를 따른다고 가정할 때 1번 식처럼 유도될 수 있습니다.
표준 정규분포는 𝝁 가 0이고 𝝈 가 1이기 때문에 1번 식의 각각에 대입하면 2번 식처럼 유도되고 계산을 거듭해 4번 식이 최종적으로 나오게 됩니다.
Reconstruction Error

Reconstruction Error도 보겠습니다.
해당 Error는 기댓값이기 때문에 확률분포와 각 값을 곱한 후 모든 z에 대해 적분하는 것으로 식을 도출할 수 있는데
위에서 언급했다시피 모든 z에 대해 적분하는 것은 어렵기 때문에 Monte-carlo technique 을 적용합니다.
Monte-carlo technique 이란, 어떤 확률분포가 있을 때 굉장히 큰 수만큼 Sampling을 해서 나온 값들의 평균을 내면 전체 기댓값과 유사하다는 개념입니다.
그렇지만, 딥러닝에서 굉장히 큰 수만큼의 기댓값을 샘플링하게 되면 연산량이 매우 많아지기 때문에 그냥 1개의 랜덤한 값으로 샘플링한다고 합니다. (사실 이래도 되는건가 싶기는 합니다..)

따라서, 정리하자면 위와 같은 식이 도출되고 L=1 이기 때문에 마지막 초록 박스만 구하면 됩니다.

저 초록 박스는 또 어떻게 구하냐 하면
p 조건부 확률값의 곱으로 나타낼 수 있고 log 곱이기 때문에 합으로 변환할 수 있습니다.
그렇게 변환된 식은 베르누이 분포를 따른다고 가정했을 때 베르누이 식으로 변환할 수 있고
정리하면 cross entropy 식이 됩니다.
만약, 베르누이 분포가 아니라 가우시안 분포를 따른다고 가정하면 아래와 같이 식이 전개됩니다.
이 경우에는 Squard Error 식이 되겠죠.

Summary

다시 한 번 VAE 전체를 정리하고 넘어가자면
x input image가 Encoder로 들어가면 평균과 표준편차를 출력하고 reparameterization trick을 적용해 z를 샘플링합니다.
샘플링된 latent vector z는 Decoder를 통과해 p 값을 만들고 두 개의 loss function인 reconstruction error와 regularization error를 갖게 됩니다.
[3] Experiments
1) MNIST 및 Frey Face 데이터셋 실험

첫 번째 실험은 latent space N 의 차원수에 대해 ELBO 최적화 성능을 비교한 실험입니다.
실험 대상은 AEVB(VAE) 방법과 Wake-Sleep 알고리즘입니다.
☑️ 결과적으로 MNIST, Frey Face 데이터셋에서 모두 AEVB의 성능 및 효율성이 우수했고 N을 매우 크게 설정해도 과적합이 심해지지 않았다는 점으로 보아 ELBO를 최적화하는 과정 자체가 정규화 역할을 수행해 과적합을 억제하는 효과를 가져온다고 말할 수 있겠습니다.

2) 주변 우도 실험

2번째 실험은 작은 데이터셋과 큰 데이터셋 각각에 AEVB, Wake-Sleep, MCEM 기법을 적용하고 수렴 속도를 비교한 실험입니다.
☑️ 서로 다른 학습 데이터 크기에 대해 AEVB, Wake-Sleep 알고리즘 및 Monte Carlo EM(MCEM)의 추정된 주변 우도를 비교한 결과, 다른 두 방법에 비해 MCEM은 모든 데이터셋을 불러와서 큰 하나의 배치로서 데이터를 처리하기 때문에 데이터가 많아질수록 효율적으로 학습할 수 없다는 문제가 생깁니다.
[4] Conclusions
- VAE는 생성을 위한 Auto Encoder 모델로, 기존의 Auto Encoder들이 Encoder를 학습시키기 위해 Decoder를 사용한 반면, VAE는 Decoder를 학습시키기 위해 Encoder를 사용
- 하지만 VAE의 Encoder 성능이 좋아서 차원 축소를 위해 많이 쓰이고 있다고 함
- Reconstruction Error 와 Regularization loss 를 활용해서 ELBO 를 구성
- Reconstruction Error : 출력된 output image 가 입력된 input image 와 얼마나 유사한지 비교
- Regularization Loss : Encoder를 통과한 z의 확률분포가 Decoder의 확률분포와 얼마나 유사한지 비교
[5] References
https://www.youtube.com/watch?v=GbCAwVVKaHY&t=872s
https://velog.io/@gunny1254/Variational-Auto-Encoder-VAE
https://woongchan789.tistory.com/11
[논문리뷰] Mask R-CNN 논문 리뷰
Mask R-CNN 논문 리뷰입니다.본 논문은 2018년도에 등장한 논문입니다.논문 : Mask R-CNN저자 : Kaiming He Georgia Gkioxari Piotr Dollar Ross Girshick[1] Background여느 Mask R-CNN 모델 리뷰와 동일하게 Instance segmentation과
dangingsu.tistory.com
'논문리뷰' 카테고리의 다른 글
[논문리뷰] Mask R-CNN 논문 리뷰 (0) | 2025.02.17 |
---|---|
[논문리뷰] EfficientNet 논문리뷰 (2) | 2025.02.05 |
[논문리뷰] RetinaNet 논문 리뷰 (2) | 2025.02.03 |
[논문리뷰] RoBERTa 논문 리뷰 (4) | 2025.02.02 |
[논문리뷰] GPT-1 논문 리뷰 (2) | 2025.01.26 |
[논문리뷰] YOLO 논문 리뷰 (2) | 2025.01.25 |
[논문리뷰] U-Net 논문 리뷰 (3) | 2025.01.23 |
[논문리뷰] Faster R-CNN 논문 리뷰 (2) | 2025.01.20 |