Variational Auto-encoder (VAE)

概要

Deep learningを生成モデルとして有名なものとしては以下の2つ

  • Generative Adversarial network(GAN)
  • Variational Auto-encoder(VAE)

今回はVAEについて説明を行う。

理論

VAEの目的関数の導出を行う。

定義と仮定

  • $x$ はデータを表す確率変数
  • 潜在変数zで表現される $p(x)=\int p(x,z)dz$
  • $p(z|x)$は真の分布
  • $q(z|x)$は人間が導入した近似分布

対数をとっても最適化問題には影響しないので対数をとった$p(x)$を考える。

\begin{align*}

\log p\left(x\right)&=\log p\left(x\right)\int q\left(z|x\right)dz\&=\int\log p\left(x\right)q\left(z|x\right)dz\&=\int\log\frac{p\left(x,z\right)}{p\left(z|x\right)}q\left(z|x\right)dz\&=\int q\left(z|x\right)\log\frac{p\left(x,z\right)}{q\left(z|x\right)}dz+\int q\left(z|x\right)\log\frac{q\left(z|x\right)}{p\left(z|x\right)}dz\&=\int q\left(z|x\right)\log\frac{p\left(x|z\right)p\left(z\right)}{q\left(z|x\right)}dz+D{{\rm KL}}\left(q\left(z|x\right)||p\left(z|x\right)\right)\&\equiv\mathcal{L}+D{{\rm KL}}\left(q\left(z|x\right)||p\left(z|x\right)\right)

\end{align*}

さらに分解することができて

\begin{align*}

\mathcal{L}&=\int q\left(z|x\right)\log\frac{p\left(x|z\right)p\left(z\right)}{q\left(z|x\right)}dz\&=\int q\left(z|x\right)\left(\log p\left(x|z\right)+\log p\left(z\right)-\log q\left(z|x\right)\right)dz\&=E{q\left(z|x\right)}\left[\log p\left(x|z\right)\right]-\int q\left(z|x\right)\left(\log\frac{q\left(z|x\right)}{p\left(z\right)}\right)dz\&=E{q\left(z|x\right)}\left[\log p\left(x|z\right)\right]-D{{\rm KL}}\left(q\left(z|x\right)||p\left(z\right)\right)\&=E{q{\phi}\left(z|x\right)}\left[\log p{\theta}\left(x|z\right)\right]-D{{\rm KL}}\left(q{\phi}\left(z|x\right)||p\left(z\right)\right)

\end{align*}

まとめると