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

微软研究人员在iclr 2018发表了一种新的gan(对抗网络生成)训练方法,boundary-seeking gan(bgan),可基于离散值训练gan,并提高了gan训练的稳定性。
对抗生成网络
首先,让我们温习一下gan(对抗生成网络)的概念。简单来说,gan是要生成“以假乱真”的样本。这个“以假乱真”,用形式化的语言来说,就是假定我们有一个模型g(生成网络),该模型的参数为θ,我们要找到最优的参数θ,使得模型g生成的样本的概率分布qθ与真实数据的概率分布p尽可能接近。即:
其中,d(p, qθ)为p与qθ差异的测度。
gan的主要思路,是通过引入另一个模型d(判别网络),该模型的参数为φ,然后定义一个价值函数(value function),找到最优的参数φ,最大化这一价值函数。比如,最初的gan(由goodfellow等人在2014年提出),定义的价值函数为:
其中,dφ为一个使用sigmoid激活输出的神经网络,也就是一个二元分类器。价值函数的第一项对应真实样本,第二项对应生成样本。根据公式,d将越多的真实样本归类为真(1),同时将越多的生成样本归类为假(0),d的价值函数的值就越高。
gan的精髓就在于让生成网络g和判别网络d彼此对抗,在对抗中提升各自的水平。形式化地说,gan求解以下优化问题:
如果你熟悉jensen-shannon散度的话,你也许已经发现了,之前提到的最初的gan的价值函数就是一个经过拉伸和平移的jensen-shannon散度:2 * djsd(p||qθ) - log 4. 除了这一jensen-shannon散度的变形外,我们还可以使用其他测度衡量分布间的距离,nowozin等人在2016年提出的f-gan,就将gan的概念推广至所有f-散度,例如:
jensen-shannon
kullback–leibler
pearson χ2
平方hellinger
当然,实际训练gan时,由于直接计算这些f-散度比较困难,往往采用近似的方法计算。
gan的缺陷
gan有两大著名的缺陷:难以处理离散数据,难以训练。
gan难以处理离散数据
为了基于反向传播和随机梯度下降之类的方法训练网络,gan要求价值函数在生成网络的参数θ上完全可微。这使得gan难以生成离散数据。
假设一下,我们给生成网络加上一个阶跃函数(step function),使其输出离散值。这个阶跃函数的梯度几乎处处为0,这就使gan无法训练了。
gan难以训练
从直觉上说,训练判别网络比训练生成网络要容易得多,因为识别真假样本通常比伪造真实样本容易。所以,一旦判别网络训练过头了,能力过强,生成网络再怎么努力,也无法提高,换句话说,梯度消失了。
另一方面,如果判别网络能力太差,胡乱分辨真假,甚至把真的误认为假的,假的误认为真的,那生成网络就会很不稳定,会努力学习让生成的样本更假——因为弱智的判别网络会把某些假样本当成真样本,却把另一些真样本当成假样本。
还有一个问题,如果生成网络凑巧在生成某类真样本上特别得心应手,或者,判别网络对某类样本的辨别能力相对较差,那么生成网络会扬长避短,尽量多生成这类样本,以增大骗过判别网络的概率,这就导致了生成样本的多样性不足。
所以,判别网络需要训练得恰到好处才可以,这个火候非常难以控制。
强化学习和bgan
那么,该如何避免gan的缺陷呢?
我们先考虑离散值的情况。之所以gan不支持生成离散值,是因为生成离散值导致价值函数(也就是gan优化的目标)不再处处可微了。那么,如果我们能对gan的目标做一些手脚,使得它既处处可微,又能衡量离散生成值的质量,是不是可以让gan支持离散值呢?
关键在于,我们应该做什么样的改动?关于这个问题,可以从强化学习中得到灵感。实际上,gan和强化学习很像,生成网络类似强化学习中的智能体,而骗过判别网络类似强化学习中的奖励,价值函数则是强化学习中也有的概念。而强化学习除了可以根据价值函数进行外,还可以根据策略梯度(policy gradient)进行。根据价值函数进行学习时,基于价值函数的值调整策略,迭代计算价值函数,价值函数最优,意味着当前策略是最优的。而根据策略梯度进行时,直接学习策略,通过迭代计算策略梯度,调整策略,取得最大期望回报。
咦?这个策略梯度看起来很不错呀。引入策略梯度解决了离散值导致价值函数不是处处可微的问题。更妙的是,在强化学习中,基于策略梯度学习,有时能取得比基于值函数学习更稳定、更好的效果。类似地,引入策略梯度后gan不再直接根据是否骗过判别网络调整生成网络,而是间接基于判别网络的评价计算目标,可以提高训练的稳定度。
bgan(boundary-seeking 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)
这样改写后,很明显了,这可以看成一个重要性采样(importance sampling)问题。(重要性采样是强化学习中推导策略梯度的常用方法。)相应地,w*(x)为最优重要性权重(importance weight)。
类似地,令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)可以视为奖励(reward),b可以视为基线(baseline)。因此,论文作者将其称为基于强化的bgan。
试验
离散
为了验证bgan在离散设定下的表现,论文作者首先试验了在cifar-10上训练一个分类器。结果表明,搭配不同f-散度的基于重要性取样、强化的bgan均取得了接近基线(交叉熵)的表现,大大超越了wgan(权重裁剪)的表现。
在mnist上的试验表明,bgan可以生成稳定、逼真的手写数字:
在mnist上与wgan-gp(梯度惩罚)的比较显示,采用多种距离衡量,包括wasserstein距离,bgan都取得了更优的表现:
在quantized版本的celeba数据集上的表现:
左为降采样至32x32的原图,右为bgan生成的图片
下为随机选取的在1-billion word数据集上训练的bgan上生成的文本的3个样本:
虽然这个效果还比不上当前最先进的基于rnn的模型,但此前尚无基于gan训练离散值的模型能实现如此效果。
连续
论文作者试验了bgan在celeba、imagenet、lsun数据集上的表现,均能生成逼真的图像:
在cifar-10与原始gan、使用代理损失(proxy loss)的dcgan的比较表明,bgan的表现和训练稳定性都是最优的:

MOS管驱动变压器隔离电路分析和应用
RFID在配送中心的应用详解及其意义分析
魏德米勒与山钢集团签署战略协议,全方位助力冶金行业智能化
MOSFET技术学习笔记
智慧公安二维码定位报警系统带来的好处有哪些
一种新的GAN(对抗网络生成)训练方法
3D打印技术生产软磁芯
「芝能报告」电池冷媒直冷技术的发展趋势
Andon系统的数据
恒温加热平台的使用方法就注意事项
HyperX CES2020新发布产品汇总 任天堂Switch充电宝亮了
基于MSP430F149的数据转发器设计
Ramtron国际公司F-RAM存储器详解
电阻色码表
把握移动互联机遇,加速手机产业融合创新
NFC惨遭支付宝抛弃 也许真的要结束了
多款小米4C及红米手机自燃 小米答复没有质量问题
智能家居生活理想之选:智能镜子显示器来袭
技术赋能!连网医疗设备改变医疗保健
中国移动和轻舟智航联合部署的全国首个常态化运营5G无人公交线路