深度学习的下一个热点:生成对抗网络(gans)将改变世界
本文作者 nikolai yakovenko 毕业于哥伦比亚大学,目前是 google 的工程师,致力于构建人工智能系统,专注于语言处理、文本分类、解析与生成。 本文作者 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个中选出最合适的。这不正是deepdr mpf背后的运营团队所做的事情吗？ deepdr mpf:对于facebook和twitter而言,我一直是一个完全的灾难,而且现在比以往更加严重了 生成器和识别器,谁更聪明？ 一个问题自然而然地出现了-到底哪种网络能够真正理解所面临问题,是生成器还是识别器？或者说究竟谁更会写字,是写字的学生,还是教写字的老师？ 现实世界通常是老师更会写字,但在之前的例子中,我想应该是学生更会写字。因为一个用于识别产品评论的识别器只需知道一些常见的语法错误,就能投入使用。正如一个人像米开朗基罗一样画画,一个人仅仅是抬头看看西斯廷大教堂的天花板(上面有米开朗基罗的画),谁需要更多的技巧呢？ 正如我所理解的,手机图像软件prisma在有对抗方的框架下,训练生成网络,进行不同风格的创作。大多数风格正是通过这种方式生成了那些曲折的线条。我希望他们能增加训练gan的时间,这样gan不仅能认出照片中的阴影,并给其涂上不同的颜色,还可能以一个印象派艺术家的风格完成这些任务。当它偶尔可以正确地区分光线和阴影的时候,那么它就是令人惊叹的。 顺着这条思路想下去可以得出一个很自然的结论,生成式对抗方法,可以让人工智能有能力做实验和ab测试。一个人工智能模型给出了一个很好的解决方案,然后它搜集反馈来了解这个生成方案和标准答案是否相符,或与其他它正在学习或已经内化的人工智能模型比较,观察得出的结果是否相符。在这一过程中,你没必要去设计一个损失函数,因为虽然可能会花上一点时间,但这个人工智能模型终将找到自己的评判标准。 适可而止,见好就收 我写了这整篇文章,却还没有亲身尝试一下对抗式网络。本着模仿的心态,我期望其他人能够在gans上取得进步,最好是在文字生成领域取得突破。我预计很快就会有合适的技术,能够良好运行并得到令人信服的结果。我们这个领域正是这样,通过积累前人的经验而进步的。 与其去预测我没有参与过的事,我更应该花时间去优化我的"扑克牌卷积神经网络"(pokercnn)无限额德州扑克ai,为今年的年度计算机扑克大赛作准备。其代码将在2017年1月13日前完成。 在明年的比赛中我计划添加一些对抗式训练。不难想象对抗式训练能够帮助ai学习更好的扑克技巧。特别是当对手也是很强大的黑箱ai时,这个方法更为有用。 既然是科学为目的,并且我的扑克牌ai代码已经开源了(在你看到这里时,我应该已经清理了代码仓库,并且添加了一个的readme帮助文档,所以应该可以更容易着手),所以请随意拿去尝试吧。 链接:向后看,向先看 如果没有点出2016年深度学习领域中我最喜欢的几大进步,那我就太怠惰了。以下列出了几个我最爱的进步: 2016年深度学习的主要进步: gans, 非监督学习领域的进步, 超分辨率,以及其他种种突破 "我在神经信息处理大会上学到的50样东西" 作者andreas st hlmller 以上几条中我最喜欢的想法是:用不同的时期间隔来训练lstm记忆单元,这样可以迫使某些记忆单元记住长期信息,而其它的记忆单元可以更加关注短期记忆。这种方法更符合直觉,也避免了过多的超参数调优 大公司和有足够资金的创业公司是否都在贪婪地寻找优质的深度学习数据？也许有专利的数据库并不是所有人工智能的关键问题所在。并且维基百科也列出了一大堆免费的数据库,包括前文提到的亚马逊的商品评论。随着很多公司继续提供其拥有的大部分数据用于研究,以后将会涌现更多的数据。