「AutoML」攻略:一文看懂深度学习新王者
原作:George Seif
夏乙 安妮 编译整理
量子位 出品 | 公众号 QbitAI
AutoML和神经架构搜索(NAS),是深度学习领域的新一代王者。
这些方法能
快糙猛
地搞定机器学习任务,简单有效,高度符合当代科技公司核心价值观。
它们背后原理如何,怎样使用?
技术博客TowardDataScience有一篇文章,就全面介绍了关于AutoML和NAS你需要了解的一切。
NAS
要了解AutoML,还得从NAS说起。
在开发神经网络的过程中,架构工程事关重大,架构先天不足,再怎么训练也难以得到优秀的结果。
当然,提到架构,很多人会想到迁移学习:把ImageNet上训练的ResNet拿来,换个我需要的数据集再训练训练更新一下权重,不就好了嘛!
这种方法的确也可行,但是要想得到最好的效果,还是根据实际情况设计自己的网络架构比较靠谱。
设计神经网络架构,能称得上机器学习过程中门槛最高的一项任务了。想要设计出好架构,需要专业的知识技能,还要大量试错。
NAS就为了搞定这个费时费力的任务而生。
这种算法的目标,就是搜索出最好的神经网络架构。它的工作流程,通常从定义一组神经网络可能会用到的“建筑模块”开始。比如说Google Brain那篇NasNet论文,就为图像识别网络总结了这些常用模块:
其中包含了多种卷积和池化模块。
论文:Learning Transferable Architectures for Scalable Image Recognition
地址:https://arxiv.org/pdf/1707.07012.pdf
NAS算法用一个循环神经网络(RNN)作为
控制器
,从这些模块中挑选,然后将它们放在一起,来创造出某种端到端的架构。
这个架构,通常会呈现出和ResNet、DenseNet等最前沿网络架构一样的风格,但是内部模块的组合和配置有所区别。一个架构的好坏,往往就取决于选择的模块和在它们之间构建的连接。
接下来,就要训练这个新网络,让它收敛,得到在留出验证集上的准确率。这个准确率随后会用来通过策略梯度更新控制器,让控制器生成架构的水平越来越高。
过程如下图所示:
这个过程很直观了。简单来说,很有小朋友搭积木的风范:让一个算法挑出一些积木,然后把它们组装在一起,做成一个神经网络。训练、测试,根据这个结果来调整选积木的标准和组装的方式。
这个算法大获成功,NasNet论文展现出非常好的结果,有一部分原因是出于他们做出的限制和假设。
论文里训练、测试NAS算法发现的架构,都用了一个比现实情况小得多的数据集。当然,这是一种折衷的方法,要在ImageNet那么大的数据集上训练验证每一种搜索结果,实在是太耗费时间了。
所以,他们做出了一个
假设
:如果一个神经网络能在结构相似的小规模数据集上得到更好的成绩,那么它在更大更复杂的数据集上同样能表现得更好。
在深度学习领域,这个假设基本上是成立的。
上面还提到了一个
限制
,这指的是搜索空间其实很有限。他们设计NAS,就要用它来构建和当前最先进的架构风格非常类似的网络。
在图像识别领域,这就意味着用一组模块重复排列,逐步下采样,如下图所示:
这些模块也都是当前研究中常用的。NAS算法在其中所做的新工作,主要是给这些模块换个连接方式。
下面,就是它发现的ImageNet最佳神经网络架构:
架构搜索的进展
这篇NASNet论文带动了行业内的一次进步,它为深度学习研究指出了一个全新方向。
但是,用450个GPU来训练,找到一个优秀的架构也需要训练3到4天。也就是说,对于除了Google之外的普通贫民用户们,这种方法还是门槛太高、效率太低。
NAS领域最新的研究,就都在想方设法让这个架构搜索的过程更高效。
2017年谷歌提出的
渐进式神经架构搜索(PNAS)
,建议使用名叫“基于序列模型的优化(SMBO)”的策略,来取代NASNet里所用的强化学习。用SMBO策略时,我们不是随机抓起一个模块就试,而是按照复杂性递增的顺序来测试它们并搜索结构。
这并不会缩小搜索空间,但确实用更聪明的方法达到了类似的效果。SMBO基本上都是在讲:相比于一次尝试多件事情,不如从简单的做起,有需要时再去尝试复杂的办法。这种PANS方法
比原始的NAS效率高5到8倍
,也
便宜
了许多。
论文:Progressive Neural Architecture Search
地址:https://arxiv.org/pdf/1712.00559.pdf
高效神经架构搜索(ENAS)
,是谷歌打出的让传统架构搜索更高效的第二枪,这种方法很亲民,只要有GPU的普通从业者就能使用。作者假设NAS的计算瓶颈在于,需要把每个模型到收敛,但却只是为了衡量测试精确度,然后所有训练的权重都会丢弃掉。
论文:Efficient Neural Architecture Search via Parameter Sharing
地址:https://arxiv.org/pdf/1802.03268.pdf
因此,ENAS就要通过改进模型训练方式来提高效率。
在研究和实践中已经反复证明,迁移学习有助在短时间内实现高精确度。因为为相似任务训练的神经网络权重相似,迁移学习基本只是神经网络权重的转移。
ENAS算法强制将所有模型的权重共享,而非从零开始训练模型到收敛,我们在之前的模型中尝试过的模块都将使用这些学习过的权重。因此,每次训练新模型是都进行迁移学习,收敛速度也更快。
下面这张表格表现了ENAS的效率,而这只是用单个1080Ti的GPU训练半天的结果。
深度学习新方法AutoML
很多人将AutoML称为深度学习的新方式,认为它改变了整个系统。有了AutoML,我们就不再需要设计复杂的深度学习网络,只需运行一个预先设置好的NAS算法。
最近,Google提供的Cloud AutoML将这种理念发挥到了极致。只要你上传自己的数据,Google的NAS算法就会为你找到一个架构,用起来又快又简单。
AutoML的理念就是把深度学习里那些复杂的部分都拿出去,
你只需要提供数据
,随后就让AutoML在神经网络设计上尽情发挥吧。这样,深度学习就变得像插件一样方便,只要有数据,就能自动创建出由复杂神经网络驱动的决策功能。
△
谷歌云的AutoML pipeline
不过,AutoML价格也并不算亲民,每小时收费20美元。此外,一旦你开始训练,则无法导出模型,并且得用谷歌提供的API在云上运行你的网络,这些限制看起来都不是很方便,
AutoKeras也是一个使用了ENAS算法的GitHub项目,可以使用pip安装。它是用Keras编写的,因此很容易控制和使用,甚至可以自己深入研究ENAS算法并尝试进行一些改动。
如果你喜欢用TensorFlow或者Pytorch,也有一些开源项目可用:
https://github.com/melodyguan/enas
https://github.com/carpedm20/ENAS-pytorch
总的来说,若你想使用AutoML,现在已经有很多不同的选择,这完全取决于你是否会使用你想要的算法,以及你对这件事的预算如何。
AutoML和NAS未来会怎样?
过去几年,在深度学习工作的自动化上,整个领域都在大步向前,让深度学习更贴近大众、更易用。
不过,进步的空间永远都有。
架构搜索已经越来越高效了,用ENAS,一个GPU一天就能找出一种新的网络架构。的确鹅妹子嘤,但是这个搜索空间依然非常有限,而且,现在NAS算法所用的基本结构和模块还是人工设计的,只是将组装的过程自动化了。
将来要想取得重大突破,在更广阔的搜索范围里搜索真正的新架构是一个重要方向。
如果这样的算法出现,甚至能为我们揭示庞大复杂深度神经网络中隐藏的秘密。
当然,要实现这样的搜索空间,需要设计出更高效的算法。
对比下图普通机器学习流程,是不是高效多了?!
实现过程有以下步骤:
-
数据预处理
-
特性选择
-
模型算法选择
-
调参
-
上线后模型的再优化
-
效果评估
最后,附上原文传送门:
https://towardsdatascience.com/the-end-of-open-ai-competitions-ff33c9c69846
原创:
不会盲从的
AI前线
AI 前线导读:
迁移学习是想要实现全民玩 AI 的谷歌 Cloud AutoML 背后的核心技术,也是吴恩达在 NIPS 2016 上力推的机器学习商业化又一利器,那么你对迁移学习足够了解吗?谷歌官方说的“不用写代码的迁移学习”真的有那么好用?你不知道其实微软早在 8 个月前就推出了同样的服务 Custom Vision 吧?今天我们就来唠一唠这个潜在的下一代潮流技术,还有今天刷屏的 Cloud AutoML。
今天谷歌推出 Cloud AutoML、旨在实现全民玩 AI 的消息又刷爆了所有科技媒体头条和所有人的朋友圈。凌晨时分,李飞飞连发三条推特,发布了谷歌最新 AI 产品——Cloud AutoML Vision,“无需精通机器学习,每个人都能用这款 AI 产品定制机器学习模型。”
AutoML Vision 是 Cloud AutoML 这个大项目推出的第一项服务,提供自定义图像识别系统自动开发服务。根据谷歌介绍,
即使是没有机器学习专业知识的的小白,只需了解模型基本概念,就能借这项服务轻松搭建定制化的图像识别模型。
只需在系统中上传自己的标签数据,就能得到一个训练好的机器学习模型。
整个过程,从导入数据到标记到模型训练,都可以通过拖放式界面完成。
除了图像识别,谷歌未来还计划将 AutoML 服务拓展到翻译、视频和自然语言处理等领域。
是不是超厉害!是不是棒棒哒!是不是觉得小白可以翻身吊打机器学习工程师了!等等,先别激动,这事确实挺棒的,但事情可能没有你想象的那么简单。
AI 前线注意到了谷歌官方博客中提到的
Cloud AutoML 背后的核心技术——
迁移学习
(Transfer Learning)。通过迁移学习,谷歌就能将已训练完成的模型(又叫预训练模型,Pre-trained models),转移到新的模型训练过程,从而用较少量数据训练出机器学习模型,而 Cloud AutoML Vision 借助的预训练模型,正是“又大又好”的图像数据集 ImageNet 和 CIFAR。此外,谷歌还通过 learning2learn 功能自动挑选适合的模型,搭配超参数调整技术(Hyperparameter tuning technologies)自动调整参数。
无独有偶,在去年的 NIPS 2016 讲座上,吴恩达也表示:“
在监督学习之后,迁移学习将引领下一波机器学习技术商业化浪潮。
”
那么,有了迁移学习作为核心技术,Cloud AutoML 会成为下一个机器学习大杀器吗?
Cloud AutoML 真的有那么“震惊!厉害!NB!”吗?
AI 前线在知乎上刷到了这么一个问题“如何评价谷歌刚推出的 Cloud AutoML?”,回答者中大多都对微软表示心疼。其实早在 8 个月之前,微软就已经发布了几乎一样的服务(也不用写代码、不用调参数,会拖控件就能帮你训练深度学习模型)。
答主“grapeot”表示:“真是心疼微软 pr 部门。我作为一个软狗到今天才知道 custom vision 这个东西。google 那边发布会都没开,就发了俩 twitter 媒体就轰动了。高下立判,高下立判啊!”也有答主调侃谷歌是一家“超一流的广告公司”。
于是
AI 前线也就“谷歌的 Cloud AutoML 到底有多厉害?”等一系列问题咨询了几位业界技术专家
,得到的答复颇有点耐人寻味。
来自 IBM 的专家告诉 AI 前线,这还是个新兴的领域,他不认为短期内会真正产生落地的影响力和实际效果。神经网络来训练神经网络发展时间不长,所以 Cloud AutoML 的效果还需要通过实践来进一步检验。
另一位不具名技术专家认为,Cloud AutoML 目前推出的第一项服务是针对 Vision 的,ImageNet 数据集够好够大,所以大多情况下确实能够迁移出不错的效果,而且视觉现在属于比较好做的领域了,如果是 NLP、CTR 这些领域,则要难很多。
大家现在有点“谷歌爸爸做的肯定都是好的”的心理,不得不说谷歌 PR 能力确实厉害。
当然,通过迁移学习实现 AutoML 这件事情本身确实给了从业者很大的想象空间,可以打破数据孤岛,更低成本地解决更多问题,比如用电商的数据去做传统行业的推荐,或者一个新公司没有数据但可以用其他公司或行业数据来做事情。
谷歌介绍称 AutoML Vision 提供了简洁的图形化用户界面,只需导入数据和拖拽组件就能打造全新模型,更有媒体报道直接突出“无需写一行代码”,那么真的可以不用写代码吗?这位专家讳莫如深地告诉 AI 前线:“
不写代码容易做,不写代码能做出好结果难呀。
”
第四范式是一家致力于利用机器学习、迁移学习等人工智能技术进行大数据价值提取的公司,而第四范式的联合创始人、首席科学家杨强教授更是迁移学习领域的奠基人和开拓者,他发表论文 400 余篇,论文被引用超过三万次。
这次 Cloud AutoML 推出后,很多读者也对第四范式怎么看表示强烈关切。
因此,AI 前线也将问题抛给了第四范式先知平台架构师陈迪豪,他对与我们的问题做了十分详尽的解答,整理如下:
AI 前线:你觉得谷歌 Cloud AutoML 最大的亮点有哪些?
陈迪豪:
Cloud AutoML 最大的亮点是把完整的机器学习工作流做成云端易用的产品,用户只需要在界面上拖拽样本数据就可以完成数据处理、特征抽取、模型训练等全流程,针对图像分类这个场景在易用性上做到了极致。
AI 前线:谷歌开发 Cloud AutoML 系统的技术难度有多大?
陈迪豪:
目前根据 Cloud AutoML 的介绍,开发一个针对图像分类的 Cloud AutoML 难度并不大,通过对已经训练好的 Inception 模型在新数据集上进行 finetune,可以得到一个效果不错的新模型,这部分在 TensorFlow 官方文档就有介绍,开发者甚至可以在本地开发出一个“命令行版本的 Cloud AutoML Vision”。当然 Google 在过往的论文也介绍过 Learning to learn 和自动构建神经网络等算法,这些算法对于样本规模和计算能力有更高的要求,目前在业界仍处于研究阶段。
AI 前线:Cloud AutoML 使用了迁移学习等技术,用户只要上传很少的标注数据就能生成自己的模型,倒是很方便,但新模型的效果能有多好?能不能从技术角度解释一下呢?
陈迪豪:
前面已经提到,CloudML AutoML 并没有公开生成模型的算法细节,可能是基于 finetune 对模型参数进行调优,或者是用 AutoML 论文的方法重新构建神经网络模型。目前看使用 finetune 可能性较大,以使用 TensorFlow 对 Inception 模型进行 finetune 为例,用户只需要提供非常少量的标注数据即可,首先加载官方在 ImageNet 数据集上训练完成后得到的模型参数,然后在新数据集上训练神经网络的最后一层,根据 Label 和预测值更新部分的参数,很快就可以得到一个准确率超过 90% 的图像分类模型。当然也不排除 Google 已经使用或者未来将使用 AutoML 论文的算法,使用用户提供的数据集和 ImageNet 等已经标记好的数据集进行重新训练模型,模型的参数就是构建神经网络结构的参数,模型的目标就是找到图像分类正确率最高的神经网络结构,从论文的结果看在数据量和计算能力足够的情况下,机器训练得到的模型与人类设计最顶尖的模型效果接近,如果应用到 Cloud AutoML 场景下效果也不会太差。
AI 前线:你认为 Cloud AutoML 会给人工智能未来的发展带来什么样的影响?
陈迪豪:
Google 的 Cloud AutoML 只是 AutoML 的一种使用场景,在此之前包括微软、亚马逊、国内的第四范式等公司都已经有 AutoML 的实际场景了,Cloud AutoML Vision 只是解决了在图像分类领域更低门槛的建模场景而已,在其他 State of the art 的机器学习领域并没有大家预期的革新式影响。当然 Google Cloud AutoML 的推出迅速引起了国外内对于自动机器学习模型构建的关注,为 AutoML 的研究和落地提供了强力的背书,相信能推动这个领域在未来有更好的发展。
AI 前线:在你看来,Cloud AutoML 会不会帮谷歌在一众云端机器学习服务厂商(微软 Azure、AWS、IBM 等)中脱颖而出?
陈迪豪:
在我看来目前 Google Cloud AutoML 还不是一个通用场景的机器学习解决方案,并不能可能直接淘汰微软、亚马逊等云机器学习平台。当然我们非常期待 Google Cloud 和 Google Brain 部门在 AutoML 后续的工作。随着 AutoML 算法的成熟和通用化,未来会有更多低门槛、贴近用户的机器学习建模范式出来,对人工智能行业也是很大的利好。
AI 前线:你所在公司推出的机器学习工具目前推广情况如何?未来是否也会计划推出类似 Cloud AutoML 这样的服务?或者还有别的比较重要的发展方向?
陈迪豪:
我目前在第四范式担任先知平台架构师,在去年乌镇互联网大会上发布的先知 3.0 就已经集成了 AutoML 功能,通过自研的 FeatureGo 自动特征组合算法和开源的自动调参算法等可以实现从特征抽取、特征组合、模型训练、超参数调优到模型上线等全机器学习工作流。目前我们在推荐系统提供给用户的模型全部以 AutoML 算法生成的。在 TensorFlow 上训练模型实现 Learning to learn 也是我们的关注重点,除此之外像大规模的数据拼接、时序特征抽取、模型灰度发布、工作流可视化以及自学习闭环都是切实的业务痛点,我们从算法和产品维度致力于打造一个比 Google Cloud AutoML 更低门槛、并且更落地的机器学习平台,也欢迎与同行们多多交流。
以下内容节选编译自知名 AI 博主、爱尔兰国立大学 NLP 博士生 Sebastian Ruder 标题为“迁移学习:机器学习的下一个前线”博文:
在机器学习经典的监督学习场景中,如果我们打算为某个任务和 A 域训练一个模型,假设我们为相同的任务和域提供了标记好的数据。我们可以在图 1 中清楚地看到,对于我们的模型 A,训练和测试数据的任务和域是一样的。稍后,我们会给出一个任务和一个域的详细定义。现在,我们假设一个任务是我们的模型要执行的目标,比如,在图片中识别物体;一个域是我们的数据来源,比如,在旧金山咖啡店拍摄的图像。
图 1:机器学习中经典的监督学习的建立
现在,我们可以在这个数据集上训练模型 a,并期望它在相同任务和域的不可见数据上表现良好。在另一种情况下,当给定其他任务或域 B 的数据时,我们需要再次标记相同任务或域的数据,以便训练新的模型 B,这样我们就可以期望它在这些数据上表现良好。
当我们没有足够的标记数据为我们所关注的要训练的可靠模型的任务或域时,经典的监督式学习范式就会崩溃。
如果我们想要训练一个模型来检测夜间图像上的行人,我们可以应用一个已经在类似的领域进行过训练的模型,比如:在日间图像上用过的。 然而在实践中,由于模型继承了训练数据的偏差,并且不知道如何推广到新的领域,我们往往会经历性能的恶化或模型的崩溃。
如果我们想要训练一个模型来执行一个新的任务,比如检测骑自行车的人,我们甚至不能重用一个现有的模型,因为任务之间的标记是不同的。
迁移学习使我们能够利用已经存在的某些相关任务或域的标记数据来处理这些场景。 我们尝试把解决源域任务所获得的知识存储在源域中,并将其应用于我们感兴趣的问题,如图 2 所示。
图 2:迁移学习设置
在实践中,我们试图从源头转移尽可能多的知识到我们的目标任务或域中。这种知识的形式由数据决定:它可以涉及物体是如何组成的,以便我们更容易识别新物体;可以是关于人们用来表达自己观点的一般词汇等等。
前百度首席科学家、斯坦福大学教授吴恩达(Andrew Ng)曾在广受欢迎的 NIPS 2016 讲座中说过:
在监督学习之后,迁移学习将会成为机器学习商业成功的下一个推动力。
图 3:Andrew Ng 在 NIPS 2016 讲解迁移学习
他特意在白板上画了一张图,我尽可能忠实地复制成下面的图 4(很抱歉,我没有标记坐标轴)。 据吴恩达介绍,迁移学习将成为机器学习在行业中取得成功的关键因素。
图 4:Andrew Ng 所介绍的在机器学习行业中取得成功的推动力
毋庸置疑,迄今为止机器学习在行业中的使用和成功主要是由监督学习推动的。 在深度学习的进步、功能更强大的计算工具和大型标记数据集的推动下,监督学习已经重新激发了人们对人工智能的兴趣、融资和收购的浪潮,特别是近几年来,我们已经看到机器学习的应用成为我们日常生活的一部分。 如果我们无视那些反对者和另一个 AI 冬季的预兆,而是相信 Andrew Ng 的预见,这样的成功可能会继续下去。
然而,不太清楚的是,为什么尽管迁移学习已经存在了几十年,但是目前在行业上的应用还是很少,未来是否会看到 Andrew Ng 所预测的爆炸性增长呢?甚至,与其他机器学习领域,如无监督学习和强化学习相比,迁移学习目前受到的相对较少的关注,而那些领域已经越来越受到关注:无监督学习——从图 5 中可以看出,根据 Yann LeCun 的观点,它是寻求通用 AI 的关键因素—— 已经看到了兴趣的复苏,特别受到了生成敌对网络的推动。
反过来,由谷歌 DeepMind 领头的强化学习,已经引领了 AlphaGo 的成功,并在现实世界中取得了成功,例如将谷歌的数据中心的冷却成本降低了 40%。这两个领域虽然有希望,但在可预见的未来可能只会产生相对较小的商业影响,而且大部分仍停留在尖端研究论文的范围内,因为它们仍然面临许多挑战。
图 5:在 Yann LeCun 所展示的蛋糕里,显然没有迁移学习。
接下来,我们来看看是什么让迁移学习有所不同。在我们看来,它们激发了 Andrew Ng 的预见,并概述了为什么现在是关注迁移学习的时候。
目前在行业中对机器学习的应用呈现二元化:
-
一方面,在过去的几年里,我们已经获得了训练越来越精确的模型的能力。我们现在处于多任务阶段,最先进的模型已经达到了这样一个水平,它们的性能是如此的好以至于对用户来说,其不再是阻碍。有多好呢?在 ImageNet 上最新的残差网络(residual networks)实现了在识别对象时超过人类的性能;谷歌的智能回复能够自动处理 10% 的移动端回复任务;语音识别错误率不断下降,比打字输入更准确;我们可以像皮肤科医生一样自动识别皮肤癌;谷歌的 NMT 系统用于 10 多种翻译语言对的产生;百度能实时生成逼真的语音;这样的事情不胜枚举。这种成熟程度能够将这些模型大规模部署到数百万用户,并且已经被广泛采用。
-
另一方面,这些成功的模型非常需要数据,并且依靠大量的标记数据来实现其性能。 对于某些任务和领域,这些可用数据是多年来一直苦心经营的。 在少数情况下,它是公开的,比如, ImageNet,但是大量的标记数据通常是专有的或昂贵的,比如许多语音或 MT 数据集,因为是它们形成了竞争优势。
与此同时,在不熟悉的环境中应用机器学习模式时,模型面临着以前从未见过、不知如何处理的诸多情况;每个客户和每个用户都有自己的偏好,拥有或产生与用于训练的数据不同的数据;一个模型被要求执行许多与被训练的任务相关但不相同的任务。在所有这些情况下,我们目前最先进的模型,尽管在它们所接受的任务和域上表现出跟人类一样甚至是超人类的表现,但在性能方面却会遭受重大损失,甚至完全崩溃。
迁移学习可以帮助我们处理这些新场景,并且这对于哪些标记数据稀缺的任务领域,要使机器学习能够规模化应用,迁移学习是必不可少的。到目前为止,我们虽然已经将模型应用到了不少极具影响力的任务领域,但这些大多是数据“低树果实”,为了长远发展,我们必须学会将获得的知识转移到新的任务领域。
我认为迁移学习在将来会更多地应用于从模拟中学习,这也让我感到很兴奋。对于许多依靠硬件进行交互的机器学习应用程序来说,从现实世界中收集数据和训练模型不是昂贵、耗时,就是太危险。因此,以其他风险较小的方式收集数据是比较明智的。
在这方面,模拟是首选工具,并已在实践中被用于许多先进的机器学习系统。从模拟中学习,将获得的知识应用到实践是迁移学习的其中一个应用场景。因为源域和目标域之间的特征空间是相同的(通常两者都依赖于像素),但是模拟和现实场景中的边界概率分布不同,尽管随着模拟更接近现实,这种差异逐渐减小,但模拟场景中的物体和来源看起来仍然不同。同时,由于难以完全模拟现实世界中的所有反应,模拟与现实世界中的条件概率分布也不尽相同,例如,物理引擎不能完全模仿现实世界中物体的复杂交互。
图 6: 谷歌无人驾驶汽车(来源: 谷歌研究院博客)
然而,从模拟中学习也有好处,即可以更轻松地收集数据,这是因为模拟学习可以并行多个学习案例,在轻松绑定和分析物体的同时进行快速训练。因此,对于需要与现实世界进行交互的大型机器学习项目,它可以作为首选,比如自动驾驶汽车(参见图 6)。据谷歌的自动驾驶汽车技术负责人 Zhaoyin Jia 介绍,“如果你真的想做一辆自动驾驶汽车,模拟是必不可少的”。Udacity 已经开源了其用于训练自动驾驶汽车工程师的纳米级模拟器,如图 7 所示。OpenAI 的 Universe 也有可能会使用 GTA5 或其他视频游戏来训练自动驾驶汽车。
图 7:Udacity 的自动驾驶汽车模拟器(来源:TechCrunch)
另一个模拟学习将发生关键作用的应用领域是机器人技术:在一个真正的机器人上训练模型速度太慢且成本很高。从模拟中学习,并将知识迁移到实践中的机器人可以缓解这个问题,并且最近获得了很大的关注 [8]。图 8 是在现实世界和模拟场景中的数据操作任务示例。
图 8:机器人和模拟图像(来源:Rusu 等,2016)
最后,从模拟中学习是通向通用 AI 不可或缺的部分。训练一个代理直接在现实世界中实现通用人工智能代价太大,并且在初期不必要的复杂性会妨碍学习的效果。相反地,基于模拟环境进行学习会事半功倍,如图 9 中可见的 CommAI-env。
图 9:Facebook 人工智能研究院的 CommAI-env(来源:Mikolov 等, 2015)
虽然从模拟中学习是领域适应的一个特殊案例,我们还是有必要列出一些其他适应领域的例子。
在计算机视觉方向,领域适应是一个常见的需求,因为标签上的信息很容易获取,而我们真正关心的数据是不同的,无论是识别在图 10 中所示的自行车,还是在陌生环境中的其他物体。即使训练和测试数据看起来并无差异,但其中仍然可能包含对人类来说难以察觉,并会导致模型产生过度拟合的细微偏差。
图 10:不同的视觉领域(来源:Sun 等,2016)
另一个常见的领域适应场景,是适应不同的文本类型:标准的 NLP 工具,例如词类标注器或解析器,通常会使用诸如《华尔街日报》等自古以来就用于评估模型的新闻数据进行训练。然而,使用新闻数据训练的模型难以适应更新颖的文本形式,如来自社交媒体的消息。
图 11:不同的文本类型
即使在比如产品评论这样的一个领域,人们也会用不同的词语来表达同样的概念。因此,使用一种类型评论的文本的训练模式应该能够区分该领域的专业词汇和普通人使用的词汇,以免被领域的转换所迷惑。
图 12:不同的主题
最后,上述问题只是涉及到一般的文本或图像类型,但是如果将之扩大到与个人或用户群体有关的其他领域,问题就会被放大:比如语音自动识别(ASR)的情况。 语音有望成为下一个大有可为的领域,预计到 2020 年,语音搜索的占比将达 50%。传统上,大多数 ASR 系统在 Swithboard 数据集上进行评估,该数据集由 500 个说话者构成。标准口音还好,但系统很难理解移民、有口音、有言语障碍的人或儿童的语音。现在我们比以往任何时候都需要能够满足个人用户和少数群体需求的系统,以确保每个人的声音都能被理解。
图 13:不同的口音
最后,在我看来,迁移学习的另一杀手级应用,是将从一种语言学习中获得知识应用到另一种语言,我已经写过关于跨语言嵌入模型的文章。可靠的跨语言适应方法将使我们能够利用已拥有的大量英文标签数据,并将其应用于任何语言,尤其是不常用和数据缺乏资源的语言。鉴于目前的最新技术水平,这似乎仍然是个乌托邦,但 zero-shot 翻译等取得的最新进展预示着我们有望在这方面更进一步。
总而言之,迁移学习为我们提供了很多激动人心的研究方向,特别是许多需要模型的应用程序,这些模型可以将知识转化为新的任务并适应新的领域。
谷歌的这场 Cloud AutoML 大秀,不论有多少 PR 的成分,只要能够推动迁移学习这一技术方向的发展,就不失为一件好事。
原创:
AI前线小组
AI前线
AI 前线导读:
在谷歌之前,技术圈屹立 43 年之久的老前辈——微软,已经开发出了几乎具备同样功能的,针对图片训练的 AutoML 平台:
Microsoft Custom Vision
,不用写代码,不用调参数,会拖控件就能进行训练深度学习模型。不过,就像很多人说的那样,谷歌不愧为一家“广告公司”,宣传做的是真的好,而微软的同款产品却鲜有人知晓。
在不久前,AI 前线编辑参加了微软亚洲研究院举办的一场名为:智能时代的系统创新的媒体沟通会,我们才知道,原来微软早就另有打算——打造智能系统。
2017 年微软 Build 开发者大会上,微软高级项目经理 Cornelia Carapcea 展示了一项技术:
用户创建的自定义视觉 API 模型只需要一个训练数据样例(只有几十个摄影样本),而
Custom Vision
则可以完成其余的工作。
一旦创建了这个模型 (只需几分钟),用户就可以通过安装在微软服务器上的 REST API 访问。Carapcea 说它可以用于识别食物和地标,甚至是应用在零售环境中。
Custom Vision
可以选择最可能为模型增加最大增益的图像,允许用户手工标记图像,然后继续改进总体的准确性和可靠性。
微软亚洲研究院副院长、人工智能系统联合中心负责人周礼栋博士在接受 AI 前线记者采访时告诉我们:Microsoft Custom Vision 和 Google Cloud AutoML 都是针对视觉识别领域里的 AutoML(自动学习)的一个应用,都非常的简单易用。通过把复杂的模型选取、参数调优的过程掩藏在了产品的背后,Microsoft Custom Vision 可以给用户提供一个非常简单易用的体验,使非专业人士也能零门槛的定制自己的模型。
同时,Microsoft Custom Vision 也是微软认知服务 (Cognitive Services) 中的一部分,微软推出的认知服务包括视觉、语音、语言、知识和搜索等五大类别的二十多个 API,如人脸识别、情绪识别、语音识别、拼写检查、语言理解等等。微软认知服务的侧重点是为用户提供一个通用的服务,用户可以直接调用现成的智能 API 来开发出更智能、更有吸引力的产品,而不需要花费大量时间来自己训练模型。
而对于最近刚刚兴起的 AutoML 技术,周博士也发表了一些自己的看法:
近年来,“AutoML(自动学习)”已经成为了一个研究热点。通过自动化的方式,机器试图学习到最优的学习策略,从而避免机器学习从业者低效的手动调整。经典的 AutoML 方法包括用于
超参数调节的贝叶斯优化(Bayesian Optimization),以及用于优化器和网络结构调整的元学习技术(Meta learning/Learning-to-Learn)。
除了在学术界引起了广泛研究兴趣,AutoML 在工业界也已经得到了实际应用,例如此前提到的微软 Azure 提供的自定义影像(Custom Vision)服务,它能够方便云计算用户自动训练用于计算机视觉的机器学习模型。
AutoML 让用户在没有专业知识的情况下使用机器学习的门槛大大地降低,甚至可谓是零门槛。在没有机器学习专家指导的情况下,用户通过 AutoML 就能在一定情况下得到高质量的模型,这使机器学习的行业应用更加容易可行。周博士说,微软亚洲研究院希望把这类技术的使用和研究更加普及化,在分享会上,我们也得知微软正在着力打造一款用于深度学习的项目,名曰:
深度学习智能探索 (Neural Network Intelligence),简称叫 NNI
。
据介绍,开发 NNI 工具包的目的是为用户提供智能化、自动化的深度学习工具包,可以帮助用户或者开发者自动地进行数据分析,自动的帮他们搜索模型,进行参数调试和性能分析,通过这样自动迭代的准备过程,用户可以节省更多的时间,将精力放在探索更有深度的机器学习的道路上。
周礼栋博士告诉我们,
NNI 集成了 AutoML 算法,是一个支持不同操作系统的,在本地也可以云端运行的工具包。它特别适合有一定人工智能基础的科研人员更加有针对性、精准的选取模型
。微软为此制定了全新的语言,使得定义和描述搜索空间只需几行代码,所有的底层通信等复杂问题都被封装起来,对使用者完全透明。NNI 着重解决了一系列支持 AutoML 的系统问题,以开放的方式有效加速 AutoML 算法研究者在这一领域的创新。为了鼓励更多人工智能的科研工作者一起加强这项研究,
NNI 计划将在近期开源
。
不过,在分享会之后,我们发现:微软对降低人工智能门槛,提升深度学习普及化的想法可不止于此,AutoML 技术只是其中的一环,微软要做的是智能系统。
另辟蹊径,微软要打造智能系统
在谷歌的 Cloud AutoML 发布之后,有不少网友为微软惋惜:其实微软早就有这样的技术,但是并没有大肆宣传,导致江湖上又是一片:谷歌牛 X 的呼声。
要是这么想,可就有些 naive 了,因为微软其实在准备一个大招——智能系统。
周博士表示,
AutoML 是人工智能系统的一部分,它也对人工智能系统提出了包括资源管理、任务分配等一系列挑战
。简单的说:灵活可扩展的好的人工智能系统能够更好的支撑 AutoML,使其更好更快的生成结果。而好的 AutoML 则能够使人工智能系统更加完备,更方便使用。
智能时代,系统为先
周礼栋博士首先告诉我们:
人工智能如果没有系统的话,就只是一个海市蜃楼——看上去很美,但一点都不真实
。
他认为,系统就是把复杂的东西变得有序易用。而在计算机领域,系统的重要性是不言而喻的, 在整个计算机发展的过程当中,我们感受到的每一次大的突破,背后实际上都有很多计算机系统的理论和设计作为推动力。
周博士为我们分析了每一个时代下,系统的重要性:
-
互联网时代,有很多非常新的系统出现在我们的生活中,其中最有代表性的一个系统就是搜索引擎。大家很多人都用搜索引擎搜索网上的信息,而搜索引擎背后就有很多系统领域的技术、理论。其中一个典型的系统理论就是分布式系统理论。
-
在大数据或者说大家都熟知的云计算时代,云计算的系统就是非常典型的系统。现在我们看到很多公司都在提供云计算的服务。这里就用到了一些新的计算机系统的技术,其中有虚拟机技术、容错技术等,因为这些技术才使得这样的服务和系统成为了可能。
-
如今的人工智能时代,我们看到越来越多深度学习在计算机视觉、语音识别、自然语言等领域都取得了突破,这就对系统产生了更大的需求。我们研究开发了很多大规模深度学习的平台,这其中也依托了最近在系统方面的进展和研究成果,包括怎么利用异构的硬件高效地执行这些深度学习的任务,也包括怎么进行高性能的并行计算。这些使得深度学习,特别是非常有深度的模型的处理成为可能。
周博士说:“我们还可以设想,
未来量子计算将成为主流的技术
。但是我们也可以看到,
现在在系统方面的发展还没有到能够让它付诸实用的阶段
。虽然理论上很成熟了,但若要变成现实,还需要在系统方面进行很多创新、研究、实践,才能促成这一步大的变革。”
深度学习的瓶颈
在演讲中,周博士提到了深度学习目前已经取得进一步的发展,但还是会遇到一些瓶颈,而且很多瓶颈还是产生在系统方面。他说:“现在,即便我们有很多不同的硬件加速,有很多不同的模型,我们能怎么解决把这个模型非常高效地映射到相应的硬件上,并且有不同定制的优化呢?整个深度学习领域里面的工作目前其实都是人工去做的,而不是用系统化的方法去完成的。”
产业智能官:见下图
此外,进行深度学习模型训练的时候,开发者们一般使用 GPU 来进行加速,当训练样本只有百万级别的时候,单卡 GPU 通常就能满足我们的需求,但是当训练样本量达到上千万、上亿级别之后,单卡训练的耗时会很长,所以这个时候通常需要采用多机多卡进行加速。在这种情况或者一些更复杂的情况下,我们就需要很多系统方面的设计和考虑。人工智能的实践者不用再担心是不是需要自己架一个 GPU 集群才可以做人工智能的事情。因为这是系统应该完成的事情,周博士说:“我们应该把这些事情都做了,那么人工智能方面的研究者就能被解放出来专注研究人工智能的问题了。”
人工智能领域的门槛非常高,所以人工智能从业者的身价也非常高。这也是因为系统层面的很多工作还不够深入
。周博士表示,他们推进自己的工作,就希望能够把这个门槛降低,真正做到“
人工智能普及化
”。这将是非常可行、且必行的下一步工作。
微软的智能系统
周博士认为:系统最关键的创新,就是把抽象实现的非常完美。用户其实“看不到”系统,大家谈起来,似乎看到的都是视觉等上层的突破,永远看不到下面底层的进步。所以我们一直说,系统的最高境界就是完全不可见的,是隐形的。
他告诉我们:微软一直认为,
未来,整个世界就是一台计算机
。现实世界也好,虚拟世界也罢,所有这些部分都将连接在一起。
周博士说:“微软亚洲研究院对系统这个领域的理解是:首先,
系统是一个跨领域、有广度的研究
,我们需要对从底层的硬件一直到上层的应用,包括人工智能这样新的应用,都有非常广博的了解,这样才能够设计出适合应用的系统。其次,编译器原理、编译优化、数据库系统这些领域,我们也都需要有深入了解,这样才能够通过合理的系统设计充分利用硬件的能力,也就是说,
系统方面的研究也一定要有深度
,这也是非常重要的。”
据介绍,微软亚洲研究院系统领域的研究成果在现实的商业场景中已经有了广泛的应用,并产生了实际的商业效能,例如:
-
GraM 分布式并行图处理引擎
,能够在内存里面通过集群处理具有超过 10 亿条边的图;
-
Apollo 大数据任务调度系统
,可以直接部署在
10 万台机器
上,每天能够调度
几百万条的任务
,用来支持搜索引擎、广告等部门的日常业务;
-
StreamScope 分布式流数据处理平台,能够实时处理数十亿的广告信息
;
-
KV-Direct Key/Value 系统,可处理每秒 12 亿次以上的操作,相比同类最前沿的研究系统有至少一个数量级的提升
。虽然这个系统还没有得到部署,但它是微软目前研究的最前沿的一个代表,发表在计算机系统的顶级会议 SOSP 2017。这些只是冰山一角,据说微软在智能系统方面的探索远不止于此,智能时代的微软似乎拥有着更多的可能性。
智能系统的未来
最后,周博士表达了他个人对智能系统发展趋势的一些看法:
首先,现在很多深度学习的框架,将来都将互通统一
。其实数据库就是一个很好的例子——很久以前有各种各样的数据库,但最后大家发明了所谓的以 Relational algebra(关系代数)为基础的数据库,让所有数据库模型都成为一种统一的模型。在人工智能方面,这种互通的统一性,从系统角度来说也是肯定会发生的一件事情。
其次,系统的能力会越来越强,会有无界的资源
。整个世界就是一台计算机,所以我们最后希望能够达到的目标就是,在资源无界的环境里,你所使用的资源,无论是来自于计算中心还是来自于自己的计算机,甚至是来自于一个不知道是什么的地方,都会被系统很好地隐藏起来。你只要把事情做好,而不用关心资源是从哪里来的。
最后,也是需要再强调的一点,在系统研究里最关键的创新在于要提出一种更简约的抽象,并且用全新的工具和平台来支持这个抽象,从而让大家各方面的工作效率得到提升。
结 尾
不论是 AutoML 技术平台,还是智能系统,科技公司为了推进人工智能普及化、降低开发门槛都在不断地努力和尝试,相信普通用户很快就能享受到这些努力的成果。就像周礼栋博士所说:系统的最高境界是无形的,我们私自将这句话的范围扩大了一些:
技术的最高境界是无形的,好的技术就是这样在潜移默化中改变了我们的生活,虽然我们没有感觉,但是它的确发生了
。
原创:
AI前线小组 译
AI前线
AI 前线导读:
自动化机器学习就像是一个新生儿呱呱坠地,它能帮助我们创建更好用的模型和更容易使用的 API。今天,我们来讲一讲 AutoKeras——一个开源的,基于 Keras 的新型 AutoML 库。有人将它称为谷歌 AutoML 的“杀手”,真是这样吗?
在开始之前,先来看看 Matthew Mayo 关于 AutoML 的一段话:
AutoML 不是自动化数据科学。虽然毫无疑问会有所重叠,但机器学习只是数据科学工具包中的众多工具之一,而且它不是所有数据科学任务不可或缺的因素。例如,在关于预测的数据科学任务中,机器学习将是一个有用的部分;但是,机器学习可能根本不会参与到描述性分析任务中去。
那么,什么是自动化机器学习呢?简单来说就是一种自动化(https://www.automl.org/automl/ )任务的方法:
-
预处理并清理数据。
-
选择并构建适当的功能。
-
选择合适的模型系列。
-
优化模型超参数。
-
后处理机器学习模型。
-
批判性地分析所获得的结果
。
现在我们已经明确了什么是 AutoML,那什么是 Keras 呢?
Keras 是一个用 Python 编写的高级神经网络 API,能够在 TensorFlow、CNTK 或 Theano 之上运行。它的意义在于可以实现快速实验。而能够以最小的延迟把想法变成结果是顺利进行研究的关键。
FrançoisChollet 创建的这个工具,是让大众轻松学习深度学习的第一步。
虽然 TensorFlow 的 Python API 并不那么难,但是对很多人来说用 Keras 入门深度学习更加容易。值得注意的是,Keras 现在已经正式成为 Tensorflow 的一部分了:
https://www.tensorflow.org/api_docs/python/tf/contrib/keras
好了,现在我们知道什么是 Keras 和 AutoML,接下来是把它们结合起来。
AutoKeras 是一个用于自动化机器学习的开源软件库,提供自动搜索深度学习模型的架构和超参数的功能。
凭什么说 AutoKeras 比 AutoML 更好?
在机器学习自动化方面,谷歌的 AutoML 无疑地位稳固。
AutoML 基于谷歌最新的图像识别技术神经架构搜索( Neural Architecture Search ,NAS)。NAS 是一种算法,会根据特定数据集搜索最佳神经网络架构,以在该数据集上执行特定任务。
AutoML 是一套机器学习工具,可以轻松训练高性能深度网络,而无需用户掌握深度学习或 AI 知识,所有你需要的只是标记数据!
AutoML 完全改变了整个机器学习格局,因为许多应用程序不再需要专业技能和知识了,许多公司也只需要深度网络来完成简单的任务,如图像分类。这样,他们就不需要雇用 5 名机器学习博士来做这件事,而只需要能够处理和组织数据的人就行。
但是,AutoML 不是一剂万能的良方,不能让所有公司和个人轻轻松松做 AI,因为它是收费的。据悉,使用 Google 的 AutoML 进行计算机视觉,每小时需要花费 20 美元,在付费试用之前,我们不能确定结果的精确度会比自己手动设计的网络更好。但是,现在的 AI 社区开源已经成为潮流和趋势,这正是 AutoKeras 略胜 AutoML 一筹的地方——开源。
另一方面,AutoKeras 基于非常易于使用的深度学习数据库 Keras,使用 ENAS 的方法。ENAS 是 NAS 的最新版本,因此让 AutoKeras 具有高效、安装简单、参数可调、易修改等特点。
原创:
AI前线小组 译
AI前线
AI 前线导读:
尽管机器学习在过去十年中取得了巨大进步,但构建生产就绪的机器学习系统仍然很难。三年前,我们开始着手为 Salesforce 平台搭建机器学习系统,也因此了解到构建企业级机器学习系统是有多么困难。为了解决我们遇到的问题,我们构建了 TransmogrifAI,一种自动化的端到端结构数据机器学习库, 并在近日将它开源了。
如今,大多数自动化机器学习解决方案要么只专注于整个机器学习工作流程的一小部分,要么专为图像、语音和语言的同质非结构化数据而构建。但我们更需要一种能够为大规模异构结构化数据快速生成模型的解决方案,TransmogrifAI 就是这样一个解决方案。如果说前不久美国德州农工大学开源的 AutoKeras 相比谷歌 AutoML 主要赢在开源,那么 TransmogrifAI 的优势则更加明显,或许它才是真正的 AutoML“杀手”。
在为消费级产品构建机器学习时,数据科学家通常会关注一些易于理解的用例和数据集。然而,企业的数据和用例存在多样性,因此为企业产品构建机器学习成为一种完全不同的挑战。在 Salesforce,我们的客户希望能够预测一系列结果——从客户流失、销售预测和潜在客户转换,到电子邮件营销、网购、设备故障、延迟付款等等。对于企业客户而言,保护好数据不让它们与其他组织或竞争对手共享是至关重要的。这意味着我们必须为特定的用户需求构建特定的机器学习模型。我们能够构建全局模型,但这样做是毫无意义的,因为每个客户的数据都是唯一的,具有不同的模式、不同的形状和不同的业务流程引入的不同偏差。为了让机器学习能够真正为我们的客户带来价值,我们必须构建和部署数千个机器学习模型,它们都是针对每个客户的不同用例并基于每个客户自己的数据训练得出的。
要在不聘请大量数据科学家的情况下实现这一目标,唯一方法就是进行自动化。如今,大多数自动化 ML 解决方案要么只专注于整个机器学习工作流程的一小部分,要么专为图像、语音和语言的同质非结构化数据而构建。但我们需要一种能够为大规模异构结构化数据快速生成模型的解决方案。在词典中,Transmogrification 的意思是“以令人惊讶或神奇的方式进行转换”,这也正是 TransmogrifAI 为 Salesforce 所做的事情——让数据科学团队能够将客户数据转换为有意义的预测。如今,整个平台已经部署了数千个特定的机器学习模型,每天为超过 30 亿次预测提供支持。