Variational AutoEncoder

[latexpage]

1. Auto Encoder

a. Auto Encoder의 구조: Encoder&Decoder

Auto Encoder의 구조는 어떤 입력에 대해서 특징을 추출하여 입력의 압축된 정보를 Latent Variables(잠재 변수) 에 담고, 이 Latent Variables 로부터 다시 자기 자신(입력) 복호화하는 알고리즘이라고 할 수 있다.

(1). Encoder

입력된 정보들은 Encoder를 통해 Hidden 공간 (Latent Space, 잠재 공간)으로 압축된다.

예시: 얼굴 이미지 전체 픽셀 → 피부색, 눈, 코, 입, 귀

(2). Decoder

Latent Space에 있는 Latent Variables의 정보를 기반으로 원래의 이미지를 복원한다.

예시: 피부색, 눈, 코, 입, 귀 → 얼굴 이미지

b. Auto Encoder + Generative Model

Latent Space로부터 데이터를 생성하고자 한다면?

Latent Space 속 특징들에 대한 벡터들의 값들을 조정하면 새로운 데이터를 생성하지 않을까?

그러기 위해서 Sampling을 해보자

2. Variational Auto Encoder (VAE)

a. Approximate (근사)

가지고 있는 데이터(X)는 너무 많고 고차원이다.

→ $Sample(X)$의 분포가 정규분포를 따른다고 한다면

→ 분포 내에서 샘플링을 통해 새로운 데이터 $\hat{X}$를 추정 가능해짐

Encoder의 출력이 $N(\mu(X), \sigma^2(X))$가 된다면, 샘플링을 통해 잠재 변수 $z$를 생성해 낼 수 있고, Decoder를 통해 대응하는 새로운 데이터를 추정할 수 있다.

(1). Reparamentrization Trick

그러나, 샘플링을 할 경우 Random성을 띄기 때문에 학습이 불가능해짐.

→ Reparamentrization Trick을 통해 미분이 가능해짐

기존 식: $x\sim N(\mu(X),\sigma^2(X))$

Trick을 적용한 식: $\epsilon\sim N(0,1),~ x=\mu(X)+\sigma^2(X)\times\epsilon$

→ 미분할 때는 샘플링이 아니라서 가능하지만, 샘플링 식을 닮아서 분포를 따른다는 가정을 지킬 수 있어짐

(2). KL Divergence

두 분포가 가우시안 분포를 따를 경우.

$$ D_{KL}(p||q)=\log\frac{\sigma_2}{\sigma_1}+\frac{\sigma_1^2+(\mu_1-\mu_2)^2}{2\sigma_2^2}-\frac12\\where ~~~p(x)=N(\mu_1,\sigma_1^2),~q(x)=N(\mu_2,\sigma_2^2),~N(\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$

(3). Bayes Rule

$$ P(H|E)=\frac{P(H)*P(E|H)}{P(E)} $$

E: Evidence | H: Hypothesis

P(H): 사전에 알고 있는 H가 발생할 확률

P(E|H): 모든 사건 H에 대한 E가 발생할 우도

P(E): E가 발생할 확률

P(H|E): E가 주어졌을 때, H가 발생할 사후 확률

(4). Monte Carlo Approximation

$$ E_{p(x)}[f(x)]=\int f(x)p(x)dx \approx \frac1N\sum^{N}_{i=1}f(x_i), ~~x_i~p(x) $$

b. ELBO (Evidence Lower Bound)

(1). 샘플 $x_i$를 잠재 변수 z의 분포를 이용해 표현해보자

$$ \log P(x_i)=\log\frac{P(x_i|z)P(z)}{P(z|x_i)}~~~~(\because Bayes~Rule)\\=\log P(x_i|z)+\log P(z)-\log P(z|x_i) $$

(2). 샘플 $x_i$를 잠재 변수 z의 확률 밀도함수의 성질을 이용해 변형해보자

$$ \log P(x_i)=\log P(x_i)\int q(z|x_i)dz~~~(\because \int q(z|x_i)dz=1)\\=\int q(z|x_i)\log P(x_i)dz~~~~~~~~~~~~~~~~~~~~~ $$

(3). (1)과 (2) 합치기

$$ \log P(x_i)=\int q(z|x_i)[\log P(x_i|z) + \log P(z)-\log P(z|x_i)]dz \\= E_{q(z|x_i)}[\log P(x_i|z)]+\int q(z|x_i)\log P(z) dz – \int q(z|x_i)\log P(z|x_i)dz\pm \int q(z|x_i)\log q(z|x_i)dz~~(\because Monte~Carlo~Approximation)\\=E_{q(z|x_i)}[\log P(x_i|z)]\\-\int q(z|x_i)\log q(z|x_i)dz+\int q(z|x_i)\log P(z)dz\\+\int q(z|x_i)\log q(z|x_i) dz-\int q(z|x_i)\log P(z|x_i)dz\\=E_{q(z|x_i)}[\log P(x_i|z)]-D_{KL}(q(z|x_i)||P(z))+D_{KL}(q(z|x_i)||P(z|x_i))(\because KL~Divergence)\\\geq E_{q(z|x_i)}[\log P(x_i|z)]-D_{KL}(q(z|x_i)||P(z))(\because D_{KL}\geq0) $$

(4). ELBO

$$ \log P(x_i) \geq E_{q(z|x_i)}[\log P(x_i|z)]-D_{KL}(q(z|x_i)||P(z))\\z\sim N(0,1)\\q(z|x_i)\sim N(\mu_{q(x_i)},\sigma_{q(x_i)}^2)\\D_{KL}(q(z|x_i)||P(z))=\sum_i-\log \sigma_{q(x_i)}+\frac12(\sigma_{q(x_i)}^2+\mu_{q(x_i)}^2-1) $$

(5). 정리

$E_{q(z|x_i)}[\log P(x_i|z)]$: Reconstruction Error

$D_{KL}(q(z|x_i)||P(z))$: Regularization Parameter


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다