模型学习——对于GAN的理解

相关阅读:博弈论中的纳什均衡https://www.jianshu.com/p/7d7a2217c9a8
简单理解:https://juejin.cn/post/6844903775186976781
详细理解(精):https://www.sohu.com/a/121189842_465975
抽象理解:https://juejin.cn/post/6887876829064921095
优缺点:
优点:
数据会逐渐统一;不需要马尔可夫链,直接从数据观测的一步到位的生成模型,效率较高。;被认为可以生成最好的样本。
缺点:GAN Module不稳定,可能不会收敛,生成的图片的细节数量经常会被搞错,对于空间的理解会搞错
Generator:可以产生局部图像,但不能顾及图像的不同部分之间的关系;
Disciminator:考虑的是全局图像,但不能产生图像
训练时
然而,当我们审视训练过程时,我们并没有看到“对手(adversary)”本身。为了找出“对抗训练(adversarial training)”一词的来源,我们应该仔细研究两个网络的目标。鉴别器的目标是尽可能准确地分类真假数据。因此,在鉴别器训练阶段,鉴别器尝试正确识别假样本。另一方面,我们训练生成器生成逼真的假数据。为了通过真实性测试,生成器应该使鉴别器相信它生成的数据是真实的。换句话说,生成器试图欺骗鉴别器,而鉴别器试图不被生成器欺骗。这些相互矛盾的目标使训练过程开始进行。
在训练过程中,两个网络的目标都得到了改进。最后,在某一点上,生成器变得非常好,以至于鉴别器无法区分虚假数据和真实数据,这时我们的训练完成了。(达到了纳什平衡,上面链接详解)
判别器和生成器的目标函数(也为损失函数,先训练D,利用梯度上升,使损失函数越大越好,再训练G,利用梯度下降算法,使损失函数越小越好),判别器的目标函数可以看出是交叉熵函数,其中左边部分表示 D 判断出 x 是真 x 的情况,右边部分则表示 D 判别出的由生成网络 G把噪音数据 z 给伪造出来的情况。由于原论文采用minmax game最小最大游戏和零和博弈的思想,双方收益之和为0或一常数,则我们可直接将G的式子定义为D的相反式。虽然这么做会产生一些不好的结果(训练过早结束,结果不佳),我们先做理解后面会介绍如何来改进。
在这里插入图片描述

在这里插入图片描述

x表示真实的图像,z表示输入的G网络噪声,G(z)表示G网络生成的图像。
D(x)表示真实输入的概率,D(G(z))表示D网络判断G生成的图像是否真实的概率;
G的目的:D(G(z))是D网络判断G生成的图片是否真实的概率,G应该希望自己生成的图片“越接近真实越好”。也就是说,G希望D(G(z))尽可能得大,这时V(D, G)会变小。因此我们看到式子的最前面的记号是min_G。(对应极小极大原理中G永远是小的部分,但却希望自己尽可能地大)
D的目的:D的能力越强,D(x)应该越大,D(G(x))应该越小。这时V(D,G)会变大。因此式子对于D来说是求最大(max_D)。
原论文中的这幅图我们可以更容易地理解它

在这里插入图片描述

如图所示,我们手上有真实数据(黑色点,data)和模型生成的伪数据(绿色线,model distribution,是由我们的 z 映射过去的)(画成波峰的形式是因为它们都代表着各自的分布,其中纵轴是分布,横轴是我们的 x)。而我们要学习的 D 就是那条蓝色的点线,这条线的目的是把融在一起的 data 和 model 分布给区分开。写成公式就是 data 和 model 分布相加做分母,分子则是真实的 data 分布。
我们最终要达到的效果是:D 无限接近于常数 1/2。换句话说就是要 Pmodel 和 Pdata 无限相似。这个时候,我们的 D 分布再也没法分辨出真伪数据的区别了。这时候,我们就可以说我们训练出了一个炉火纯青的造假者(生成模型)。

但是,这也是有问题的:我们的生成模型跟源数据拟合之后就没法再继续学习了(因为常数线 y = 1/2 求导永远为 0)。
对此我们可以这样改进,将零和博弈改为非饱和博弈
在这里插入图片描述

也就是说用 G 自己的伪装成功率来表示自己的目标函数(不再是直接拿 J(D) 的负数)。这样的话,我们的均衡就不再是由损失(loss)决定的了。J(D) 跟 J(G) 没有简单粗暴的相互绑定,就算在 D 完美了以后,G 还可以继续被优化。
注:跟其它机器学习算法一样,如果我们给了 GAN 一些有标签的数据,这些标签最好是平滑(smooth)过的,也就是说把要么是 0 要么是 1 的离散标签变成更加平滑的 0.1 和 0.9 等等。

然而,这样又会造成一些数学问题。因为,如果我们的真实数据被标注为 0.9(alpha),假数据被标注为 0.1(beta),那么我们最优的判别函数就会被写成如下图所示的样式。大家发现问题了吗?这个式子的分子不纯洁了,混进了以 beta 为系数的假数据分布。所以,对于假数据,还是建议保留标签为 0。一个平滑,另一个不平滑,也就称为 one-sided label smoothing(单边标签平滑)。

标签平滑化有很多好处,特别对于 GAN 而言,这能让判别函数不会给出太大的梯度信号(gradient signal),也能防止算法走向极端样本的陷阱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值