深度学习的发展与应用,TensorFlow从研究到实践

描述

5 月 23 日周三晚,TensorFlow 中国研发负责人、Google 搜索架构技术总监李双峰受邀参与北京大学“人工智能前沿与产业趋势”系列座谈会,分享了深度学习的发展与应用、TensorFlow 从研究到实践的相关内容。

感谢作为北京大学“人工智能前沿与产业趋势”系列座谈会合作媒体的量子位旗下公众号“吃瓜社”俞晶翔、张康对活动的记录,演讲嘉宾李双峰也参与本文的联合撰写和修改。

嘉宾简介

主讲嘉宾:李双峰,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,多层次呈现复杂的模型结构,以及展示机器学习过程中的性能数据。

它支持很多移动平台,比如 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,利用硬件加速。TensorFlow 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 社区活动非常丰富。比如,这是三月底在谷歌北京办公室举办的 TensorFlow 开发者峰会北京分会场活动,凌晨 1 点,Jeff Dean 和 TensorFlow 中国开发者视频互动的场景:

另外还有我们在重庆的活动,支持教育部产学合作协同育人项目,有上百位大学老师参加,我们希望培训更多大学老师来教机器学习等。

更多官方中文文档,可以访问:

https://tensorflow.google.cn/

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

https://developers.google.cn/machine-learning/crash-course/

另外,推荐 TensorFlow 微信公众号,大家可以在微信上搜索“TensorFlow”找到。

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

https://www.tensorflowers.cn

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

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

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

Q&A

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

我们公开了 Tensorlow 开发路线图,大家可以在下面网站找到:

https://tensorflow.google.cn/community/roadmap

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分