训练判别器,是在度量生成器分布和真实数据分布的JS距离。
第一种解释 2018.10.15
第一种解释略累赘,但容易理解,可选择跳过看第二种解释。
根据文章所述, 为原始数据, 使用的噪声数据,, 为batch_size的大小。
而 为通过生成器生成的数据,也就是说 与是能够互相对立的竞争对手。生成器生成了妄图模拟到的效果达到“欺骗”判别器的目的。
............................(1)
对于判别器来说,其中是判别器认定为真假的概率,在0到1之间,这个地方大家很容易理所当然,一定要记住记住记住,因为对于后续公式的理解很重要。它认为越“真”的数据,给出的概率就越接近1,所以对(1)式左边,它有两个目的 以及 ,这很容易理解,判别器希望认定“真”的概率越大,接近1;“假”的概率越小,接近0。
对于(1)式右边,生成器的目的和判别器相悖,它希望,也就是希望自己生成的数据越接近真实数据。
所以我们现在可以写成
.........................(2) //中间的点为空格,1和2为序号
...............................(3)
可以很明显地看到(2)的2与(3)相矛盾,对啊,这就是博弈的过程,minmax。
接下来,我们可以对(2)式的2,以及(3)进行等价调整,我们将min通过将1进行减法就得到等价变换
.........................(4)
...............................(5)
这样变换的原因原始论文中的表述是能够得到更加稳健的梯度。
接下来,我们将公式再进行升级,由于我们前面得到的所有都是概率,为方便后续求梯度,我们在所有公式前面加上Log
.......................(6)
...................(7)
好的,接下来我们可以将(6)式进行合并了,得到
........................(8)
公式推导到这里就差不多了,接下来就是交替训练的过程,论文中提示的是训练k次判别器,然后训练一次生成器。
我们将(7)(8)进行结合,就得到了更加接近论文原始公式的东西
..........................(9)
这里可能需要仔细看一下,因为已经变成了一个minmax公式了。公式的前半部分和后半部分是判别器用到的部分,而生成器只用到了后半部分。
好勒,现在还记得我之前提到的, 为batch_size的大小吗。
我们将minibatch里面所有的数据相加,再对其取均值。这里我们使用(9)。
.....................(10)
咦,是不是有点眼熟呢?对啊,这样我们就求取了一个Minibatch的期望!
此时我们已经可以将(10)等价写成
........................(11)
是的,这就是论文中的原始公式了,要注意 和 已经变成了 和 哦,代表的是一个minibatch。
好的,接下来,我们使用(10)中只涉及到判别器的部分,也就是
.......................(12)
我们想使判别器得到“满足”,也就是,通过这样来更新判别器的参数,我们就需要求(12)的梯度。
.........................(13)
对啦,这就是论文中的那个求判别器梯度的公式了。
同理,我们使用(10)中只涉及到生成器的部分,也就是
............................(14)
然后也是同样的
.................................(15)
这样就得到论文中求生成器的梯度的公式啦。
我们将得到的生成器和判别器的梯度用于随机梯度下降法(当然也有其他种优化方法),我们就可以更新它们的参数,使我们的矛更加锋利,我们的盾更加坚固,以己之矛,攻己之盾,在不断的交替更新下,我们的生成器和判别器得到了不断的改良和优化。最终,我们能得到“近似”真实数据分布的“假数据”。这就是GAN的思想啦。
PS:如果有说的不对的地方,欢迎各路大神指正。感谢观看!
第二种解释 2019.6.19
这一种解释基于交叉熵。对于二分类来说,交叉熵的公式是
对于判别器来说,输入的真实图像x,判定为真实图像的概率D(x),对应的y为1,这时的判别器对于x的交叉熵为
判别器希望概率越大越好,于是损失越小:.
对于所有真实图像的损失期望为
输入生成器生成的图像G(z),判别器对于G(z)的交叉熵损失为
判别器希望认为是真实图像的概率越小越好,于是损失越小:
对于所有噪声的损失期望为
将两个式子整合到一起就是
这就是关于判别器的损失。
对于生成器,它希望D(G(z))能越大越好,于是通过判别器对于G(z)的交叉熵
可以由上图得知该损失越大,于是便是
即。
与生成器与之前判别器的损失整合一下:
就得到了GAN的损失函数。
实际训练
在实际训练中,早期阶段生成器G很差,生成的模拟样本容易被判别器D识别,使得D回传给G的梯度极其小,达不到训练目的。解决方案是将换为,这样使得即使趋于0,也不会消失,仍然能够给生成器提供有效的梯度。