讨论 2022-11-01
=
## 生成模型与概率图模型(一)
首先,生成模型试图找到一种方式来建模$P(X)$,即数据分布,更具体来讲,我们希望找到一种方式,可以不停的从$P(X)$采样出数据点。而很多方法是基于分布变换,即从一个简单分布中采样得到一个样本$z$,通过一个确定性函数$f(\cdot)$可以把$z$映射到另一分布(目标分布)。这种采样方法也称之为逆变换采样。
### 逆变换采样
对一个随机变量X,它的累计分布函数,假设是严格单调的,
$$F(x)=P(X\leq x)=\int_{-\inf}^x p(x) dx $$
存在一个严格单调递增函数$T: [0,1] \rightarrow R$,我们可以把0,1间的均匀分布$U$映射到实数轴上,让$T(U)=X$,同时,严格单调函数必有逆函数,所以,
$$F(x)=P(X\leq x)=P(T(U)\leq x)=P(U\leq T^{-1}(x))$$
又因为$U$的累计分布在0,1区间就是$F(u)=u$,所以上式变为$F(x)=T^{-1}(x)$,可推出$F^{-1}(u) = T(u)$,即$F^{-1}(u)=x$
所以我们可以通过从均匀分布采样来得到任意分布的采样点。
### Generative Adversarial Network (GAN)
GAN模型是生成模型,其目的是通过逆变换采样,把已知的噪声样本映射到数据样本,GAN通过一个博弈游戏来找到最合适的映射。简单来说,GAN设定了两个角色,一个是造假者,一个是审查者,造假者需要尽可能地骗过审查者,而审查者需要尽可能分辨真伪。而造假者就是我们最终要的生成器。具体形式如下
$$ \mathrm{argmin}_\theta \mathrm{argmax}_\phi \mathbb{E}_{z\sim P_{data}} \log D_\phi(z) + \mathbb{E}_{z\sim P_\theta} \log (1-D_\phi(z)), \quad P_\theta(z) = P(z=G(z';\theta)),z'\sim N(0,1) $$
其中G,D是两个模型,对应造假者和审查者。简单分析上式,不难发现D的最优取值是$\frac{P_{data}}{P_{data}+P_\theta}$
当D是唯一变量时,对原式求导即可得到。
\begin{align}
& \mathbb{E}_{z\sim P_{data}} \log D(z) + \mathbb{E}_{z\sim P_\theta} \log (1-D(z)) \\
= & \sum_z P_{data}(z) \log D(z) + P_\theta(z) \log (1-D(z)) \\
\nabla_{D(z)} = & P_{data}(z) \frac{1}{D(z)} + P_\theta(z)\frac{1}{1-D(z)} * (-1) = 0 \\
& P_{data}(z) \frac{1}{D(z)} = P_\theta(z) \frac{1}{1-D(z)} \\
& D(z) = \frac{P_{data}(z)}{P_{data}(z)+P_\theta(z)}
\end{align}
此时,再将D的最优值代回原式,可得
$$ \mathbb{E}_{z\sim P_{data}} \log \frac{P_{data}}{P_{data}+P_\theta} + \mathbb{E}_{z\sim P_\theta} \log (1-\frac{P_{data}}{P_{data}+P_\theta}) $$
显然,$P_{data} = P_\theta$时,上式最大,为$-\log2-\log2 = -\log4$,我们之后在把原式减去$-\log4$得
\begin{gather}
\mathbb{E}_{z\sim P_{data}} \log \frac{P_{data}}{P_{data}+P_\theta} + \mathbb{E}_{z\sim P_\theta} \log (1-\frac{P_{data}}{P_{data}+P_\theta}) -(-\log4) \\
= \mathbb{E}_{z\sim P_{data}} \log \frac{2P_{data}}{P_{data}+P_\theta} + \mathbb{E}_{z\sim P_\theta} \log (\frac{2P_\theta}{P_{data}+P_\theta}) \\
= \mathrm{KL}(P_{data}|\frac{P_{data}+P_\theta}{2})+\mathrm{KL}(P_\theta|\frac{P_{data}+P_\theta}{2}) \\
= 2\mathrm{JSD}(P_{data}||P_\theta)
\end{gather}
所以最优的D其实是$2\mathrm{JSD}(P_{data}||P_\theta)-\log4$
由此可以看出GAN为什么有效,它本质上拉近了数据分布和生成分布之间的JSD距离,这是非常合理的,也是生成模型的一大追求。但需要注意的是只有在D取最优值时,它才度量了JSD距离,如果不是最优,没有任何保证。所以GAN的收敛性也是假定每步D先收敛到最优,G再收敛,如此迭代直到二者平衡。在实际中,我们也要保证D的学习略快于G,才能提供良好的学习信号。
## Variational Auto Encoder(VAE)
VAE的目标就是通过auto encoder的形式,找到逆变换采样所需的映射函数。它的核心想法是引入一个隐变量,Z,把对X的直接估计,转换为估计$P(X|Z)$
### VAE推导方法1
\begin{align}
\log P(x) =& \log \sum_z P(x,z) \\
=& \log \sum_z P(x,z) \frac{Q(z|x)}{Q(z|x)} \\
=& \log \sum_z Q(z|x) \frac{P(x|z) P(z)}{Q(z|x)} \\
=& \log \mathbb{E}_{z \sim Q(z|x)} \frac{P(x|z) P(z)}{Q(z|x)} \\
\geq& \mathbb{E}_{z \sim Q(z|x)} \log \frac{P(x|z) P(z)}{Q(z|x)} \\
\geq& \mathbb{E}_{z \sim Q(z|x)} [\log P(x|z) + \log P(z) -\log Q(z|x)] \\
\geq& \mathbb{E}_{z \sim Q(z|x)} \log P(x|z) - \mathrm{KL}(Q(z|x)||P(z))
\end{align}
我们可以发现Q(z|x)可以被替换成任意分布,但它的影响是什么呢?
### VAE推导方法2
\begin{align}
\mathrm{KL}(Q(z|x)||P(z|x)) =& \mathbb{E}_{z \sim Q(z|x)} [\log Q(z|x) - \log P(z|x)] \\
=& \mathbb{E}_{z \sim Q(z|x)} [\log Q(z|x) - \log P(x|z) - \log P(z) + \log P(x)] \\
=& -\mathbb{E}_{z \sim Q(z|x)} \log P(x|z) + \mathrm{KL}(Q(z|x)||P(z)) + \log P(x) \\
\log P(x) =& \mathrm{KL}(Q(z|x)||P(z|x)) + \mathbb{E}_{z \sim Q(z|x)} \log P(x|z) - \mathrm{KL}(Q(z|x)||P(z)) \\
\log P(x) \geq& \mathbb{E}_{z \sim Q(z|x)} \log P(x|z) - \mathrm{KL}(Q(z|x)||P(z))
\end{align}
由第二种方法可知,$\mathrm{KL}(Q(z|x)||P(z|x))$决定了VAE所求的ELBO和真实$P(x)$之间的差距,所以$Q$的选取是非常重要的。
### VAE解释1
VAE的第一种解释是噪声信道,Encoder $Q(z|x)$的输出会经过一个噪声信道,传递给 Decoder $P(x|z)$,而KL项决定了噪声的强弱。
### VAE解释2
VAE追求最小表示,不论z的维度设定为多少,KL项会使model用尽量少的表达能力去传递信号。这等同于用最小的维度来传递信息,因为可以找到一种映射方法,让某一些维度尽量稳定来高效的传递信息,而让其他维度贴近噪声分布。
### 两种collapse
一是KL项太大,model完全不使用z,二是KL项太小,decoder退化
隐变量的引入往往是为了拆分问题,把一个问题拆成两部分或多部分。把问题拆分本身并不直接带来好处,但往往可以让我们更好的利用先验知识。比如,我们有十个随机数生成器,每一个的规律都服从高斯分布,但我们不知道他们具体的参数,同时游戏规则是我们按泊松分布随机从十个生成器选一个,再利用它生成随机数。在一场景下,如果我们直接建模最后的随机数,其分布的形式并不好直接确定,但如果是两段式,那么我们很清楚,一段是泊松,一段是高斯,只要求解参数即可。
同样的,现实中,尤其是很多实际工程中,我们是知道各部分服从那种分布的,但整个系统中,可能有一部分是未知的,或者多部分叠加后的形式很难确定。在这些情况下,问题拆分都是很有必要的。
### EM和VAE
\begin{align}
\log P(x) =& \log \sum_z P(x,z) \\
=& \log \sum_z P(x,z) \frac{Q(z)}{Q(z)} \\
=& \log \sum_z Q(z) \frac{P(x|z) P(z)}{Q(z)} \\
=& \log \mathbb{E}_{z \sim Q(z)} \frac{P(x|z) P(z)}{Q(z)} \\
\geq& \mathbb{E}_{z \sim Q(z)} \log \frac{P(x|z) P(z)}{Q(z)} \\
\end{align}
求解Q有两种常见方法,EM和VAE
如果$\frac{P(x|z)P(z)}{Q(z)}=c$,那么Jensen不等式可以取等号,又因为Q是一个分布,和为1。所以一个很朴素的选法就是让$Q(z)=\frac{P(x,z)}{\sum_z P(x,z)}=P(z|x)$,这也是EM中的E步。不过这里显然需要$P(z|x)$是可以求的,也就是tractable。
如果不能,则可用VAE,引入一个新的参数估计Q,不论它是什么,都可以联合学习。