当前位置:   article > 正文

GAN学习笔记(一)——初探GAN_gan网络的d(g(z))一直在0.5附近什么原因

gan网络的d(g(z))一直在0.5附近什么原因

本文基于2014年的经典论文:Generative Adversarial Networks
论文下载地址:https://arxiv.org/abs/1406.2661

一、感性认识
GAN的任务是“无中生有”。打个比方,我们想要造假币(但是不知道真币是什么样的),那么我们只能通过执法者的反馈,才知道我们造的假币到底够不够真。GAN网络里既有造假者,也有执法者,一来二去,执法者辨识力越来越高,造假者的造假技术也越加成熟,最终我们得到了一个火眼金睛的执法者,但是也得到了能以假乱真的造币工艺。事实上,执法者是网络的副产品,我们真正需要得到的是造币工艺,这就是对GAN的感性认识。
这里写图片描述
这张图里最左端的潜变量空间不要看,不是最原始的GAN的内容,G的输入只有噪声。G可以把噪声z映射到真实样本x的特征空间,得到G(z)。一开始, 虽然G(z)和x是在同一个特征空间里的,但它们分布的差异很大,这时,承担鉴别真实样本和虚 假样本的模型D性能也不强,它很容易就能把两者区分开来,而随着训练的推进,虚假样本的分布逐渐与真实样本重合,D虽然也在不断更新,但也已经力不从心了。
这里写图片描述
图中,黑色曲线是真实样本的概率分布函数,绿色曲线是虚假样本的概率分布函数,蓝色曲线是判别器D的输出,它的值越大表示这个样本越有可能是真实样本。最下方的平行线是噪声z,它映射到了x。我们可以看到, 黑线和绿线最后几乎重合,模型达到了最优状态,这时D的输出对于任意样本都是0.5

二、模型认知
接下来从机器学习的角度深入地剖析GAN的性质。
根据训练数据是否拥有标记信息,学习任务可以分为监督学习和无监督学习两类。GAN输入的样本都没有类标,显然是属于无监督学习的。
GAN中的G是生成模型,D是判别模型。其实D是有监督的,它本质上是一个二分类器,它的输出是该样本属于真实样本的可能性,如果这个值大于0.5,则认为是真实样本,否则认为它是虚假样本。

三、训练方式
为了便于描述训练过程,我们要对文中提到的公式进行一些基本的解释。
GAN的目标函数是这样的:
这里写图片描述
从判别器D的角度看,它希望自己能尽可能区分真实样本和虚假样本,因此希望D(x)尽可能大,D(G(z))尽可能小, 也就是V(D,G)整体尽可能大。从生成器G的角度看,它希望自己尽可能骗过D,也就是希望D(G(z))尽可能大,也就是V(D,G)整体尽可能小。两个模型相对抗,最后达到全局最优。
这里写图片描述
模型按照如图所示的步骤训练。首先固定G,单独训练D,为了让D得到充分训练,有的时候要迭代多次。本论文中每一轮迭代D只训练一次。D训练完毕后,固定D,训练G,如此循环。训练的方式是反向传播算法。
可以注意到,在训练过程中,没有任何求出真实样本的分布或是生成样本的分布的过程

四、深入公式
那么,为什么当判别器D对所有样本都输出0.5的时候,它就能达到全局最优呢?
论文中,公式2是公式3推导出来的结论,也就是说,当G固定时:
这里写图片描述
D的输出为上式时能达到最优。
pdata是真实样本的分布,pg是虚假样本的分布,分别对应之前曲线图的黑线和绿线。我们当然可以求出pdata和pg,但是整套训练过程都不需要我们求这个值
公式4将求到的D代入了目标函数,这时我们开始固定D,求如何取G能达到最优。公式5和公式6证明了当pg=pdata的时候达到全局最优,此时D无论对真实样本还是虚假样本,输出都是0.5.
论文的4.2部分证明了模型是可以收敛的。

五、实验结果
现在我们得到了一批可以以假乱真的样本,但是我们究竟怎么评估这个样本与真实样本接近程度呢?总不能用肉眼观察得出结论吧。
论文给出的方法是高斯parzen窗法进行密度估计,先用真实样本给出高斯parzen概率密度函数,再计算虚假样本在这个分布中的密度,密度越大表示越接近真实值。
论文中表1就给出了概率密度的值, 可以看到本文的方法效果总体上还不错,但是还有改进空间。
这里写图片描述
表格中每一格左侧的是我们需要的指标,右侧是通过交叉验证求得的高斯parzen窗计算时需要的参数。
这里写图片描述
这些图片都是用GAN生成的虚假样本,最右侧框出来的黄色的是真实数据,作者找出了和生成数据最相近的真实数据,以此证明GAN是通过学习样本的特征自己生成样本,而不是单纯的记忆样本。
从中我们也可以看出GAN的一个缺点,那就是当样本维数很高的时候(比如c和d),GAN就不能达到令人满意的效果了。
这里写图片描述
这个实验反映的是样本的渐变,以左图为例,左图最左侧是生成1时输入的噪声(记为z1)),左图最右侧是生成5时输入的噪声(记为z5),中间的样本是在z1到z5之间插值得到的,可以清楚地体现样本的渐变。

六、优缺点
这篇文章讲优缺点讲得很全面
我个人能理解的只有以下部分:
优点:
1 计算优势: 不需要马尔科夫链,也不需要对pg和pdata这些变量进行计算, 只需要反向传播算法,直接得到样本;
2 范围广泛:生成对抗式网络框架能训练任何一种生成器网络,另外理论上,只要是可微分函数都可以用于构建D和G。
缺点:
1 过于自由:较大的图片,较多的 pixel的情形,基于简单 GAN 的方式就不太可控了(超高维);
2 难以训练:GAN的学习过程可能发生崩溃问题(collapse problem),生成器开始退化,总是生成同样的样本点,无法继续学习;

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号