还记得《射雕英雄传》中老顽童发明的“左右互搏术”吗?

表面上看,左手与右手互为敌手,斗得不可开交。实际上,老顽童却凭借此练就了一门绝世武功。

这样的故事似乎只能发生在小说中。然而,近年来兴起的一项机器学习算法却将“左右互搏术”变为了现实。

这项神奇的算法正是生成对抗网络(GANs)。

生成对抗网络由蒙特利尔大学的IanGoodfellow最先提出,目前是“教”电脑完成人类工作最有效的方法之一。它的核心想法正是令内部功能相互竞争,达到提升它们各自功能的效果。

生成对抗网络由两个相互竞争的神经网络模型组成,就好比周伯通的左右手。一个神经网络(生成器)不断学习怎样生成新的样本以欺骗判别器,另一个网络(判别器)则不断学习怎样区别生成样本数据和真实数据。在百万轮“较量”后,生成器就可以输出与真实数据几乎无差别的样本。

生成对抗网络别出心裁的思想让它在学界扬名立万。在业界,生成对抗网络也带来了无数强大、有趣的应用。

今天,大数据文摘就将带你走近生成对抗网络在产业界的十大神奇应用。

对抗生成网络(概念模型)

NO. 10 照猫画虎:自动生成游戏用户界面

排在榜单第十位的GANs应用是,游戏用户界面自动生成。

这一应用背后的脑洞如下:如果我们能够生成逼真的游戏配图,那么我们就可以把这些配图中的部分截取拼接在一起,从而设计出一个全新的游戏界面。

作为输入的游戏背景图像

在生成式对抗网络(GAN)训练过程中生成的背景图像

可以用于制作全新游戏的独特背景。

为实现这一目标,该程序会搜集大量现有游戏的图像,然后生成由这些图像片段所构成的独一无二的新图像。这些图像之后便可以被用作新游戏的背景了。

来源&更多信息:

Blog:https://medium.com/@ageitgey/abusing-generative-adversarial-networks-to-make-8-bit-pixel-art-e45d9b96cee7

No. 9 千面神君:用GANs生成以假乱真的人脸

接下来,我们要为你介绍一款能够伪造人脸图像的AI——Neural Face。Neural Face使用了Facebook 人工智能研究团队开发的深度卷积神经网络(DCGAN)。

由生成式对抗网络(GANs)产生的独特人脸

研发团队用由100个0到1的实数组成的1个向量Z来代表每一张图像。

通过计算出人类图像的分布,生成器就可以用高斯分布(Gaussian Distribution)根据向量Z来生成图像。在此过程中,生成器学习生成新的人脸图像来欺骗判别器,同时判别器也能更好地区分加工生成的人脸图像和真实的人脸图像。

来源&更多信息:

GitHub:https://github.com/carpedm20/DCGAN-tensorflow

Page:http://carpedm20.github.io/faces/

No. 8 破涕为笑:改变照片中的面部表情和特征

在这一应用中,你只需要提供一些样本图像,研究人员就能生成表情各异的人脸图像。比如,你可以让一个面无表情的人露出笑容。

让面无表情的人露出笑容,给不戴眼镜的人加副眼镜。

实现这一应用的基本思想方法是:将图像的每一列用向量X来表示,计算每一个X的平均值,从而得到一个Y向量。

然后,对向量Y进行一些加法和减法运算,生成一个单一的图像向量Z(如:戴眼镜的男性-不带眼镜的男性+不带眼镜的女性)。最后,把这个图像向量Z输入生成器中。

将一张头像靠左的人脸图像变为靠右的图像

实际上,我们还可以用该模型实现包括旋转、放缩、位置变换在内的多种操作。以位置变换为例,我们可以将一张头像靠左的人脸图像转变为靠右的图像。

为此,我们可以先把向头像靠左和靠右的人脸图像作为样本,对它们取平均值,得到一个“翻转图像”向量。然后,沿着坐标轴对图像向量进行插值(https://zh.wikipedia.org/wiki/%E6%8F%92%E5%80%BC),我们就可以将这种“转变”应用到新的人脸图像上了。

来源&更多信息:

GitHub:https://github.com/Newmu/dcgan_code

Paper:https://arxiv.org/pdf/1511.06434.pdf

Blog:https://hackernoon.com/how-do-gans-intuitively-work-2dda07f247a1

NO. 7 脑洞大开: 用GANs创造出迷幻图像

接下来,我们将为你介绍Google Brain研发的Google Deep Dream。这一应用基于 GoogleNet对物体本质的“认知”可视化。

通过此方法,GANs能够学会生成一些“迷幻”的图片。这些如梦似幻的图像是图片分类器故意过度处理图像的结果。

Deep Dream 用普通图像生成迷幻图片

Deep Dream在图像中“找”到了塔、建筑、鸟和昆虫

当你向Google Deep Dream输送一张图像后,该应用就会开始在图像中寻找各类曾被训练识别的物体。神经网络会将一些毫不相关的物体联系起来,这就好比人们把云想象成小狗、小鸟。然后,Google Deep Dream 会对其联想出的物体作增强处理。

举个例子,当神经网络第一次作出图像识别时,它会认为这张图有40%的可能是一只小狗,而经过一轮处理后,神经网络就会认为可能性增加到了60%。这个过程会不断重复,直到输入图片已被修改得非常像一条狗了。

就这样,它一步步地把原图像调整成另外一张图像。换句话说,创造出了“四不像”的图片。

来源&更多信息:

GitHub:https://github.com/google/deepdream,

Blog:https://research.googleblog.com/2015/06/inceptionism-going-deeper-into-neural.html

NO.6 狸猫换太子:改变图像/视频内容

通过图片生成另一张图片是生成网络的另一项有趣应用。凭借此技术,我们可以将一段视频中的动物换成另一种动物,或者将图片里的季节换成另一季节。

该应用的核心在于,使用一组训练图像对来学习映射输入和输出图像。然而,在许多情况下,配对训练图像并不容易获得。为了克服这一问题,我们可以采用“双边镜像绘图”的方式,将一种变换的输入作为另一中变换的输出。这样,我们就能通过无监督学习克服相本容量小的问题了。

下面就是一些例子:

动物变形—通过侦测视频中的奔跑的马给它添加斑马条纹,将马变斑马图像。

季节转换—在图像中改变季节,例如将冬季转为夏季,或将冬季转为春季。

来源&更多信息:

Page:https://junyanz.github.io/CycleGAN/

GitHub:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

NO.5 化零为整:通过轮廓生成逼真图像

修改逼真图像是一项富有挑战性的工作,它要求在写实的基础上以用户控制的方式改变图像的外观。这一任务的技术含量相当高,一位艺术家可能要经过多年训练才能到达稳定的水准。

GANs 能够从轮廓中生成逼真的图像

给出一件物品的轮廓,这一模型就能够识别出这个物品,并能够生成栩栩如生的物品图像。

在该论文中 (https://arxiv.org/pdf/1609.03552v2.pdf),作者提出一种使用生成对抗网络,从数据中直接学习自然图像流形的方法。模型能够自动调整输出结果,以保证内容尽可能真实,同时所有操作均以约束优化法进行表达,且基本能被实时应用。

这个方法也可以将一张图片变得更像另一张图片,或者根据用户的涂鸦产生全新的图像。

来源&更多信息:

Paper:https://arxiv.org/pdf/1609.03552v2.pdf

GitHub:https://github.com/junyanz/iGAN

Page:https://people.eecs.berkeley.edu/~junyanz/projects/gvm/

NO.4 见字如面:GANs用文本生成图片

下面这项应用既有趣又实用。通过训练,GANs能够依据文字描述自动合成拟真图像。

最近,深层卷积生成对抗网络(DCGANs)用一些特定类别的图像,如人脸,唱片封面,室内空间合成了令人叹服的图像。

这个模型是用由文本和与之对应的图像组成的样本数据进行训练的。给定一个物体的文本描述,这个模型会尝试根据这一描述生成图像。

左栏为文字描述,右栏为机器想象出的图片

左栏的描述从上到下分别为:

  • “这只充满朝气的红色小鸟有着尖尖的黑色的喙”,

  • 这只黄橙色的鸟有着黑色的翅膀

  • 这只天蓝色小鸟的腹部是白色的

在这项工作中,我们首先要获取描述图像的文本,学习文本,抓住重要的视觉细节,然后再利用这些特征文本来合成能够迷惑人们的逼真图像。

来源&更多信息:

Paper:https://arxiv.org/pdf/1605.05396.pdf

GitHub:https://github.com/paarthneekhara/text-to-image

No. 3 未卜先知:通过“场景动态”(Scene Dynamics)预见视频下一秒将发生什么

理解物体运动和场景动态是计算机视觉中的核心问题。不管是视频识别任务(如行动分类)还是视频生成任务(如未来预测)都需要转换场景的模型。但由于物体和场景改变的方式多种多样,构建这样一个动态模型是很有挑战性的。

生成火车站、沙滩、婴儿和高尔夫的预测短视频

为实现这一目标,我们需要一个能将前景和背景区分开来的模型。在保持背景的静止的基础上,神经网络能够了解哪些物体是运动的,哪些物体是静止的。

上面的预测视频便是生成模型想象出来的。尽管这些预测并没有实际发生,基于它们的训练场景类别,这些动作还是相当合理的。

来源&更多信息:

Paper:http://carlvondrick.com/tinyvideo/paper.pdf

GitHub:https://github.com/cvondrick/videogan

Page:http://carlvondrick.com/tinyvideo/

NO. 2 依葫芦画瓢:用GANs完成模仿学习

GANs也可以帮助研发自学习人工智能机器人。此前,该领域的研究多涉及奖励机制的应用。

运用GANs的方法,科研人员向人工智能主体输入真实的演示数据,然后人工智能主体就能通过数据学习尝试模仿相同的动作。

一个AI主体正尝试模仿人类跑步

该模型展示了模仿学习的一种新方法。标准加强学习模型通常要求建立一个奖励函数,用于向代理机器反馈符合预期的行为。然而,这种方式在实践中为了纠正细节问题会在试错过程上消耗大量精力。

取而代之的模仿学习,则是让人工智能主体从实例中学习(例如远程遥控机器或者人类活动提供的案例),省去了设计奖励函数的麻烦。

来源&更多信息:

Blog:https://blog.openai.com/generative-models/

GitHub:https://github.com/openai/imitation

No. 1 自学成才:让“好奇”驱动计算机学习

在很多现实世界的情境中,对人工智能主体的外部奖励是非常少的,或者说根本没有。如此一来,一段被动的程序就会因为它自身的固有属性,无法进化和学习。

在这种情况下,“好奇心”可以作为内置的奖励信号激励人工智能主体去探索它周边的环境、学习在将来对它可能有帮助的技能。在这种情况下主动学习者比被动学习者的表现要好。

在这样的模型中,“好奇心”被设定为 AI预测它自身行为后果能力中的误差。当然了,在这样的语境下,AI也可以通过程序员建立的奖励机制开展学习。

让我们用小孩学习的过程来作个类比。一个不受大人监护的小孩不知道摸热炉子的后果。不过一旦他这样做了,他就会明白他不应该这样做——因为疼痛,也因为了解了摸热炉子和感受到所谓疼痛之间的因果关系。

贪吃蛇游戏:通过“好奇心驱动学习”(curiosity driven learning),贪吃蛇学着去收集那些能增加它的报酬的绿球,并避开那些会减少其报酬的红球。

好奇心驱动的学习(curiositydriven learning)以下面三点作为基础:

  • 极少的外部奖励——有了“好奇心”,达成目标所需与外界环境的互动更少了。

  • 没有外部奖励的探索,是“好奇心”使AI主体的探索行为更高效。

  • 对未知场景中(例如同一个游戏中的新关卡)的泛化处理。此时AI主体利用过往经验探索新大陆,这会比它从零开始探索要快很多。

来源&更多信息:

GitHub:https://github.com/pathak22/noreward-rl

Paper:https://pathak22.github.io/noreward-rl/resources/icml17.pdf

Website:https://pathak22.github.io/noreward-rl/index.html#demoVideo

结语

看完了以上这些应用,你是不是对生成式对抗网络刮目相看了呢。然而,这些只不过是生成式对抗网络初试身手罢了。相对于生成式对抗网络所能完成的工作而言,这些应用只是冰山一角。生成式对抗网络为我们提供了一个强有力的训练神经网络的方法,让机器能够完成任何一个人类能够完成的复杂任务。

生成式对抗网络(GANs)向我们证明了:创造力不再是人类所独有的特质了。

最后,如果你想更深入地学习生成模型(generative model)和深度卷积生成式对抗网络(DCGAN),不妨继续阅读下面的这些资源:

1.Dev Nag的50行代码看生成式对抗网络

https://medium.com/@devnag/generative-adversarial-networks-gans-in-50-lines-of-code-pytorch-e81b79659e3f

2. Ian Goodfellow’s的生成式对抗网络的keynote(一个技术性较强的视频)

https://channel9.msdn.com/Events/Neural-Information-Processing-Systems-Conference/Neural-Information-Processing-Systems-Conference-NIPS-2016/Generative-Adversarial-Networks

3. Siraj Raval’s的生成式对抗网络视频教程(一个简短而有趣的视频)

https://www.youtube.com/watch?v=deyOX6Mt_As

“未卜先知”、“自学成才”:GANs奇思妙想TOP10相关推荐

  1. GANs奇思妙想TOP10榜单

    本文经大数据文摘公众号授权转载. 还记得<射雕英雄传>中老顽童发明的"左右互搏术"吗? 表面上看,左手与右手互为敌手,斗得不可开交.实际上,老顽童却凭借此练就了一门绝世 ...

  2. 2017年你错过了哪些AI圈大事?最全盘点,值得收藏!

    大数据文摘作品 编译:彭湘伟.吕征达.小明同学.林海.Yawei Xia 假设你在2017年昏睡了一年,忽然惊醒的时候,想要了解这个世界在今年有哪些最值得骄傲的成就,这篇文章值得你花几十分钟读一读. ...

  3. 2017年异步社区优秀图书和作译者评选TOP10

    2017年异步社区优秀作译者和图书评选,已落下帷幕,共计3809名读者参与了投票,累计投票18395次,再次感谢每一位参与投票的读者们,在2017年的最后一个工作日,异步小编祝大家2018年元旦快乐, ...

  4. 一文详细介绍NeurIPS论文高引量的TOP10明星学者!!!

    NeurIPS2019即将于12月8日(本周日)在加拿大温哥华举办,NeurIPS是人工智能和机器学习领域的国际顶级会议,由NIPS基金会负责运营.该会议全称为神经信息处理系统大会(Conferenc ...

  5. 自学成才翁_作为一名自学成才的开发者从“我的旅程”中吸取的教训

    自学成才翁 The path of the self-taught developer is tough and filled with uncertainty. There is no straig ...

  6. 自学成才翁_如何发挥自学成才的内在游戏

    自学成才翁 by Victor Cassone 由Victor Cassone 如何发挥自学成才的内在游戏 (How to play the inner game of self-taught dev ...

  7. 9月Python开源项目Top10

    原文链接: 9月Python开源项目Top10 - TinyMind https://www.tinymind.cn/articles/3776 声明:转载的, 就是让自己记住,以后熟练了Python ...

  8. 【复盘】小朋友的奇思妙想

    Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复[Scratch],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载"可获取以往学习 ...

  9. 2019年度CSDN博客之星TOP10榜单揭晓,你上榜了吗?

    培根说,『读书造成充实的人,会议造成未能觉悟的人,写作造成正确的人』. 在短信短视频快速迭代的快时代,更深度的思考.更正确的实践,更成体系的写作与分享,尤显可贵.这里,每一篇博文都是开发者实战的经验解 ...

最新文章

  1. Windows驱动开发 - 内核模式下的字符串操作
  2. iOS中使用OpenGL 实现增高功能
  3. word或wps中mathtype在工具栏/菜单栏消失的解决方法
  4. ---------很简单的 一道 堆栈问题-------
  5. duilib入门问题集
  6. 语言 分组计算hr_干货 | HR不得不知的面试技巧
  7. MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...
  8. C#中的delegate和event (转)
  9. 终于能理解kmp算法了
  10. 圣诞节PPT模板制作技巧分析
  11. Amanda之安装、部署、测试以及优缺点
  12. 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件
  13. 基于Web的物流配送信息管理系统
  14. java springboot房地产信息管理系统
  15. 这是我见过最秀的代码 。。。
  16. linux系统下 usb网卡的驱动安装
  17. 第3章 从零开始的计算机系统
  18. Kubernetes学习
  19. 树莓派搭建股票量化分析服务器 基于tushare python
  20. 事业单位人事招聘考务管理系统+功能介绍+HRSaaS软件系统服务平台+系统5.0版升级上线

热门文章

  1. python调用c静态库,静态库(.lib)到Python项目
  2. Linux 创建yum源和软件仓库实例
  3. 交换三个整数的值,并输出
  4. java数组的协变_Java数组协变与范型不变性
  5. 华工计算机考研上机,08华工计算机应用复试全过程_跨考网
  6. OSChina 周日乱弹 —— 比996更先进的是365工作制
  7. Python 3.8 新特性全面解读
  8. JDeveloper开发环境设置
  9. HDU 1573~3579 X问题Hello Kiki[同余方程]
  10. php示例代码使用mysql_fetch_assoc函数