文档章节

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

_夜枫
 _夜枫
发布于 2017/07/11 14:11
字数 1892
阅读 9
收藏 0

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

 


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科技大本营
原文链接

 

 

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

本文转载自:http://click.aliyun.com/m/25662/

共有 人打赏支持
_夜枫
粉丝 10
博文 506
码字总数 0
作品 0
朝阳
后端工程师
私信 提问
[喵咪PHP]页面显示空白问题

哈喽!大家好啊,喵咪PHP第一次和大家见面了,熟悉的朋友呢也之道喵咪我也开了喵咪Liunx和喵咪Golang这两个坑目的呢是吧平常遇到的一些问题或者是在学习中的东西好工具分享出来和大家交流沟通,...

喵了_个咪
2016/06/09
408
0
二, 跨语言微服务框架 - Istio环境搭建

当我们知道Istio是一个好东西,能够帮助我们快速实现微服务化中的一些关键节点,那么下一步就需要考虑怎么使用Istio了,Istio现在版本是和Kubernetes强关联在一起的,如果大家还不是太了解K...

喵了_个咪
11/12
0
0
[喵咪KafKa(2)]单机模式运行KafKa

在上节我们介绍完KafKa之后,今天我们来搭建KafKa三种模式(单机模式,伪集群,集群)中的一种单机模式的搭建,在正常的使用中我们一般吧单机模式作为开发环境的标配,今天就来和喵咪一同搭建一个K...

喵了_个咪
2016/09/12
190
0
PhalApi(π框架) v1.4.1 发布,PHP 轻量级 API 接口开发框架

[前言] 夏天的脚步悄悄来临,在各位小伙伴的辛勤付出下,PhalApi迎来了新版本V1.4.1,在这次更新中着重以开发者便捷为本新增优化了很多功能,如对接口文档添加了各项重要功能可以直接在文档页面进...

喵了_个咪
2017/07/01
1K
4
PhalApi 2.2.2 发布,PHP轻量级开源接口框架

PhalApi 2.2.2 发布,PHP轻量级开源接口框架 [主要更新] 1、JSON格式错误时,追加参数错误提示 2、在线接口文档美化,添加顶部导航菜单,并添加友好的图标 [辅助更新] 1、迁移phalapi/apkAP...

暗夜在火星
04/01
557
2

没有更多内容

加载失败,请刷新页面

加载更多

多线程的实现方式

多线程是指 一个程序运行时,产生或使用了不止一个线程。 线程的生命周期是怎么样的,下面这张图我们可以看出些端倪: 这章我们主要讨论多线程实现的方式,基础知识部分我们可以下来再恶补。...

搬砖大侠
9分钟前
0
0
新人千万不要在 Windows 上使用 Ruby on Rails

标题:新人千万不要在 Windows 上使用 Ruby on Rails 副标题:鼓励新人在 Linux 和 Mac 上使用 Ruby on Rails ! 原则:要走寻常路,不要学美特斯邦伟! "在 Windows上 使用 Ruby on Rails "是...

Jason909
17分钟前
0
0
day177-2018-12-14-英语流利阅读-待学习

艾滋病的治愈方法是否触手可及? Daniel 2018-12-14 1.今日导读 几十年来,艾滋病一直是世界上最难对付的“超级绝症”之一,从人类历史上第一次诊断出艾滋病病例的 20 世纪 80 年代早期到 20...

飞鱼说编程
43分钟前
7
0
java 合成两张图片或图片与二维码

java中偶尔会出现需要将一张小图片嵌入大图中或带二维码的海报图片,那么本文就是奔着这个目的来的,直接上腊肉! zxing是生成1D和2D条形或二维码的工具类库,java图形库Graphics2D进行图片的...

貔貅叔
48分钟前
4
0
80后阿里P10,“关老板”如何带着MaxCompute一路升级?

我是个幸运的人。虽然幸运不能被复制,但是眼光和努力可以。 关涛/关老板,80后的阿里P10,阿里巴巴通用计算平台负责人,阿里巴巴计算平台研究员。12年职场人生,微软和阿里的选择。 关涛的花...

阿里云官方博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部