一种新的GAN 对抗网络生成训练方法

微软研究人员在ICLR 2018上发表了一种新的GAN(反网络生成)训练方法——边界搜索GAN (BGAN),可以基于离散值训练GAN,提高GAN训练的稳定性。

发电网络

首先,让让我们回顾一下对抗一代网络的概念。简单地说,甘就是要生成一个以假乱真样本。在形式语言中,我们假设有一个模型G(生成网络),其参数为,我们需要找到最优参数,使得模型G生成的样本的概率分布Q尽可能接近真实数据的概率分布P。即:

其中D(P,Q)是P与Q之差的度量。

GAN的主要思想是引入另一个模型D(判别网络),其参数为,然后定义一个价值函数,找到最优参数,并使这个价值函数最大化。例如,最初的GAN(由Goodfellow等人在2014年提出)将成本函数定义为:

其中D是使用sigmoid激活输出的神经网络,即二元分类器。函数的第一项对应于真实样本,第二项对应于生成样本。根据公式,越多真实样本D归类为真(1),越多生成样本为假(0),D的值越高的成本函数。

甘的本质是让生成网g和判别网d对抗,在对抗中提高各自的水平。从形式上讲,GAN解决了以下优化问题:

如果你熟悉Jensen-Shannon散度,你可能已经发现,之前提到的GAN的原值函数,经过拉伸平移后是一个Jensen-Shannon散度:2 * DJSD (P ||| Q )-log 4。除了Jensen-Shannon散度的变形,我们还可以使用其他方法来测量分布之间的距离。诺沃金等人在2016年提出。

詹森-香农

库尔贝克-莱布勒

皮尔逊2

方形海灵格

当然,在GAN的实际训练中,很难直接计算出这些f-散度,所以往往采用近似的方法。

GAN的缺陷

GAN有两个著名的缺陷:难以处理离散数据,难以训练。

GAN难以处理离散数据。

为了训练基于反向传播和随机梯度下降的网络,GAN要求代价函数在生成的网络的参数上完全可微。这使得GAN很难产生离散数据。

假设我们给生成网络加一个阶跃函数,使其输出离散值。这种阶跃函数的梯度几乎处处为0,使得GAN无法训练。

甘很难培养。

直观来说,训练判别网络要比训练生成网络容易得多,因为识别真假样本通常比伪造真样本更容易。所以,一旦判断出网络的训练过度,能力太强,再努力的网络生成,都可以不要改进。换句话说,梯度消失了。

另一方面,如果判别网络能力太差,能随机辨别真假,甚至把真的误认为假的,把假的误认为真的,那么生成的网络就会很不稳定,会努力学习,让生成的样本更假。3354因为延迟判别网络会把一些假样本当作真样本,而把另一些当作假样本。

还有一个问题。如果生成网络恰好在生成某种真样本方面特别得心应手,或者判别网络在区分某种样本方面相对较差,那么生成网络就会扬长避短,尽可能多地生成这样的样本,以增加欺骗判别网络的概率,导致生成的样本多样性不足。

所以判别网络需要适当训练,这个温度很难控制。

强化学习和BGAN

那么,如何避免GAN的缺陷呢?

让让我们首先考虑离散值的情况。GAN之所以不支持离散值的生成,是因为离散值的生成导致代价函数(即GAN优化的目标)不再处处可微。那么,如果能操纵GAN的目标,使其处处可微分,并衡量离散生成值的质量,是否能使GAN支持离散值?

关键是,我们应该做出什么样的改变?在这个问题上,我们可以从强化学习中得到启发。实际上,GAN与强化学习非常相似,生成网络类似于强化学习中的代理,而欺骗和鉴别网络类似于强化学习中的奖励,价值函数也是强化学习中的一个概念。强化学习不仅可以根据代价函数进行,也可以根据政策梯度进行。根据价值函数学习时,根据价值函数的值调整策略,迭代计算价值函数,价值函数最好,说明当前策略最好。根据策略梯度,直接学习策略,迭代计算策略梯度,调整策略,获得最大预期收益。

呃?这个战略梯度看起来很不错。策略梯度的引入解决了价值函数因离散值而不处处可微的问题。更妙的是,在强化学习中,基于策略梯度的学习有时比基于价值函数的学习能取得更稳定更好的结果。同样,GAN在引入策略梯度后,不再直接根据判别网络是否作弊来调整生成的网络,而是基于判别网络的评价来间接计算目标,可以提高训练的稳定性。

BGAN(寻界GAN)的思路就是这样。

BGAN论文作者首先证明了客观密度函数p(x)等于(f/t) (t (x)) Q (x)。其中f是生成f-散度的函数,f*是f的凸共轭函数。

设w (x)=(f/t) (t * (x)),则上述公式可改写为:

p(x)=(w*(x))q(x)

重写后,很明显,这可以看作是一个重要性抽样问题。(重要抽样是强化学习中导出策略梯度的常用方法。因此,w*(x)是最佳重要性权重。

同样,设w (x)=(f */t) (t (x)),我们可以得到f-散度的重要性权重估计:

其中是配分函数:

使用重要性权重作为回报信号,可以获得基于KL散度的策略梯度:

但由于这种策略梯度需要估计配分函数(例如使用蒙特卡罗方法),方差通常较大。因此,作者基于归一化的重要性权重来减少方差。

制造

其中g(x | z): Z-[0,1]d是条件密度,h(z)是Z的先验.

配分函数

归一化的条件权重可以定义为

因此,可以得到预期条件KL散度:

设x(m)~ g(x | z)是从先验中获取的样本,并设

使用蒙特卡罗估计的归一化重要性权重,期望条件KL散度的梯度为:

因此,作者成功地减少了梯度的方差。

此外,如果我们考虑逆KL散度的梯度,则我们有:

上式中,静态网络的输出F(x)可以看作是一个报酬,b可以看作是一个基线。所以作者称之为基于强化的BGAN。

试验

被驱散

为了验证BGAN 本文作者首先尝试在CIFAR-10上训练一个分类器。结果表明,基于重要性采样和增强的不同f散度的BGAN取得了接近基线(交叉熵)的性能,大大超过了WGAN(权重裁剪)的性能。

在MNIST上的实验表明,BGAN可以生成稳定、逼真的手写数字:

与MNIST上的WGAN-GP(梯度惩罚)相比,BGAN通过测量各种距离获得了更好的性能,包括Wasserstein距离:

量化CelebA数据集上的性能:

左边是降采样到32x32的原始图像,右边是BGAN生成的图像。

以下是在10亿字数据集上训练的BGAN上生成的文本的三个随机选择的样本:

虽然这种效果不如目前最先进的基于RNN的模型,但之前没有基于GAN训练离散值的模型能达到这种效果。

连续不断地

在本文中,作者在CelebA、ImageNet和LSUN数据集上测试了BGAN的性能,它们都可以生成逼真的图像:

使用代理损耗在CIFAR-10与原始GAN和DCGAN之间的比较表明,BGAN在性能和训练稳定性方面是最好的: