查看原文
其他

喵咪制造机:生成式对抗网络的花式画喵大法

2017-07-09 爱学习的 AI科技大本营


2012年,吴恩达和Jeff Dean用Google Brain的1.6万个CPU所打造的大型神经网络,在被1000万YouTube视频中的猫图像训练三天后,自己画出了一张模糊的猫脸图。这是普通公众第一次领略到深度学习的威力。


而后随着AlphaGo在围棋上先后虐杀人类冠军李世石、柯洁,公众对深度学习和人工智能的热情更胜以往。不过,神经网络自己画猫的技术,有没有随之进步呢?



最近,一位在医院工作的猫奴生物统计学家Alexia,使用最新的生成式对抗网络GAN来测试深度学习的画猫技术。相比吴恩达三天才能画出来的猫,GAN的新方法仅用几个小时就能搞定,画出来猫咪也好看很多。这里的新方法在细节上有何特点呢?我们仔细来看作者Alexia的点评。


作者 | Alexia Jolicoeur-Martineau

译者 | AI科技大本营(rgznai100)

参与 | 智子,波波



我试验用生成对抗网络来生成猫脸的各种图片。针对不同的分辨率,我采用了几种不同的方法,包括DCGAN、WGAN与WGAN-GP,训练样本源自一个有着上万张猫图的图片库。我找的是那些猫脸处在正中的图片(用人眼生看,花了我好几个小时……说起来都是泪),共有9304张分辨率大于64x64的图片,以及6445张分辨率大于128x128的图片。


DCGAN


DCGAN可以很好的收敛,只用了209次迭代,大概两三个小时,就产生了非常有真实感的图片。但是需要进行一些调整才能达到这个效果。众所周知,GAN的生成器和判别器必须势均力敌,才能产生良好的效果。我的DCGAN对生成器和判别器分别设定了不同的学习速率,这样才使得二者势均力敌,从而能得出很好的效果。当处理64x64的图片的时候,最好的判别器的学习速率是0.00005,生成器的速率是0.0002。如下图所示,没有产生模式坍塌(mode collapse)。图片漂亮吧!



高分辨率的 DCGAN和SELU


但上述办法用来处理128x128的图片,就会失效。但是,我用SeLUs替换了batch归一化和ReLus,在学习速率保持不变的情况下,也取得了一定的效果。只不过过程非常慢,大概要用6个多小时。SeLUs是自归一的,因此就不需要用batch归一化了。SeLU才刚诞生不久,所以基本上在GAN上没有什么深入的研究。不过据我观察,SeLU极大的提高了GAN的稳定性。这次生成的猫不像上次的那么漂亮,并且有很多黑猫长的差不多,明显地产生了“多样性缺失”现象。这也很好解释,因为这次是在6445个大于128x128的图片上训练,而上次是在9304个图片上训练,训练数据少了不少。不过,这次有些猫也相当好看,清晰度比原来的高,所以我仍然觉得这次也是成功的。


论文地址

https://arxiv.org/abs/1706.02515



WGAN


WGAN收敛的很慢,大概用了四五个小时,600多次迭代。并且只在64个隐层神经元成功了。128个神经元的时候失败了。对DCGAN,虽然要调整学习速率,但是一旦调整了,你马上能看到效果。对WGAN,很难马上看到效果,只有让网络多跑几个迭代,才能看到效果。


观察图片的话,有非常明显的模式坍塌(mode collapse)。还有很多猫有异盲证,一些猫一只眼睁着,一个眼闭着;还有一些猫鼻子畸形。总体上看,WGAN的效果不如DCGAN。但是也许是因为我用的神经网络的结构太简单,所以不好在二者之间做明确的判断,哪个更好。还有,WGAN似乎陷入了局部最优。到目前为止,WGAN还是令我有点失望。


WGAN-GP是WGAN的改进版本,也许能够解决上面的问题。2017年的Gulrajani等人发表的论文中,提到他们能训练101层的神经网络。所以也许我的用5层128个神经元的方法生成猫的方法有问题。亚当优化器(Adam optimizer)也能降低种类坍塌和局部最优的风险。很可能这个能够解决这些问题,因为WGAN没用而DCGAN和WGAN-GP都用了亚当优化。



WGAN-GP (改进的WGAN)


WGAN-GP的生成器收敛的非常慢,大概在六个小时以上。但是它的好处是不需要调整任何超参。比如,可以任意调整学习速率,调大或者调小,都不会造成任何问题。这一点上,WGAN-GP用起来很舒心,不像其他算法调整超参那么辛苦。


论文地址

https://arxiv.org/abs/1704.00028


而且该方法生成的猫的种类和样式非常多,没有明显的模式坍塌(mode collapse)。这是对WGAN的的一个主要的改进。另一方面,图片有点模糊不清,好像是低分辨率的图片又被放大了一倍。我也不确定具体的原因,可能是Wasserstein距离的导致的。我觉得可以使用不同的学习速率和网络结构优化结果。这需要做更进一步的研究,但我确信这里有很大的提高空间。



LSGAN (最小二乘 GAN)


LSGAN和前面几个方法不同。LSGAN用最小二乘法来最小化判别器的输出和真实结果差值。该方法的推荐设置为:在判别器端,用1表示真实图像,0表示假的图像;在生成器端,用1表示假的图像。2017年Hejlm等人在论文中又提出了新的建议:在判别器端,1表示真实图像,0表示假的图像;但是在生成器端,用0.5表示假的图像。


论文地址

https://arxiv.org/pdf/1702.08431.pdf


我现在还没有时间全面研究这个方法。但是看起来,这个方法非常稳定,并且生成的图片中的猫也很漂亮。虽然该方法通常挺稳定的,但是有一次,出现了梯度爆炸,最后生成的结果嘛也不是。下图展示了第31和32次迭代的结果:



所以该方法也不是百分百的稳定,不稳定的时候结果还非常糟糕。对Adam优化器选择一个较好的超参可以有效阻止该问题的发生。该方法的优点是不用像DCGAN那样调整学习速率,并且不发生问题的时候(发生问题的概率还是很低的),结果还是很不错的,猫的图片也很漂亮。


xudong mao是LSGAN的提出者。他发给了我用LSGAN生成的128x128的猫的图片,如下图所示。可以看到,该方法也可以生成和DCGAN一样质量的图片。



我的代码放在GitHub上,愿者自取。


代码地址

https://github.com/AlexiaJM/Deep-learning-with-cats


原文链接

https://ajolicoeur.wordpress.com/cats/


点评

本文作者是医院数据分析员,利用业余时间快速掌握了GAN的各种方法。通过生成猫咪图片的试验,深入分析对比了DC-GAN,WGAN,WGAN-GP和LS-GAN。每个方法寥寥几语,但点出了每个方法的关键之处。功力深厚,令人佩服!


整个文章结构清晰,几个试验层层深入,读起来很简单,并且给出了源代码。不过每个实验都是直接给了结论,没有中间的细节分析,还需要读者进一步研究代码,才能领悟读者的结论。




专属福利:中国国内级别最高、规模最大的人工智能大会——中国人工智能大会(CCAI)将于7.22-7.23在杭州举行,目前大会 8 折 专属优惠门票火热抢购中,赶快扫描下方图片中的二维码或点击【阅读原文】火速抢票吧。

关于CCAI

中国人工智能大会(CCAI),由中国人工智能学会发起,目前已成功举办两届,是中国国内级别最高、规模最大的人工智能大会。秉承前两届大会宗旨,由中国人工智能学会、阿里巴巴集团 & 蚂蚁金服主办,CSDN、中国科学院自动化研究所承办的第三届中国人工智能大会(CCAI 2017)将于 7 月 22-23 日在杭州召开。


作为中国国内高规格、规模空前的人工智能大会,本次大会由中国科学院院士、中国人工智能学会副理事长谭铁牛,阿里巴巴技术委员会主席王坚,香港科技大学计算机系主任、AAAI Fellow 杨强,蚂蚁金服副总裁、首席数据科学家漆远,南京大学教授、AAAI Fellow 周志华共同甄选出在人工智能领域本年度海内外最值得关注的学术与研发进展,汇聚了超过 40 位顶级人工智能专家,带来 9 场权威主题报告,以及“语言智能与应用论坛”、“智能金融论坛”、“人工智能科学与艺术论坛”、“人工智能青年论坛”4 大专题论坛,届时将有超过 2000 位人工智能专业人士参与。


戳原文,抢 8 折优惠门票!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存