假设你在2017年昏睡了一年,忽然惊醒的时候,想要了解这个世界在今年有哪些最值得骄傲的成就,这篇文章值得你花几十分钟读一读。
这一年,谷歌发布了Google Translate的新模型,并详细描述了网络结构——循环神经网络。Facebook的聊天机器人,因为失控创造了自己的语言被关闭。DeepMind 的研究员在他们的文章中展示了如何生成语音。一个已经成功超越人类的深度学习成就叫做唇语识别。
本文将带你浏览2017年几乎所有最有意义的AI研究,从文本、语音、计算机视觉到强化学习和最重要的新闻。
其中的大部分事件,文摘菌都在其发生之时做过相关报道,回忆起来,感慨万分,我们也在相应部分附上了报道链接,方便查看细节。
1. 文本
1.1谷歌神经机器翻译
大约一年前,谷歌发布了Google Translate的新模型,并详细描述了网络结构——循环神经网络。
链接:https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4
关键成果:与人类翻译的准确率之差缩小了55%-85% (研究者使用6分制打分标准评估得到)。如果不依赖谷歌庞大的数据库进行训练,这一结果很难复现。
1.2: 谈判
你可能听过这个谣言:Facebook的聊天机器人,因失控创造自己的语言而被关闭。
该聊天机器人原本被设计用来谈判,其目的是与其他机器人(代理)进行文本谈判并达成协议:如何在两个人之间分配物品(书籍和帽子等)。每一个机器人(代理)有对方不掌握的交易信息。同时,谈判的设定是不达成交易就不终止。
他们收集了一个人类谈判的数据库,并训练出了一个监督式的循环网络。随后,他们让强化训练后的机器人,通过自我对话的方式继续训练,直到与人类语言近似到一定程度为止。
该机器人已经学会了一种真正的谈判技巧——对交易中的某些因素假装表现出兴趣,随后仅仅通过牺牲它们来达成真正目的。
新闻里声称机器人发明了一种新语言,这种说法有点过于夸张。当用同一个机器人来训练的时候,它没有被限制必须用与人类语言,所以算法进行了一些变异,这很正常。
文章链接:https://blog.statsbot.co/machine-learning-translation-96f0ed8f19e4
在过去的一年里,循环网络得到了很大的改进,并被应用于诸多领域。RNN的结构也越来越复杂,但是在某些领域,简约前向网络(DSSM)都取得了相似的结果。例如,在邮件智能回复方面,谷歌取得了与LSTM之前一样的效果。另外,Yandex基于这套网络,发布了新的搜索引擎。
2. 语音
2.1:WaveNet,一种针对音源的生成模型
DeepMind 的研究员在他们的文章中展示了如何生成语音。简单的说,他们基于之前生成图像的方法,PixelRNN 和PixelCNN,创造了一个自回归全卷积的WaveNet模型。
该网络被以点到点的方式训练:文本作为输入,语音作为输出。最终研究人员取得了极好的结果。在语音生成方面,机器人与人类的差距缩小了50%。
该网络的主要缺陷在于效率低下。因为使用了自回归技术,音频是按顺序生成,并且每1-2分钟,才能生成一秒语音。
如果去掉对文字输入的依赖,仅仅基于前期产生的语音,该网络会产生出类似人类的语言。但这样并没有实际意义。
这一模型不仅仅可以用于语音生成,也可以用于音乐创作。设想,在不依赖输入数据的情况下,仅仅被钢琴游戏的数据库训练,该模型便可生成音频。
2.2:唇语识别
唇语识别是另外一个已经成功超越人类的深度学习成就。
《Lip ReadingSentences in the Wild》。Google Deepmind 在这篇于牛津大学合作发表的论文中,公布了他们给予电视数据训练的模型。该模型性能超越了BBC频道专业的唇语阅读员。
该数据集包括10万条配有音频和视频的语句。LSTM训练音频,CNN+LSTM训练视频。最后将两者的状态向量作为最终LSTM模型的输入,以产生文字输出。
训练中,使用不同的数据类型,包括音频,视频以及音频+视频。换句话说,这是个多渠道模型。
2.3:合成奥巴马——从音频中同步嘴唇动作
华盛顿大学进行了一项研究,以合成美国前总统奥巴马的嘴唇动作。选择他为对象的原因在于,在网络上有大量他的视频(17小时的高清视频)。
他们不能过多地直接使用网络模型输出的合成画面。因此,论文的作者使用了一些技巧来改善纹理的时间方面的问题。
效果如此令人震惊。也许不久的将来,即使是总统演讲视频都有可能是合成的。
3. 计算机视觉
3.1:OCR——谷歌地图和街景
谷歌大脑团队在他们公布的文章中,介绍了他们如何将新一代OCR(光学字符识别)引擎引入谷歌地图中,以实现街道标志和店铺标志的自动识别。
在开发过程中,谷歌解码了新的FSNS(法语街道名标示),有很多复杂的场景。
为了识别出每一个标志,网络模型最多使用了标志的四张图片。特征通过CNN提取后,经过空间变化(考虑像素坐标)再输入到LSTM模型中。
相似的方法被用于识别布告牌中店铺名称的的项目。但是该项目的图像数据有很多无关信息,网络模型必须对焦正确的信息进行读取。这一算法已经被应用于800亿张图片上。
3.2:视觉推理
另一种称做视觉推理的任务,是要让神经网络利用图片中信息来回答问题。例如:图片中有于黄色金属圆柱体一般大的橡胶物品么?这种问题对算法来讲很难,到目前为止,准确率只有68.5%。
DeepMind在这一领域取得了突破,在CLEVR数据集中,他们取得了95.5% 的超高准确率。
这一网络模型的结构很有意思:
- 通过预训练好的LSTM模型,从文字问题中抽象出问题。
- 使用4层的CNN模型,从图片中得到特征图(下图中的黄色,蓝色,和红色部分),再加入坐标,将其与文字对应起来。
- 之后,再用另一个网络模型处理并集成这三类特征。
- 最终,通过一个前反馈网络中的柔性最大激活函数(softmax),将答案呈现出来。
3.3:Pix2Code——用户图形界面代码自动生成
Uizard(一家哥本哈根创业公司)开发了一款趣味十足的基于神经网络的应用程序:它能够根据界面设计师的截屏图片生成GUI(图形用户界面)的布局代码。
这是一款十分实用的神经网络应用程序,它能够让软件开发变得更加容易。开发者(作者)声称该应用可以达到77%的准确率。不过,这款应用程序仍处在研究阶段,尚未投入实际使用。
现在暂无项目的开源代码和数据集,但是该公司承诺未来会在网上发布。
3.4:SketchRNN——教会机器如何作画
也许你已经见识过了谷歌的“Quick,Draw!”,一款让用户在20秒内画出不同物体草图的小程序。谷歌公司收集该程序的数据集来教会神经网络如何作画,正如他们在博客和文章中介绍的那样。
公司收集到的数据集中包含70000张草图,这个数据集现已公开。草图不是以图片的形式表示的,而是以图中线条的详细的向量形式表示。
研究人员使用RNN训练出序列到序列的变分自动编码器来作为编码/解码机制。
最后,为了适应自动编码器,模型接收描述原始图片特征的特征向量(隐向量)作为输入。
而解码器可以从输入的向量中提取出一个图,并且可以通过改变输入向量获得新的草图。
甚至可以通过向量运算创造出“catpig”(猫猪)的形象。
3.5:生成对抗网络(GANS)
生成对抗网络(GANS)是深度学习中最受关注的主题之一。多数情况下,这个网络是用来处理图像的。
文章链接:https://blog.statsbot.co/generative-adversarial-networks-gans-engine-and-applications-f96291965b47
GANS的思想是两个网络——生成器和鉴别器——的竞争。第一个网络生成一张图片,第二个网络则是试图分辨出该图片是真正的图片还是生成的图片。
GANS的示意图如下所示:
在训练过程中,生成器首先通过一个随机向量(噪音)生成图像,然后把它输入能够判别图像真假的鉴别器中。来自真实世界的图像同样会被输入到鉴别器中。
这样的结构难以训练,因为很难找到两个网络之间的平衡点。多数情况鉴别器获胜然后训练过程陷入停滞。不过,该系统的优点是可以解决鉴别器的损失函数(比如,提高照片的质量)难以设置的问题。
经典的GAN训练结果样例是卧室图片以及人脸图片:
先前我们讨论了自动编码(Sketch-RNN),即将原始数据编码成一个潜在的表示形式。生成器的工作原理也是一样的。
使用向量生成图像的想法在这个项目中的人脸生成样例中有很好的体现。你可以通过改变向量来观察人脸是如何改变的。
同样的算法也适用于潜空间:
“戴眼镜的男人”-“男人”+“女人”= “戴眼镜的女人”
3.6:通过GANS改变脸部年龄
如果在训练过程中,你赋予潜向量一个被控参数,那么当你生成该向量时,你就可以通过改变它来管理图片中必需的图像了。这种方法称为条件GAN(conditional GAN)。
“Face Aging With Conditional Generative Adversarial Networks.” 的作者们就是这样做的。通过IMDB数据集中年龄已知的演员的照片来训练模型,研究人员们就有机会来改变他们的脸部年龄。
3.7:专业照片
谷歌又找到了一个GAN的趣味应用——筛选并改善照片。GAN由专业图片数据集训练而来:生成器要改善不尽人意的照片),而鉴别器要做到区分“改善后的”照片和真实的专业照片。
训练好的算法通过谷歌街景全景寻找最佳的构图,同时获得一些专业的、半专业质量的图片。(根据摄像师的等级)
3.8:通过文本描述生成图像
一个令人印象深刻的GANs的例子是通过文本生成图像。
这项研究的作者提出不仅要将文本嵌入生成器(条件GAN)的输入中,还要嵌入到鉴别器中,以便验证文本和图片的相关性。为了确保鉴别器能够学习并执行预期的功能,除了正常的训练过程,他们还添加了错误描述真实图片的文本及相应图片,并一起投入训练。
3.9:Pix2pix
2016年度引人注目的文章之一是BAIR的“Image-to-Image Translation with Conditional AdversarialNetworks” 。研究人员解决了由图像生成图像的问题,比如当需要由卫星图像生成地图或者通过草图绘制物体的真实纹理。
这是条件GAN的又一个出色表现的例子。在这个例子中,条件由整个图片决定。图像分割中的热门技术UNet被用来作为生成器的结构,新提出的PatchGAN分类器被用来作为鉴别器以防图像难以区分。(图片被分割为N小块,每一块的真假分别预测)
Christopher Hesse做了一个猫的演示,这个演示引起了用户对Pix2pix的极大兴趣。
3.10:CycleGAN
为了应用Pix2pix,你需要来自不同领域的对应成对的图片数据集。比如,在这种情况下,通过纸牌来生成这样的数据集并不是件难事儿。然而,如果你想做些更复杂的,像“改变”图片中的物体或图片风格,从原则上来讲这样的数据集无法获取。
因此,Pix2pix的作者们继续深入思考并提出了CycleGAN来实现不同领域图片之间的转换而不需要明确的匹配——“Unpaired Image-to-Image Translation.”
CycleGAN的思路是训练两对生成器-鉴别器来把图像从一个领域转变到另一个领域再转变回来,这样的话需要保证周期一致性——在一系列的转变之后,要得到与原始L1损失相近的图像。周期损失则是保证生成器转变后的图片不会与原始图片完全不相关。
这个方法能让你把马变成斑马:
这样的转变并不稳定,经常会出现失败案例:
3.11:肿瘤分子的发展
机器学习同样在医药领域大展身手。除了超声波图像、核磁共振图像和诊断识别外,机器学习还可以用于寻找新的抗癌药物。
我们曾经报道过该研究的详细内容。简单来说就是在对抗自编码器(AEE)的帮助下,可以得到分子的潜在表示并用以寻找新的分子。基于此,已有69种新分子被发现,约有35种已经投入到对抗癌症的使用中,其余的分子也拥有巨大潜力。
3.12:对抗性攻击
很多学者都对对抗性攻击这个主题展开了积极探索。什么是对抗性攻击?举个例子,在ImageNet上训练得到的标准网络在受到特殊噪声影响的图片上进行分类会变得十分不稳定。在下面的例子中可以看到,人眼观察到经过噪声影响的图像与原始图像相比基本没有变化,但是模型却出现预测错误的问题。
模型的稳定通过FGSM算法已经实现:通过调节模型的参数,可以朝着期望类别的方向改变一个或多个梯度步长,并且改变原始图片。
Kaggle上的一个项目就与此相关:参赛者需要创造万能的攻击/防御图片,最终决出谁是最好的。
为什么还应该研究攻击呢?第一,如果我们想要保护自己的产品,可以在验证码上添加噪声来阻止垃圾信息传播者自动识别它们。第二,算法逐渐融入到我们的生活中——人脸识别和自动驾驶。这时候,攻击者就可以利用算法的弱点了。
下面是一个特殊眼镜欺骗人脸识别系统并“冒充他人”的例子。因此,在训练模型的时候我们应该把可能遭受的攻击纳入考虑范围内。
这样处理后的指示牌也是无法正确识别的。
4. 强化学习
强化学习是机器学习中最有意思且最有活力的发展路径之一。
这种路径的核心在于学习agent的成功行为,而这基于一个通过经验给予奖励的环境,就和人类通过他们的生活学习一样。
强化学习被积极应用于游戏、机器人和系统控制中(比如交通系统)
当然很多人都已经听说“阿法狗”在比赛中战胜了顶级的职业选手。研究人员使用“加强学习”训练机器人,机器人通过自己的演练,来提升自己的策略。
4.1:强化训练与不受控制的辅助任务
在过去的几年里,DeepMind已经学会了使用深度强化学习来玩游戏,甚至比人类玩得更好。目前,算法已经学会玩更复杂的游戏,比如Doom。
大部分的注意力集中于加速学习,因为在与环境的交互作用下,agent的经验需要在modern GPUs上进行大量训练。
在他的博客中,Deepmind报告说,引入额外的损耗(辅助任务),比如预测帧的变化(像素控制),使agent更好地理解行为的结果,从而显著加快学习速度。
在OpenAI中,他们通过虚拟环境中的人已经积极研究出了agent的培养方式,与现实生活相比较而言,这对于实验来说更安全。
在其中一项研究中,研究小组展示了one-shot learning的可能性:一个人在虚拟现实中展示如何执行一项特定的任务,而一个演示足以让算法学会它,然后在实际情况下进行复制。
4.2:学习人类的偏好
OpenAI和DeepMind都在这个问题上进行了研究探索。项目的底线是每一个agent有一个任务,该算法为人提供两种可能的解决方案,并指出哪一个更好。这个过程迭代重复,并且从人学习如何解决这个问题的过程中得到900位反馈(二进制标记)。
在训练过程中,有一个问题需要认真思考 - 我们正在教给机器什么。例如,计算机决定该算法真的想要获取这个对象,但实际上,他只是模拟了这个动作。
4.3:在复杂环境中的运动
还有另一项来自DeepMind的研究。教机器人复杂的行为(行走、跳跃等),甚至做得和人类很相似。你必须大量地参与到损耗功能的选择中,这将鼓励期望的行为。然而,如果算法自己能通过简单的奖励来学习复杂行为,就更好了。
研究人员成功地做到了这一点:他们通过构建一个带有障碍物的复杂环境以及用简单的奖励来教agent(身体模拟器)完成复杂的动作,促进运动的进展。
通过视频你可以看到机器人已经做得很好了。
5. 其它
5.1:冷却数据中心
在2017年7月,谷歌宣称他们利用Deep Mind在机器学习开发中的优势成果,来减少其数据中心的能源损耗。
基于来自数据中心的上千个传感器所传递的信息,谷歌的开发人员编写了一个模型来预测PUE(能源使用效率)以及更高效的数据中心管理模式。该项目意义深远。
5.2:全能模型
训练模型在任务与任务间的转换很差,每一个任务都需要特定的模型加以对应,在一篇题为“万能模型”的文章中提到,谷歌大脑的模型在适用的普遍性上已小有成就。
论文链接:https://arxiv.org/abs/1706.05137
研究人员已经编写了一个可以在不同领域(文本、语音和图像)执行8个任务的模型。例如,翻译不同的语言,文本解析,图像和声音识别。
为了实现这一点他们搭建了一个复杂的网络架构,并利用不同的模块处理输入的数据和生成的结果。编码与解码的模块主要有三种类型:卷积、attention、混合专家系统。
主要成果:获得了近乎完美的模型(作者没有对超参数进行微调)。
不同领域间的知识转换,也就是说,在拥有充分数据的项目预测中,模型表现很稳定。
不同任务所需要的模块之间不仅不会相互干扰而且还会彼此增益,比如MoE用于 Imagenet 任务。
顺便说一下,这个模型存出现于T2T之中……
5.3:一小时学习Imagenet
在他们的帖子里,Facebook的工作人员告诉我们,他们的工程师们仅用一个小时内就能在Imagenet上教授resnet - 50模型。这需要256个gpu(特斯拉P100)的集群。
他们使用Gloo和caffe2来进行分布式学习。为了使过程有效,必须要大量的整学习策略 (8192个元素):梯度平均、预热阶段、特殊学习速率等。
因此,当从8扩展到256 GPU时,可以达到90%的效率。现在,来自Facebook的研究人员可以更快进行实验。
6. 新闻
6.1:自动驾驶汽车
自动驾驶汽车领域正在快速发展,也进入了积极的测试阶段。最近行业内的大事件主要有Intel MobilEye的收购,Uber和谷歌前雇员盗取技术的丑闻,使用自动驾驶仪造成的第一起死亡事故。
谷歌Waymo正在推出一个beta程序。谷歌是该领域的先驱,技术广受认可,他们的汽车已经累计行驶了超过300万英里。
最近美国各州已经允许自动驾驶汽车运行上路了
6.2:医疗保健
机械学习正在被引入医学。例如,谷歌与医疗中心合作帮助病患诊断。
Deepmind甚至建立了一个独立的业务单元。
今年,在“Data Science Bowl”的项目下,举办了一项奖金为100万美元竞赛,竞赛内容是以高清图像为基础,对肺癌一年内的发病率进行预测。
6.3:投资
就像之前大量资本进入大数据产业一样,机器学习也在投资界受到热捧。
中国在人工智能领域投资1500亿美元,成为该领域的先驱。
我们看一组对比数据。百度研究院雇佣了1300人,在同领域脸书只雇了80个。
学习“机器学习”永远不会算太晚。无论如何,随着时间的推移,所有开发人员都将使用机器学习,这将成为一项通用技能,就像今天大家都会使用数据库一样。
原文链接:https://blog.statsbot.co/deep-learning-achievements-4c563e034257