简介
深度学习的潜在优势就在于可以利用大规模具有层级结构的模型来表示相关数据所服从的概率密度。从深度学习的浪潮掀起至今,深度学习的最大成功在于判别式模型。判别式模型通常是将高维度的可感知的输入信号映射到类别标签。训练判别式模型得益于反向传播算法、dropout和具有良好梯度定义的分段线性单元。然而,深度产生式模型相比之下逊色很多。这是由于极大似然的联合概率密度通常是难解的,逼近这样的概率密度函数非常困难,而且很难将分段线性单元的优势应用到产生式模型的问题。
基于以上的观察,作者提出了产生对抗网络。顾名思义,产生对抗网络包含两个网络:产生器和判别器。产生器负责伪造一些数据,要求这些数据尽可能真实(尽可能服从只有上帝知道的概率分布),而判别器负责判别给定数据是伪造的(来自产生器生成的数据),还是来自由上帝创造的真实分布。至此,我们不得不佩服作者如此的问题形式化。整个过程中就是在博弈。产生器尽可能伪造出真实的数据,而判别器尽可能提高自身的判别性能。
这样一种问题形式化实际上是一种通用框架,因为判别器和生成器可以是任何一种深度模型。为了简单起见,该篇文章只利用多层感知机,而且生成器所生成的样本是由随机噪声得到的。利用这种方法,整个模型的训练融入了之前无法利用的反向传播算法和dropout. 这个过程中不需要近似推测和马尔科夫链。
产生对抗网络
这部分将具体介绍产生对抗网络模型,并详细推导出GAN的优化目标。
简单起见,生成器和判别器都基于多层感知神经元。对于生成器,我们希望它是一个由噪声到所希望生成数据的一个映射;对于判别器,它以被考查的数据作为输入,输出其服从上帝所定义的概率分布的概率值。下图清晰地展示了这个过程。
假设我们有包含 m 个样本的训练集 S={x(1),...,x(m)} . 此外,任给一种概率密度函数 pz(z) (当然,在保证模型复杂度的前提下,相应的概率分布越简单越好),我们可以利用随机变量 Z∼pz(z) 采样得到 m 个噪声样本 {z(1),...,z(m)} . 由此,我们可以得到似然函数
进一步,得到对数似然
由大数定律,当 m→∞ 时,我们用经验损失来近似期望损失,得
回到我们的初衷:整个过程中就是在博弈。产生器尽可能伪造出真实的数据,而判别器尽可能提高自身的判别性能。注意到我们刚刚构造的似然函数是针对判别器 D(⋅) 的优化目标函数。因此,我们一方面希望对判别器的可学习参数优化,极大化对数似然函数,另一方面我们希望对判别器的可学习参数优化,极小化对数似然函数。将此形式化得到我们的优化目标:
相关理论结果
生成器 G(⋅) 实际上隐式定义了一个概率分布 pg ,将其称之为隐式是因为 G 是从噪声 z∼pz 到样本 G(z) 的映射。由此,我们自然会提出一个问题:通过这样的建模以及训练方式得到的 pg 能否最终达到上帝创造的那个分布 pdata ,或者说两者差距到底多少?
这个问题由下面的命题和定理回答。
首先,任意给定生成器 G ,我们考虑最优判别器 D .
命题1. 对于给定 G ,最优判别器为 D∗G(x)=pdata(x)pdata+pg(x)
证明.
给定 G ,我们目标是最大化 V(G,D)
其中, χ 和 Ω 分别为 x 和 z 的积分域或者说是样本空间。
注意到第二项,利用映射关系 x=G(z) ,我们可以得到
这一步并不显然。(详细推导见附录C:测度论中随机变量的换元)
所以,
由于 G 已经给定,上帝创造的分布也是确定的,因此 pdata 和 pg 都是非零定函数,我们的目标是找到一个函数 D 使得 V(G,D) 到达最大。因此,我们对 D 求变分(见附录A),令其为0,可以得到,极大值点
证毕。
有了这个定理,我们可以进一步将这个min max博弈重新形式化为最小化 C(G) ,其中
下面,我们提出并证明定理1. 由此回答本节最开始提出的问题:通过这样的建模以及训练方式得到的 pg 能否最终达到上帝创造的那个分布 pdata ,或者说两者差距到底多少?
定理1. 对于 C(G) 的全局优化最小值可达,当且仅当 pg=pdata ,并且最小值为 −log4 .
证明.
等号成立的条件为
pdata=pg=pdata+pg2
.(见附录B)
证毕。
由此可见,生成器完美地浮现了上帝创造数据的过程!
下面我们正式给出GAN训练算法流程,如下图所示。
注意到,作者给出的算法和我们的优化目标并不一致。我们推导出的优化目标,是先对D优化并将其优化到底,然后再对G优化。之所以实际训练流程与其不一致,是因为实际中如果对D优化到底,这将会导致很高的计算代价,而且通常会导致过拟合。相反,该算法是先对D优化k步,然后再进行一步对G的优化。通过这种方法,只要G变化得足够慢,D总是在最优解的附近。自然地,我们会提出一个疑问,这样交叉地训练G和D和形式化得到的minmax博弈,两者得到的解差距有多少?这个问题由下面的命题回答。
我们不加证明地给出该算法的收敛性。
命题2. 假设 G 和 D 有足够的表达能力,并且假设算法1的每一步,给定 G , D 都可以达到最优,并且 pg 依照下面目标优化
那么, pg 可以收敛到 pdata .
我们通过下面的示意图,可以更加直观地理解整个训练的过程。
最下面的水平线代表噪声的域,x代表样本的域。可以看到 G(z) 将一个从均匀分布采集到的样本映射到了非均匀分布的支撑集上去了。绿色的曲线代表 x=G(z) 的概率密度函数 pg ;黑色曲线代表上帝创造的概率密度函数 pdata ;蓝色的曲线代表判别概率函数 D 。(a)接近收敛时,可以看到判别函数 D 是部分正确的;(b)此时进行算法的内循环优化,即对于当前状态的G,优化D,优化结果如(b)图的蓝线所示;(c)进行完内循环优化后,固定D,对G进行优化,可以看到D的梯度驱使G走向D的分界面;(d)最后,如果G和D都具有足够的表达能力,两者会达到一个平衡,即 pg=pdata ,此时判别器无法区分两者,即 D(x)=12 .
实验效果
下面我们来欣赏一下伪装上帝的效果吧!
每张图的最右侧一栏是在训练集中的与生成样本的最近邻样本。可见,模型在没有记忆训练集的情况下生成了多样化的类似风格的图片。不像其他生成模型的可视化那样,这些图片都是由模型分布直接生成的,而不是利用条件概率的方法。并且,这些图片不像利用马尔科夫链采样过程那样所生成的图像之间是不相关的。(a)(b)(c)(d)依次是MNIST, TFD, CIFAR-10(全连接模型), CIFAR-10(卷积判别器和反卷积生成器)
附录
A. K-L散度
在概率论和信息论中,K-L散度,也称之为信息增益,是衡量两个概率分布差异的一种“度量”。我们首先给出K-L散度的定义。分为离散形式和连续形式。
对于离散形式,给定两个离散型随机变量所对应的概率函数 P 和 Q ,两者的K-L散度定义为
对于连续形式,给定两个连续型随机变量所对应的概率密度 p 和 q ,两者的K-L散度定义为
定义很抽象,下面我们对其进行直观的解读。注意到之所以这种“度量”是加引号的,因为它并不符合数学上真正度量的公理之一,即对称性。也就是说 DKL(p∥q)≠DKL(q∥p) . 那么前后位置的差异代表什么实际含义呢?
前置位,如定义式中的 P (或 p )可以理解为数据的真实分布,而 Q (或 q )是模型对真实分布的一种近似。另一种理解是, DKL(P∥Q) 表示从先验Q到后验P带来的信息增益。
K-L散度有如下几个重要性质:
(1) K-L散度是具有良好定义的,当且仅当,当对于某些 x , q(x)=0 , 一定有 p(x)=0 ;
(2) 对于某些 x ,当 p(x)=0 ,一定有 p(x)lnp(x)q(x)=0 ;(因为 limx→0xlnx=0 )
(3) DKL(p∥q)≥0 等号成立的条件是 p=q .
下面证明一下最后一条性质。
证毕。
B. 泛函变分
泛函变分实际上是函数微分的一种自然的推广。
对于给定泛函 F[y]:y(x)↦