1.2.6 隐式生成模型
隐式生成模型通常也是使用隐变量z来辅助构建的,即首先在一个固定的概率分布pz(z)(例如高斯分布、均匀分布等)中采样获得噪声z,然后利用神经网络将其映射为样本x。这类想法与流模型、VAE是一致的,但是不同之处在于流模型之类的训练方法为极大似然法,需要对概率密度函数p(x)或者似然函数logp(x)进行某种处理。隐式生成模型的核心目的同样是使pg(x)接近pdata(x),它并没有显式对概率密度函数或似然函数进行建模或近似,但依旧可以通过训练数据与pdata(x)间接交互,典型代表有GSN[9](生成随机网络)和GAN[10]。在隐式生成模型中,我们无法获得p(x)的(近似)表达式,表达式是隐藏在神经网络中的,模型只能生成样本。
实践表明,即使模型具有非常高的似然函数值但它仍旧可能生成质量不高的样本。一个极端的例子是模型只记住了训练集中的样本,显式生成模型不会总那么可靠。避开似然函数而获得生成模型的另一条路线是使用两组样本检验(two sample test)。例如,生成模型可以生成大量样本S1,训练数据集存在大量样本S2,我们可以检查S1和S2是否来自同一概率分布,然后不断优化生成模型使得两组样本能够检验通过。与上述想法类似,实际上的隐式生成模型是先计算比较pg(x)和pdata(x)的某种差异,然后使得两者的差异尽可能最小。在选择这种比较差异时,可以分为基于密度比p(x)/q(x)和密度差p(x)-q(x)两类方法。前一类可进一步分为概率类别估计(标准GAN)、散度最小化(fGAN)和比例匹配(b-GAN)等3种方法;第二类方法主要以IPM类方法为代表,包括WGAN、MMDGAN等模型。不同的比较差异方法则对应不同的损失函数,例如MMD、JS散度、最优传输距离等。需要说明的是,当选择KL散度时,则得到了之前的极大似然法的优化目标Ex[logpθ(x)]。对于该优化目标的计算,显式生成模型的做法是对其做分解、近似等计算上的处理,而隐式生成模型则通过两类样本和神经网络直接拟合距离的数值。
以GAN为例,由于不存在显式的概率密度函数pg(x),故GAN无法直接写出似然函数而使用极大似然法。它直接使用生成器从噪声中采样并直接输出样本,然后借助判别器学习pdata(x)和pg(x)的距离,再训练生成器使上述距离最小。可以看出,GAN是通过控制生成器来间接控制pg(x)的。相比完全可见置信网络,GAN可以并行产生样本,效率更高;玻尔兹曼机因为需要使用马尔可夫链进行近似,故对概率分布有一定的要求。同样地,流模型也要求变换函数x=g(z)可逆,噪声与样本维度相同,虽然雅可比矩阵的行列式容易求解,但GAN使用生成器作为生成函数则没有可逆和维度上的限制,也没有概率分布的限制;此外,GAN不需要马尔可夫链的参与,不需要花很多精力产生一个样本,相比于玻尔兹曼机和生成随机网络效率较高;GAN相比于变分自编码器,也不需要对似然函数的变分下界进行处理。总体来看,GAN是一个非常简洁、高效的模型,但不足之处在于难以训练,理论上全局纳什均衡几乎不可能达到,并且容易模式崩溃,产生样本的多样性较差。