GAN入门基础指导

保留初心,砥砺前行

这次并没有标题党,说一文精通GAN什么的。因为毕竟paper才是基础。以下内容只是辅助作用,相当于paper重点内容的总结而已。

再次强调,请读者先读paper。
Generative Adversarial Networks

paper不能完全搞懂没关系,看下边。

第一个问题,GAN对噪声z的分布有要求吗?常用哪些分布?

常用的有高斯分布
也可以用均匀分布

为什么初始噪声是100维咧,算是一种要求吗?

100维算是个通用取法
小于10维diversity会很低
噪声的维数至少要达到数据流形的内在维数,才能产生足够的diversity,有兴趣的同学可以看这个链接,算是扩展知识。
GAN隐空间维数选择

第二个问题,GAN的 adversarial 体现在哪里?

G和D达到某种纳什均衡
G要使生成的数据尽量判别为真,而D反而要使其判为假
我们的目标是想达到纳什均衡,实际的结果不一定能达到
希望D(x)越小越好,而正是由于其对抗的存在,使得对于GAN来说,loss不能作为训练程序的评判标准
实际上我们要找的是局部鞍点,算法优化的结果很难判断是否达到了纳什均衡解。IanGoodfellow说过,找纳什均衡解是比最小化一个目标函数难得多的问题
理论上,需要D学得足够好,G才能训练好,但是实际中会出现G的梯度消失,WGAN证明过这个问题
在NIPS 2016 GAN tutorial中提到过,D和G各更新一次就好了

为了让G学得更好一点,能不能让G多更新?


Goodfellow认为是G更新太多次会导致diversity不足
意思就是G独自更新的话容易mode collapse

下一个问题,G和D的loss分别是什么?p_data和p_g的JS divergence和adversarial loss之间存在什么关系?


为什么实际训练不用zero-sum game的loss?


这个通俗地解释一下就是如果使用零和博弈的loss,当D训练完美,达到1/2时,D就无法再分辨出真实数据和生成数据,也就无法再给G提供梯度。
用 G 自己的伪装成功率来表示自己的目标函数(不再是直接拿 J(D) 的负数)。J(D) 跟 J(G) 没有简单粗暴的相互绑定,就算在 D 完美了以后,G 还可以继续被优化。

想问一下如果d更新太快 导致g无法更新 可不可以减小d的learning rate呀?

训练中用的 lr 都很小,减得太小了就相当于G多更新了几轮
diversity就不足了

p_r和p_g的JS divergence和adversarial loss之间存在什么关系?

我们通常说的,GAN优化的目标是JSD就出自这里
最优判别器下的loss可化为JS散度
但是实际上是有条件的,只有在D最优的时候,GAN的目标才等价于JSD

在GAN中添加batch normalization层有什么作用?

使训练稳定,gan的最大问题就是不稳定
深度学习中 Batch Normalization为什么效果好?
解读Batch Normalization

最后,
GAN 之父 NIPS 2016 演讲现场直击:全方位解读生成对抗网络的原理及未来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值