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*}
まとめると