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

GAN的第二季开始更新了,还是熟悉的配方,还是熟悉的味道。第一季更新了12篇小文,只解读了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].

总结

今天首先将说明模式崩溃问题的本质,分析了产生模式崩溃的原因,并针对该问题给出了小批量判别器技巧,并在最后给出了一个更简单的版本。

知识星球推荐

_
_

有三AI知识星球由言有三维护,内设AI知识汇总,AI书籍,网络结构,看图猜技术,数据集,项目开发,Github推荐,AI1000问八大学习板块。其中网络结构1000变部分有大量GAN实战相关的内容。

【年终总结】2019年有三AI知识星球做了什么,明年又会做什么

转载文章请后台联系

侵权必究

(0)

相关推荐

  • 换脸火了,我用 python 快速入门生成模型

    机器学习算法与Python学习 作为沟通学习的平台,发布机器学习与数据挖掘.深度学习.Python实战的前沿与动态,欢迎机器学习爱好者的加入,希望帮助你在AI领域更好的发展,期待与你相遇! 86篇原创 ...

  • 手把手教你实现GAN半监督学习

    重磅干货,第一时间送达 引言  本文主要介绍如何在tensorflow上仅使用200个带标签的mnist图像,实现在一万张测试图片上99%的测试精度,原理在于使用GAN做半监督学习.前文主要介绍一些原 ...

  • GAN在单细胞上的应用

    下面申小忱的投稿 最近看到了几篇论文,通过GAN网络与单细胞分析相结合,进而得出一些新的思路.和大家分享一下,看过这篇推文相信大家一定会对GAN的原理,GAN的作用,以及GAN在单细胞方面的简单的作用 ...

  • 神经网络调参Tricks大全(1090页NN调参技巧资料)

    本文作为总结机器学习.深度学习领域实践过程中各种"大道至简"的炼丹笔记小技巧,并在文末附<全球机器学习技术大会>各厂分享嘉宾的1090页干货PDF. Cyclic LR ...

  • (4条消息) 深度学习中的epochs,batch

    深度学习框架中涉及很多参数,如果一些基本的参数如果不了解,那么你去看任何一个深度学习框架是都会觉得很困难,下面介绍几个新手常问的几个参数. batch 深度学习的优化算法,说白了就是梯度下降.每次的参 ...

  • 蓝屏代码查询器使用教程,小编教你如何解决电脑Windows蓝屏代码查询器

    说到电脑问题,最常见的莫过于电脑Windows蓝屏问题了.但是,很多经常玩电脑的网友遇到电脑蓝屏的情况,都不知道是什么原因导致的,也不知道如何去解决.而这时候,你就可以通过蓝屏代码查询器来解决Wind ...

  • 【GAN优化】什么是模式崩溃,以及如何从优化目标上解决这个问题

    今天讲述的内容是GAN中的模式崩溃问题,之前的文章有提到这个问题,在接下来的两三期内,将和大家一起讨论有关模式崩溃的解决方法. 本期将会首先介绍什么是模式崩溃,然后给出两种通过修改GAN目标函数的解决 ...

  • 【GAN优化】GAN训练的小技巧

    头一阵子放假了,专栏都没有怎么更新了,今天开始继续更新(想问问小伙伴们都放了多久的假期?我们只有两周感觉时间好短呀~) 作者&编辑 | 小米粥 上一期中,我们说明了GAN训练中的几个问题,例如 ...

  • 浅谈随机梯度下降&小批量梯度下降

    机器学习三要素 上次的报告中,我们介绍了一种用于求解模型参数的迭代算法--梯度下降法.首先需要明确一点,即"梯度下降算法"在一个完整的统计学习流程中,属于什么?根据<统计学习 ...

  • 优化3点,帮美容院解决顾客不到店

    在美容行业资源过剩,顾客分流严重,市场竞争激烈的今天,越来越多的美容院老板开始苦恼一件事,那就是顾客不到店.让很多美容师和老板搞不懂的是,为什么门店一直很主动的联系顾客,很积极的在门店周边做拓客,很努 ...

  • 颈椎病缓解颈椎病的6个小妙招,轻松解决颈椎疼痛

    颈椎病缓解颈椎病的6个小妙招,轻松解决颈椎疼痛

  • 汽车积碳导致动力弱、油耗高,就1个小妙招,轻松解决积碳问题

    随着如今汽车数量的日益剧增,道路通行环境也变得更为复杂了,尤其是城市道路堵车现象就愈演愈烈.我们都知道车辆长期处在走走停停环境中,不但汽车的油耗会直接升高,就连汽车的动力也将会大打折扣.之所以汽车的动 ...

  • 这六瓶小批量金酒会给你带来不同的思考方式

    现代工艺的小批量杜松子酒中总是包含着特殊香料元素,正式这些元素将杜松子酒变得像mezcal和aquavit酒一样特别,今天介绍的6款小众金酒会是你2020年尝试的新目标吗? 1.Bully Boy 这 ...

  • 生活小常识100条,解决了生活中好多难题

    生活小常识100条,解决了生活中好多难题