标签:ada network 需要 产生 实现 jpg work log 目标
视频教程的链接:http://campus.swarma.org/gpac=8
一、什么是GAN
GAN全称是Generative Adversarial Nets,中文叫做“生成对抗网络”。
在GAN中有2个网络,一个网络用于生成数据,叫做“生成器”。另一个网络用于判别生成数据是否接近于真实,叫做“判别器”。 下图展示了最简单的GAN的结构以及工作原理。
模型中最左侧的随机向量是为了让生成器产生不同的输出,而增加的扰动项。这些扰动决定了生成器可以生成不同的仿真作品。之后我们会看到这些向量产生的输出会有一些插值和加减法等方面的特性。
这个图示是最简单的GAN框架,在实际应用中还可以把“生成器的输入-输出”作为判别器的输入,这样就可以做到生成符合某些条件的任务内容。例如根据文字内容生成符合描述的图片。
GAN的训练是价值函数最大化和最小化的交替游戏:
其中Pdata是真实数据,Pz是生成数据。
当我们训练判别器D时,我们希望真实数据的判别值越大越好。同时我们希望对生成数据的判别值越小越好,所以也是越大越好。训练中使用梯度上升,使价值函数的值越来越高。
同理,当我们要训练生成器G时,就希望价值函数的值越小越好,即使用梯度下降来训练生成器的参数。
理论推到基于3个假设:
基于以上假设GAN可以得出以下结论:
即不论初始值如何,GAN最终都必然会达到均衡。
(fish:个人觉得这个理论推导可以不看,因为假设条件太扯了~~~要有能力无限的黑箱模型共产主义早都实现了 还用什么GAN~~~)
GAN可以生成非常清晰的图片,而传统的生成模型生成的图片通常比较模糊。
顾名思义,DCGAN就是采用深度卷积的生成对抗网络。英文全称是deep convolutional generative adversarial networks。
DCGAN是第一个把Batch normalization引入到GAN的网络架构,并且使用了Adam等方法,增强了网络的稳定性。
上图是CDGAN生成器的网络结构。
上图是CDGAN论文中提到的“插值”。最左侧一列是由最上面一副随机扰动图片逐渐生成的图片(最下面是最终结果)。最右侧是另一个随机扰动。中间的列是两边的随机扰动向量的中间值(插值),可以看到在生成器的结果随着随机向量的渐变,生成结果也像是在连续的产生变化。说明生成器生成内容是光滑的。
上图是CDGAN论文中的向量加减法,生成器可以把输入向量作为生成目标的某些特征值。例如:戴眼镜的男人 – 男人 + 女人 = 戴眼镜的女人
图片最下面一行是图片本身直接叠加产生的效果,可以看到简单叠加并不能取得很好的效果。说明生成器对特征运算起到了决定性的作用。
把真实数据和生成数据的分布的最小距离的期望叫做Wasserstein距离。
如果右上图中AB是真实数据,CD是生成数据,则他们的W距离=θ 。
WGAN采用“W距离”作为训练的价值函数。
(fish:这里比较汗颜,这个公式其实还不是太懂,先复制过来给大家看看。如果有理解的欢迎留言解说解说。谢谢)
当移除BN后DCGAN无法正常工作,而WGAN仍然可以生成很好的图片。所以WGAN可以使用更简单的网络结构。
上图展示了WGAN变了DCGAN中的mode collapse问题。避免经常生成雷同的图片。
标签:ada network 需要 产生 实现 jpg work log 目标
原文地址:http://www.cnblogs.com/Darwin2000/p/6984253.html