在GAN的目标函数中,除了前文提到的诸多目标函数外,还有许多其他的类型和变种。它们的构建基础并不一定是基于f散度或者IPM的某种距离函数。例如,有的目标函数是为了让模型进行真假判别,提高生成样本的质量(如RGAN);有的是为了计算重构损失函数(如BEGAN、MAGAN等);有的是针对GAN中存在的分类任务而设计的(如TripleGAN、cGAN等)等。由于篇幅问题,我们将以RGAN和BEGAN为例对两类目标函数进行介绍。
标准GAN使用JS散度来度量 p data 和 p g 的距离,从JS散度的角度来看:
GAN的训练是一个将JS散度最小化的过程,当 D ( x data )=1且 D ( x g )=0时,JS散度值最大,而当 D ( x data )=0.5且 D ( x g )=0.5时,JS散度值最小。总之,训练GAN时总体上应该是一个 D ( x data )由1减少为0.5,同时 D ( x g )由0增长到0.5的过程。考虑非饱和形式的生成器目标函数,它将 D ( x g )的数值尽可能变大,可以想象,如果训练程度足够好, D ( x data )数值将始终为1,而 D ( x g )的数值将不断增长甚至达到1。但是这里没有减小 D ( x data )的数值的过程,这与标准GAN的目标函数优化流程是不相符的。
对此,RGAN [ 10 ] 对判别器进行重新定义,即判别器每次接收一对样本 x data 和 x g 作为输入 ,即 =( x data , x g ),其输出为 D =sigmoid( C ( x data ) -C ( x g )),其中 C ( x )为判别器的神经网络计算部分,判别器不再估计样本 x 来自训练数据集的概率,而是评估 x data 比 x g 更真实的概率。判别器的目标函数为:
生成器的目标函数为:
RGAN使用相对判别器,从而比标准GAN训练更加稳定,最终生成质量也有所提高。
重构损失函数经常出现在GAN中,它使神经网络的输出结果与输入结果尽可能接近。重构损失函数可能出现在生成器中,例如CycleGAN、VAEGAN等,也可能出现在判别器中,例如EBGAN、MAGAN等,本节介绍的BEGAN也是在判别器中重构损失函数。
在BEGAN中,判别器 D 的结构为一个自编码器,即接收样本 x 作为输入,其输出值为样本的重构 D ( x ),故此可定义样本的自编码器损失函数 L ( x )为:
一般GAN的设计思路是使 p data 和 p g 两个概率分布尽量接近,BEGAN的设计思路不再考虑样本的分布,而是使两个自编码器损失的概率分布尽量接近。具体地,对于来自训练集分布 p data ( x )的样本,其对应的自编码器损失函数 L ( x )也会对应某一概率分布 μ 1 ( x );相应地,对于来自生成器生成分布 p g ( x )的样本,其自编码器损失函数也对应概率分布 μ 2 ( x )。那么,BEGAN期望通过优化生成器而达到 μ 2 接近 μ 1 的效果。
BEGAN使用Wasserstein距离来度量两个概率分布 μ 1 和 μ 2 之间的差距 W ( μ 1 , μ 2 ),即
其中, γ 为 μ 1 和 μ 2 的某种联合概率分布,Γ为所有可能的联合概率分布的集合。BEGAN没有像WGAN那样对其进行对偶转换从而得到可以通过采样来估值的形式,而是试图获取其下界。根据詹森不等式,有
其中, m 1 和 m 2 分别为 μ 1 和 μ 2 的均值。为了实现对 W ( μ 1 , μ 2 )的逼近,需要获得| m 1 -m 2 |的最大值。进一步地,对于 p data 和 p g ,只能通过优化自编码器来改变 μ 1 和 μ 2 的分布,从而获得均值的最大差异。故判别器的优化目标可设定为:
判别器的目标函数与WGAN的目标函数有形式上的相似之处,但其考虑的并不是样本分布差异而是重构误差分布的差异。此外,BEGAN计算的是Wasserstein距离的下界,故避免了对判别器施加的Lipschitz限制。
当获得自编码器损失分布的Wasserstein近似距离(下界)后,自然而然地,可以通过优化该距离来优化生成器,即目标函数为:
在此基础上,BEGAN考虑了训练时判别器和生成器的平衡问题。BEGAN定义当E[ L ( x )]=E[ L ( G ( z ))]时为平衡点,此时有 p data ( x )= p g ( x ),即生成器生成的样本使得判别器无法区分真假。但在实践中,通常需要添加松弛因子 α 对平衡点进行调整,即有 α E[ L ( x )]=E[ L ( G ( z ))],其中 α ∈[0,1]。为了保持平衡,BEGAN借鉴了控制论的相关算法,其最终判别器的损失函数为:
其中, k t +1 = k t + λ k ( α E[ L ( x )]-E[ L ( G ( z ))]),即 k t 为不断更新的参数, λ k 为超参数。这样构建的目标函数形成了负反馈系统,使得损失函数的两项数值能保持平衡。