APP下载

TensorFlow中国研发负责人李双峰:TensorFlow从研究到实践

消息来源:baojiabao.com 作者: 发布时间:2024-04-25

报价宝综合消息TensorFlow中国研发负责人李双峰:TensorFlow从研究到实践

主讲人:李双峰 | TensorFlow中国研发负责人

整理:俞晶翔 张康

量子位 出品 | 公众号 QbitAI

5月23日周三晚,北京大学“人工智能前沿与产业趋势”第十二讲,本期TensorFlow中国研发负责人李双峰,分享了深度学习的发展与应用、TensorFlow从研究到实践的相关内容。

本期内容翔实、干货满满,量子位作为合作媒体,为大家带来详细课程笔记一份。

课程导师:雷鸣,天使投资人,百度创始七剑客之一,酷我音乐创始人,北京大学信科人工智能创新中心主任,2000年获得北京大学计算机硕士学位,2005年获得斯坦福商学院MBA学位,同时也是“千人计划”特聘专家。

主讲嘉宾:李双峰,TensorFlow中国研发负责人、Google 搜索架构技术总监。Google 中国最早期的工程师之一,目前在 Google 领导了涉及人工智能、搜索架构和移动应用领域的多个项目。他负责 TensorFlow 中国研发团队,并总体推动 TensorFlow 在中国的发展。

用深度学习解决最具挑战性的问题

深度学习带来机器学习的革命。我们看到“深度学习”这个词在搜索中的热度近年来快速提升。

在arXiv上的机器学习论文急剧增长,增长速度居然赶上了摩尔定律。

我们先看一个图片分类的例子:给一张图片,识别这张图是一只猫还是一条狗。它是多层的神经网络结构,里面有很多的参数,经过很多的训练之后,能识别出这张图是一只猫。

深度学习不仅仅能够解决图像识别的问题,它拥有非常强大的学习能力。把深度神经网络比喻成一个函数,这个函数非常强大,可以处理多种输入和输出,而深度学习算法可以自动学习这个函数。

如果输入一张照片,输出一个图像的标签,比如说是“狮子”,这是一个图片分类的问题。

如果输入是一段音频,输出是一段文字,这就是语音识别的问题。

如果输入是英文,输出是法文,这就是机器翻译的问题。

更进一步:输入一张图片,输出文字的描述,这就是看图说话的问题。

用相似的简单方法,解决多个问题,这是产业界特别喜欢的东西,因为他们大大减少了工程方面的复杂度。

深度学习并不是全新的东西,但为什么在过去的几年当中带来了极大的突破?

我们看到两条线:一条是基于深度神经网络的解决方案,一条是基于其他机器学习方法。在八九十年代之前,神经网络就已经出现了,不过那个时候受限于计算能力,模型的规模比较小,所以它的表现不如一些经过优化过的其他机器学习方法,这样就很难解决真实的大规模问题。

随着计算能力的增加,可以看到深度学习解决问题的精度,已经超过了其他机器学习方法。

以图片识别问题为例,在2011年的时候,它的错误率是26%,而人只有5%,所以这个时候离实用有非常大的距离。到2016年为止,它的错误率已经减少到了3%左右,深度学习在该领域呈现出非常惊人的能力,这就是为什么深度学习在图像识别领域吸引了产业界的大量关注。

我们看看深度学习如何帮助解决工程界的重大挑战。

2008年美国工程院发布了21世纪的一系列重大挑战,其中包括:便宜的太阳能,药物工程优化,虚拟现实,和个性化学习等等。

我们也许还可以加上两个:跨语言的自由交流,更通用的人工智能系统。回到2008年,机器翻译的提升遇到了瓶颈,而大家也觉得AI要战胜围棋高手,要需要很多年。

回头来看,随着深度学习的发展,很多领域都有一些重大突破,包括健康医疗、语言交流方面等方面。下面我们仔细看看深度学习如何推动解决这些重大挑战。

提高城市基础设施

交通是一个面临重大挑战的问题。Google的母公司Alphabet旗下有一个公司叫Waymo,专注于自动驾驶。他们已经做了大量的真实道路测试,以及模拟环境的测试。他们的车能够识别路上各种移动的对象,以及交通灯。

我们发现自动驾驶离真实应用越来越近,有了无人驾驶之后,城市基础设施会有一个巨大的突破。

跨语言的交流和信息流动

过去十年当中,Google在机器翻译领域的工作在业界领先,但是之前都是基于短语统计的方式 ,质量提升遇到了瓶颈。

过去两年,Google 推出了基于神经网络的机器翻译技术(GNMT),大大提高了翻译质量。在多个语言的质量评估上,平均质量提高50%到80%以上,这超过了过去十年的工作。在若干语言的翻译上,机器翻译已经接近人类水平。这是促进人类沟通和交流的一个重要突破。

更重要的是,Google不仅把该技术的论文发表,而且开放了基于TensorFlow的源代码。开发者使用这些代码非常简单,一两百行代码就可以做一些类似于GNMT的基于神经网络的机器翻译系统。

这让一些小公司也有能力做出不错的机器翻译系统。比如欧洲某个公司,之前是传统翻译公司,但是拥有很多翻译数据,基于这些开源系统,很快就能做出很不错的结果。

基于神经网络的机器翻译还有一些非常有意思的特性,比如说,当我们把英文翻译成日文,然后再翻译回英文的时候,传统的方式可能在翻译回英文这个阶段会出现措辞与原文不太一样,但基于神经网络的翻译能保证部分还原性。

另外一个意义是在工程上。从工程的角度来说,希望用尽量简单的方案,去解决复杂问题;而不是为每一种语言对的翻译都设计不同的系统和模型。从这个角度来说,基于神经网络机器翻译能够带来明显优势。

举个例子,假设有很多训练的数据,他们是一对一对的,从英文到韩文有对应,我们适当地做了一些编码,也就是翻译之前把语言标注了。那么,同样一个模型在解决不同语言之间的翻译都会起作用,这样语言之间可以通过统一的简单方式来实现。

特别是对Google来说这很有价值,因为我们的目标是一百多种语言对之间相互翻译,这是一个非常复杂的问题,对工程人员来说非常麻烦。用同一个基于神经网络的模型去翻译不同的语言,使得在工程上工作量得到了大大简化。

另外:假设我们学习到英文到韩文翻译的同时,也学习英文到日文之间的翻译,那么基于神经网络的翻译模型,就能够自动学习到从日文到韩文之间的翻译,这也证明神经网络翻译具有更强的学习能力。

AI与医疗

医疗是Google AI研究投入的一个重要方向,因为我们认为医疗领域是AI应用一个非常重要的场景,也对造福人类具有深远意义。

比如AI检测眼科疾病:左边是正常的视网膜照片,右边是糖尿病可能导致的视网膜病变照片,它可能会导致糖尿病患者失明。如果我们能够尽早发现这些病变,就可以使用较为廉价的药物进行治疗。

我们在一个权威的美国医学杂志上发表的研究表明:AI识别这些有病变的视网膜照片的精度,水平超过了眼科医生的平均水平。

图像识别是一类问题,包括刚才提到的视网膜照片监测问题,还有X光拍片的识别。

更难的问题是能不能基于已知的个人医疗信息,对整个信息做预测,比如预测未来需要住几天院,需要吃什么药。这样诊断的是比较难的问题。Google已经与斯坦福医学院等好几个学校的医学机构合作,开展了相关工作,初步取得不错的预测效果。

科学的发展

下一步看看科学的发展。

工具在人类历史的发展中扮演重要角色,比如区分石器时代和青铜时代的重要依据是人类使用的工具。今天科学研究会做很多实验,大家也制作了很多实验仪器。

不过,有没有一些工具,能够帮助加速科学发现的进程呢?

这是我们推出TensorFlow这样的开源机器学习平台的重要原因,希望它能够极大地促进深度学习发展,促进用深度学习技术解决科学上的一些重大发现。

TensorFlow的目标是成为人人可用的机器学习平台,能够帮助机器学习的研究者、开发者,去表达自己的想法,去进行探索性研究,去建立自己的系统,去实现基于具体场景的AI应用和产品。有了通用的平台,才能更好的促进行业交流,推动行业创新。Google内部大规模使用TensorFlow来做研究和产品,而业界可以基于Google的实践和经验。

大概在2015年底我们开源了TensorFlow,在过去两年当中它的发展速度非常快,基本上现在一两个月就有新的版本发布。比如,我们增加了更多的平台能力、更多的工具,以及更简单的API。

到今天为止,全球有超过1100万的TensorFlow下载量,这也说明了全球开发者的热情。

深度学习有不同的模型,如何更好地训练模型参数,需要不少机器学习的经验,这对于普通公司而言,仍然有不小的挑战。AutoML是一个很重要的话题,它的基本想法是能够更加自动化地做机器学习。Google有一个相关工作,叫做Learning to Learn,目前取得不错的进展。

今天,我们现在做机器学习的解决方案,需要机器学习方面的专家,需要数据,也需要很多的计算。

解决方案 = 机器学习专家 + 数据 + 计算

机器学习专家需要很多时间来培养,我们开始思考,能不能让更多的计算能力来解决人才的缺口问题?那么:

解决方案 = 数据 + 100倍的计算

我们使用强化学习的方式来搜索神经网络结构:以一定概率产生一些模型,训练若干小时,然后对生成的几个模型在测试集上做评估,并利用模型的损失作为强化学习的信号,促进下一次迭代时选择更好的模型。

这张图是通过神经网络搜索找到的模型结构,模型结构看起来很复杂,让人很难以理解,它并没有人类设计的模型那么有层次化,并不直观。不过实际测试的效果却非常好,差不多比目前人类所找到的模型都要好。

机器学习专家在过去的好多年中做了很多研究,手工设计了不同的精巧的模型,这些模型会平衡运算的复杂度以及模型精度。

如果我们追求比较高的精度,那么运算量更大,比如ResNet;如果模型比较简单,比如Google的MobileNet,精度会低一点,但运算量小,很适合用在移动设备上;中间也有一系列计算和精度适中的模型。在这些年的发展过程中,顶尖的机器学习专家一直在基于前人成果不停地做结构优化。

通过AutoML所得到的新模型,比人类的多年研究成果都要好。在同样精度的情况下可以做到计算量更小一点,而在同样的计算量下精度更好。Google通过AutoML学习到的模型也公布了,叫做NASNet。

这是一个鼓舞人心的开局,让我们看到AutoML的巨大前景。

AutoML的工作也为计算带来了更大的挑战。不过计算还有很大的可提升空间,我们可以针对深度学习做一些定制化的优化。

比如传统CPU上的运算讲究精度,而进行深度学习时,我们可以丢弃一些精度要求,让运算更快一些。

另一方面,我们发现神经网络运算主要是矩阵运算,这样就可以设计一些特别的硬件来加速矩阵运算。

比如Google针对深度学习,特别设计了新的硬件TPU。第一代TPU只能做一些推理的工作,第二代就既能推理又能训练,而今年5月份Google I/O推出的第三代TPU,计算速度比第二代又快了8倍,计算能力不断地在提升。

我们也把TPU的能力通过Google云平台开放出来,给产业界和学术界使用。特别是,我们开放了TensorFlow Research Cloud,有许多TPU,免费开放给顶级的研究学者使用,共同来推动开放的机器学习研究。大家可以通过g.co/tpusignup申请。

总结上面所讲的,深度神经网络和机器学习已经带来了非常大的突破。我们可以考虑如何用深度神经网络,帮助解决世界上的一些重大挑战。

基于TensorFlow的应用

第二部分,我们来谈谈基于TensorFlow的应用。

AI领域一个很重大的突破,就是AlphaGo战胜人类顶尖围棋选手,之前大家普遍认为这还需要多年。DeepMind的AlphaGo也是基于TensorFlow实现的,早期版本使用了大量的TPU,需要大量的计算。

初始版本的AlphaGo需要人类的经验,比如以历史上的围棋棋谱作为输入,但是最后的AlphaGo Zero并不需要人类经验就能自我学习。

AlphaGo的工作也发表了论文,我们看到有国内公司基于公开论文,基于TensorFlow,很快就重现了高水平的围棋系统。

这很好地说明了TensorFlow的意义,有了这样的开放平台,全球的研究者和开发者都能很方便交流,快速提高机器学习的水平,并且能够基于前人的优秀成果,快速开发出新的产品和系统。

自动驾驶是另一例子,利用TensorFlow可以自动识别移动中的人和物体,包括交通灯。

科学发展史当中,天文学有很多非常有挑战的问题。如何在浩瀚的星空当中,发现有意思的信号,比如寻找一个像地球一样的行星,围绕像太阳一样的恒星转,这是一件非常有挑战的事情。

天文学家利用基于TensorFlow的深度学习技术,在太空的大量信号中搜索到类似地球的行星,叫做Kepler-90i,这个是迄今为止发现的第八个。

农业方面,荷兰的养殖场监测奶牛的行为和身体数据,使用TensorFlow来分析奶牛健康状况,比如是否运动,是否生病等等。

巴西亚马逊丛林的护林人员,使用TensorFlow来识别丛林中的声音,来判断是否有盗伐者。

在非洲,开发者使用 TensorFlow 制作出判断植物是否生病的手机应用,只要对植物进行拍照,就能进行鉴定。

Google开源了基于TensorFlow的Magenta项目。一个功能是能够自动生成音乐,你输入一个音符,程序能够建议下一个音符。

在艺术和文化领域,你可以拍一个照片,程序能找出和你相似的艺术照片。

谷歌翻译可以在没有联网的情况下实时进行翻译。有这样一个上面印有“Milk”的包装盒,你只要打开谷歌翻译并用手机对准它,谷歌翻译就能自动识别文字,自动翻译出“牛奶”,并把翻译的结果贴在原来这个照片上。这样的例子对于出国旅游者非常实用。

Google的大量产品使用了TensorFlow。比如在语音方面,包括语言的识别和合成,像DeepMind发布的语音合成算法WaveNet,合成的效果非常好。对人机对话,Google I/O发布了AI打电话预定的Demo,叫做Google Duplex。

视觉方面,Google Photos能自动把所有照片做分析,识别里面的人和物体,自动得到一些标签,你可以直接搜索这些照片,不再需要手动加标签。还有Google的Pixel系列手机,拍照模式中,自动把前景突出一些,背景模糊化处理。

这就是机器学习带来的产品的突破。

在机器人领域,可以使用TensorFlow让四脚机器人学习如何站立和平衡。

最后,还能使用TensorFlow来帮助Google数据中心做能耗优化。当机器学习控制的开关开启后,能耗明显降低,而一旦关闭,能耗快速上升。

TensorFlow基础

第三部分,讲一讲TensorFlow的一些基础知识。

TensorFlow背景

机器学习越来越复杂,构造的网络也越来越复杂,作为研究者,如何管理这种复杂度是一个很大的挑战。比如Inception v3模型,有2500万个参数。

模型越复杂,对计算要求就越高,需要大量的计算,往往不是一台计算机就能满足,需要做很多分散式的计算,那分散式计算怎么去管理,这是一个难题。

更进一步,传统的机器学习运算都发生在服务器端,而现在越来越多的计算在手机端或者是在设备端,怎么去管理这些多元的设备和异构的系统,是一个挑战。

我们希望TensorFlow能够帮助管理这些复杂度,让研究者专注做研究,让做产品的专注做产品。

TensorFlow是一个开源的软件平台,它的目标是促进人人可用的机器学习,推动机器学习的发展。

一方面,TensorFlow希望快速地帮助大家去尝试一些新的想法,进行前沿探索。另一方面,也希望非常灵活,既能满足研究的需求,也能满足产业界做大规模产品的需求。面对多元的需求,怎么让大家能够用同一个框架来表达自己的想法,这是TensorFlow的重要设计目标。

研究可能会是小规模的,但在做产品的时候,可能涉及到成百上千的服务器,怎么去管理这些分散式计算,TensorFlow需要有很好的支持。

一开始设计人员就把这些因素都考虑进去,最重要的原因是,TensorFlow实际上是配合Google内部的产品需求设计的,经历过Google大量产品和团队的大规模考验。在它开放之前还有一个内部版本叫做DisBelief,我们总结了DisBelief的经验,做了新的版本,并且在大量的项目中经过真实的验证,也根据产品的真实需求在做一些新的特性。

Google Brain有很多研究人员,他们不断发表论文,同时他们的研究工作也会转化成产品。大家都用TensorFlow这样的语言去表达,就极大地促进了研究成果的转换。

到目前为止,github上TensorFlow项目的提交已经超过3万次,超过1400多个贡献者,6900多个pull request。

TensorFlow架构

TensorFlow提供了一个完整的机器学习工具集。下面我们来整体看看TensorFlow的架构。

TensorFlow有一个分散式执行引擎,可以让TensorFlow程序运行在不同硬件平台上,比如CPU、GPU、TPU,移动端的一些硬件如Android和iOS,以及各种异构的一些硬件。

执行引擎之上,有不同的前端语言的支持,最常用的是Python,也支持Java,C++等等。

前端之上,提供了一系列丰富的机器学习工具包。除了大家所知道的神经网络支持,还有决策树,SVM,概率方法,随机森林等等,很多是大家在各种机器学习竞赛中常用的工具。

TensorFlow非常灵活,既有一些高层API,简单易用,也有一些底层API,方便构造一些复杂的神经网络,比如,你可以基于一些基本的算子去定义网络。

Keras是一个定义神经网络的高层API,在社区中很流行,TensorFlow对Keras有非常好的支持。

进一步,我们也封装了Estimator系列API,你可以定制训练和评估函数,这些Estimator可以高效地分散式执行,和TensorBoard以及TensorFlow Serving有很好的集成。

最上层,有一些预定好的Estimator,开箱即用。

TensorFlow提供了全面的工具链,比如TensorBoard可以让你非常容易去展示Embedding,多层次呈现复杂的模型结构,以及展示机器学习过程中的性能数据。

它支持很多平台,比如CPU,GPU,TPU,iOS,Android,以及树莓派等嵌入式硬件。

支持的语言包括Python,C++,Java,Go,R等语言。最近,我们也发布了Javascript和Swift的支持。

很多学校和机构都发布了TensorFlow课程,比如北京大学,中科大等学校就开设了TensorFlow相关课程,国外顶尖大学比如斯坦福、伯克利等,在线教育机构比如Udacity,Coursera、DeepLearning.ai上都有TensorFlow课程。我们也在支持教育部产学合作项目,支持高校开设机器学习课程,国内会有越来越多基于TensorFlow的原创课程。

TensorFlow APIs

下面讲一下TensorFlow的API。

TensorFlow可以帮助用户定义计算图,图代表了计算,图的每个节点代表了某个计算或者状态,而计算可以运行在任何设备上。数据随着图的边流动。而图可以用不同的程序语言比如Python来定义,并且这个计算图可以被编译和优化。通过这样的设计,可以把图的定义和实际计算过程分离开来。

TensorFlow可以让你非常容易地表达线性回归,可以使用LinearRegressor,这是封装好的Estimator。深度神经网络同样可以很方便的表达,比如使用DNNClassifier,你只需要说明每一个隐层的节点数。

TensorFlow可以自动执行梯度下降过程,实现反向传播算法。并且这些计算可以分布在多个设备上,这样图的执行是一个分散式的过程。

tf.layers是另一类API,可以对应到神经网络的层的概念,比如一个CNN网络,你有多个CONV层和多个MAX POOLING层,每一层都有一个对应的tf.layers.*函数,方便你把多层组织起来。这些封装好的层包含了一些最佳工程实践。

tf.keras

进一步,tf.keras是社区中非常流行的API。比如你想构造一个能够自动去理解视频,并且回答问题的玩具程序。你可以问:这个女孩在做什么?程序回答:打包。问:这个女孩穿什么颜色的T-shirt?程序回答:黑色。

你可能会构造一个网络来实现:左边是视频处理逻辑,使用InceptionV3来识别照片,然后加上TimeDistributed层来处理视频信息,之上是LSTM层;右边是Embedding来处理输入的问题,然后加上LSTM,之后把两个网络合并起来,再加上两层的Dense。这就可以实现一个具有一定智能的程序,是不是很神奇?

使用tf.keras,你用几十行程序就可以完成核心的代码逻辑,比如InceptionV3的使用你只需要一行代码。

Eager Execution (动态图支持)

进一步,除了前面讲的静态图的方式,我们还有动态图的支持,叫做即刻执行(Eager Execution)。它可以减少一些冗余的代码,让你的程序更加简单,同时立即报错。

当然,静态图有它的优势,比如它允许我们提前做很多优化,不管是基于图的优化还是编译优化;可以部署到非Python的服务器或者手机上;还可以大规模的分散式执行。

而即刻执行的优点是让你快速迭代,方便debug。

好消息是,在TensorFlow当中,即刻执行和静态图执行可以非常容易的进行转换,平衡了效率和易用性。

TensorFlow的高级知识

第四部分,我们来谈谈关于TensorFlow的高级知识。

TensorFlow Lite

TensorFlow Lite是为移动或嵌入式设备特别设计的轻量级机器学习库,它更小,也更快。我们提供了工具,很方便的把TensorFlow模型转换成TensorFlow Lite格式的模型,然后在移动端,提供了TensorFlow Lite解释器去执行这些模型。

在Android上,我们利用了Android的NN API,利用硬件加速。Lite也对iOS有很好的支持。

TensorFlow.js

TensorFlow.js是最新公布的基于javascript的TensorFlow支持库,它可以利用浏览器特性比如WebGL来加速。这意味着更进一步让TensorFlow程序可以运行在不同的环境当中,让AI无处不在。

比如我们可以用TensorFlow.js来实现吃豆人游戏,电脑摄像头捕捉你的头像,来控制吃豆人的移动。这一切都运行在浏览器当中。

分散式TensorFlow

TensorFlow的分散式执行对于大规模的模型非常重要。TensorFlow 可以很方便地实现数据并行工。举个例子:你可以写一个Cluster的描述文件,分配哪些是计算资源“worker”,哪些是参数的服务器“ps”,这样可以在我们定义图的时候可以把这些计算分配在不同的设备上,进行分散式的执行。

更进一步,谷歌支持了开源的Kubernetes项目,来管理大规模计算资源,它被业界广泛采纳,特别是一些云平台。而为了更好地让机器学习运行在大规模集群上,谷歌也带头推动了KubeFlow的项目,大家可以关注。

而在Benchmarks方面,谷歌也公开了测试的程序。我们可以看到TensorFlow系统的可扩展能力非常强,基本上机器的数量和能力是线性正相关的。

在最近一个月,公司也发布了一个MLPerf,便于大家公开地比较机器学习的性能,这样可以推进产业的发展。

TF Hub

为了更好的促进模型共享,我们发布了TensorFlow Hub (TF Hub)。例如,一个人设计机器学习模型,他可以从Github中找到不同的模型,进行组合,从而形成更强大的能力。

我们可以看到,一个模块包含了训练好的权重和图,这就是一个简单的模型,我们可以将这个模型组装,重用,或者再训练。

目前我们已经公开了很多模型,包括图像,语言相关等等,这些都需要大量的GPU训练才能得到。开发者可以在这些基础上,做一些迁移学习的工作,用很小的代价,就可以利用现有的模型帮助解决自己的问题。

tf.data

另外一个是关于提高机器学习的技巧,叫tf.data。举个例子,在CPU上,训练速度是很大的限制,但当我们加上GPU后,训练速度就得到了极大的提升,但是CPU输入变成了一个瓶颈。数据需要做一些转换使得可以载入,进行训练。

大家知道,计算机体系结构研究中一个主要的问题是如何加速并行化,而提高CPU和GPU的运行效率,是提高机器学习系统很重要的问题。而tf.data提供了一系列工具,帮助开发者更好的并行地输入和处理数据。

更进一步,和TensorFlow 训练相关的Packages/Features还有很多,例如Estimators, Feature Engineering, XLA, TensorFlow Serving等等,这些可以在很多行业上都可以得到方便的应用。

TFX

当构建一个真实的端到端的机器学习系统时,除了上面讨论的核心机器学习算法之外,还有大量相关系统需要构建,比如数据的获取,数据的分析,模型部署,机器学习资源管理等等问题。

谷歌内部有一个大规模的系统TFX (TensorFlow Extended),它是基于TensorFlow的大规模部署的机器学习平台,相关论文已经发表在2017年的KDD。目前我们已经开源了一些重要的部件,更多的部件开源正在进展当中,做产业界的朋友可以关注下。

第五部分:TensorFlow在中国的发展

最后,谈谈TensorFlow在中国的发展。

基本上,我们看到中国领先的技术公司大都在使用TensorFlow,来解决多种多样的问题,比如:广告推荐、点击预测,OCR,语音识别,自然语言理解等等。包括很多家知名公司,像京东,小米,网易,搜狗,360,新浪,联想等等;也包括很多的创业公司,比如知乎,出门问问,云知声,Kika,流利说等等。

京东使用TensorFlow来进行包装的OCR,应用到了图像,语音和广告等多个领域,并建立了高效的内部机器学习平台。

小米使用TensorFlow,并借助Kubernetes来管理集群,建立分散式学习系统,来帮助小米内部和生态链业务。

网易使用了TensorFlow Lite来做文档扫描应用,并用TensorFlow来做机器翻译。

360使用了TensorFlow来进行短视频的分析,也建立了相关内部机器学习平台。

还有一些研究机构,比如清华大学的朱军老师,将贝叶斯网络和深度学习结合起来,开源了基于TensorFlow的系统,叫“珠算”。

另一个例子也是来自清华大学,开源了一些基于TensorFlow的知识图谱工具。

在中国,TensorFlow社区活动非常丰富。比如,这是Jeff Dean和TensorFlow中国开发者视频互动的场景。另一个是我们在重庆的一个活动,支持教育部产学合作协同育人项目,有上百位大学老师参加,我们希望培训更多大学老师来教机器学习。

更多官方中文文档,可以访问:https://tensorflow.google.cn/

不久前,我们还开源了Google内部使用的两天机器学习速成课程(MLCC),过去几年大量Google工程师学习了该课程。大家可以访问:https://developers.google.cn/machine-learning/crash-course/

你也可以加入TensorFlow中文社区,访问tensorflowers.cn,和业界一起来学习和探讨TensorFlow技术。

TensorFlow社区的基本理念是:开放,透明,参与。

我们希望尽量开放,所以发布了TensorFlow的开发路线图,使技术更加透明化,增加社区人员的参与感,共同推动技术的发展。Google内部使用的Tensorlow也和外部也一样,我们每周都在不断同步。

在这个开放的社区里,不管是初学者,研究者还是产业界开发者,每个人都可以分享自己的问题,发布自己的代码、数据和教程,帮助其他社区成员,组织线下技术小组聚会等等。更一步,可以申请成为谷歌开发者专家(GDE)荣誉称号。

Q&A

TensorFlow作为一个机器学习的平台,那其在未来发展上,大概有哪些方向呢?

我们公开了Tensorlow开发路线图,大家可以在下面网站找到:https://tensorflow.google.cn/community/roadmap。

另外,也可以加入相关兴趣小组,给Tensorlow提出发展建议。

总结而言,我觉得有以下几个方向:

1、 快。我们持续不断地进行优化,更好的分散式执行,针对各种新的硬件进行优化,以及在移动端更快的执行,等等。

2、 简单、可用性。追求效率,容易上手。一方面我们让高层API更好用,让Keras API和Eager Execution更好用。另一方面,我们提供更多的工具集,以及参考模型,便于开箱即用。

3、 移动性。移动方面我们发布了TensorFlow Lite,它所能支持的模型和性能在不断提升当中。我们也发布了TensorFlow.js,进一步促进了无处不在的AI。

4、 完整性。我们发布了TensorFlow Hub,希望促进模型共享和重用。另一方面,Google内部大规模产品环境中所使用的TFX系统也在开源当中。我们希望进一步减少开发者构建端到端的完整的机器学习系统所遇到的挑战。

5、推动机器学习的发展,共享,加速研究。我们很期待通过TensorFlow社区,大家一起协作,去解决世界上最难的问题,比如医疗等造福人类的重大问题。

基于TensorFlow这个平台,极大的降低了深度学习的难度,那么是不是稍微懂技术的人,经过一些学习和打磨,就可以借助这个平台做深度学习或者AI相关开发,还是说背后还需要很多工作才能成为这方面的人才?

首先这是TensorFlow的设计目标,让尽可能多的人能用上深度学习技术,尝试新的研究想法,做产品,解决难题。

这样一方面可以推动深度学习技术的发展,加快很多方面的AI应用。而这些AI应用,更需要拥有广阔背景的众多开发者来一起推动。

另一方面,从简单地用到一些模型,到比较专业的深度优化,还是有不少距离。如果你只是达到平均水平,付出可以比较少,但要达到更高水平的突破,还需要很多的经验。

大家需要有一点工匠的精神,对问题的理解程度,参数的调节,数据的清洗和处理等等,这些都是需要积累的。

我们希望可以降低TensorFlow使用的难度,也提供一系列的工具集来辅助用户,希望可以让初级用户更多的探索应用场景,而高级用户可以做更多的前沿科技研究。

深度学习融入Google的每一个部门,那么每一个部门都会因为AI产生效应吗?有没有什么意想不到的效果?

我个人的感受是,加入了深度学习,确实带来了很大的突破。像机器翻译,语音,自然对话,图片翻译,搜索排序,广告预估等等,Google的众多产品都有深度学习的深刻影响。

机器学习,深度学习这些年发展的很快,从技术到应用,在未来几年在哪些地方会有一些突破?

个人认为:无人驾驶领域,医疗诊断方面,还有,比如语言对话方面,让人充满期待。我个人更期待AI能推动人类重大问题上的发展,比如农业,环境,教育,跨语言的自由交流等等方面,希望可以借助TensorFlow获取突破的契机。

Google中怎么平衡研究和产品,到底是谁在推动谁往前走?大家是做自己喜欢的课题呢还是由需求来驱动做一些实用的研究?

研究是基于真实的问题,而产品化紧密协作,把研究成果落实到产品上去,并且获得真实世界的大量反馈,这是一个快速迭代的过程。研究和产品是比较紧密的结合过程,可以由真实问题的驱动去寻找解决方案。某种意义上,Google的工程师,混合了研究和产品的角色,既要研究问题,也要实现产品。

下期预告

下周三是创新工场技术副总裁、AI工程院副院长王咏刚老师授课。

感兴趣的小伙伴可以添加量子位小助手7:qbitbot7,备注“北大”,通过后可进入课程活动群,获取每期课程信息,与其他小伙伴互动交流。

祝大家听课愉快~

学习资料





2018-06-01 16:32:00

相关文章