本文作者 Nikolai Yakovenko 毕业于哥伦比亚大学,目前是 Google 的工程师,致力于构建人工智能系统,专注于语言处理、文本分类、解析与生成。

生成式对抗网络—简称GANs—将成为深度学习的下一个热点,它将改变我们认知世界的方式。

准确来讲,对抗式训练为指导人工智能完成复杂任务提供了一个全新的思路,某种意义上他们(人工智能)将学习如何成为一个专家。

举个对抗式训练的例子,当你试图通过模仿别人完成某项工作时,如果专家都无法分辨这项工作是你完成的还是你的模仿对象完成的,说明你已经完全掌握了该工作的所需的技巧。对于像写论文这样复杂的工作,这个例子可能不适用,毕竟每个人的最终成果多少有些不同,但对于中等难度的任务,比如造句或写一段话,对抗式训练大有用武之地,事实上它现在已经是计算机生成真实图像的关键所在了。

GANs解决问题的方式是用不同的目标分别训练两种不同的网络。

  • 一种网络创造答案(生成方)
  • 另一种网络分辨前者创造的答案与真实答案的区别(对抗方)

GANs的诀窍是这样的:训练两种网络进行竞争,一段时间后,两种网络都无法在对抗中取得进步,或者生成方变得非常厉害以至于即使给定足够的线索和时间,其对抗网络也无法分辨它给的答案是真实的还是合成的。

这其中有很多有趣的细节,但我们暂时先忽略这些细节。GANs 可以在给定绘制图像类别和随机种子(random seed)的条件下,自主完成图像的绘制:
“给我画一只啄木鸟,并且它不能是我之前给你看过的那些啄木鸟。”

StackGAN绘制的合成鸟

在数学方面, 谷歌研究中心的科学家们用GANs创造了一种编码协议。GANs的生成方 Alice向Bob传递通过卷积神经网络编码的信息以及密钥。Eve则扮演对抗方,即可以拿到编码的信息,但没有密钥。Eve训练网络来分辨信息中的噪音和有价值的部分,然而对抗方失败了,无法将上述两个部分区分开来。

在这一网络结构兴起的早期,以及现在,我还从未听说哪个基于GAN的公开demo(演示程序)可以在完成某句话这一任务上媲美前馈LSTM。虽然前馈LSTM(比如Karpathy特征循环神经网络)仅仅是一个基准(baseline),但可以想象迟早有一天,有人会创造出一个可以根据亚马逊购物网站的商品打分来撰写评论的GAN 来。

人类通过直接反馈来学习

对我来说,相比强化学习(RL)而言,对抗式学习更接近人类的学习方式。也许因为我是一个喜欢自己找自己麻烦的人吧。

RL通过最大化(平均)最终奖励来达到训练目的。当前的状态也许与奖励无关,但最终的结局一定会由“奖励函数”给出。我已经做过RL领域的一些工作,并且它也极大地促进了我们研究领域的发展,但是除非你是在玩游戏,否则很难写出一个奖励函数来精确衡量来自周边环境的反馈。

二十世纪90年代,强化学习在十五子棋游戏中取得巨大突破,它是DeepMind创造的AlphaGo的一个重要组成部分,DeepMind团队甚至用RL来节省谷歌的数据中心的冷却费用。

可以想象RL能在谷歌数据中心这一环境中,算得到一个最优结果,因为奖励函数(在防止温度高于限定值的条件下尽可能省钱)可以很好地定义。这是真实世界可以像游戏一样被参数化的例子,这样的例子通常只能在好莱坞电影中见到。

对于那些更实际的问题,奖励函数是什么呢?即使是类似游戏中的任务如驾驶,其目标既不是尽快达到目的地,也并非始终待在道路边界线内。我们可以很容易地找到一个负奖励(比如撞坏车辆,使乘客受伤,不合理地加速)但却很难找到一个可以规范驾驶行为的正奖励。

边观察,边学习

我们是如何学习写字的?除非你念的是要求很严格的小学,否则学习写字的过程很难说是最大化某个与书写字母有关的函数。最可能的情况是你模仿老师在黑板上的书写笔顺,然后内化这一过程 。

你的生成网络书写字母,而你的识别网络(对抗方)观察你的字体和教科书中理想字体的区别。

针对三年级学生的对抗式训练

属于你的最严厉的批评家

五年前,我在哥伦比亚大学举行的一场橄榄球比赛中伤到了自己的头部,导致我右半身腰部以上瘫痪。受伤两周后我出了重症监护病房,开始教自己学习如何写字。那时我住在布鲁克林的公寓里。

再次学习如何写字, 五月

我的左脑受到了严重的创伤,因此我失去了控制我右胳膊的能力。然而,我大脑的其余部分完好无损,因此我仍能够识别正确的书写方式。换句话说,我的文字生成网络坏了,而识别网络功能正常。

说句玩笑话,我很有可能因为这一过程学会一种新的(或更好的)书写方式。然而结果是虽然我很快地教会了我自己如何书写,但书写笔迹和我受伤前的没什么两样

我不知道我们的大脑是如何使用“行为人-批评家”的模式来学习的,我也不知道这种说法是事实还是仅仅是一个生动的比喻,但是可以确定的是在有一个专家即时反馈的条件下,我们可以更有效率地学习新东西。

当学习编程或攀岩时,如果你一直接收某个专家的“beta(反馈建议)”,则可以进步得更快。在你获得足够的经验能够自我反馈批评之前,有一个外部的批评家来纠正你每一小步的错误可以更容易训练你大脑的生成网络。即使有一个内部批评家在监督你,学习一个有效的生成网络仍然需要认真的练习。我们总不能把我们大脑的生成器换成亚马逊推出的GPU实例吧。

摆脱纠结,勇往直前?

实际中,GANs 被用于解决这样一些问题:为生成器生成的图片添加一些真实的效果如锐化边缘。尽管在这样的图片中,不一定每个动物都只有一个脑袋。

让生成网络与合适的对抗方竞争能迫使其做出取舍。正如我的一位同事所说,你面临一个选择,既可以画一只绿色的鹦鹉,也可以画一只蓝色的鹦鹉,但是你画的必须是其中之一。一个没有对抗方的监督网络接受了真实鹦鹉的识别训练,会倾向于画出某种掺杂蓝色或绿色的平均色,导致其线条模糊不清。而一个对抗式网络则可以画出蓝色或绿色的鹦鹉,也可以在利用鹦鹉的{蓝,绿}概率分布随机地选择一种颜色。但它绝不会画出某种自然鹦鹉不存在的中间色,当然这种颜色也可能存在于已经灭绝的鹦鹉上。

我的同事最近理清了关于GANs的思路,其中包括对GANs的收敛性和可推广性的悲观态度。

某种程度上,这是由于这种跷跷板式的训练方法——一会儿训练生成方,一会儿训练识别方,如此反复——并不能保证收敛于一个稳定解,更别提一个最优解了。如下图Alex J Champandard的一则Twitter 所示:

图在twitter上是一个GIF图片,通常情况生成方和对抗方在玩一个极限博弈游戏,但只要再走一步,其将陷入震荡

但是让我们忽略这些细节,做一些美好的想象吧。若LSTM模型能写出调理清楚的产品评论、图片标题、或者在唐纳德竞选总统时代替他在twitter上发声(反正竞选前夜他会保持沉默),那稍微聪明一点的识别器应该都能提高这些任务的表现吧。

假设LSTM是随机生成这些结果的,我们可以利用既有的生成器生成相应的结果,再让识别器从生成结果中最好的20个中选出最合适的。这不正是DeepDrumpf背后的运营团队所做的事情吗?

DeepDrumpf:对于facebook和twitter而言,我一直是一个完全的灾难,而且现在比以往更加严重了

生成器和识别器,谁更聪明?

一个问题自然而然地出现了——到底哪种网络能够真正理解所面临问题,是生成器还是识别器?或者说究竟谁更会写字,是写字的学生,还是教写字的老师?

现实世界通常是老师更会写字,但在之前的例子中,我想应该是学生更会写字。因为一个用于识别产品评论的识别器只需知道一些常见的语法错误,就能投入使用。正如一个人像米开朗基罗一样画画,一个人仅仅是抬头看看西斯廷大教堂的天花板(上面有米开朗基罗的画),谁需要更多的技巧呢?

正如我所理解的,手机图像软件Prisma在有对抗方的框架下,训练生成网络,进行不同风格的创作。大多数风格正是通过这种方式生成了那些曲折的线条。我希望他们能增加训练GAN的时间,这样GAN不仅能认出照片中的阴影,并给其涂上不同的颜色,还可能以一个印象派艺术家的风格完成这些任务。当它偶尔可以正确地区分光线和阴影的时候,那么它就是令人惊叹的。

顺着这条思路想下去可以得出一个很自然的结论,生成式对抗方法,可以让人工智能有能力做实验和A/B测试。一个人工智能模型给出了一个很好的解决方案,然后它搜集反馈来了解这个生成方案和标准答案是否相符,或与其他它正在学习或已经内化的人工智能模型比较,观察得出的结果是否相符。在这一过程中,你没必要去设计一个损失函数,因为虽然可能会花上一点时间,但这个人工智能模型终将找到自己的评判标准。

适可而止,见好就收

我写了这整篇文章,却还没有亲身尝试一下对抗式网络。本着模仿的心态,我期望其他人能够在GANs上取得进步,最好是在文字生成领域取得突破。我预计很快就会有合适的技术,能够良好运行并得到令人信服的结果。我们这个领域正是这样,通过积累前人的经验而进步的。

与其去预测我没有参与过的事,我更应该花时间去优化我的“扑克牌卷积神经网络”(PokerCNN)无限额德州扑克AI,为今年的年度计算机扑克大赛作准备。其代码将在2017年1月13日前完成。

在明年的比赛中我计划添加一些对抗式训练。不难想象对抗式训练能够帮助AI学习更好的扑克技巧。特别是当对手也是很强大的黑箱AI时,这个方法更为有用。

既然是科学为目的,并且我的扑克牌AI代码已经开源了(在你看到这里时,我应该已经清理了代码仓库,并且添加了一个的readme帮助文档,所以应该可以更容易着手),所以请随意拿去尝试吧。

链接:向后看,向先看

如果没有点出2016年深度学习领域中我最喜欢的几大进步,那我就太怠惰了。以下列出了几个我最爱的进步:

  • 2016年深度学习的主要进步: GANs, 非监督学习领域的进步, 超分辨率,以及其他种种突破
  • “我在神经信息处理大会上学到的50样东西” 作者Andreas Stuhlmller
  • 以上几条中我最喜欢的想法是:用不同的时期间隔来训练LSTM记忆单元,这样可以迫使某些记忆单元记住长期信息,而其它的记忆单元可以更加关注短期记忆。这种方法更符合直觉,也避免了过多的超参数调优
  • 大公司和有足够资金的创业公司是否都在贪婪地寻找优质的深度学习数据?也许有专利的数据库并不是所有人工智能的关键问题所在。并且维基百科也列出了一大堆免费的数据库,包括前文提到的亚马逊的商品评论。随着很多公司继续提供其拥有的大部分数据用于研究,以后将会涌现更多的数据。

原文:GANs will change the world
作者:尼古拉 亚科文科(Nikolai Yakovenko
编译: AI100
责编:何永灿,欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至heyc@csdn.net


【CSDN_AI】热衷分享 扫码关注获得更多业内领先案例

深度学习的下一个热点:生成对抗网络(GANs)将改变世界相关推荐

  1. Nikolai Yakovenko大佬:深度学习的下一个热点:生成对抗网络(GANs)将改变世界

    生成式对抗网络-简称GANs-将成为深度学习的下一个热点,它将改变我们认知世界的方式. 准确来讲,对抗式训练为指导人工智能完成复杂任务提供了一个全新的思路,某种意义上他们(人工智能)将学习如何成为一个 ...

  2. 深度学习的下一个热点——GANs将改变世界

    本文作者 Nikolai Yakovenko 毕业于哥伦比亚大学,目前是 Google 的工程师,致力于构建人工智能系统,专注于语言处理.文本分类.解析与生成. 生成式对抗网络-简称GANs-将成为深 ...

  3. Keras深度学习实战(22)——生成对抗网络详解与实现

    Keras深度学习实战(22)--生成对抗网络详解与实现 0. 前言 1. 生成对抗网络原理 2. 模型分析 3. 利用生成对抗网络生成手写数字图像 小结 系列链接 0. 前言 生成对抗网络 (Gen ...

  4. 深度学习从入门到精通——生成对抗网络原理

    生成对抗网络 GANs本质上在做的事情 要求 产生问题 JS Div距离偏差问题 训练速度问题 JS Div距离偏差问题 FGAN---深度理解GAN理论 观点 推导 JS Div不是最佳的Div L ...

  5. 大数据时代下的迁移学习_继深度学习后,下一个热点技术是迁移学习

    最早提出大数据时代到来的是知名咨询公司麦肯锡,麦肯锡称:"数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素.人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪 ...

  6. 深度学习 | GAN,什么是生成对抗网络

    文章目录 GAN学习笔记 前言 1. GAN原理 2. GAN实例 3. DCGAN原理 4. DCGAN实例 5. WGAN原理 GAN学习笔记 前言 2014年,arXiv上面刊载了一篇关于生成对 ...

  7. 【深度学习实战】从零开始深度学习(五):生成对抗网络——深度学习中的非监督学习问题

    参考资料: <PyTorch深度学习>(人民邮电出版社)第7章 生成网络 PyTorch官方文档 廖星宇著<深度学习入门之Pytorch>第6章 生成对抗网络 其他参考的网络资 ...

  8. 深度学习故障诊断之-使用条件生成对抗网络CGAN生成泵流量信号

    开始填坑 MATLAB统计机器学习,深度学习,计算机视觉 - 哥廷根数学学派的文章 - 知乎 MATLAB统计机器学习,深度学习,计算机视觉 - 知乎 之前写过在使用深度学习对机械系统或电气系统进行故 ...

  9. 一文读懂生成对抗网络GANs(附学习资源)

    原文标题:AnIntuitive Introduction to Generative Adversarial Networks 作者:KeshavDhandhania.ArashDelijani 翻 ...

最新文章

  1. ARM 之十 ARMCC(Keil) map 文件(映射文件)详解
  2. swift5表情键盘项目封装
  3. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...
  4. Cloud一分钟 | 一脚踏入云计算2.0时代,京东云这回拼的是“朋友 圈”;8400万元私有云招标...
  5. textarea限制每行可输入固定个数的字符
  6. python读取图像并相加_python给图像加上mask,并提取mask区域实例
  7. 为了面试阿里大数据岗位,我花了半年总结了这些干货内容
  8. 使用u盘+iso装纯净系统的基本步骤。
  9. android下最强的3款pdf阅读器测评
  10. 大数据项目实战——基于某招聘网站进行数据采集及数据分析(一)
  11. 让XP系统支持GPT硬盘
  12. java printout_word中printout函数的相关参数介绍 | 学步园
  13. 培训课程通知邮件模板
  14. CC2530 zigbee IAR8.10.1环境搭建
  15. easyswoole not controller class match
  16. 服务器装qq传文件好吗,QQ发送的离线文件,能够在QQ服务器上永远保存下去,直到对方接收。()...
  17. iOS 更改webView文字颜色丶文字大小丶背景色的方法
  18. Types of Data
  19. ubuntu18.04安装CUDA
  20. undefsafe原型链[网鼎杯 2020 青龙组]notes

热门文章

  1. golang和python的区别_golang和python的区别
  2. 变化xshell命令提示符颜色——给你的黑白世界增添光彩
  3. 没有自己的Linux服务器,一样学Linux(提供几个在线Linux服务器)
  4. 互联网体育大爆发,中国巨头顺势而为
  5. 安装vue/cli后查看版本显示找不到vue指令
  6. 好用的手机高效日程管理软件,拯救拖延症
  7. C语言程序-循环结构(2)
  8. uniapp基础知识—大总结
  9. javaweb JSP JAVA 关爱儿童公益募捐系统爱心网站jsp儿童献爱心系统源码(公益募捐网站)
  10. 闪电网络RSMC协议技术原理----从微支付通道到RSMC(序列到期可撤销合约)