论文阅读:Generative Adversarial Nets

引言

这篇论文是生成对抗(GAN)网络的奠基之作,它提出了一种全新生成的思想,时至今日都是深度学习中热门的一种模型。它的作者是Ian J.Goodfellow, Jean Pouget-Abadie*, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio

基本原理

GAN网络其实就是两个网络之间的博弈游戏,即网络和网络之间的对抗,其中一个网络G从随机噪声生成样本,而网络D则从来评判一个样本是真实数据的概率,即判别它是来自真实数据集的可能性大还是来自G生成的可能性大。

这样就形成了一个两个网络之间的博弈过程,那么理想状态下,G希望生成能以假乱真的样本,而D希望能有足够的能力分辨样本是生成的还是真实数据。这样的博弈最优的情况就是D(G(z))=0.5,这样就达到了一最优的状态。这样就说明D已经比较难以判断G生成的图片是否是真的。这样这个模型中的G网络就可以用来生成数据样本了,目的就达到了。用数学公式描述如下$$\underset Gmin\underset Dmax V(D,G)=E_{x_\tilde{} p_{data}}(x)[logD(x)]+E_{z\tilde{} p_z(z)}[log(1-D(G(z)))]$$我们可以简单解释下这个公式:

  • 首先x表示的就是真实样本,z表示随机生成的原始噪声,G(z)表示我们生成网络从噪声当中生成的图片,D(x)表示判别x是真实数据的概率(如果x就是真实的,那么我们希望D(x)接近1,反之希望接近0)。
  • G网络:它希望自己生成的样本越真实越好,即希望D(G(z))越大越好,那么上述公式的第二部分就会变小,整个式子V(D,G)也跟着变小。所以可以看到式子前面的符号为$\underset G min$。
  • D网络:它则是希望自己有足够强的能力能够有能力分辨真假样本,即D(x)应该大,D(G(z))应该小。那么log(D(x))会变大,log(1-D(G(z)))会变大,整个式子V(D,G)变大,所以式子前面符号为$\underset Dmax$

也可以把上面的式子拆成两部分,一部分是优化D的一部分是优化G的,则对于G网络$$min\log(1-D(G(z)))$$对于D网络$$max\ (logD(x)+log(1-D(G(z))))$$这两个部分交替优化最终达到平衡。作者指出在每遍循环中同时优化D和G有可能导致过拟合,所以建议在k轮的D优化后再优化一遍G。

同时对于上述的对G网络的优化,由于刚开始G网络还很弱,因此log(1-D(G(z)))会非常小造成溢出,则算法会变得不稳定。作者建议把最小化log(1-D(G(z)))改为最大化log(D(G(z)))会使得算法在刚开始G网络还不是很强时更加稳定(但作者在给出的算法流程中并没有使用)。

算法流程

论文阅读:Generative Adversarial Nets_第1张图片注意算法中第一个式子,即优化D的是ascending,因为要求最大化第一个式子,所以是加上梯度,而优化G的第二个式子就是一般的梯度下降,所以是减去梯度。

一点想法

  1. 其实本文从数学角度很详细的论证了该算法的正确性以及收敛性,证明了在生成的样本和真实样本分布相同时,上述算法能收敛到最优,此时D(x)=$\frac{1}{2}$,由于目前数学功底还不够,只能读懂部分证明内容,剩下的留着以后深入学习后再进行进一步理解。
  2. 本文开创性的提出了一个新的思想,但没有给出具体的G网络和D网络的定义,文章中也指出虽然算法是可以收敛到嘴有点的,但是还取决于是否选取了合适的D和G。当然基于这个思想,已经有十分多的人提出了具体的D网络和G网络的实现并且有着很好的性能。

你可能感兴趣的:(神经网络,深度学习,论文)