![生成对抗网络GAN:原理与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/116/48213116/b_48213116.jpg)
2.1.3 GAN的本质
为了深入探究GAN的本质,我们对其进行理论上的分析。首先,在每次迭代的过程中,我们都可以计算出最优判别器D*,只需令目标函数的一阶导数为0,可得
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_01.jpg?sign=1739044954-mRjBJ3xh10cyXeaRlXwp4bwKeQeobpxC-0-565280fb374900578eb8942d3cb108b5)
具体证明过程如下所示。
首先,我们对目标函数中的项进行变换:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_02.jpg?sign=1739044954-at5bVHszQB9a1BPq4eD4gtIxLZazQADO-0-8f17d87bb0eba9d89a65525a273ee4e1)
则判别器的目标函数变为:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_03.jpg?sign=1739044954-fRRDw5stFPeBEIzROMtbkv8M0FlGxvGS-0-d9508f6dd98da83ca6b38d71e4ee8244)
使其一阶导数为0,则
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_04.jpg?sign=1739044954-pFDlpwul5kGoeadH0Is0XMyXmvTgYjg8-0-a2f5e590f004d56ba0bab67f54843e9d)
当判别器达到最优时,生成器的目标函数为:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_05.jpg?sign=1739044954-ngoHlqX0DFBvzY9TlTmYSBlV0HwJoVIH-0-6fac05d070ea6c835735a1be584c52eb)
可改写为:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_06.jpg?sign=1739044954-IJEfUTXUpIsnAaSLQbBqWST6ZhzEdlVL-0-a60ec9cee3fe1fc869e08246879618ee)
具体的计算步骤为:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_46_07.jpg?sign=1739044954-2qmXh0rtA9rpikdxKHl5zo784iRknnqL-0-421c22bf99c8fddeeb3fde2a22fe90ab)
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_47_01.jpg?sign=1739044954-UUroenvsOs7j1B0hvo9RvL7oHgD8HZtr-0-a483a16bb1637f14c73be7f565e8f47a)
JS散度是一种度量两个概率分布之间的差异的常用方式。为了加深理解,我们对JS散度稍作解释。我们非常熟悉这样一件事:在一个二维平面上,每个点便是一个元素,点与点之间的距离即欧氏距离,可通过勾股定理计算,如(3,0)与(1,0)的距离肯定要比(0,1)与(1,0)的距离大。其实元素是一个抽象的概念,平面上的点可视为元素,矩阵、多项式、函数也均可视为元素,类似刚才的例子,若将每一个概率分布p(x)也视为一个元素(如图2-5所示),则概率分布之间的距离可使用JS散度计算,有
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_47_02.jpg?sign=1739044954-awZwHsN3POUJgzmQ7KQwLSwnfb3VFGWZ-0-c69c392e3e29cdec7ca61ef7c3d44f70)
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_47_03.jpg?sign=1739044954-bVCPO5nNKv5IHcfLsCFebf4yYlozlabi-0-e39fbeb0000da42d0185e8d67dc71cf9)
图2-5 JS散度解释
相应地,JS散度越小,表示两个概率分布越相似;JS散度越大,表示两个概率分布差异越多;两个分布完全相同时,JS散度为0。对于图2-5中的例子,计算可知JS(p1(x)|| p2(x))>JS(p2(x)||p3(x))。
可以看出,GAN本质上是先通过训练判别器得到pdata和pg的JS散度,然后训练生成器使JS散度达到最小,当JS散度为0时,生成器达到全局最优,即pdata=pg。理论上也可以证明,当生成器和判别器具有足够的容量,并且在给定生成器时,如果判别器能够达到最优解,则GAN可以实现全局最优,当然这在实践中几乎是不可能的。
另外,对于生成器的非饱和形式目标函数,同样在最优判别器D*的条件下,目标函数变为:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_48_01.jpg?sign=1739044954-MSemdWtovhRtTrNBWWM0JTUJMGzZY0Kr-0-974fcd490ea1cc5382e9502112f30e2b)
具体的计算步骤:
![](https://epubservercos.yuewen.com/7550BE/27732744204343206/epubprivate/OEBPS/Images/978-7-111-71223-7_48_02.jpg?sign=1739044954-bT33ZVRvqOz2TtWrorTQ79nGTZfJoLgA-0-96cd733391c790c31fca4a459088ec25)
可以看出这里存在理论上的矛盾,即非饱和形式的生成器在最小化KL散度的同时也在最大化JS散度,这是两个方向相反的优化方向,但从实际效果上看,它确实在一定程度上避免了训练梯度饱和的问题。