CV_shortcomings of original GAN

shortcomings of the original GAN

1.Evaluation

original GAN的Loss Funtion表示,D实际上是在对P_data和P_G之间做一个JSD的衡量,也就是说,在学习训练D的过程,也就是在衡量给定的G所对应的分布P_G与真实数据所处的分布P_data之间的JS divergence。也正如前述,GAN和VAE使用了相同的架构,但是二者的区别在于Loss Function的不同,即GAN中使用的是D来作为GAN中G的训练方向的指引。所以就有必要来对这样的引导来进行一个评估。

通过计算JSD可以知道,其值介于0和log2之间。当P_data和P_G 完全overlap时,二者的JSD值才为0,否则二者的JSD值为小于log2的非零值。

而在实际过程中会发现,D的Loss Function值始终为0,即JSD始终为log2,也就是表示为P_data和P_G始终没有overlap。

可能的原因有:

  • 对于P_data和P_G而言,二者通常是高维空间中的一个低维的manifold,所以二者的overlap通常非常非常小,或者说根本就没有。所以对于original GAN的Loss Function计算的用于衡量P_data和P_G之间相似度的JSD基本始终为log2,只有在二者完全重合时,JSD才为0。

  • b.在Loss Function的计算过程中,采用的是使用sample出来的data来进行E值的估计。正是由于采用的是sample的方式来估计E,才会给D机会找到一个hyperplane/boundary将从P_data和P_G中sample出来的样本很好的分开。如果是从分布的角度来计算Loss Function,就必然会有两个分布交叠的情况,而无法像对样本分类那样找到一个hyperplane/boundary将两个分布完全地分开。简而言之,由于是采用sample的方式来计算Loss Function,所以如果遇到一个很强势的D,那么将始终无法计算二者的overlap,也就是始终会导致JSD的值为log2。

 

这就会导致什么问题:

  • a.无法从loss值中去判断现在已经训练到什么程度了,或者说loss值并无法反映P_data和P_G的接近、相似程度,因为P_data和P_G的JSD值在绝大多数时候值都为log2,所以仅从由JSD构成的loss值中是无法反映二者的相似程度的。

  • b.很难达到收敛

solution:

  • a.不需要那么强的D,找一个相对弱的D即可。
  • b.加入噪声,使得P_data和P_G二者有更大的overlap的可能。

 

2.Mode Collapse

也就是说,真实的数据分布中可能有多个mode,但是生成的分布中却只有一个mode。换言之,虽然training dataset中的数据的mode很丰富,并且生成的数据也很逼真,但是多次生成G_data后会发现,每次生成的data都只有相同的一个mode。根据生成分布你可以知道他能做什么,但是你无法得知他不能够做什么。他可能可以做更多的事,也可能不能,但是你不知道,因为他并没有表现出来。

然而使用MLL的方式来估计模型并不容易出现mode collapse的情况。

假设P_data中有多个mode。但是在学习G所对应的分布时,当G对应分布逼近P_data的一个mode时,发现能够很好地被D判别出来,这时G可能就会放弃这个mode转向逼近下一个mode…而不是同时去学习逼近多个P_data中对应的mode,因为这种行为可能反而更容易被D给判别出来,也就是说,让G去学习多个mode,相比之下G不如去只学习一个mode能够更好地从Loss Function中得到好的反馈(或者是更好地欺骗D)。这是由于Loss Funtion的所决定的。所以去思考Loss Function背后的含义以及Loss Function是如何引导G去学习的很重要。

更具体地从数学的角度去分析一下这个原因。在basic idea of GAN中提到,MLL相当于是在求P_data和P_G之间的KL散度。

而目标是让KL—>0。从式中可知,当P_G=0且P_data有值时,KL—>∞,当P_data=0时,KL=0

所以为了避免KL—>∞,P_G就会趋向在P_data有值时也有值,即不趋向于0。

这种情况下,反而使得P_G能够学得P_data中的多个mode。

而在reverse KL中

当P_data=0且P_G有值时,reverse KL—>∞,所以这就会导致P_G害怕跨过P_data=0处或者P_data很小的地方去逼近P_data中的多个mode,这就导致了mode collapse。

因为original GAN在D*=argmax_D V(G, D)下,对应的V(G, D*)表示的是JS divergence。而JS divergence

可以展开成下式

所以JSD中是包含reverse KL的,这可能是original GAN中出现mode collapse情况的原因。

Reference

台大深度学习_李宏毅

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值