编者按:人工智能正在日益渗透到所有的技术领域。而机器学习(ML)是目前最活跃的分支。最近几年,ML 取得了许多重要进展。其中一些因为事件跟大众关系密切而引人瞩目,而有的虽然低调但意义重大。Statsbot 一直在持续评估深度学习的各项成就。值此年终之际,他们的团队决定对过去一年深度学习所取得的成就进行盘点。本文由数据科学家 Ed Tyantov 汇编,36Kr 编译,从中你可以了解到影响我们未来的最重要进展。
1. 文字
1. 1. Google 自然机器翻译
将近 1 年前,Google 发布了新一代的 Google Translate。这家公司还介绍了其网络架构递归神经网络(RNN)的细节情况。
其关键成果是:将跟人类翻译准确率的差距缩小了 55%—85%(由人按照 6 个等级进行评估)。如果没有像 Google 手里的那么大规模的数据集的话,是很难用这一模型再生出好结果的。
original="https://pic.36krcnd.com/avatar/201712/28031607/lxdk8szczetqm9nl.jpg!heading" data-image-enhancer="larger than 578" />
1. 2. 谈判。能否成交?
你大概已经听说过 Facebook 把它的聊天机器人关闭这则愚蠢的新闻了,因为那机器人失去了控制并且发明了自己的语言。Facebook 做这个聊天机器人的目的是为了协商谈判,跟另一个代理进行文字上的谈判,以期达成交易:比如怎么分摊物品(书、帽等)。每一个代理在谈判时都有自己的目标,但是对方并不知道自己的目标。不能达成交易就不能推出谈判。
出于训练的目的,他们收集了人类谈判协商的数据集然后做一个有监督的递归涡轮里面对它进行训练。接着,他们用强化学习训练代理,让它自己跟自己讲话,条件限制是语言跟人类类似。
机器人学会了一条真正的谈判策略——假装对交易的某个方面展现出兴趣,然后随后放弃这方面的诉求从而让自己的真正目标受益。这是创建此类交互式机器人的第一次尝试,结果还是相当成功的。
完整故事可参见这篇文章,代码在这里。
当然,说这个机器人发明了自己的语言完全就是牵强附会了。在训练(跟同一个代理进行协商谈判)的时候,他们取消了对文字与人类相似性的限制,然后算法就修改了交互的语言。没什么特别。
过去几年,递归网络的发展一直都很活跃,并且应用到了很多的任务和应用中。RNN 的架构已经变得复杂许多,但在一些领域,简单的前向网络——DSSM 也能取得类似的结果。比方说,此前 Google 用 LSTM 在邮件功能 Smart Reply 上也已经达到了相同的质量。此外,Yandex 还基于此类网络推出了一个新的搜索引擎。
2. 语音
2. 1. WaveNet:裸音频的生成式模型
DeepMind 的员工在文章中介绍了音频的生成。简单来说,研究人员在之前图像生成(PixelRNN 和 PixelCNN)的基础上做出了一个自回归的完全卷积 WaveNet 模型。
该网络经过了端到端的训练:文本作为输入,音频做出输出。研究取得了出色的结果,因为跟人类的差异减少了 50%。
这种网络的主要劣势是生产力低,由于自回归的关系,声音是串行生产的,所以一秒钟的音频要 1 到 2 分钟才能生成。
我们来看看……哦对不起,是听听这个例子。
如果你撤销网络对输入文字的依赖,只留下对之前生成音素的依赖,则网络就能生成类似人类语言的音素,但这样的音频是没有意义的。
听听这个生成语音的例子。
同一个模型不仅可以应用到语音上,而且也可以应用在创作音乐等事情上。想象一下用这个模型(用某个钢琴游戏的数据集训练,也是没有依赖输入数据的)生成音频。
DeepMind 研究成果的完全版在这里。
2. 2. 理解唇语
唇语理解是另一个深度学习超越人类的成就和胜利。
Google Deepmind 跟牛津大学合作在《唇语自然理解》这篇文章中介绍了他们的模型(通过电视数据集训练)是如何超越职业唇语解读师的。
这个数据集总共有包含 100000 个句子的音视频。模型:音频用 LSTM,视频用 CNN+LSTM。这两个状态向量提供给最后的 LSTM,然后再生成结果(字符)。
训练过程中用到了不同类型的输入数据:音频、视频以及音视频。换句话说,这是一种“多渠道”模型。
2. 3. 合成奥巴马:从音频中合成嘴唇动作
华盛顿大学干了一件严肃的工作,他们生成了奥巴马总统的唇语动作。之所以要选择他是因为他讲话的网上视频很多(17 小时的高清视频)。
光靠网络他们是没有办法取得进展的,因为人工的东西太多。因此,文章作者构思了一些支撑物(或者花招,你要是喜欢这么说的话)来改进纹理和时间控制。
你可以看到,结果是很惊艳的。很快,你就没法相信这位总统的视频了。
3. 计算机视觉
3. 1. OCR:Google Maps 和 Street View(街景)
Google Brain Team 在博客和文章中报告了他们是如何引入一种新的 OCR(光学字符识别)引擎给 Maps,然后用来识别街道名牌和商店标志。
在技术开发的过程中,该公司编译了一种新的 FSNS(法国街道名牌),里面包含有很多复杂的情况。
为了识别每一块名牌,该网络利用了名牌多至 4 张的照片。特征由 CNN 来析取,在空间注意(考虑了像素坐标)的帮助下进行扩充,然后再把结果送给 LSTM。
同样的方法被应用到识别广告牌上的商店名上面(里面会有大量的“噪声”数据,网络本身必须“关注”合适的位置)。这一算法应用到了 800 亿张图片上。
3. 2. 视觉推理
有一种任务类型叫做视觉推理,神经网络被要求根据一张照片来回答问题。比方说:“图中橡皮材料的物品跟黄色金属圆柱体的数量是不是一样的?”这个问题可不是小问题,直到最近,解决的准确率也只有 68.5%。
不过 Deepind 团队再次取得了突破:在 CLEVR 数据集上他们达到了 95.5% 的准确率,甚至超过了人类。
这个网络的架构非常有趣:
把预训练好的 LSTM 用到文本问题上,我们就得到了问题的嵌入。
利用 CNN(只有 4 层)到图片上,就得到了特征地图(归纳图片特点的特征)
接下来,我们对特征地图的左边片段进行两两配对(下图的黄色、蓝色、红色),给每一个增加坐标与文本嵌入。
我们通过另一个网络来跑所有这些三元组然后汇总起来。
结果呈现再到一个前向反馈网络里面跑,然后提供 softmax 答案。
3. 3. Pix2Code 应用
Uizard 公司创建了一个有趣的神经网络应用:根据界面设计器的截屏生成布局代码:
这是极其有用的一种神经网络应用,可以帮助软件开发变得容易一些。作者声称他们取得了 77% 的准确率。然而,这仍然在研究中,还没有讨论过真正的使用情况。
他们还没有开源代码或者数据集,但是承诺会上传。
3. 4. SketchRNN:教机器画画
你大概已经看过 Google 的 Quick, Draw!了,其目标是在 20 秒之内画出各种对象的草图。这家公司收集了这个数据集以便来教神经网络画画,就像 Google 在他们的博客和文章中所说那样。
这份数据集包含了 7 万张素描,Google 现在已经开放给公众了。素描不是图片,而是画画详细的向量表示(用户按下“铅笔”画画,画完时释放所记录的东西)。
研究人员已经把 RNN 作为编码/解码机制来训练该序列到序列的变自编码器(Sequence-to-Sequence Variational Autoencoder)。
最终,作为自编码器应有之义,该模型将得到一个归纳原始图片特点的特征向量。
鉴于该解码器可以从这一向量析取出一幅图画,你可以改变它并且得到新的素描。
甚至进行向量运算来创作一只猫猪:
3. 5. GAN(生成对抗网络)
生成对抗网络(GAN)是深度学习最热门的话题之一。很多时候,这个想法都是用于图像方面,所以我会用图像来解释这一概念。
其想法体现在两个网络——生成器与鉴别器的博弈上。第一个网络创作图像,然后对二个网络试图理解该图像是真实的还是生成的。
用图示来解释大概是这样的:
在训练期间,生成器通过随机向量(噪声)生成一幅图像然后交给鉴别器的输入,由后者说出这是真的还是假的。鉴别器还会接收来自数据集的真实图像。
训练这样的结构是很难的,因为找到两个网络的平衡点很难。通常情况下鉴别器会获胜,然后训练就停滞不前了。然而,该系统的优势在于我们可以解决对我们来说很难设置损失函数的问题(比方说改进图片质量)——这种问题交给鉴别器最合适。
GAN 训练结果的典型例子是宿舍或者人的图片
此前,我们讨论过将原始数据编码为特征表示的自编码(Sketch-RNN)。同样的事情也发生在生成器上。
利用向量生成图像的想法在这个以人脸为例的项目 http://carpedm20.github.io/faces/中得到了清晰展示。你可以改变向量来看看人脸是如何变化的。
相同的算法也可用于潜在空间:“一个戴眼镜的人”减去“一个人”加上一个“女人”相当于“一个戴眼镜的女人”。
3. 6. 用 GAN 改变脸部年龄
如果在训练过程中你把控制参数交给潜在向量,那么在生成潜在向量时,你就可以更改它从而在在图片中管理必要的图像。这种方法被称为有条件 GAN。
《用有条件生成对抗网络进行面部老化》这篇文章的作者就是这么干的。在用 IMDB 数据集中已知年龄的演员对引擎进行过训练之后,研究人员就有机会来改变此人的面部年龄。
3. 7. 专业照片
Google 已经为 GAN 找到了另一种有趣的应用——选择和改善照片。他们用专业照片数据集来训练 GAN:生成器试图改进糟糕的照片(经过专业拍摄然后用特殊过滤器劣化),而鉴别器则要区分“改进过”的照片与真正的专业照片。
经过训练的算法会筛查 Google Street View 的全景照片,选出其中最好的作品,并会收到一些专业和半专业品质的照片(经过摄影师评级)。
3. 8. 通过文字描述合成图像
GAN 的一个令人印象深刻的例子是用文字生成图像。
这项研究的作者提出不仅把文字嵌入到生成器(有条件 GAN)的输入,同时也嵌入到鉴别器的输入,这样就可以验证文字与图像的相关性。为了确保鉴别器学会运行他的函数,除了训练以外,他们还给真实图像添加了不正确的文字。
3. 9. Pix2pix 应用
2016 年引人瞩目的文章之一是 Berkeley AI Research (BAIR)的《用有条件对抗网络进行图像到图像的翻译》。研究人员解决了图像到图像生成的问题,比方说在要求它用一幅卫星图像创造一幅地图时,或者根据素描做出物体的真实纹理。
这里还有一个有条件 GAN 成功表现的例子。这种情况下,条件扩大到整张图片。在图像分割中很流行的 UNet 被用作生成器的架构,一个新的 PatchGAN 分类器用作鉴别器来对抗模糊图像(图片被分成N块,每一块都分别进行真伪的预测)。
Christopher Hesse 创作了可怕的猫形象,引起了用户极大的兴趣。
你可以在这里找到源代码。
3. 10. CycleGAN 图像处理工具
要想应用 Pix2Pix,你需要一个包含来自不同领域图片匹配对的数据集。比方说在卡片的情况下,收集此类数据集并不是问题。然而,如果你希望做点更复杂的东西,比如对对象进行“变形”或者风格化,一般而言就找不到对象匹配対了。
因此,Pix2Pix 的作者决定完善自己的想法,他们想出了 CycleGAN,在没有特定配对的情况来对不同领域的图像进行转换——《不配对的图像到图像翻译》
其想法是教两对生成器—鉴别器将图像从一个领域转换为另一个领域,然后再反过来,由于我们需要一种循环的一致性——经过一系列的生成器应用之后,我们应该得到类似原先 L1 层损失的图像。为了确保生成器不会将一个领域的图像转换成另一个跟原先图像毫无关系的领域的图像,需要有一个循环损失。
这种办法让你可以学习马—>斑马的映射。
此类转换不太稳定,往往会创造出不成功的选项:
源码可以到这里找。
3. 11. 肿瘤分子学的进展
机器学习现在已经走进了医疗业。除了识别超声波、MRI 以及进行诊断以外,它还可以用来发现对抗癌症的药物。
我们已经报道过这一研究的细节。简单来说,在对抗自编码器(AAE)的帮助下,你可以学习分子的潜在表征然后用它来寻找新的分子。通过这种方式已经找到了 69 种分子,其中一半是用于对抗癌症的,其他的也有着重大潜能。
3. 12. 对抗攻击
对抗攻击方面的话题探讨得很热烈。什么是对抗攻击?比方说,基于 ImageNet 训练的标准网络,在添加特殊噪声给已分类的图片之后完全是不稳定的。在下面这个例子中,我们看到给人类眼睛加入噪声的图片基本上是不变的,但是模型完全发疯了,预测成了完全不同的类别。
Fast Gradient Sign Method(FGSM,快速梯度符号方法)就实现了稳定性:在利用了该模型的参数之后,你可以朝着想要的类别前进一到几个梯度步然后改变原始图片。
Kaggle 的任务之一与此有关:参与者被鼓励去建立通用的攻防体系,最终会相互对抗以确定最好的。
为什么我们要研究这些攻击?首先,如果我们希望保护自己的产品的话,我们可以添加噪声给 captcha 来防止 spammer(垃圾群发者)的自动识别。其次,算法正日益渗透到我们的生活当中——比如面部识别系统和自动驾驶汽车就是例子。这种情况下,攻击者会利用这些算法的缺陷。
这里就有一个例子,通过特殊玻璃你可以欺骗面部识别系统,然后“把自己扮成另一个人而获得通过”。因此,在训练模型的时候我们需要考虑可能的攻击。
此类对标识的操纵也妨碍了对其的正确识别。
这里有来自竞赛组织者的一组文章。
已经写好的用于攻击的库:cleverhans 和 foolbox。
4. 强化学习
强化学习(RL)也是机器学习最有趣发展最活跃的分支之一。
这种办法的精髓是在一个通过体验给予奖励的环境中学习代理的成功行为——就像人一生的学习一样。
RL 在游戏、机器人以及系统管理(比如交通)中使用活跃。
当然,每个人都听说过 Alphago 在与人类最好围棋选手的比赛中取得的胜利。研究人员在训练中使用了 RL:机器人个你自己下棋来改进策略。
4. 1. 不受控辅助任务的强化训练
前几年 DeepMind 已经学会了用 DQN 来玩大型电玩,表现已经超过了人类。目前,他们正在教算法玩类似 Doom 这样更复杂的游戏。
大量关注被放到了学习加速上面,因为代理跟环境的交互经验需要现代 GPU 很多小时的训练。
DeepMind 在博客 https://deepmind.com/blog/reinforcement-learning-unsupervised-auxiliary-tasks/中报告说额外损失(辅助任务)的引入,比如预测某一帧的变化(像素控制)一边代理更好地理解行动的后果,可以显著加快学习的速度。
4. 2. 学习机器人
在 OpenAi,他们一直在积极研究人类在虚拟环境下对代理的训练,这要比在现实生活中进行实验更安全。
他们的团队在其中一项研究中显示出一次性的学习是有可能的:一个人在 VR 中演示如何执行特定任务,结果表明,一次演示就足以供算法学会然后在真实条件下再现。
如果教会人也这么简单就好了。
4. 3. 基于人类偏好的学习
这里是 OpenAi 和 DeepMind 联合对该主题展开的工作。基本上就是代理有个任务,算法提供了两种可能的解决方案给人然后指出哪一个更好。这个过程会不断反复,然后获取人类 900 的字位反馈(二进制标记)的算法就学会了如何解决这个问题。
像以往一样,人类必须小心,要考虑清楚他教给机器的是什么。比方说,鉴别器确定算法真的想要拿那个东西,但其实他只是模仿了这个动作。
4. 4. 复杂环境下的运动
这是另一项来自 DeepMind 的研究。为了教机器人复杂的行为(走路、跳跃等),甚至做类似人的动作,你得大量参与到损失函数的选择上,这会鼓励想要的行为。然而,算法学习通过简单奖励学习复杂行为会更好一些。
研究人员设法实现了这一点:他们通过搭建一个有障碍的复杂环境并且提供一个简单的回报机制用于运动中的处理来教代理(躯体模拟器)执行复杂动作。
你可以观看这段视频,结果令人印象深刻。然而,用叠加声音观看会有趣得多!
最后,我再提供一个最近发布的算法链接,这是 OpenAI 开发用于学习 RL 的。现在你可以使用比标准的 DQN 更先进的解决方案了。
5. 其他
5. 1. 冷却数据中心
2017 年 7 月,Google 报告称它利用了 DeepMind 在机器学习方面的成果来减少数据中心的能耗。
基于数据中心数千个传感器的信息,Google 开发者训练了一个神经网络,一方面预测数据中心的 PUE(能源使用效率),同时进行更高效的数据中心管理。这是 ML 实际应用的一个令人印象深刻的重要例子。
5. 2. 适用所有任务的模型
就像你知道的那样,训练过的模型是非常专门化的,每一个任务都必须针对特殊模型训练,很难从一个任务转化到执行另一个任务。不过 Google Brain 在模型的普适性方面迈出了一小步,《学习一切的单一模型》
研究人员已经训练了一个模型来执行 8 种不同领域(文本、语音、图像)的任务。比方说,翻译不同的语言,文本解析,以及图像与声音识别。
为了实现这一点,他们开发了一个复杂的网络架构,里面有不同的块处理不同的输入数据然后产生出结果。用于编码/解码的这些块分成了 3 种类型:卷积、注意力以及门控专家混合(MoE)。
学习的主要结果:
得到了几乎完美的模型(作者并未对超参数进行调优)。
不同领域间的知识发生了转化,也就是说,对于需要大量数据的任务,表现几乎是一样的。而且在小问题上表现更好(比方说解析)。
不同任务需要的块并不会相互干扰甚至有时候还有所帮助,比如,MoE——对 Imagenet 任务就有帮助。
顺便说一下,这个模型放到了 tensor2tensor 里面。
5. 3. 一小时弄懂 Imagenet
Facebook 的员工在一篇文章中告诉我们,他们的工程师是如何在仅仅一个小时之内教会 Resnet-50 模型弄懂 Imagenet 的。要说清楚的是,他们用来 256 个 GPU(Tesla P100)。
他们利用了 Gloo 和 Caffe2 进行分布式学习。为了让这个过程高效,采用大批量(8192 个要素)的学习策略是必要的:梯度平均、热身阶段、特殊学习率等。
因此,从 8 个 GPU 扩展到 256 个 GPU 时,实现 90% 的效率是有可能的。不想没有这种集群的普通人,现在 Facebook 的研究人员实验甚至可以更快。
6. 新闻
6. 1. 无人车
无人车的研发正热火朝天,各种车都在积极地进行测试。最近几年,我们留意到了英特尔收购了 Mobileye,Uber 与 Google 之间发生的前员工窃取技术的丑闻,以及采用自动导航导致的第一起死亡事件等等。
我想强调一件事情:Google Waymo 正在推出一个 beta 计划。Google 是该领域的先驱,它认为自己的技术是非常好的,因为它的车已经行驶了 300 多万英里。
最近无人车还被允许在美国全境行驶了。
6. 2. 医疗保健
就像我说过那样,现代 ML 正开始引入到医疗行业当中。比方说,Google 跟一个医疗中心合作来帮助后者进行诊断。
Deepmind 甚至还设立了一个独立的部门。
今年 Kaggle 推出了 Data Science Bowl 计划,这是一项预测一年肺癌情况的竞赛,选手们的依据是一堆详细的图片,奖金池高达 100 万美元。
6. 3 投资
目前,ML 方面的投资非常大,就像之前在大数据方面的投资一样。
中国在 AI 方面的投入高达 1500 亿美元,意在成为这个行业的领袖。
公司方面,百度研究院雇用了 1300 人,相比之下 FAIR 的是 80 人。在最近的 KDD 上,阿里的员工介绍了他们的参数服务器鲲鹏(KunPeng),上面跑的样本达 1000 亿,有 1 万亿个参数,这些都是“普通任务”。
你可以得出自己的结论,学习机器学习永远不会迟。无路如何,随着时间转移,所有开发者都会使用机器学习,使得后者变成普通技能之一,就像今天对数据库的使用能力一样。
原文链接:https://blog.statsbot.co/deep-learning-achievements-4c563e034257
编译组出品。编辑:郝鹏程。