iwiwi 備忘録

学んだことを殴り書きます。自分向けのメモです。

An Introduction to Variational Autoencoders

arxiv.org

Stable Diffusionでも使われているVAEについて復習。有名な技術なのでわかりやすい解説が色々あるだろうと色々解説を探したが、結局Kingmaご本人のこれが一番わかりやすかった。

生成モデル

  • $x$: 観測されたデータ点たちの集合。
  • $p^*(x)$: 真の確率分布。未知でこれを知りたいが知れない。
  • $p_\theta(x)$: それを近似するもの。$\theta$は学習可能なパラメタ。

$x$が与えられた際、 $p_\theta(x) \approx p^*(x)$ となるような $\theta$ を探すことが目標。

DLVM (deep latent variable models)

  • $z$: latent variable。観測できない。
  • $p\theta(x) = \int{p\theta (x, z) dz}$: (single datapoint) marginal likelihood

DLVMとは、$p\theta(x, z)$ をNNを利用し表現したもの。特に $p\theta(x, z) = p\theta(z) p\theta(x|z)$ と分解し $p\theta(z)$、$p\theta(x|z)$ をそれぞれ別に考えるのが一般的。

上のmarginal likelihoodの式に積分が含まれ、直接最適化できないため、どうするか考えていく必要がある。

Encoder (or Approximate Posterior)

  • $q_\phi(z | x)$: inference model。encoder, recognition modelとも呼ぶ。
  • $\phi$: inference modelの学習可能なパラメタだがvariational parametersとも呼ぶ

$q\phi(z | x) \approx p\theta(z|x)$ となるよう $\phi$ を最適化したい。(何故これがあると良いのかは後述。)

DLVMと同様に、$q\phi(z | x)$ をNNを利用し表現する場合、$x$を入力とし$\phi$をパラメタとしたNNで$(\mu, \log \sigma)$を出力させ、$q\theta(z|x) = \mathcal{N}(z; \mu, diag(\sigma))$ とする。

Evidence Lower Bound (ELBO)

  • $\log p\theta(x) = L{\theta, \phi}(x) + D\text{KL}(q\theta(z | x) || p_\theta(z|x))$
  • $L{\theta, \phi}(x) = \mathop{\mathbb{E}}{z \sim q\phi(z | x) }[\log \frac{p\theta(x, z)}{q_\phi(z | x)}]$

この$L_{\theta, \phi}(x)$がいわゆるvariational lower bound、別名evidence lower bound (ELBO)である。

$D\text{KL}$はKLダイバージェンスね。$D\text{KL}$は非負なので、ELBOは $\log p_\theta(x)$ の下界である。

直接最適化できない(log) likelihoodの代わりとして、ELBOを目的関数として最適化すると良い!なぜならELBOはlog likelihoodの近似であり、それどころかELBOの最適化を通じて$q\phi(z|x)$は$p\theta(z|x)$に近づくため$D_\text{KL}$も最小化されるのである。

Reparameterization Trick

$z$ って確率変数が計算グラフのまっただ中に入ってるとダルいから、trainableではなくした固定した確率変数 $\epsilon$ を入力ってことにして $z$ をその関数として表現したら計算グラフの中にstochasticityがなくなっていいね。ってことだと理解した。