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

了解更多技术文章请点击原文链接

 


image


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

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

image


最近,一位在医院工作的猫奴生物统计学家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)。图片漂亮吧!

image


高分辨率的 DCGAN和SELU

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

论文地址
https://arxiv.org/abs/1706.02515

image


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都用了亚当优化。

image


WGAN-GP (改进的WGAN)

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

论文地址
https://arxiv.org/abs/1704.00028

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

image


LSGAN (最小二乘 GAN)

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

论文地址
https://arxiv.org/pdf/1702.08431.pdf

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

image
image


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

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

image


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

代码地址
https://github.com/AlexiaJM/Deep-learning-with-cats

来源: AI科技大本营
原文链接

 

 

了解更多技术文章请点击原文链接

转载于:https://www.cnblogs.com/Gamay/p/7150397.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值