苏剑林作者广州火焰信息科技有限公司单位kexue.fm个人主页NLP,神经网络研究方向

RSGAN:对抗模型中的「图灵测试」思想

这两天无意间发现一个非常有意义的工作,称为“相对GAN”,简称 RSGAN,来自文章 The relativistic discriminator: a key element missing from standard GAN,据说该文章还得到了 GAN 创始人 Goodfellow 的点赞。这篇文章提出了用相对的判别器来取代标准 GAN 原有的判别器,使得生成器的收敛更为迅速,训练更为稳定。 

可惜的是,这篇文章仅仅从训练和实验角度对结果进行了论述,并没有进行更深入的分析,以至于不少人觉得这只是 GAN 训练的一个 trick。但是在笔者看来,RSGAN 具有更为深刻的含义,甚至可以看成它已经开创了一个新的 GAN 流派。所以,笔者决定对 RSGAN 模型及其背后的内涵做一个基本的介绍。不过需要指出的是,除了结果一样之外,本文的介绍过程跟原论文相比几乎没有重合之处。

图灵测试”思想

SGAN

SGAN 就是标准的 GAN(Standard GAN)。就算没有做过 GAN 研究的读者,相信也从各种渠道了解到 GAN 的大概原理:“造假者”不断地进行造假,试图愚弄“鉴别者”;“鉴别者”不断提高鉴别技术,以分辨出真品和赝品。两者相互竞争,共同进步,直到“鉴别者”无法分辨出真、赝品了,“造假者”就功成身退了。 

在建模时,通过交替训练实现这个过程:固定生成器,训练一个判别器(二分类模型),将真实样本输出 1,将伪造样本输出 0;然后固定判别器,训练生成器让伪造样本尽可能输出 1,后面这一步不需要真实样本参与。

问题所在

然而,这个建模过程似乎对判别器的要求过于苛刻了,因为判别器是孤立运作的:训练生成器时,真实样本没有参与,所以判别器必须把关于真实样本的所有属性记住,这样才能指导生成器生成更真实的样本。

在生活实际中,我们并不是这样做的,所谓“没有对比就没有伤害,没有伤害就没有进步”,我们很多时候是根据真、赝品的对比来分辨的。比如识别一张假币,可能需要把它跟一张真币对比一下;识别山寨手机,只需要将它跟正版手机对比一下就行了;等等。类似地,如果要想把赝品造得更真,那么需要把真品放在一旁不断地进行对比改进,而不是单单凭借“记忆”中的真品来改进。

“对比”能让我们更容易识别出真、赝品出来,从而更好地制造赝品。而在人工智能领域,我们知道有非常著名的“图灵测试”,指的是测试者在无法预知的情况下同时跟机器人和人进行交流,如果测试者无法成功分别出人和机器人,那么说明这个机器人已经(在某个方面)具有人的智能了。“图灵测试”也强调了对比的重要性,如果机器人和人混合起来后就无法分辨了,那么说明机器人已经成功了。

接下来我们将会看到,RSGAN 就是基于“图灵测试”的思想的:如果鉴别器无法鉴别出混合的真假图片,那么生成器就成功了;而为了生成更好的图片,生成器也需要直接借助于真实图片。

RSGAN基本框架

SGAN分析

首先,我们来回顾一下标准 GAN 的流程。设真实样本分布为 p̃(x),伪造样本分布为 q(x),那么固定生成器后,我们来优化判别器 T(x):

这里的 σ 就是 sigmoid 激活函数。然后固定判别器,我们优化生成器 G(z): 

注意这里我们有个不确定 h,我们马上就来分析它。从 (1) 我们可以解出判别器的最优解满足(后面有补充证明):

代入 (2),可以发现结果为:

写成最后一个等式,是因为只需要设 f(t)=h(log(t)),就能够看出它具有 f 散度的形式。也就是说,最小化 (2) 就是在最小化对应的 f 散度。关于 f 散度,可以参数我之前写的 f-GAN 简介:GAN 模型的生产车间 [1]。

f 散度中的 f 的本质要求是 f 是一个凸函数,所以只需要选择 h 使得 h(log(t)) 为凸函数就行。最简单的情况是 h(t)=−t,对应 h(log(t))=−logt 为凸函数,这时候 (2) 为:

类似的选择有很多,比如当 h(t)=−logσ(t) 时,也是凸函数(t>0 时),所以:

也是一个合理的选择,它便是 GAN 常用的生成器 loss 之一。类似地还有 h(t)=log(1−σ(t)),这些选择就不枚举了。

RSGAN目标

这里,我们先直接给出 RSGAN 的优化目标:固定生成器后,我们来优化判别器 T(x):

这里的 σ 就是 sigmoid 激活函数。然后固定判别器,我们优化生成器 G(z):

跟 SGAN 一样,我们这里保留了一般的 h,h 的要求跟前面的 SGAN 的讨论一致。而 RSGAN 原论文的选择是:

看上去就是把 SGAN 的判别器的两项换成一个相对判别器了,相关的分析结果有什么变化呢?

理论结果

通过变分法(后面有补充证明)可以得到,(7) 的最优解为:

代入到 (8),结果是:

这个结果便是整个 RSGAN 的精华所在了,它优化的是 p̃(Xr)q(Xf) 与 p̃(Xf)q(Xr) 的 f 散度! 

这是什么意思呢?它就是说,假如我从真实样本采样一个 Xr 出来,从伪造样本采样一个 Xf 出来,然后将它们交换一下,把假的当成真,真的当成假,那么还能分辨出来吗?换言之:p̃(Xf)q(Xr) 有大变化吗? 

假如没有什么变化,那就说明真假样本已经无法分辨了,训练成功,假如还能分辨出来,说明还需要借助真实样本来改善伪造样本。所以,式 (11) 就是 RSGAN 中的“图灵测试”思想的体现:打乱了数据,是否还能分辨出来?

模型效果分析

作者在原论文中还提出了一个 RaSGAN,a 是 average 的意思,就是用整个 batch 的平均来代替单一的真/伪样本。但我觉得这不是一个特别优雅的做法,而且论文也表明 RaSGAN 的效果并非总是比 RSGAN 要好,所以这就不介绍了,有兴趣的读者看看原论文即可。 

至于效果,论文中的效果列表显示,RSGAN 在不少任务上都提升了模型的生成质量,但这并非总是这样,平均而言有轻微的提升吧。作者特别指出的是 RSGAN 能够加快生成器的训练速度,我个人也实验了一下,比 SGAN、SNGAN 都要快一些。

我的参考代码:

https://github.com/bojone/gan/blob/master/keras/rsgan_sn_celeba.py

借用 MingtaoGuo [2] 的一张图来对比 RSGAN 的收敛速度:

▲ RSGAN收敛速度对比

从直观来看,RSGAN 更快是因为在训练生成器时也借用了真实样本的信息,而不仅仅通过判别器的“记忆”;从理论上看,通过 T(Xr)、T(Xf) 作差的方式,使得判别器只依赖于它们的相对值,从而简单地改善了判别器 T 可能存在的偏置情况,使得梯度更加稳定。甚至我觉得,把真实样本也引入到生成器的训练中,有可能(没仔细证明)提升伪造样本的多样性,因为有了各种真实样本来对比,模型如果只生成单一样本,也很难满足判别器的对比判别标准。

相关话题讨论

简单总结

总的来说,我觉得 RSGAN 是对 GAN 的改进是从思想上做了改变的,也许 RSGAN 的作者也没有留意到这一点。 

我们经常说,WGAN 是 GAN 之后的一大突破,这没错,但这个突破是理论上的,而在思想上还是一样,都是在减少两个分布的距离,只不过以前用 JS 散度可能有各种问题,而 WGAN 换用了 Wasserstein 距离。

我觉得 RSGAN 更像是一种思想上的突破——转化为真假样本混淆之后的分辨——尽管效果未必有大的进步。(当然你要是说大家最终的效果都是拉近了分布距离,那我也没话说)。 

RSGAN 的一些提升是容易重现的,当然由于不是各种任务都有提升,所以也有人诟病这不过是 GAN 训练的一个 trick。这些评论见仁见智吧,不妨碍我对这篇论文的赞赏和研究。 

对了,顺便说一下,作者 Alexia Jolicoeur-Martineau [3] 是犹太人总医院(Jewish General Hospital)的一名女生物统计学家,论文中的结果是她只用一颗 1060 跑出来的 [4]。我突然也为我只有一颗 1060 感到自豪了,然而我有 1060 但我并没有 paper。

延伸讨论

最后胡扯一些延伸的话题。 

首先,可以留意到,WGAN 的判别器 loss 本身就是两项的差的形式,也就是说 WGAN 的判别器就是一个相对判别器,作者认为这是 WGAN 效果好的重要原因。 

这样看上去 WGAN 跟 RSGAN 本身就有一些交集,但我有个更进一步的想法,就是基于 p̃(xr)q(xf) 与p̃(xf)q(xr) 的比较能否完全换用 Wasserstein 距离来进行?我们知道 WGAN 的生成器训练目标也是跟真实样本没关系的,怎么更好地将真实样本的信息引入到 WGAN 的生成器中去? 

还有一个问题,就是目前作差仅仅是判别器最后输出的标量作差,那么能不能是判别器的某个隐藏层作差,然后算个 mse 或者再接几层神经网络?总之,我觉得这个模型的事情应该还没完。

补充证明

(1) 的最优解

变分用 δ 表示,跟微分基本一样:

极值在变分为 0 时取到,而 δσ(T(x)) 代表任意增量,所以如果上式恒为 0,意味着括号内的部分恒为 0,即:

(7) 的最优解

变分上式:

极值在变分为 0 时取到,所以方括号内的部分恒为 0,即:

相关链接

[1]. https://kexue.fm/archives/6016

[2]. https://github.com/MingtaoGuo/DCGAN_WGAN_WGAN-GP_LSGAN_SNGAN_RSGAN_RaSGAN_TensorFlow

[3]. https://scholar.google.com/citations?user=0qytQ1oAAAAJ&hl=en

[4].https://www.reddit.com/r/MachineLearning/comments/8vr9am/r_the_relativistic_discriminator_a_key_element/e1ru76p

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

理论对抗样本图灵测试RSGAN
2
相关数据
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

f-GAN技术

GAN的一个变种,使用变分散度最小化训练生成式神经采样器的生成对抗网络

图灵测试技术

图灵测试(英语:Turing test,又译图灵试验)是图灵于1950年提出的一个关于判断机器是否能够思考的著名试验,测试某机器是否能表现出与人等价或无法区分的智能。测试的谈话仅限于使用唯一的文本管道,例如计算机键盘和屏幕,这样的结果是不依赖于计算机把单词转换为音频的能力。

WGAN技术

就其本质而言,任何生成模型的目标都是让模型(习得地)的分布与真实数据之间的差异达到最小。然而,传统 GAN 中的判别器 D 并不会当模型与真实的分布重叠度不够时去提供足够的信息来估计这个差异度——这导致生成器得不到一个强有力的反馈信息(特别是在训练之初),此外生成器的稳定性也普遍不足。 Wasserstein GAN 在原来的基础之上添加了一些新的方法,让判别器 D 去拟合模型与真实分布之间的 Wasserstein 距离。Wassersterin 距离会大致估计出「调整一个分布去匹配另一个分布还需要多少工作」。此外,其定义的方式十分值得注意,它甚至可以适用于非重叠的分布。

推荐文章
暂无评论
暂无评论~