Skip to main content

Variational Autoencoder

Variational Autoencoder(以下 VAE)は、latent variable model と Autoencoder を組み合わせた generative model です。通常の Autoencoder が deterministic な latent representation を学習するのに対して、VAE は latent variable zz の probability distribution を学習します。

VAE graphical model

画像出典: Lilian Weng, “From Autoencoder to Beta-VAE”。VAE では latent variable zz から data xx が生成されると仮定します。

Generative process

VAE では、data xx は latent variable zz から生成されると考えます。

zp(z)z \sim p(z) xpθ(xz)x \sim p_\theta(x \mid z)

ここで、p(z)p(z) は prior distribution であり、多くの場合には standard Gaussian が使われます。

p(z)=N(0,I)p(z) = \mathcal{N}(0, I)

Decoder は、pθ(xz)p_\theta(x \mid z) を parameterize する neural network として解釈できます。

Inference problem

VAE では、本当は posterior pθ(zx)p_\theta(z \mid x) を求めたいのですが、これは一般に直接計算できません。そこで、encoder によって近似 posterior qϕ(zx)q_\phi(z \mid x) を学習します。

qϕ(zx)pθ(zx)q_\phi(z \mid x) \approx p_\theta(z \mid x)

Encoder は、input xx から latent distribution の parameter を出力します。Gaussian VAE では、平均 μ\mu と分散 σ2\sigma^2 を出力します。

Gaussian VAE

画像出典: Lilian Weng, “From Autoencoder to Beta-VAE”。Encoder が μ\muσ\sigma を出力し、そこから latent variable を sampling します。

VAE の training

VAE は、data likelihood を直接最大化する代わりに、ELBO を最大化します。ELBO は、reconstruction term と regularization term から構成されます。

LELBO=Eqϕ(zx)[logpθ(xz)]DKL(qϕ(zx)p(z))\mathcal{L}_{\text{ELBO}} = \mathbb{E}_{q_\phi(z \mid x)}[\log p_\theta(x \mid z)] - D_{KL}(q_\phi(z \mid x) \,\|\, p(z))

第一項は、decoder が input をうまく復元できるようにします。第二項は、encoder が作る latent distribution を prior distribution に近づけます。

Reparameterization Trick

VAE では、zqϕ(zx)z \sim q_\phi(z \mid x) という sampling を含むため、そのままでは gradient を backpropagation しにくい問題があります。この問題を避けるために、Reparameterization Trick が使われます。

数式で見る VAE の ELBO

VAE は latent variable model として、pθ(x,z)=p(z)pθ(xz)p_\theta(x,z)=p(z)p_\theta(x\mid z) を仮定します。Posterior pθ(zx)p_\theta(z\mid x) は直接計算しにくいため、encoder qϕ(zx)q_\phi(z\mid x) で近似します。

ELBO は次のように書けます。

LELBO=Eqϕ(zx)[logpθ(xz)]DKL(qϕ(zx)p(z))\mathcal{L}_{\mathrm{ELBO}} =\mathbb{E}_{q_\phi(z\mid x)}[\log p_\theta(x\mid z)] -D_{KL}(q_\phi(z\mid x)\|p(z))

第一項は reconstruction likelihood で、latent から入力を説明できるようにします。第二項は posterior が prior p(z)p(z) から離れすぎないようにする regularization です。

この式の気持ちは、「入力をよく復元したいが、latent space をばらばらにしすぎると sampling できなくなるので、Gaussian prior に近い滑らかな latent space を保つ」というものです。

関連ページ