《智能系统与技术丛书 生成对抗网络入门指南》—3.2GAN的数学原理
3.2 GAN的数学原理
3.2.1 最大似然估计
为了理解生成对抗网络的基本原理,我们首先要讨论一下最大似然估计,看它是如何运用在生成模型上的。在最大似然估计中,我们首先会对真实训练数据集定义一个概率分布函数Pdata(x),其中的x相当于真实数据集中的某个数据点。
同样地,为了逼近真实数据的概率分布,我们也会为生成模型定义一个概率分布函数Pmodel(x; θ),这个分布函数也是通过参数变量θ定义的。在实际的计算过程中我们希望通过改变参数θ,从而使得生成模型概率分布Pmodel(x; θ)能够逼近真实数据概率分布Pdata(x)。
当然在实际运算中,我们是无法知道Pdata(x)的形式的,我们唯一可以做的是从真实数据集中采样大量的数据,也就是说从Pdata(x)中取出{x1, x2, …, xm},通过这些真实的样本数据,我们计算对应的生成模型概率分布Pmodel(x(i); θ)。上述的{x1, x2, …, xm}也就是所谓的训练集,例如我们希望生成模型能够生成猫咪的图片,那么我们要做的就是先从互联网上找出大量的真实猫咪图片作为我们的训练集。
现在根据训练数据集可以写出概率函数,通过将所有的真实样本计算出在生成模型中的概率并全部进行相乘。
(3-4)
现在最大似然估计的目标是通过上面这个概率的式子,寻找出一个θ*使得L最大化。这样做的实际含义是指,在给出真实训练集的前提下,我们希望生成模型能够在这些数据上具备最大的概率,这样才说明我们的生成模型在给出的训练集上能够逼近真实数据的概率分布。
相比于连乘,这里使用求和运算更简单一些,所以我们对所有的pmodel(x(i); θ)取一个对数,把相乘转化为相加。
(3-5)
(3-6)
(3-7)
对于上述公式,我们可以把求和近似转化为求logpmodel(x; θ)的期望值,然后我们可以推导出积分的形式。
(3-8)
(3-9)
我们可以通过图3-7理解上面的推导过程,假设我们的训练数据是满足高斯分布的一维数据,最终我们训练后的生成模型概率分布应该能够满足尽可能多的训练样本点。
图3-7 生成模型概率分布
在推导出上述积分公式后,我们在不影响求解的情况下在上式的基础上减去一个与θ没有关系的常数项,如下面的推导所示我们需要找到一个θ*使得下面的推导结果最小。
(3-10)
(3-11)
(3-12)
(3-13)
之前我们在介绍VAE的时候提到了KL散度,它是一种计算概率分布之间相似程度的计算方法。现在我们来看一下KL散度的公式,我们设定两个概率分布分别为P和Q,在假定为连续随机变量的前提下,它们对应的概率密度函数分别为p(x)和q(x),我们可以写出如下公式:
(3-14)
从上述公式可以看出,当且仅当P = Q时,KL(P||Q) = 0。此外我们也可以发现KL散度具备非负的特性,即KL(P||Q)≥0。但是从公式中我们也可以发现,KL散度不具备对称性,也就是说P对于Q的KL散度并不等于Q对于P的KL散度。
在特定情况下,通常是P用以表示数据的真实分布,而Q表示数据的模型分布或近似分布。那么让我们来对比一下之前推导的公式与KL散度,可以发现它们是完全一致的,那么我们可以继续将公式推导成KL散度的形式:
(3-15)
我们希望最小化真实数据分布与生成模型分布之间的KL散度,从而使得生成模型尽可能接近真实数据的分布。在实际实践中,我们是几乎不可能知道真实数据分布Pdata(x)的,我们使用训练数据形成的经验分布在逼近Pdata(x)。
在实践中我们会发现使用最大似然估计方法的生成模型通常会比较模糊,原因是一般的简单模型无法使得pmodel(x; θ)真正逼近真实数据分布,因为真实数据是非常复杂的。为了模拟复杂分布,可以解决的方法是采用神经网络(例如GAN)实现pmodel(x; θ),可以把简单分布映射成为几乎任何的复杂分布。
Ian在NIPS2016的文章中给出了基于似然估计的生成模型分类,如图3-8所示。
图3-8中说明了基于似然估计的生成模型可以被分为两个主要分支,一类是显式模型,另一类是隐式模型,两者的核心差别在于生成模型是否需要计算出一个明确的概率分布密度函数。在大部分情况下,研究生成模型的目的往往在于生成数据,我们对于分布密度函数是什么样,可能并没有太大的兴趣。本书的主角—生成对抗网络(GAN)属于后者,它解决了很多现有模型存在的问题,比如计算复杂度高、难以扩展到高维度等,当然它也引出了很多新的问题亟待研究者们解决。
图3-8 基于似然估计的生成模型分类
- 点赞
- 收藏
- 关注作者
评论(0)