从今天开始,我们将关注训练GAN时产生的问题,作为第一篇文章,首先从几个方面来分析一下实际训练的GAN和理论模型上的GAN不同之处以及实践中出现的问题。第一个部分将介绍最优判别器引发的梯度消失问题,第二部分使用一个例子介绍距离计算时的问题,接着第三部分将介绍优化问题的困惑以及给出模式崩溃一个简单解释,最后一部分简单谈一下参数空间的问题。

作者&编辑 | 小米粥

GAN模型在理论上非常优美,它训练完成后的愿景是:生成器的隐式概率分布完全等于数据集的真实概率分布,判别器也无法对任意一个样本点做出区分,而只能给出概率0.5。但是,实际上,这样的结果是不太可能达到的。

1 梯度消失问题

在早期的GAN中,有一条经验:不要把判别器训练得太好,以避免后期梯度消失导致无法训练生成器。在第三期中,我们曾谈论过类似的问题,只不过是从f-divergence的角度来探讨的,简而言之,判别器的任务是辅助学习数据集的本质概率分布和生成器定义的隐式概率分布之间的某种距离,生成器的任务是使该距离达到最小甚至为0。但是当两个概率分布没有重合或者重合部分可忽略时,其f散度值为常数;当两者完全重合时,f散度值突变成0。可以发现f散度距离无法为生成器提供可以减少损失函数的梯度信息,生成器无法获得优化方向。

这次我们从GAN的训练过程的角度再一次来谈论这个问题。通过理论和大量的实践,我们几乎可以认为数据集的本质概率分布和生成器定义的隐式概率分布均是高维数据空间中的低维流形,几乎不存在重叠部分(重叠部分的测度为0),可以证明此时必然存在一个最优判别器D*可以将两个分布完全分开,它在数据集的分布上置1而在生成分布上置0,即:

而且在x的邻域内,其导数为0,即

遗憾的是,此时我们无法使用反向传播算法来使生成器进行学习,因为我们可以证明出:

即不断训练判别器D(x)使其逼近最优判别器的代价是:梯度消失!梯度一旦消失,生成器无法获得任何信息来进行更新,两个分布之间的距离并没有被缩小,判别器无法更新,之后的迭代过程变成无用的循环过程。

2. 采样计算距离问题

WGAN是解决上述梯度消失问题的一个好办法, 现在我们来看在实际训练GAN时候的第二个问题:

首先来看一个小例子,我们定义一个标准的正态分布:

然后,从该分布中采样出m个(有限个)样本组成一个均匀分布:

那么有一个结论:

也就是说,在有限个采样个数的情况下(实际中样本数m足够大是不可能成立的),由样本构成的“采样分布”并不能简单地等同于源分布,两者还有一定的“距离”。更进一步地讲,对于两个正态分布,很可能“采样分布”之间距离并不等于两个分布之间的真实距离。

实际的结论确实如此:对于两个标准正态分布 μ 和 υ 以及两个分别从中采样得到的样本构成的均匀分布,有非常大的概率认为:

在GAN中,我们也是通过采样来近似计算分布之间的距离的,最理想下状态,两个概率分布之间的距离等于两个“采样”分布的距离,或者相差很小:

但考虑到上述简单的正态分布的例子中尚且存在这样的问题,有理由认为在GAN中,依靠采样来估计的分布之间的距离并不等于两个分布的真实的距离。如果指导生成器进行学习的距离信息是有偏差的,则很可能无法将生成器定义的隐式概率分布逼近到数据集的本质概率分布。

3. minmax问题

GAN的训练模式是这样的:固定生成器G,迭代k次训练判别器D;然后固定判别器D,训练生成器G,两者依次交替使用梯度下降法进行更新。但是这里会造成一种困惑,我们到底是在解决一个minmax问题还是maxmin问题?因为这两个问题通常情况下并不一样:

在maxmin的角度来看,GAN的训练过程会产生模式崩溃(mode collapse)问题,就是指生成器生成的样本有大量的重复,多样性非常差(这是一个在实践中经常出现的问题,在之后的文章中,我们将花许多精力来介绍mode collapse问题的解决方案)。

现在,我们通过一个粗略的例子,来简单介绍一下模式崩溃问题的产生原因。真实数据集的本质概率密度函数通常是多峰函数,也就是具有很多模式(mode),假设真实数据集的本质概率密度函数有3个峰。首先,对于固定的判别器D,生成器面临min问题,会努力将概率集值中放置到一个或几个高概率的点(mode)上,例如x=5.0,希望以这种“偷懒”的方式来欺骗判别器D。

接着,固定生成器,判别器面对是一个max问题,对其进行更新,根据最优判别器的表达式:

更新后D(x)为:

可以看出,训练后的D会对x=5.0及其周围点的“极其不信任”。接下来再更新生成器时,为了取得最小值,生成器只得“偷懒”而将概率放置到其他的高概率的、判别器信任的模式上,例如x=0,即:

再次更新判别器D(x),其函数图像为:

这时判别器识别降低了x=0的信任程度,但是同时又恢复了对x=5.0的信任程度,那么接下来再更新生成器时,生成器其又会将高概率点放置在x=-5.0或者x=5.0的点周围,如此往复······

在实践中,我们发现生成器往往不能涵盖所有的模式,通常只包含部分模式。在训练过程中,生成器的概率放置不断地从一个模式转换到另一个模式中,不断往复,这样训练结束后,生成器产生的样本必定有大量的重复。

3. 参数空间与函数空间问题

理论上,GAN确实可以收敛,但是该优化过程是在函数空间中完成的。实践操作中,我们的优化操作是在神经网络的权值构成的参数空间中进行的,理论上的保证在现实中并不成立。另外,有证明表示当参数的个数有限时,GAN的平衡状态很可能是不存在的。

[1] Arora, Sanjeev , et al. "Generalization and Equilibrium in Generative Adversarial Nets (GANs)." (2017).

[2] Arjovsky, Martin , and Bottou, Léon. "Towards Principled Methods for Training Generative Adversarial Networks." Stat(2017).

总结

这篇文章简单介绍了实际训练GAN的一些基本问题,下一期将利用微分方程从动力学的角度讨论一下训练收敛性的问题,将给出一个比较直观的展示。

下期预告:从动力学视角看GAN的训练


小通知:高温假来袭,停更一期

GAN群

有三AI建立了一个GAN群,便于有志者相互交流。感兴趣的同学也可以微信搜索xiaozhouguo94,备注"加入有三-GAN群"。

知识星球推荐

有三AI知识星球由言有三维护,内设AI知识汇总,AI书籍,网络结构,看图猜技术,数据集,项目开发,Github推荐,AI1000问八大学习板块。

【知识星球】超3万字的网络结构解读,学习必备

【知识星球】数据集板块重磅发布,海量数据集介绍与下载

转载文章请后台联系

侵权必究

往期精选

  • 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础

  • 【GAN的优化】从KL和JS散度到fGAN

  • 【GAN优化】详解对偶与WGAN

  • 【GAN优化】详解SNGAN(频谱归一化GAN)

  • 【GAN优化】一览IPM框架下的各种GAN

  • 【GAN优化】GAN优化专栏栏主小米粥自述,脚踏实地,莫问前程

  • 【技术综述】有三说GANs(上)

  • 【模型解读】历数GAN的5大基本结构

【GAN优化】GAN训练的几个问题相关推荐

  1. 【GAN优化】长文综述解读如何定量评价生成对抗网络(GAN)

    欢迎大家来到<GAN优化>专栏,这里将讨论GAN优化相关的内容,本次将和大家一起讨论GAN的评价指标. 作者&编辑 | 小米粥 编辑 | 言有三 在判别模型中,训练完成的模型要在测 ...

  2. 【GAN优化】如何选好正则项让你的GAN收敛

    今天讲述的内容还是GAN的训练,也是最后一期,做几个简单的小实验,告诉大家怎么给GAN加正则项,使得你的GAN尽可能收敛.其实今天的内容本来还是与动力学结合很紧密,但是考虑到复杂的数学内容可能有害无益 ...

  3. 【GAN优化】详解GAN中的一致优化问题

    GAN的训练是一个很难解决的问题,上期其实只介绍了一些基本的动力学概念以及与GAN的结合,并没有进行过多的深入.动力学是一门比较成熟的学科,有很多非常有用的结论,我们将尝试将其用在GAN上,来得到一些 ...

  4. 【GAN优化】从动力学视角看GAN是一种什么感觉?

    今天讲述的内容是GAN与动力学,这是一个非常好玩.非常新鲜的视角.考虑到很多人微积分和线性代数等知识的涉猎不多,我将会对涉及的内容都做出基本说明,也并不会涉及过深入的东西,然后争取串成一个故事,扩展一 ...

  5. 【GAN优化】一览IPM框架下的各种GAN

    今天的这篇小文将是GAN模型理论介绍的最后一篇.有一些内容,所用数学技巧和方法非常高大上,理论结果也非常漂亮,但是完全搞明白其中的门门道道需要相当大精力和知识铺垫,况且实际运用也非常小众,但是作为模型 ...

  6. 【GAN优化】详解对偶与WGAN

    越学习越发现自己知之甚少,道阻且长,还是认真看下这篇文章,好好琢磨琢磨GAN吧. 今天将和大家一起学习在GAN界占有重要位置的WGAN,它提出了一种新的距离度量,较之前的f散度,它的数学性质更为优秀. ...

  7. 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础

    大家好,今天小米粥在有三AI开设新专栏<GAN的优化>.在这个专栏中,我们会讲述GAN的相关背景.基本原理.优化等相关理论,尤其是侧重于GAN目标函数的优化.小米粥和有三将带领大家从零学起 ...

  8. 「GAN优化」如何学会以正确的姿势定量评价你的GAN

    作者 | 小米粥 编辑 | 言有三 在机器学习中,训练完成的模型要在测试集上进行性能测试,然后使用一个可以量化的指标来表明模型训练的好坏,例如最简单的,使用分类准确率评价分类模型的性能,使用均方误差评 ...

  9. 【阿里云课程】生成模型之GAN优化目标设计与改进

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第11课中的一节,介绍如下: GAN优化目标设计与改进 本次课程是阿里天池联合有三AI推出的深度学习系列课程第11期,深度生 ...

最新文章

  1. 12种主要的Dropout方法:用于DNNs,CNNs,RNNs中的数学和可视化解释
  2. Android性能调优篇之探索垃圾回收机制
  3. poj 1470(简单LCA 倍增法)
  4. 为什么魂斗罗只有 128 KB却可以实现那么长的剧情?
  5. mongo php update 写法,mongodb update 字符 操作
  6. MySQL:数据库备份批处理脚本
  7. Sep 12.1.4112.4156部署客户端
  8. 通俗版 OSI七层模型,物理介质
  9. 协方差 方差 以及线性相关理解
  10. 给一张表加一个自动编号字段_Python办公自动化|从Word到Excel
  11. EDA技术实用教程 | 复习四 | 标识符、关键字和规范的书写格式
  12. 报表开发工具FastReport开源代码2020首发更新!邀您免费下载
  13. 计算机管理格式化没有顺利完成,tf卡无法格式化的解决方法
  14. 过去式和现在完成时区别
  15. 大脑计算机马云,马云对话马斯克:人和机器谁更聪明?两马吵起来了
  16. iOS 防键盘遮挡
  17. HTML函数多个条件并列,countifs多个并列条件(countifs同一列2个条件
  18. 网易2011笔试题详解
  19. JavaEE企业级实战项目 智牛股第五天 Netty的使用和项目数据库搭建
  20. 备战2018|春招or跳槽?大学生和职场新人最后的机会!

热门文章

  1. 为什么阿里巴巴RPC接口不允许使用枚举类型?
  2. 蓝桥杯java第四届决赛第四题--九宫重排
  3. strust2控制标签(二) merge标签,generator标签,subset标签,sort标签
  4. 浅谈sql中的in与not in,exists与not exists的区别以及性能分析
  5. java 管道设计_使用管道流实现Java 8阶段构建器
  6. (仿头条APP项目)5.列表页面设计实现
  7. 前后端分离中使用基于jwt的token进行身份认证
  8. Java 里的字符串处理类StringBuffer简介
  9. MySQL概要——《深究MySQL》
  10. 解决 VSCode 配置 tab 空格数 Dart 语言无效的问题