Latent-Variable-Models
约 1344 个字 6 张图片 预计阅读时间 7 分钟
和 Autoregressive-Models 一样,是一种 Max Likelihood based learning
Motivation¶
使用一个向量 \(z\) 来隐式的代表输入 \(x\) 的 high-level 的 features,这个 \(z\) 应该也会服从某种概率分布。
例如,假设 \(z \sim \mathcal{N}(0, I)\),且 \(x\) 满足 \(p(x|z)=\mathcal{N}(\mu_{\theta}(z), \Sigma_{\theta}(z))\),可以用 neural network 来拟合 \(\mu_{\theta}\) 和 \(\Sigma_{\theta}\) 两个映射
Mixture of Gaussians¶
Bayes net \(z \to x\)
- \(z \sim \text{Categorical}(1, \cdots, K)\)
- \(p(x|z=k) = \mathcal{N}(\mu_{k}, \Sigma_{k})\)
如下图:
当 Gaussian 的个数很多,例如无穷个的时候,可以将 \(z\) 的分布进行修改,例如:\(\text{Categorical} \to \mathcal{N}(0, I)\),此时 \(p(x|z)=\mathcal{N}(\mu_{\theta}(z), \Sigma_{\theta}(z))\),这里两个参数都用神经网络来拟合。这就是 VAE 的雏形。
Variational Autoencoders¶
用 Maximum-Likelihood-Learning 中的最小化 KL divergence 相当于最大化 log-likelihood的结论,目标函数:
而
但是
基本上不可算,可做如下尝试:
Naive Monte Carlo¶
用 MC 定理,可以用
近似。理论上可行,但是实际上不可行,效果较差。
Importance Sampling¶
这里 \(z^{(j)},j=1,\dots,k\) 是从 \(z \sim q(z)\) 中采样得到的,\(q(z)\) 是任意一个分布。由于需要显式地制定 \(q(z)\),因此一般也不容易达到较好的效果。
Evidence Lower Bound¶
由于 \(\log\) 是 concave 的,所以有
当 \(q(z)=P_{\theta }(z|x)\) 时取等(EM 算法中的 E-step)
也可以用 KL divergence 证明 1:
故有
这也符合 \(q(z)\) 的近似 \(p(z|x;\theta)\) 的用途。也就是说,\(q(z)\) 和 \(p(z|x;\theta)\) 越接近,ELBO 的估计就越准确。自然期望直接令 \(q(z)=p(z|x;\theta)\),不过当 \(p(z|x;\theta)\) 不可计算时,可以引入参数 \(\phi\),用 \(q(z; \phi)\) 来代替 \(q(z)\),期望 \(q(z;\phi)\) 能够近似 \(p(z|x;\theta)\)(即使后者未知)。其中 \(\phi\) 和 \(x\) 有对应关系,如下图:
The ELBO applied to the entire dataset:
Learning via stochastic variational inference (SVI):
关于 \(\nabla_{\theta}\mathcal{L}(x;\theta,\phi)\) 和 \(\nabla_{\phi}\mathcal{L}(x;\theta,\phi)\)(这里省略了 \(x^i\) 和 \(\phi^i\) 的上标),前者
较容易计算,而后者,由于 \(\phi\) 的位置更特殊,可以使用更一般的 REINFORCE 算法。也有此处效果更好,但是不那么 general 的技术(reparameterization),如下:
应用到此处即为
其中 \(\epsilon^i\) 为服从 \(\mathcal{N}(0,I)\) 随机采出的样本。倘若 \(q_{\phi}(z)\) 不支持进行 reparameterization,那么可以使用
Amortized Inference¶
在之前,对每一个样本 \(x^i\),都给定了一个参数 \(\phi^i\) 来计算 \(q(z;\phi^i)\) 以及 \(\mathcal{L}(x^i; \theta, \phi^i)\)。可以尝试通过构建一个从样本到 \(\phi\) 的参数空间的映射 \(f_{\lambda}\),这样就大大减少参数量,且避免了昂贵的计算。此时 \(q(z;\phi)=q(z;f_{\lambda}(x))\) 记为 \(q_{\lambda}(z|x)\),或者 \(q_{\phi}(z|x)\)。就有
这里 \(p(z)\) 是 \(z\) 的先验分布,此处未给定,为了方便可以取 Gaussian 分布等简单的假设。这和 EECS 498-007 中做的笔记结果相同,可以顺利的引出 encoder-decoder 结构了(而不是像之前那样突然地提出来,虽然这里引入 \(\log p(z)\) 也有点突然),如下:
Summary¶
Pros¶
- Easy to be flexible models
- suitable for unsupervised learning
Cons¶
- Hard to evaluate likelihoods
- Hard to train via maximum-likelihood
- Fundamentally, the challenge is that posterior inference \(p(z | x)\) is hard. Typically requires variational approximations
和 Autoregressive-Models 的对比¶
Features | Autoregressive models | Variational Autoencoders |
---|---|---|
probability | \(p_{\theta}(x)=\prod_{i=1}^np_{\theta}(x_{i}\|x_{<i})\) | \(p_{\theta}(x)=\int p_{\theta}(x,z) \, dz\) |
likelihoods | tractable | intractable |
learning features | no direct mechanism | has learn feature representation |
-
为什么会想到用这个散度呢?因为 VAE 想干的事情就是求隐变量 \(z\) 的后验分布 \(p(z|x)\),而一般来讲,后验分布都是很难求的,可以通过泛函分析里面的变分法来间接的逼近,也就是引入参数 \(\theta\),此时变分就是 \(\delta q= \nabla_{\theta}q(z;\theta)\) ↩