今天讲述的内容仍然是GAN中的模式崩溃问题,首先将说明模式崩溃问题的本质,并介绍两种解决模式崩溃问题的思路,然后将介绍一种简单而有效的解决方案MAD-GAN,最后一部分将给出MAD-GAN的强化版本MAD-GAN-Sim。

作者&编辑 | 小米粥

1. 解决模式崩溃的两条路线

GAN的模式崩溃问题,本质上还是GAN的训练优化问题,理论上说,如果GAN可以收敛到最优的纳什均衡点,那模式崩溃的问题便自然得到解决。举例如下图,红线代表生成数据的概率密度函数,而蓝线代表训练数据集的概率密度函数,本来红线只有一个模式,也就是生成器几乎只会产生一种样本,而在理论上的最优解中,红线与蓝线重合,这时候在生成器中采样自然能几乎得到三种样本,与训练集的数据表现为一致。

当然,实际中几乎不会达到全局最优解,我们看似收敛的GAN其实只是进入了一个局部最优解。故一般而言,我们有两条思路解决模式崩溃问题:

1.提升GAN的学习能力,进入更好的局部最优解,如下图所示,通过训练红线慢慢向蓝线的形状、大小靠拢,比较好的局部最优自然会有更多的模式,直觉上可以一定程度减轻模式崩溃的问题。

例如上一期unrolled GAN,便是增加了生成器“先知”能力;

2.放弃寻找更优的解,只在GAN的基础上,显式地要求GAN捕捉更多的模式(如下图所示),虽然红线与蓝线的相似度并不高,但是“强制”增添了生成样本的多样性,而这类方法大都直接修改GAN的结构。

2. MAD-GAN

今天要介绍的MAD-GAN及其变体便是第二类方法的代表之一。

它的核心思想是这样的:即使单个生成器会产生模式崩溃的问题,但是如果同时构造多个生成器,且让每个生成器产生不同的模式,则这样的多生成器结合起来也可以保证产生的样本具有多样性,如下图的3个生成器:

需要说明一下,简单得添加几个彼此孤立的生成器并无太大意义,它们可能会归并成相同的状态,对增添多样性并无益处,例如下图的3个生成器:

理想的状态是:多个生成器彼此“联系”,不同的生成器尽量产生不相似的样本,而且都能欺骗判别器。

在MAD(Multi-agent diverse)GAN中,共包括k个初始值不同的生成器和1个判别器,与标准GAN的生成器一样,每个生成器的目的仍然是产生虚假样本试图欺骗判别器。对于判别器,它不仅需要分辨样本来自于训练数据集还是其中的某个生成器(这仍然与标准GAN的判别器一样),而且还需要驱使各个生成器尽量产生不相似的样本。

需要将判别器做一些修改:将判别器最后一层改为k+1维的softmax函数,对于任意输入样本x,D(x)为k+1维向量,其中前k维依次表示样本x来自前k个生成器的概率,第k+1维表示样本x来自训练数据集的概率。同时,构造k+1维的delta函数作为标签,如果x来自第i个生成器,则delta函数的第i维为1,其余为0,若x来自训练数据集,则delta函数的第k+1维为1,其余为0。显然,D的目标函数应为最小化D(x)与delta函数的交叉熵:

直观上看,这样的损失函数会迫使每个x尽量只产生于其中的某一个生成器,而不从其他的生成器中产生,将其展开则为:

生成器目标函数为:

对于固定的生成器,最优判别器为:

可以看出,其形式几乎同标准形式的GAN相同,只是不同生成器之间彼此“排斥”产生不同的样本。另外,可以证明当

达到最优解,再一次可以看出,MAD-GAN中并不需要每个生成器的生成样本概率密度函数逼近训练集的概率密度函数,每个生成器都分别负责生成不同的样本,只须保证生成器的平均概率密度函数等于训练集的概率密度函数即可。

3. MAD-GAN-Sim

MAD-GAN-Sim是一种“更强力”的版本,它不仅考虑了每个生成器都分别负责生成不同的样本,而且更细致地考虑了样本的相似性问题。其出发点在于:来自于不同模式的样本应该是看起来不同的,故不同的生成器应该生成看起来不相似的样本。

这一想法用数学符号描述即为:

其中φ (x)表示从生成样本的空间到特征空间的某种映射(我们可选择生成器的中间层,其思想类似于特征值匹配),Δ (x,y)表示相似度的度量,多选用余弦相似度函数,用于计算两个样本对应的特征的相似度。

对于给定的噪声输入z,考虑第i个生成器与其他生成器的样本生成情况,若样本相似度比较大,则D(G_i(z))相比较D(G_j(z))应该大很多,由于D(G_j(z))的值比较小,G_j(z)便会进行调整不再生成之前的那个相似的样本,转而去生成其他样本,利用这种“排斥”机制,我们就实现了让不同的生成器应该生成看起来不相似的样本。

将上述限制条件引入到生成器中,我们可以这样训练生成器,对于任意生成器i,对于给定的z,如果上面的条件满足,则像MAD-GAN一样正常计算,其梯度为:

如果条件不满足,将上述条件作为正则项添加到目标函数中,则其梯度为:

这样尽量使得判别器更新后,条件能够满足。MAD-GAN-Sim的思路非常直接清晰,不过代价就是增加非常多的计算量。

[1]Ghosh A , Kulharia V , Namboodiri V , et al. Multi-Agent Diverse Generative Adversarial Networks[J]. 2017.

总结

今天首先说明了模式崩溃问题的本质,并介绍两种解决模式崩溃问题的思路,然后介绍一种简单而有效的解决方案MAD-GAN及其强化版本MAD-GAN-Sim。

知识星球推荐

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

当前更新的主题就是各种各样的GAN的结构解读和实践,感兴趣的同学可以加入一起学习,添加有三微信Longlongtogo即可优惠。

GAN群

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

转载文章请后台联系

侵权必究

往期精选

【GAN优化】解决模式崩溃的两条思路:改进优化和网络架构相关推荐

  1. 【GAN优化】小批量判别器如何解决模式崩溃问题

    GAN的第二季开始更新了,还是熟悉的配方,还是熟悉的味道.第一季更新了12篇小文,只解读了GAN的冰山一角,第二季将作为第一季的"零零星星"的补充,讲解包括其他的损失函数.训练算法 ...

  2. 「GAN优化」小批量判别器如何解决模式崩溃问题

    作者 | 小米粥 编辑 | 言有三 1. 模式崩溃的原因 当模式崩溃发生时,生成器 G(z)往往会把很多不同的z均映射成某个x,(更确切地说,指x以及其附近的点,用A表示),接下来更新判别器D(x)后 ...

  3. 深度学习 | GAN模式崩溃的理论解释

    来源:老顾谈几何 本文约4040字,建议阅读7分钟. 本文与你讨论蒙日-安培方程正则性理论关于GAN模型中模式崩溃(Mode Collapse)的解释. 春节前夕,北美遭遇极端天气,在酷寒中笔者来到哈 ...

  4. 深入理解生成对抗网络(GAN 基本原理,训练崩溃,训练技巧,DCGAN,CGAN,pix2pix,CycleGAN)

    文章目录 GAN 基本模型 模型 GAN 的训练 模式崩溃 训练崩溃 图像生成中的应用 DCGAN:CNN 与 GAN 的结合 转置卷积 DCGAN CGAN:生成指定类型的图像 图像翻译中的应用 p ...

  5. 鲁棒优化入门(4)-两阶段鲁棒优化及行列生成算法(CCG)超详细讲解(附matlab代码)

    本文的主要参考文献: Zeng B , Zhao L . Solving Two-stage Robust Optimization Problems by A Constraint-and-Colu ...

  6. 鲁棒优化(4):通过yalmip中的kkt命令实现CCG两阶段鲁棒优化

    两阶段鲁棒优化的原理推导部分,已经较多的文章进行分析.目前大部分同学面临的问题是,子问题模型中存在的双线性项该如何处理? 目前,主流方式是,采用对偶定理或KKT条件,将第二阶段的双层问题变成单层问题. ...

  7. 关闭 Adobe Flash 沙箱(保护模式)解决Flash崩溃及卡顿问题

    关闭 Adobe Flash 沙箱(保护模式)解决Flash崩溃及卡顿问题 http://mozilla.com.cn/thread-34109-1-1.html 转载于:https://www.cn ...

  8. DAY-20 GAN模式崩溃的理论解释

    DAY-20 GAN模式崩溃的理论解释 原文链接: https://bbs.cvmart.net/articles/283 模式崩溃(mode collapse) 给定数据集合,我们用编码映射将其映入 ...

  9. REVIT建模步骤中:绘制形状不能拾取两条参照平面的交点解决方法

    REVIT建模步骤中:绘制形状不能拾取两条参照平面的交点解决方法 问题:建筑形状(如图-1)所示,当需要在斜面上或者南北立面上绘制形状时,需要设置工作平面,但是在设置好的工作平面中绘制形状时却不能拾取 ...

最新文章

  1. Veeam 跻身 Gartner 2016 数据中心备份和恢复软件魔力象限领导者象限
  2. 基于深度学习的点云配准Benchmark
  3. numpy 中的三个特别的索引操作 c_, r_, s_
  4. linux自学视频资料第四讲:目录
  5. BZOJ 1269: [AHOI2006]文本编辑器editor Splay
  6. java初学者指南_Java代理初学者指南
  7. PHP-递归扫描目录和删除目录
  8. 机器学习-极大似然估计
  9. 手机横版动作类游戏的开发思路
  10. 用计算机弹歌我的歌声里,我的歌声里 (完整版)
  11. 捷径app 保存视频_Android N App捷径
  12. 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
  13. 公共代码之密码加解密
  14. java高级工程师工资_java高级工程师工资为何让人艳羡不已
  15. 南航计算机科学与技术学院老师,南航计算机科学与技术学院导师介绍:孙涵
  16. GitLab CI/CD 基础教程(一)
  17. c语言2维数组每一行最小值,二维数组每一行最大值
  18. 免密登录驾考网使用selenium自动爬取模拟试题
  19. 同一个表单form,两个按钮button,调用同一个submit(),给action附不同的参数
  20. Superset 制作 地图 柱状图 饼状图

热门文章

  1. 21 岁理工男开源的这个编辑器火了!
  2. 10分钟看懂, Java NIO 底层原理
  3. 算法打卡39:喷水装置
  4. org.springframework.dao.InvalidDataAccessApiUsageException: Write operations
  5. 基于ServletJsp的网上书店设计(二)
  6. struts.xml配置文件结构
  7. JVM 内存设置大小(Xms Xmx PermSize MaxPermSize 区别)
  8. 浅谈sass与less区别优缺点
  9. java 判断日期周几_Java 输入一个日期,判断是星期几
  10. (JAVA学习笔记) 关于稀疏数组