0. 생성 모델이란?
- 주어진 데이터를 통해 데이터 분포를 학습하여 새로운 데이터를 생성할 수 있는 모델
- 데이터 x와 특성 y의 결합(joint) 분포 p(x, y) or y가 주어질 때 x의 조건부 분포 p(x|y)를 추정하는 모델
- 주어진 y가 없는 경우, 데이터의 주변(marginal) 분포 p(x)를 추정하는 모델
1. 가능도 (Likelihood)
- 특정 분포를 따르는 관측들을 토대로 이현상을 설명하는 모델이 얼마나 잘 설명하고 있느냐를 알려주는 지표
- 모델 파라미터 θ에 의존하는 분포 p(x;θ)를 따르는 n개의 데이터 x_1, x_2,..., x_n 관찰
- 데이터로부터 모델 파라미터θ를 추정
- - 최대 가능도 추정은 주어진 데이터를 설명하기에 가장 그럴듯한 모델 파라미터를 찾는 과정이다.
p(x_i;θ) -> 주어진 파라미터 θ하에서 데이터 x가 관측될 확률 즉, 데이터 x는 고정된 값으로 보고 θ를 조절하는 것이다. 여기서 θ를 조절하면서 이 가능도를 최대화하는 것이 최대 가능도 추정(MLE)이다.
2. kL 발산
- - 생성 모델의 학습을 어떻게 하지? -> 데이터의 분포 P_data와 모델 P_θ를 가깝게 하면된다. -> 분포를 유사하게 만든다는 것은 거리나 차이를 측정할 수 있는 기준을 정하고 이 기준에 따라서 최적화를 수행하여 가깝게 만든다는 의미이다.
- 두 분포 P_data와 P_θ사이의 거리 -> Kullback - Leibler Divergence(KL-Divergence) 이라는 기준을 통해 최적화하자
- divergence 의미는 발산이다 -> 그저 차이를 다른 말로 표현한 것이다 -> 차이는 두 확률 분포(P, Q)를 비교한다는 것이다.
3. 두 분포 P_data와 P_θ 사이의 KL-Divergence를 최소화 = 로그 가능도 최대화
$$
KL(P_{data} \parallel P_{\theta}) = \sum_{x} p_{data}(x) \log \frac{p_{\theta}(x)}{p_{data}(x)} = \sum_{x} p_{data}(x) \log p_{data}(x) - p_{data}(x) \log p_{\theta}(x)
$$
- 목표는 θ에 대해 최소화 이다. 따라서 첫 번째 항은 θ와 상관이 없으므로 제외
$$ \sum_{x} p_{data}(x) \log p_{\theta}(x) \approx \frac{1}{n} \sum_{i=1}^{n} \log p_{\theta}(x_i) $$
- 위 식은 로그가능도 식과 같다. 우리의 목적은 θ를 최대화해서 모델분포 P_θ가 P_data에 점점 가까워지도록 학습하는 것이다.
- 정리하면 두 분포 P_data와 P_θ사이의 KL-Divergence를 최소화한다는 것은 모델 파라미터 θ를 최적화 시키는것이고 이 식을 정리하면 로그가능도식이 되는데 이를 최대화하는 것과 같은 의미가 된다.
4. 오토인코더
- 오토 인코더의 목적은 비선형 차원 축소이다.
- Encoder : Data가 가진 차원을 중요한 몇가지 차원으로 extraction 한다(저 차원 잠재표현을 만든다).
- Decoder : 저차원 잠재표현으로부터 입력 데이터와 가까운 고차원 데이터로 재구성(Reconstruction)을 한다.
5. Variational Auto - Encoder
- VAE는 Input image x를 잘 설명하는 feature를 추출하여 Latent space z에 담고, 이 Latent space z를 통해 x와 유사하지만 완전히 새로운 데이터를 생성하는 것을 목표
- 오토 인코더 구조를 가지는데 차이점은 Latent space의 분포가 표준정규분포(가우시안 분포) 인것
- VAE에서 데이터 x가 주어졌을 때 그 데이터의 확률 P_θ(x)를 최대화하는 것이 목표이다. 즉 x의 likelihood를 최대화하는 확률 분포를 만들고 싶다.
\[ L(\theta) = \sum_{i=1}^{N} \log p_{\theta}(x_i) \tag{1} \]
- 이 likelihood에서 P_θ(x)를 직접적으로 구하기 어려우니 joint 확률 p(x, z)에서 z를 적분하여 marginal 확률 p(x)를 구할 수 있다.
$$ p_{\theta}(x_i) = \int p_{\theta}(x_i \mid z) \, p(z) \, dz \tag{2} $$
- 여기서 문제 모든 z에 대해서 p_θ(x|z)를 적분을 할 수 없기에 Variational inference 아이디어 사용
Variational inference
$$ p_{\theta}(z \mid x) = \frac{p_{\theta}(x \mid z) \, p_{\theta}(z)}{p_{\theta}(x)} \tag{3} $$
- (2) 식이 적분계산이 어려우니 베이즈공식을 이용하여 변형한 (3)식은 구할 수 있냐? -> 여전히 P_θ(x) 를 구할 수 없다
- P_θ(x|z)(디코더)를 모델링을 하기 위해서 (3)에서 P_θ(z|x)를 구하고 싶었는데 못 구했으니, P_θ(z|x)를 인코더에 근사화하여 뉴럴 네트워크로 구할 수 있게 한다.
- 정리하면 디코더에서 z로부터 x를 생성하면 되는데 학습시키기 위해서 디코더 만으로 학습할 수 없기에, 인코더 도움을 받는다.
- -> ELBO 식 유도
ELBO
- Likelihood 대신 계산 가능한 ELBO를 최대화하자
- ELBO 식결과를 하나하나 해석해 보자
- Reconstruction error : encoder에서 인풋 x로 만들어낸 z를 받아서 Decoder가 복원한 x의 확률이 최대화하는 것이다.
\[ \mathbb{E}_{q_{\phi}(z \mid x)} \left[ \log p_{\theta}(x \mid z) \right] \]
- Regularization term : q(z|x) 즉 입력 x를 통해 z를 만든 분포와 사전 분포 P(z)가 비슷하게 함으로 써 z의 분포가 정규분포가 되도록 한다.
\[ \text{KL} \left( q_{\phi}(z \mid x) \, \| \, p_{\theta}(z) \right) \]
- p(z|x)-> 계산 불가능 하기에 KL-Divergence >= 0으로 이 부분을 지우면서 앞의 수식을 lower bound 하여 계산한다.
\[ \text{KL} \left( q_{\phi}(z \mid x) \, \| \, p_{\theta}(z \mid x) \right) \]
- VAE의 손실함수
- MLE 대신 ELBO의 합을 최대화 -> 최적화에서 ELBO의 합을 최소화
- 이 손실함수를 계산 시 샘플링이 필요하다. -> 미분 불가능 -> Reparameterization (재매개변수화 방법) 이용
- Reparameterization (재매개변수화 방법)
우리가 표준정규분포에서 샘플링을 통해 변환할 수 있다면 미분이 가능하다.
1. z의 분포 (μ(x)와 σ(x)는 입력 x에 대한 평균과 표준편차를 출력하는 인코더 네트워크의 출력)
$$ q_{\phi}(z \mid x) = \mathcal{N}(z \mid \mu(x), \sigma^2(x)) $$
2. 재매개변수화 : z를 직접 샘플링하는 게 아니라 표준정규 분포에서 샘플링된 ϵ사용, 이후 평균 μ(x)과 표준편차 σ(x)를 사용하여 z를 재매개변수화 한다. -> 미분 가능
$$
\begin{aligned}
z &= \mu(x) + \sigma(x) \cdot \epsilon \\
\epsilon &\sim \mathcal{N}(0, I)
\end{aligned}
$$
- 정리:
Decoder가 생성한 데이터는 학습데이터와 좀 닮아있다. -> 아주 새롭게 생긴 데이터는 만들지 못한다.
Encoder는 latent vector를 잘 표현할 수 있다. -> 데이터의 추상화를 위해 차원축소로 잘 이용한다.
-> GAN은 VAE 비해 좀 더 새로운 데이터를 잘 생성된다.
'DL' 카테고리의 다른 글
Transformer 이해하기 (0) | 2024.09.23 |
---|---|
Attention 이해하기 (1) | 2024.09.17 |
[Generation] Diffusion Model의 이해 (DDIM, with GAN) (0) | 2024.08.26 |
[Generation] Diffusion Model의 이해 (DPM, DDPM) (2) | 2024.08.25 |
[Generation] Generative Adversarial Network (GAN) (1) | 2024.08.20 |