「GAN优化」小批量判别器如何解决模式崩溃问题
作者 | 小米粥
编辑 | 言有三
1. 模式崩溃的原因
当模式崩溃发生时,生成器 G(z)往往会把很多不同的z均映射成某个x,(更确切地说,指x以及其附近的点,用A表示),接下来更新判别器D(x)后,判别器会很快发现这个病态的mode A从而降低了对这个mode A的信任程度(信任程度即该样本点来源于训练数据集的概率),而信任mode B,那么生成器就会把很多不同的z均映射成x',其中x'及其附近的点表示一个新的mode B,如下图所示。接着,判别器发现这个新的的病态mode B.....
生成器和判别器陷入这样没有意义的循环。我们梳理一下上面的环节,首先生成器 G(z)把很多不同的z均映射成某个x,而不是将部分z映射到mode A,部分z映射到mode B,但这不应该引起担忧,因为可以训练判别器来识别这个不好的mode A再改进G(z)即可;接着,训练判别器环节也没有问题,实践中甚至担忧判别器训练得过好了而产生梯度消失;那么问题应该出在最后一步:生成器把生成样本全部都转移放置到新的mode B下!显然,生成器的改进是“过分”的,理想上生成器应该将部分生成样本都转移放置到 mode B下,保留部分生成样本在mode A下,如下图所示。
其实这并不奇怪,因为在训练生成器时,目标函数为:
其过程为:生成器G(z)生成m个样本{x1,x2,...,xi,...,xm},然后将m个x分别独立送给判别器D(x)判定获得梯度信息。在上面的例子中,由于判别器不信任mode A而非常信任mode B,故对于任意生成样本x,判别器都将指引其接近mode B:G(z)→B,也就是说对于任意x,判别器传递给生成器G(z)得到的梯度的方向是相同的,生成器按着该梯度方向更新参数极易把所有的生成样本转移到mode B下。
2.mini-batch discriminator
根据第一节的讨论,认为原因还是出现在判别器上,因为判别器每次只能独立处理一个样本,生成器在每个样本上获得的梯度信息缺乏“统一协调”,都指向了同一个方向,而且也不存在任何机制要求生成器的输出结果彼此有较大差异。
小批量判别器给出的解决方案是:让判别器不再独立考虑一个样本,而是同时考虑一个小批量的所有样本。具体办法如下:对于一个小批量的每个样本{x1,x2,...,xi,...,xm},将判别器的某个中间层f(xi)的结果引出,其为一n维向量,将该向量与一个可学习的n x p x q维张量T相乘,得到样本xi的p x q维的特征矩阵Mi,可视为得到了p个q维特征。
接着,计算每一个样本xi与小批量中其他样本的第r个特征的差异和:
其中,Mi,r表示矩阵Mi的第r行,并使用L1范数表示两个向量的差异。
那么每个样本都将会计算得到一个对应的向量:
最后将o(xi)也接引出的中间层的下一层L+1即可,也就是说在原来判别器L层的基础上加了一个mini-batch层,其输入是f(xi),而输出是o(xi),中间还包含一个可学习参数T。相比较,原始的判别器要求给出样本来源于训练数据集的概率,而小批量判别器的任务仍然是输出样本来源于训练数据集的概率,只不过它能力更强,因为它能利用批量样本中的其他样本作为附加信息。
还是在第一节的例子中,使用小批量判别器,当发生模式崩溃的生成器需要更新时,G(z)先生成一个批量的样本{G(z1),G(z2),...G(zm)},由于这些样本都在mode A下,则计算得到的mini-batch层结果必然与训练数据集的计算得到的mini-batch层结果有很大差异,捕捉到的差异信息会使小批量判别器D(G(zi))值不会太低,小批量判别器不会简单地认为对所有样本给出相同的梯度方向。
3. 一个简化版本
在Progressive GAN中,给出了一个简化版本的小批量判别器,其思想与上述相同,只是计算方式比较简单,对于判别器的输入样本{x1,x2,...,xm},抽取某中间层作为n维特征有{f(x1),f(x2),...,f(xm)},计算每个维度的标准差并求均值,即:
其中
最后将o作为特征图与中间层的输出拼接到一起。Progressive GAN的小批量判别器中不含有需要学习的参数,而是直接计算批量样本的统计特征,更为简洁。
[1]Tim Salimans , et al. Improved Techniques for Training GANs. 2016.
[2]Karras, Tero, Aila, Timo, Laine, Samuli,等. Progressive Growing of GANs for Improved Quality, Stability, and Variation[J].
总结
今天首先将说明模式崩溃问题的本质,分析了产生模式崩溃的原因,并针对该问题给出了小批量判别器技巧,并在最后给出了一个更简单的版本。
「GAN优化」小批量判别器如何解决模式崩溃问题相关推荐
- 【GAN优化】小批量判别器如何解决模式崩溃问题
GAN的第二季开始更新了,还是熟悉的配方,还是熟悉的味道.第一季更新了12篇小文,只解读了GAN的冰山一角,第二季将作为第一季的"零零星星"的补充,讲解包括其他的损失函数.训练算法 ...
- 「GAN优化」如何学会以正确的姿势定量评价你的GAN
作者 | 小米粥 编辑 | 言有三 在机器学习中,训练完成的模型要在测试集上进行性能测试,然后使用一个可以量化的指标来表明模型训练的好坏,例如最简单的,使用分类准确率评价分类模型的性能,使用均方误差评 ...
- 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?
近日,三星正式向国内 Galaxy S9 系列.Note9 系列推送了 Android 9 正式版.此次除了系统版本的重大升级外,三星还为用户带来全新设计的用户界面:One UI. 在宣传中,三星称 ...
- 「极点日历」小程序插件
上期,我们在<「wxParser」小程序插件>一文中介绍了知晓云团队出品的「wxParser」小程序插件,对其意义.作用以及应用作出了说明.而在此之前,我们还介绍过「腾讯地图」.「腾讯视频 ...
- 「Excel技巧」Excel批量提取当前工作簿下的所有工作表名称
摘自:「Excel技巧」Excel批量提取当前工作簿下的所有工作表名称 (baidu.com) 一个工作簿里有很多工作表,想要提取当前工作簿的所有工作表名称,你会怎么操作? 过去的我,可能会一个个手动 ...
- 【DIY】FFmpeg Joiner – 多段视频「无损合并」小工具 [Windows]
http://subscribe.mail.10086.cn/subscribe/readAll.do?columnId=280&itemId=6082779 FFmpeg Joiner – ...
- 【GAN优化】解决模式崩溃的两条思路:改进优化和网络架构
今天讲述的内容仍然是GAN中的模式崩溃问题,首先将说明模式崩溃问题的本质,并介绍两种解决模式崩溃问题的思路,然后将介绍一种简单而有效的解决方案MAD-GAN,最后一部分将给出MAD-GAN的强化版本M ...
- 「性能优化」首屏时间从12.67s到1.06s,我是如何做到的?
--本文是对之前同名文章的修正,将所有webpack3的内容更新为webpack4,以及加入了笔者近期在公司工作中学习到的自动化思想,对文章内容作了进一步提升. 0.引言 作为互联网项目,最重要的便是 ...
- Yoshua Bengio团队通过在网络「隐藏空间」中使用降噪器以提高深度神经网络的「鲁棒性」...
原文来源:arXiv 作者:Alex Lamb.Jonathan Binas.Anirudh Goyal.Dmitriy Serdyuk.Sandeep Subramanian.Ioannis Mit ...
最新文章
- python引用numpy出错_引用numpy出错详解及解决方法
- 存储虚拟化之带内设备与基于存储控制器的虚拟化
- HDFS多用户管理ACL机制other权限访问控制的理解
- 救援模式下更改用户密码
- 老王讲设计模式(一)——策略模式
- Android P Beta!您想要知道的所有更新内容都在这里
- html盒子中盒子排列,解析CSS的box model盒模型及其内的子元素布局控制
- python web环境傻瓜搭建_工具赋能Python环境搭建
- 【校招VIP】测试脚本语言之系统状态(内存、网络)
- SpringBoot文件上传文件大小限制The field file exceeds its maximum permitted size of 1048576 bytes.
- [noip2011]铺地毯(carpet)解题报告
- BUUCTF持续更新中
- 微信聊天记录删除了怎么恢复?最简单快捷的恢复方式看这里
- 启动电脑时出现0xc000000f错误的解决办法
- UI设计教程分享:PS故障风海报制作教程
- Linux-Samba文件共享服务
- 江西自考 计算机及应用,江西自考专科本科计算机抵免政策解读
- ## 大一java课程设计_航班查询系统(我是小白)
- DL4J的神经网络输入处理DataSet介绍
- tkinter之字体(无废话的那种)
热门文章
- 当了十年 IT 程序员,我转型做自动驾驶开发的这五年”_《新程序员》编辑部的博客-CSDN博客
- Python 字符串前面加u,r,b的含义
- Transformers包tokenizer.encode()方法源码阅读笔记
- Attention机制总结 看明白了的
- JAXB 转 XML乱码
- AI 创业周报第4期:AI芯片创企重磅发力,左手医生完成亿元 B 轮融资
- 线上会议丨中国中文信息学会2020学术年会将于12月27日举行
- 裁员大潮来袭,程序员面试的这些技巧收藏好!
- Coda, 去中心化的简洁(succint)的可拓展的加密货币
- 安装Anaconda创建虚拟环境以及在pycharm中使用虚拟环境