A VAE
我们先从 VAE 的角度理解生成模型的优化目标如何获得
A.1 背景知识:数值计算vs采样计算
给定已知概率密度函数 ,那么的期望定义为
如果求解基于概率密度函数的期望的数据计算,也就是数据积分,可以选择若干有代表性的点 ,得到数值解:
这里本质就是借助离散化区间计算积分数值。
此外,我们可以利用采样方法计算期望的近似数值解:从中采样若干个点 ,我们有:
要理解 和的区别,重点在于理解概率密度函数的含义:描述样本 x 出现的可能性
。
中包含了概率的计算而中仅有的计算,这是因为中的采样过程已经包含了概率过程,概率大的出现的次数也多。
更一般的,我们有
上式为蒙特卡洛模拟的基础。
此外,关于概率期望,我们后面会重点用到如下视角的变化:
VAE的优化目标
VAE 作为生成模型的经典任务:给定若干数据样本:,整体用描述,我们希望借助隐变量描述的分布:
最终我们希望构造的分布能逼近目标数据分布,即两分布的 散度足够小。
由于引入了隐变量,推导原始散度是复杂的,需要引入各种变分推理以及 ELBO。因此,我们考虑优化两个概率的联合分布距离:
对于联合分布,借助贝叶斯公式有
注意和中我们分别从不同从面引入了条件概率。具体的,可视为解码器,而则为编码器,因为来源与真实数据样本。
对于积分的前一项,有
为常数。所以我们将优化目标设为
式中的两项,即分别对应了 VAE 的 MSE 损失和 KL 损失。
具体实现
分析得到了上面的优化目标,其实还不能直接实现的。因为要求解最小化损失,我们是需要其中的的具体解析式的。下面我们逐项分析。
首先为了方便采样,我们假设,如何有了解析式。
对于另外两项,我们需要在基于一定先验假设的情况下,使用神经网络拟合!
首先,假设编码器服从正态分布,其均值和方差由决定,由此,我们构建网络 , 分别建模均值和方差,那么就可以获得解析式:
这样一来,借助两个正态分布的 KL 散度,中的 KL 散度就可以详细计算
现在只剩解码器,该选择什么分布呢?。在 VAE 的原始论文中,给出了两种候选方案:伯努利分布和正态分布。这里我们只看后者。
我们将解码器建模成高斯分布,是否过于简单?在生成模型领域,其实我们并没有什么其他选择。因为我们要构造一个分布,而不是任意一个函数,既然是分布就得满足归一化的要求,而要满足归一化,又要容易算,候选分布模型并不多
已知为高斯分布,那么我们同样我们用神经网络构建均值和方差,。这里由于我们的优化目标中的两项是同时优化,所以我们统一使用代表网络参数。注意到解码器输入为,因此我们有解码器的解析式
通常情况下,对于生成器的方差我们设置为固定值,此时
对整个过程来看,从从随机采样样本,经过编码器,我们获得的均值和方差,进而得知的具体分布解析式,从中采样得到得到隐变量,并可以计算 KL 损失。然后将 经过解码器,获得输出,从本质上这代表估计的均值,我们将其作为生成目标,此外根据计算 MSE 损失。
分析
从的两项损失中我们可以得知,VAE 中也存在一种对抗过程。假设 KL loss优化为 0,那么编码器的输出为正态分布,隐变量没有任何辨识度,此时的生成器是不可能和样本预测准确。而如果前一项 MSE 损失足够小,此时大,预测的准确,此时的网络非常接近自编解码器,此时的隐变量不会太随机,KL损失也不会小。所以 VAE 损失中的两项也存在互相对抗的过程,而且相较于 GAN,是共同优化,不需要交替优化过程。
但 VAE 存在的模糊的缺点,其本质也是因为我们将解码器预定义成正态分布,显然正态分布的表征能力是不足的,因此 VAE 从理论层面就不具备足够的生成能力。而 GAN 的生成器不需要满足正态分布的先验。对于 vae 来讲,通过迭代多层解码器(HVAE),既使用多个嵌套正态分布提高表征能力,能够大大提升生成效果。从这个角度来看,VAE 和 DDPM 是同根同源的。