深度学习对计算机科学而言,是有相当深远的影响的。它让尖端科技研究、开发数千万人日常使用的产品成为可能。Google
Research宣布推出第二代机器学习系统TensorFlow,针对先前的DistBelief的短板有了各方面的加强,更重要的是,
它是开源的,任何人都可以用。

据国外媒体报道,谷歌于周一发布全新人工智能系统TensorFlow。该系统可被用于语音识别或照片识别等多项机器深度学习领域,主要针对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。

作者 | 郑泽宇

图片 1

更重要的是,谷歌表示,TensorFlow将完全开源,任何人都可以用。所以,这其中有几个意思?

AI前线出品| ID:ai-front

谷歌内部深度学习结构DistBelief开发于2011年,它让谷歌能够针对数据中心的数千核心,构建更为大型的神经网络和规模训练,典型的应用像是提升谷歌应用中的语音识别能力,以及为谷歌搜索加入图片搜索功能。

关于TensorFlow的前世今生

2017年2月16日,Google正式对外发布Google TensorFlow
1.0版本,并保证本次的发布版本API接口完全满足生产环境稳定性要求。这是TensorFlow的一个重要里程碑,标志着它可以正式在生产环境放心使用。在国内,从InfoQ的判断来看,TensorFlow仍处于创新传播曲线的创新者使用阶段,大部分人对于TensorFlow还缺乏了解,社区也缺少帮助落地和使用的中文资料。InfoQ期望通过深入浅出TensorFlow系列文章能够推动Tensorflow在国内的发展。欢迎加入QQ群(群号:183248479)深入讨论和交流。

不过DistBelief存在一些限制,比如说较难设置,而且和谷歌内部接触设施紧密结合——这就没法很好地分享研究代码了。

TensorFlow是谷歌研发的第二代人工智能学习系统,而第一代的DistBelief比这个要早好多年。

本文是整个系列的第一篇文章,将会介绍深度学习的发展历史以及深度学习目前成熟的应用,同时也会介绍目前主流的深度学习工具,以及TensorFlow相比于其他工具的优势。

所 以Google
Research宣布推出开源的TensorFlow,这是谷歌的第二代机器学习系统,对于DistBelief的短板做了补足。TensorFlow灵
活性佳、可移动、易于使用,而且是完全开源的。基于DistBelief的速度、可扩展性和为产品做准备的特性,TensorFlow做得更为出色。按照
谷歌所说,在某些基准测试中,TensorFlow的表现比DistBelief快了2倍。

DistBelief诞生于2011年,它是谷歌推出的第一代内部深度学习结构,能够帮助谷歌利用自家的数据中心构建大型的神经网络,主要应用于人工智能的开发,比如语音识别、图片搜索等等。

从计算机发明之初,人们就希望它能够帮助甚至代替人类完成重复性劳作。利用巨大的存储空间和超高的运算速度,计算机已经可以非常轻易地完成一些对于人类非常困难,但对计算机相对简单的问题。比如统计一本书中不同单词出现的次数,存储一个图书馆中所有的藏书或是计算非常复杂的数学公式都可以轻松通过计算机解决。然而,一些人类通过直觉可以很快解决的问题,目前却很难通过计算机解决。人工智能领域需要解决的问题就是让计算机能像人类一样,甚至超越人类完成类似图像识别、语音识别等问题。

TensorFlow内建深度学习的扩展支持,
不止于此——任何能够用计算流图形来表达的计算,都可以使用TensorFlow。任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分
化(auto-differentiation)。通过灵活的Python接口,要在TensorFlow中表达想法也会很容易。

但是,DistBelief本身存在一些技术上的短板,对谷歌的人工智能发展仍有一些限制。如谷歌高级研究员JeffDean和技术主管RajatMonga表示,DistBelief关注的重心是神经网络,而且与谷歌内部的基础架构联系紧密。也就是说,该系统“几乎不可能与外部共享研究代码”,而且使用起来比较难设置。

计算机要像人类一样完成更多智能的工作需要够掌握人类的经验。比如我们需要判断一封邮件是否为垃圾邮件,会综合考虑邮件发出的地址、邮件的标题、邮件的内容以及邮件收件人的长度,等等。这是我们受到无数垃圾邮件骚扰之后总结出来的经验。这个经验很难以固定的方式表达出来,而且不同人对垃圾邮件的判断也会不一样。如何让计算机可以跟人类一样从历史的经验中获取新的知识呢?这就是机器学习需要解决的问题。

除了在研究方面,TensorFlow会很有帮助,对于实际的产品也是很有意义的。将思路从桌面GPU训练无缝搬迁到手机中运行。使用谷歌的样本模型架构,就能很快地开始使用机器学习技术——谷歌正计划在TensorFlow之上发布ImageNet计算机视觉模型。

而TensorFlow正是基于第一代DistBelief进行开发的,其命名来源于本身的运行原理,Tensor意味着基于数据流图的计算,TensorFlow即为张量从图象的一端流动到另一端——将复杂的数据结构传输至人工智能神经网中进行分析和处理。

什么是机器学习?

卡内基梅隆大学(Carnegie Mellon University)的Tom Michael
Mitchell教授在1997年出版的书籍Machine
Learning中有对机器学习进行非常专业的定义,这个定义在学术界内被多次引用。在这本书中对机器学习的定义为“如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则我们称这个程序可以从经验中学习”。让我们通过垃圾邮件分类的问题来解释机器学习的定义。在垃圾邮件分类问题中,“一个程序”指的是需要用到的机器学习算法,比如逻辑回归算法;“任务T”是指区分垃圾邮件的任务;“经验E”为已经区分过是否为垃圾邮件的历史邮件,在监督式机器学习问题中,这也被称之为训练数据,也就是说对于机器学习而言,所谓的经验其实就是数据;“效果P”为机器学习算法在区分是否为垃圾邮件任务上的正确率。

在使用逻辑回归算法解决垃圾邮件分类问题时,我们会先从每一封邮件中抽取对分类结果可能有影响的因素,比如说上文提到的发邮件的地址、邮件的标题及收件人的长度,等等。每一个因素被称之为一个特征(feature)。逻辑回归算法可以从训练数据中计算出每个特征和预测结果的相关度。比如在垃圾邮件分类问题中,我们可能会发现如果一个邮件的收件人越多,那么邮件为垃圾邮件的概率也就越高。在对一封未知的邮件做判断时,逻辑回归算法会根据从这封邮件中抽取得到的每一个特征以及这些特征和垃圾邮件的相关度来判断这封邮件是否为垃圾邮件。

在大部分情况下,在训练数据达到一定数量之前,越多的训练数据可以使逻辑回归算法对未知邮件做出的判断越精准。也就是说逻辑回归算法可以根据训练数据(经验E)提高在垃圾邮件分类问题(任务T)上的正确率(效果P)。之所以说在大部分情况下,是因为逻辑回归算法的效果除了依赖于训练数据,也依赖于从数据中提取的特征。假设我们从邮件中抽取的特征只有邮件发送的时间,那么即使有再多的训练数据,逻辑回归算法也无法很好地利用。这是因为邮件发送的时间和邮件是否为垃圾邮件之间的关联不大,而逻辑回归算法无法从数据中习得更好的特征表达。这也是很多传统机器学习算法的一个共同的问题。

更重要的是,TensorFlow是开源的,任何人都可以免费使用。谷歌的深度学习研究人员都在用TensorFlow,未来也将在机器学习产品中继续使用。

相比较之下,作为谷歌第二代人工智能系统,TensorFlow更快、更智能化,也更加灵活,可以更加轻松地应用于谷歌的新产品以及支持技术研究。按某些标准计算,TensorFlow的运行速度相当于DistBelief的3倍。

什么是深度学习?

对许多机器学习问题来说,特征提取不是一件简单的事情。在一些复杂问题上,要通过人工的方式设计有效的特征集合需要很多的时间和精力,有时甚至需要整个领域数十年的研究投入。例如,假设想从很多照片中识别汽车。现在已知的是汽车有轮子,所以希望在图片中抽取“图片中是否出现了轮子”这个特征。但实际上,要从图片的像素中描述一个轮子的模式是非常难的。虽然车轮的形状很简单,但在实际图片中,车轮上可能会有来自车身的阴影、金属车轴的反光,周围物品也可能会部分遮挡车轮。实际图片中各种不确定的因素让我们很难直接抽取这样的特征。

图片 2

图1  传统机器学习和深度学习流程对比

深度学习解决的核心问题之一就是自动地将简单的特征组合成更加复杂的特征,并使用这些组合特征解决问题。深度学习是机器学习的一个分支,它除了可以学习特征和任务之间的关联以外,还能自动从简单特征中提取更加复杂的特征。图1中展示了深度学习和传统机器学习在流程上的差异。如图1所示,深度学习算法可以从数据中学习更加复杂的特征表达,使得最后一步权重学习变得更加简单且有效。在图2中,展示了通过深度学习解决图像分类问题的具体样例。深度学习可以一层一层地将简单特征逐步转化成更加复杂的特征,从而使得不同类别的图像更加可分。比如图2中展示了深度学习算法可以从图像的像素特征中逐渐组合出线条、边、角、简单形状、复杂形状等更加有效的复杂特征。

图片 3

图2  深度学习在图像分类问题上的算法流程样例

转载自:cnbeta.com

此外,TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从电话、单个CPU/GPU到成百上千GPU卡组成的分布式系统。也就是说,任何基于梯度的机器学习算法都能够受益于TensorFlow的自动分化。

人工智能、机器学习和深度学习的关系

总的来说,人工智能、机器学习和深度学习是非常相关的几个领域。图3总结了它们之间的关系。人工智能是一类非常广泛的问题,机器学习是解决这类问题的一个重要手段,深度学习则是机器学习的一个分支。在很多人工智能问题上,深度学习的方法突破了传统机器学习方法的瓶颈,推动了人工智能领域的发展。

图片 4

图3  人工智能、机器学习以及深度学习之间的关系图

图4展示了“deep
learning”(深度学习)这个词在最近十年谷歌搜索的热度趋势。从图中可以看出,从2012年之后,深度学习的热度呈指数上升,到2016年时,深度学习已经成为了谷歌上最热门的搜索词。深度学习这个词并不是最近才创造出来的,它基本就是深层神经网络的代名词。受到人类大脑结构的启发,神经网络的计算模型于1943年首次提出。之后感知机的发明使得神经网络成为真正可以从数据中“学习”的模型。但由于感知机的网络结构过于简单,导致无法解决线性不可分问题。再加上神经网络所需要的计算量太大,当时的计算机无法满足计算需求,使得神经网络的研究进入了第一个寒冬。

图片 5

图4 “deep learning”最近十年在谷歌搜索的热度趋势。

到20世纪80年代,深层神经网络和反向传播算法的提出很好地解决了这些问题,让神经网络进入第二个快速发展期。不过,在这一时期中,以支持向量机为主的传统机器学习算法也在飞速发展。在90年代中期,在很多机器学习任务上,传统机器学习算法超越了神经网络的精确度,使得神经网络领域再次进入寒冬。直到2012年前后,随着云计算和海量数据的普及,神经网络以“深度学习”的名字再次进入大家的视野。2012年,深度学习算法AlexNet赢得图像分类比赛ILSVRC(ImageNet
Large Scale Visual Recognition
Challenge)冠军,深度学习从此开始受到学术界广泛的关注。

谷歌为什么敢开源?

深度学习的应用

图5展示了历年ILSVRC比赛的情况,从图中可以看到,在深度学习被使用之前,传统计算机视觉的方法在ImageNet数据集上最低的Top5错误率为26%。从2010年到2011年,基于传统机器学习的算法并没有带来正确率的大幅提升。在2012年时,Geoffrey
Everest
Hinton教授的研究小组利用深度学习技术将ImageNet图像分类的错误率大幅下降到了16%。而且,从2012年到2015年间,通过对深度学习算法的不断研究,ImageNet图像分类的错误率以每年4%的速度递减。这说明深度学习完全打破了传统机器学习算法在图像分类上的瓶颈,让图像分类问题得到了更好的解决。如图5所示,到2015年时,深度学习算法的错误率为4%,已经成功超越了人工标注的错误率(5%),实现了计算机视觉研究领域的一个突破。

图片 6

图5  历年ILSVRC图像分类比赛最佳算法的错误率

在技术革新的同时,工业界也将图像分类、物体识别应用于各种产品中了。在谷歌,图像分类、物体识别技术已经被广泛应用于谷歌无人驾驶车、YouTube、谷歌地图、谷歌图像搜索等产品中。谷歌通过图像处理技术可以归纳出图片中的主要内容并实现以图搜图的功能。这些技术在国内的百度、阿里、腾讯等科技公司也已经得到了广泛的应用。

在物体识别问题中,人脸识别是一类应用非常广泛的技术。它既可以应用于娱乐行业,也可以应用于安防、风控行业。在娱乐行业中,基于人脸识别的相机自动对焦、自动美颜基本已经成为每一款自拍软件的必备功能。在安防、风控领域,人脸识别应用更是大大提高了工作效率并节省了人力成本。比如在互联网金融行业,为了控制贷款风险,在用户注册或者贷款发放时需要验证本人信息。个人信息验证中一个很重要的步骤是验证用户提供的证件和用户是同一个人。通过人脸识别技术,这个过程可以被更加高效地实现。

深度学习在语音识别领域取得的成绩也是突破性的。2009年深度学习的概念被引入语音识别领域,并对该领域产生了巨大的影响。在短短几年时间内,深度学习的方法在TIMIT数据集上将基于传统的混合高斯模型(gaussian
mixture
model,GMM)的错误率从21.7%降低到了使用深度学习模型的17.9%。如此大的提高幅度很快引起了学术界和工业界的广泛关注。从2010年到2014年间,在语音识别领域的两大学术会议IEEE-ICASSP和Interspeech上,深度学习的文章呈现出逐年递增的趋势。在工业界,包括谷歌、苹果、微软、IBM、百度等在内的国内外大型IT公司提供的语音相关产品,比如谷歌的Google
Now,苹果的Siri、微软的Xbox和Skype等,都是基于深度学习算法。

深度学习在自然语言处理领域的应用也同样广泛。在过去的几年中,深度学习已经在语言模型(language
modeling)、机器翻译、词性标注(part-of-speech
tagging)、实体识别(named entity
recognition,NER)、情感分析(sentiment
analysis)、广告推荐以及搜索排序等问题上取得了突出成就。在机器翻译问题上,根据谷歌的实验结果,在主要的语言对上,使用深度学习可以将机器翻译算法的质量提高55%到85%。表1对比了不同算法翻译同一句话的结果。从表中可以直观地看到深度学习算法带来翻译质量的提高。在2016年9月,谷歌正式上线了基于深度学习的中译英软件。现在在谷歌翻译产品中,所有从中文到英文的翻译请求都是由基于深度学习的翻译算法完成的。

表1  不同翻译算法的翻译效果对比表

图片 7

鉴于TensorFlow系统的强大功能,加上谷歌正计划在TensorFlow的基础上发布ImageNet计算机视觉模型,理论上使用谷歌的样本模型架构的话,就能很快地开始使用机器学习技术,因此,它可谓谷歌在计算机智能应用方面的杀手锏。不过,谷歌公司表示,开源该系统并不会危及公司的战略,而且还是会让公司保持优势。为什么呢?

TensorFlow:来自Google的深度学习框架

要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤。

TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法,但它的应用也不限于深度学习。

TensorFlow是由Jeff
Dean领头的谷歌大脑团队基于谷歌内部第一代深度学习系统DistBelief改进而来的通用计算框架。DistBelief是谷歌2011年开发的内部深度学习工具,这个工具在谷歌内部已经获得了巨大的成功。

基于DistBelief的ImageNet图像分类系统Inception模型赢得了ImageNet2014年的比赛(ILSVRC)。通过DistBelief,谷歌在海量的非标注YouTube视屏中习得了“猫”的概念,并在谷歌图片中开创了图片搜索的功能。使用DistBelief训练的语音识别模型成功将语音识别的错误率降低了25%。在一次BBC采访中,当时的谷歌首席执行官Eric
Schmidt表示这个提高比率相当于之前十年的总和。

虽然DistBelief已经被谷歌内部很多产品所使用,但是DistBelief过于依赖谷歌内部的系统架构,很难对外开源。为了将这样一个在谷歌内部已经获得了巨大成功的系统开源,谷歌大脑团队对DistBelief进行了改进,并于2015年11月正式公布了基于Apache
2.0开源协议的计算框架TensorFlow。相比DistBelief,TensorFlow的计算模型更加通用、计算速度更快、支持的计算平台更多、支持的深度学习算法更广而且系统的稳定性也更高。关于TensorFlow平台本身的技术细节可以参考谷歌的论文TensorFlow:
Large-Scale Machine Learning on Heterogeneous Distributed Systems。

如今在谷歌内部,TensorFlow已经得到了广泛的应用。在2015年10月26日,谷歌正式宣布通过TensorFlow实现的排序系统RankBrain上线。相比一些传统的排序算法,使用RankBrain的排序结果更能满足用户需求。在2015年彭博(Bloomberg)的报道中,谷歌透露了在谷歌上千种排序算法中,RankBrain是第三重要的排序算法。基于TensorFlow的系统RankBrain能在谷歌的核心网页搜索业务中占据如此重要的地位,可见TensorFlow在谷歌内部的重要性。包括网页搜索在内,TensorFlow已经被成功应用到了谷歌的各款产品之中。如今,在谷歌的语音搜索、广告、电商、图片、街景图、翻译、YouTube等众多产品之中都可以看到基于TensorFlow的系统。在经过半年的尝试和思考之后,谷歌的DeepMind团队也正式宣布其之后所有的研究都将使用TensorFlow作为实现深度学习算法的工具。

除了在谷歌内部大规模使用之外,TensorFlow也受到了工业界和学术界的广泛关注。在Google
I/O 2016的大会上,Jeff
Dean提到已经有1500多个GitHub的代码库中提到了TensorFlow,而只有5个是谷歌官方提供的。如今,包括优步(Uber)、Snapchat、Twitter、京东、小米等国内外科技公司也纷纷加入了使用TensorFlow的行列。正如谷歌在TensorFlow开源原因中所提到的一样,TensorFlow正在建立一个标准,使得学术界可以更方便地交流学术研究成果,工业界可以更快地将机器学习应用于生产之中。

通过谷歌最新公布的白皮书TensorFlow:Large-ScaleMachineLearningonHeterogeneousSystems可见,虽然该系统转为开源,但这次开源的TensorFlow是单机实现,其最有价值的分布式数据流实现,并没有开源。也就是说,谷歌此举还是留下了一些能保持自身独特性的东西,比如巨量的数据、可以运行该软件的计算机网络,以及一个庞大的可以调整算法的人工智能专家团队。

其他已开源的深度学习工具

除了TensorFlow,目前还有一些主流的深度学习开源工具。笔者认为,不同的深度学习工具都在发展之中,比较当前的性能、功能固然是选择工具的一种方法,但更加重要的是比较不同工具的发展趋势。深度学习本身就是一个处于蓬勃发展阶段的领域,所以对深度学习工具的选择,笔者认为应该更加看重工具在开源社区的活跃程度。只有社区活跃度更高的工具,才有可能跟上深度学习本身的发展速度,从而在未来不会面临被淘汰的风险。

图片 8

(a)不同深度学习工具社区流行度指标比较

图片 9

(b)同深度学习工具社区参与度指标比较

图6 
不同深度学习工具在GitHub上活跃程度对比图,图中数据获取的时间为2016年11月17日

图6对比了不同深度学习工具在GitHub上活跃程度的一些指标。图6(a)中比较了不同工具在GitHub上受关注的程度。从图中可以看出,无论是在获得的星数(star)还是在仓库被复制的次数上,TensorFlow都要远远超过其他的深度学习工具。如果说图6(a)只能代表不同深度学习工具在社区受关注程度,那么图6(b)对比了不同深度学习工具社区参与度。图6(b)中展示了不同深度学习工具在GitHub上最近一个月的活跃讨论贴和代码提交请求数量。活跃讨论帖越多,可以说明真正使用这个工具的人也就越多;提交代码请求数量越多,可以说明参与到开发这个工具的人也就越多。从图6(b)中可以看出,无论从哪个指标,TensorFlow都要远远超过其他深度学习工具。大量的活跃开发者再加上谷歌的全力支持,笔者相信TensorFlow在未来将有更大的潜力。

本文内容来自作者图书作品《TensorFlow:实战Google深度学习框架》,

购买链接:

作者介绍

郑泽宇,才云首席大数据科学家,前谷歌高级工程师。从 2013
年加入谷歌至今,郑泽宇作为主要技术人员参与并领导了多个大数据项目,拥有丰富机器学习、数据挖掘工业界及科研项目经验。2014
年,他提出产品聚类项目用于衔接谷歌购物和谷歌知识图谱(Knowledge
Graph)数据,使得知识卡片形式的广告逐步取代传统的产品列表广告,开启了谷歌购物广告在搜索页面投递的新纪元。他于2013
年 5 月获得美国 Carnegie Mellon University(CMU)大学计算机硕士学位,
期间在顶级国际学术会议上发表数篇学术论文,并获得西贝尔奖学金。


-全文完-

关注人工智能的落地实践,与企业一起探寻 AI 的边界,AICon
全球人工智能技术大会火热售票中,6 折倒计时一周抢票,详情点击:

https://aicon.geekbang.org/apply?utm_source=wechat&utm_medium=ai-front

《深入浅出TensorFlow》迷你书现已发布,关注公众号“AI前线”,ID:ai-front,回复关键字:TF,获取下载链接!

图片 10

谷歌开源的做法,其实和Facebook开源人工智能研究的举措相类似。深度学习系统或软件不是一装上就能用的,它在发布前期需要通过使用者数据进行很多测试、调整,顾名思义就是一个学习的过程。Facebook开放人工智能研究就是因为缺乏自己的移动操作系统和通信渠道,没有什么途径来检测产品,唯有通过与其他公司组织合作,来完善创新。

同样,如果谷歌没有工程师来为其进行数百万个参数的调整,那么谷歌这次放出的深度学习算法的用途就极为有限。专家表示,调整这些参数需要不断试错,初次接触的人要花费很长时间。谷歌也需要通过放出这套系统吸引更多研究人员,从而为其找到新的用武之地,并进行改进。

据报道,谷歌2011年展开了一个试图训练神经网络的GoogleBrain项目。GoogleBrain在当时拥有1.6万个多个微处理器,创建了一个有数十亿连接的神经网络,在这个项目研究中,该网络结果观看了千万数量级的YouTube图像,并从图像中自主辨识出了“猫”。研究人员表示:“在训练中,我们从未告诉它‘这是一只猫’。基本上可以说,它发明了猫这个概念。”

TensorFlow的未来

2004年,Google创始人LarryPage和SergeyBrin曾预言道:“计算机将会被植入人类大脑,搜索会成为一种自主进行的行为。”11年之后的今天,Google没有将搜索功能植入大脑,但该公司将搜索机器变成一个人工智能大脑。“这是一种能够让研究人员的创意直接转化成产品的工具,以后研究人员或者就无须再为什么新想法重新编写代码了。”

这是谷歌未来的愿景,而TensorFlow就是通向这个未来的里程碑之一。开源TensorFlow能够加速谷歌在人工智能技术的部署,帮助该公司在人工智能发展日益重要的未来抢占更多的主导权。

不过当然,开源就存在着多方合作的可能,数据的资源共享、技术研究的交流碰撞……谷歌的发展同样也会带动业界的技术整体发展。多年以前人们就知道开源的重要性,正如开源硬件公司ArduinoCEOMusto所言:“我们需要开源,我们需要社群的智慧。”