코딩 및 기타
VAE , Variational AutoEncoder , CVAE
정지홍
2025. 9. 14. 13:06
확률적 샘플링
- vae에서의 샘플링은 단순한 랜덤화가 아니다.
==> 이는, 학습 가능한 잠재분포로부터 미분 가능한 방식으로 표본을 뽑아, 생성과 학습을 모두 가능하게 만드는 핵심 기능이다. ( 미분 가능한 방식으로 뽑아야, 기울기를 계산할 수 있음. )


VAE
- 입력 데이터를 latent space의 확률분포로 변환하여, 새로운 데이터 샘플을 생성하는 확률적 생성 신경망 모델이다.
- AutoEncoder 와 다르게, 데이터의 잠재표현을 확률분포로 모델링한다.
- 왜 확률적이여야 하나?
- 생성의 다양성 ==> 같은 x에서도 여러 z를 샘플하면 다양한 복원이 가능하다.
- 연속적 잠재공간 ==> 분포학습 + KL정규화로 z공간을 매끄럽게 만듬
- encoder
- 입력 데이터 x를 잠재변수 z의 확률적 분포로 매핑한다.
- 인코더는 μ(x), σ(x)를 내놓고, 이 값들로 부터 z를 샘플링 해야함.
==> z를 거쳐서, decoder가 학습되니, μ(x), σ(x)는 역전파가 가능해야한다.
- decoder
- 잠재공간에서 샘플링한 z를 입력받아서, 원본 or 새로운 데이터를 생성한다.
- ε∼N(0,I) , z = μ_ϕ(x) + σ_ϕ(x) ⊙ ε
- 동작과정
- 1. 입력으로 재구성하고 싶은 origin data가 encoder e로 들어간다.
- 2. encoder는 입력 x를 보고, "잠재변수 z의 분포 를 추정한다.
- ( 위의 그림에서 보듯이, 인코더는 μ와 σ를 출력한다. )
- μ는 잠재변수 분포의 평균
σ는 잠재변수 분포의 표준편차
- μ는 잠재변수 분포의 평균
- 즉, 인코더가 내뱉는거는, 하나의 값이 아니라 분포이다.
- ==> encoder의 출력값인 "σ" 와 "μ"를 가지고 q_ϕ(z∣x)를 나타내는 것.
- ) ,
- ( 위의 그림에서 보듯이, 인코더는 μ와 σ를 출력한다. )
- 3. 을 수행
- ε∼N(0,I)이다. 즉, 표준정규분포에서 뽑는 난수이다. ( 평균은 0 , 표준편차는 1인 것.)
- ε은 사실상 noise이다.
- ε의 shape은
-

- L_VAE = L_recon + β⋅KL( q( z∣x ) ∥ p( z ) )
- β값은 KL항의 가중치이다.
- β=1 , 표준 VAE
- β > 1 , KL을 더 세게 늘려서 잠재공간을 더 규칙적으로 만듬... 단, 재구성 품질은 떨어질수있음.
- 재구성 손실↑, 샘플 단순, z 분산↓(평균 0 근처), 활성 뉴런 적음
- β < 1 , KL을 약하게 해서, 재구성 품질↑/세부 묘사↑, 대신 잠재공간이 뒤죽박죽이 될 수 있음.
- 재구성 좋지만 샘플링 시 노이즈에 민감, 보간 품질 나쁨.
- L_recon은 재구성 손실이다.
- 즉, decoder가 z로부터 x를 얼마나 잘 다시 만드는지를 측정하는 값.
- decoder가 예측한 분포 아래에서 실제 가 나올 로그확률의 음수
- 로그확률이 클수록(=더 잘 맞출수록) 은 작아짐.


CVAE
- 조건부 정보 (예: 클래스 라벨, 속성, 텍스트 등)를 붙여 원하는 조건에 맞는 샘플을 생성할 수 있게 한 VAE
- 강아지품종 10개가 있는 사진 1000를 주고,
이중에서 1번레이블인 말티즈를 y로 주면,
1000개의 사진을 가지고 말티즈 사진을 만들어내는거