概述
最近关注人工智能的话题的人非常多,之前在谷歌开发者社区办过几次活动,谷歌开发者社区的知乎专栏上也发过几篇关于TensorFlow及人工智能的文章。有许多开发者表现出了极高的热情,同时也收到了一些关于TensorFlow的问题。
今天有幸邀请到了谷歌开发技术推广部 大中华区主管 栾跃 (Bill Luan)来给各位读者做一个关于TensorFlow的深度解读。
希望大家可以有所收获:)
Summer Xia: Hi Bill,首先感谢您在百忙之中抽空回答本专栏大家最近很感兴趣的一些TensorFlow及人工智能的问题。 先请您介绍一下自己?
Bill Luan:各位谷歌开发者社区专栏的读者们,大家好!我是栾跃, Bill Luan,谷歌开发技术推广部中国市场的负责人。我们部门Developer Relations和我的中国团队负责各项谷歌开发技术和平台在中国市场的推广和开发者生态系统的项目,包括帮助建立和赞助中国各地的谷歌开发者社区GDG的运行,帮助大量开发者和高校学生们学习谷歌Android移动开发、并把应用发布到面向全球的Google Play 平台上去的中国Study Jam 项目,以及通过博客、微信、微博等各种社交平台为中国开发者和企业提供和分享我们大量的技术资源,比如我们的“谷歌开发者”微信帐号,目前已经有超过十几万的订阅者。我们还做其它帮助中国企业利用谷歌技术和平台在全球市场上进行创新的技术支持和合作,在国内组织举办像GDD这样的技术分享大会等。
Summer Xia:TensorFlow 在现阶段还不是被很多人所熟悉,为了帮助更多的人理解TensorFlow,您能简单聊聊TensorFlow是一种怎样的技术吗?
Bill Luan:TensorFlow是谷歌公司为了帮助全球开发者们更加方便和高效地开发机器学习 (machine learning)和人工智能 (AI) 应用而开发并开源的一整套开发平台和框架。
严格说来它的技术核心是一套使用数据流图 (data flow graphics)进行数据计算的软件库(software library) 和应用接口(API),并以此作为基础加上其它功能的库和开发工具成为一套进行机器学习、特别是深度学习(deep learning)的应用程序开发框架 (framework)。
这么说可能学术语言或专有名词太多、对非程序员的读者来说不太容易理解,我想如果用简单易懂的一句话来说的话就是:TensorFlow是帮助开发任何有人工智能功能的应用和系统的强大开发工具。
在进一步介绍TensorFlow的技术核心之前,我先来解释一下上面说到的几个技术词汇。
首先,Machine Learning,中文翻译称为机器学习。这个和人工智能有关系的原因是,通过某些特定的数学模式我们能利用输入的数据对计算机做特别的训练(train) 而让计算机具备自我学习的能力,我们把它叫做机器学习。通过这个受训和学习的过程计算机能够在已有的信息输入基础上进行各种判断甚至预测。这种能力的实际效果就是计算机具备了不需要人工干预的辨别能力和决策能力。这也是我们通常所说的人工智能的意思、也就是机器能做到类似人类会做出的智慧型判断。
我随便举个这样的应用例子来说明这些概念,这是一个开发者们利用TensorFlow已经做到和完成的实际应用。
一个小机器人自己在房间的路上走,它看到房间里放的各种东西能自动识别它们出来。它看到一个椅子后它会输出或说出“椅子”、看到边上放着一把吉他它会说”吉他”、等等。你可以很容易理解到,这样的辨认和判断功能让这个机器人几乎已经具备了类似人类的识别能力了。当然这还只是一个非常简单的开发应用案例,但是类似这样的智能化识别能力是非常强大的,应用的范围也是非常广的,这样的智能设备能帮助人类解决无数的具体问题。后面我还会说到更多的机器学习的应用例子。
再次,我来解释一下TensorFlow技术的背景。要开发上面说的这样的应用,需要建立特定的模式去分析和解决机器学习的计算问题,对现实问题能建立数学运算模型,否则开发将是无比困难的事情。所幸的是计算机专业领域在过去的几十年的人工智能技术的探讨中,逐步发展了出了一些数学模型能帮助人类有效地理解机器学习所面对的问题、让开发者们能去开发解决这类问题的程序。这些模型是基于所谓的神经网络(neural network)的数学模型,对抽象化的数学运算用一个所谓的数据流图(data flow graphics)来建立运算的架构。
神经网络的概念就像一个计算机程序,它有输入和输出的信息、还有一个进行计算的内部系统,就像计算程序的内核,它代表了所计算的信息或智能。所有的输出和输入的数据关系,用数学的矩阵(matrix)来代表,它也是一个多维的数学矢量。这个数学矩阵在编程中就用所谓的数组 (array) 来体现。这个多维的数学矢量也就是进行运算的数据或信息,它又被称为张量(tensor)。一个神经网络的模式就是一组Tensor加上对Tensor的运算,或者叫做operations、简称ops。ops可以是加法运算、向量点乘、矩阵乘等等各种运算。这整个神经网络的tensor和ops,就组成了一个运算流程图 (graph)。在计算机科学里有专门的运算图像来表示这个神经网络的运算模型的。所以TensorFlow的名称反映了这个数学模型的特征,它的意思就是计算很多tensor的流程。
TensorFlow的运算模式就是用这样的运算流程图来表述的。每个运算图像由结点(node)和边(edge)所组成。端点是进行运算的步骤(也就是ops),它可以有输入和输出。端点之间的用多维矢量所代表的数据和信息就是tensor,它们沿着图像的边流动。这些结点和边缘就组成了代表TensorFlow的运算流程图。所有这些和上面所说的神经网络所用的数据流图模型是一样的。
用TensorFlow来编程序包含了两个步骤:第一是搭建一个代表了运算模式的这个运算图,我们把它叫做搭建步骤(construction phase),第二是将数据通过这个运算图的流程进行计算,我们把它叫做运算执行步骤 (execution phase)。这个运算在TensorFlow技术框架里是通过启动一个session来做的。所以简单说来,使用TensorFlow的过程就是先搭建运算图,然后启动一个session对它输入数据进行实际的运算。
前面说到TensorFlow是一个软件库,那软件库(software library)和应用接口(API)指的是什么呢?它们指的是如果使用TensorFlow进行开发,开发者只要调用特定的软件函数就行了,后面的运算功能谷歌都已经为你做好了,它们在特定的软件包、也就是我们所说的软件库里面。这些功能通过特定的应用接口,向开发者们提供使用这些功能的统一方式。 这些接口就是API。通过这些接口开发者们就能调用各种特别的运算功能了。这些概念和其它所有的软件开发平台没有什么区别,软件开发者们对这些概念也都是很熟悉的。我这里的解释主要是给非开发者们读者们提供的。最后就是使用TensorFlow进行开发,开发者们当然还要按照特定的规范进行、编程有特别的要求、需要使用一些特定的工具等等,所有这些为开发者们提供了一个开发的参照模式,我们把这样的模式称为软件开发的框架framework。任何软件平台有了这样的框架,将帮助开发过程大大提高效率。TensorFlow 就是为开发机器学习的应用提供了一套完整的框架。
Summer Xia: 能简单说下TensorFlow的历史以及它的优势是什么呢?
Bill Luan:TensorFlow的发展历史来自于谷歌内部的一个”深度学习” (Deep Learning) 的项目,是谷歌进行人工智能开发的一个研发项目。在研发过程中团队开发了一个帮助进行机器深入学习的技术框架叫做DistBelief,这个名称有点和英语名词disbelieve谐音,它因此带有一点“简直不可思议”的幽默感来形容这个技术和它的潜力。深度学习团队在2012年的美国神经信息处理系统学会刊物上作了发表,介绍了它的支持大规模分布式部署的能力。它最初的主要功能是帮助计算机系统在语音识别和搜索智能上提供开发的帮助。
后来深度学习团队发现很多开发者们都对这个技术感兴趣,加上在谷歌内部很多产品都开始逐渐使用它和整合它的功能,就发现DistBelief缺乏很多灵活性,加上还有一系列的功能需要进一步增加和优化,于是Deep Learning团队就决定在Dist Belief的基础之上重新开发和建立一个更加完善的框架和功能库,所以他们就重新开发了TensorFlow,不仅保留了很多Dist Belief中很多很强的分布式部署的功能,更主要的是加入了一系列新的关键的功能。在运行速度的性能方面它也有很多重要优化。它不仅能使用普通机芯CPU进行运算,包括在移动设备上的运行,还能充分利用GPU进行高速数据运算的优势。另外一个性能的优化是加入了分布式部署 (distributed system)的支持,这为开发和部署使用很多计算机同时进行机器深度学习的运算创造了条件。谷歌还开发了专门支持它的极其高速的运算机芯硬件平台TPU (Tensor Processing Unit),让它的大规模部署的速度能充分利用专门硬件的优势。这些发展使TensorFlow的发布把机器学习的潜力从科研扩大到了产品开发的范围、并使得大规模的企业应用部署成为可能。这些发展大大提高了人工智能应用开发的灵活性和发展的潜力。TensorFlow的第一个版本1.0于2016年的8月份正式发布,其速度和稳定性相对最初的版本有了质的提高。
为了让更多的开发者们能够充分利用这个技术,谷歌把TensorFlow向业界进行了开源发布,把整个产品的代码都在全球开源平台GitHub上进行了公开。它的开源让全球开发者们以及各地社区都能一起来加入它的继续发展。自从开源之后全球开发者和企业又贡献了更多的功能和提出了很多优化的建议。
所以TensorFlow的一个关键优势是它是开源的技术。这个意味着它的发展将不停地得到来自全球开发者的智慧的贡献,它的未来将随着更多开发者们的贡献而变得越来越强大。开源技术的另外一个优势是开发者们和企业都能免费使用它,大大降低了这个技术的使用门槛,反过来这个会使更多的企业和科研机构使用,它会使更多开发者和科研人员对它贡献新的功能组件和提出发展建议、使得它变得越来越强大。这是其它类似的封闭技术所无法相比的优势。
除此之外,TensorFlow的发布还加入了很多帮助开发者们进行开发的功能包括支持Android和iOS 移动平台、支持Windows 7 和10以及server平台还有slim的轻型运行版本、以及对多种编程语言的支持 - 从Python, 到C++Java, Go等。 在开发工具方面它提供了进行可视化的工具TensorBoard大大提高对机器学习的各种模式的数据进行观察和分析的能力。所有这些技术上的优势都是其它机器学习或人工智能软件库所没有的。这些都是TensorFlow的极大的优势和吸引开发者的地方。
顺便说,虽然TensorFlow让开发机器学习的应用更加方便和高效,它并不代表不需要任何相关的知识就可以做到。学习TensorFlow需要有一定的数学知识,特别是如果有多维矩阵、统计学、神经网络等相关的知识作为基础,对编写机器学习的应用程序是将会有极大的帮助。所以从这个角度上来说,拥有数学基础的开发者们或者编程工程师们仍旧具有极大的价值。
Summer Xia: 谢谢Bill的这些普及性知识的介绍! 接下来您能谈一些TensorFlow 的具体开发技术内容吗?让我们的程序员读者们有更多的了解。
Bill Luan:前面介绍了Tensor其实就是一个多维的数学矢量 ,或者叫多维数组,Flow是指的对它进行运算的数据流,它们用一个运算流程图(或简称流程图)来表示。流程图有node结点代表了各种ops运算、也可以是变量。TensorFlow的运算流程图就定义了整个进行运算的函数。
下面这个示例就是一个典型的流程图 (原图来自Google Brain团队的工程师周玥枫在中国举办的2016年谷歌技术大会GDD上的讲课):
为什么要使用流程图呢?因为编写程序的Python语言是一种解释语言(interpreted language),而神经网络的计算通常都是成千上万次甚至更高的数量,如果运行时每个程序步骤都要解释一次,那这个计算就需要很长的时间,变得几乎没法使用。先搭建了一个运算流程的流程图来设定所有运算的数据和属性,然后把这些信息交给进行计算的session来执行,TensorFlow会把运算的代码编译成非常高效、运算速度极快的汇编码,这样复杂的运算可以很快完成。我们把这种延迟的运算模式称为延期执行(deferred execution)模式。
这里所说的流程图,不是指一定要画一个图,虽然开发者可以用画图的方法来体现和描述设计运算的模型、把运行流程可视化帮助分析和设计,这里说的流程图,是指用程序的代码来设定要进行计算的函数、变量等。
前面我也介绍了,用TensorFlow 进行开发的流程是先设计搭建流程图,然后启动一个session对它输入数据进行实际运算的执行。如果你是要加a 和b两个数字,用Python编程语言来写这个代码的话,那么你需要设计的流程图和程序的结构就是如下:
这里的 c = tf.add (a, b)的代码就是流程图的一部分。tf是TensorFlow的功能类,tf.Session () 就是启动运算的session,执行计算的函数就是 session.run ()。 这样对照了流程图来看,这些代码就很容易理解了。
在使用TensorFlow的库类之前,程序必须要先导入TensorFlow的运算功能,所以最前面的代码应该是 import。这样Python的程序才能使用TensorFlow的库类和函数。所以,如果我们的运算程序是要把两个常数加了之后打印出来,那么使用TensorFlow来运行的代码就是如下:
程序的输出就是如下:
使用TensorFlow开发工具所提供的可视化工具TensorBoard, 可以看到这个程序的流程图是如下,两个常数节点3和4被加起来:
上面这些给读者们提供了一个非常简单的介绍,让大家有个很基本的概念。虽然这个例子并不是一个什么实用的简单程序,但是我想用它为我们读者们说明使用TensorFlow进行运算的关键的四个步骤:第一步是搭建一个流程图,第二步是获得输入的数据,第三步是启动运算的session获得输出, 第四步是对输出进行某种处理,比如这里我们就是把结果印出来。
由于篇幅的限制,这里无法把使用TensorFlow编程的细节全部展开。希望进一步学习的读者们,可以去我后面会提供的TensorFlow的网站等进行深入的学习。这里没有篇幅作进一步介绍的,还有一些更加重要的理念。想要开发机器学习和人工智能应用的读者们,还需要进一步学习和了解这些知识,我这里就简单提一下:机器的深入学习(deep learning)是人工智能开发的一个重要领域,它基于神经网络的数学模型。其中最关键的理念是建立一个运算模型之后,通过输入大量的测试数据来训练这个模式,最终达到能够测试模式的正确性而做到预测的功能。有很多数学模式帮助我们去建立这样的模型,比如线性回归(Linear Regression)模型,通过大量测试数据来自动找到一组数据中最能由线性函数y = Wx + b所代表的参数值。TensorFlow提供了各种相关的函数来做这样的运算,比如用来接收输入的placeholder的标量,定义并训练模型需要的损失函数,还有特别的进行降低损失的优化函数 (optimizer),等等。这些概念以及如何使用TensorFlow来搭建相关的运算流程图和进行运算,都是进行机器深度学习的应用开发所需要掌握的,也是最关键的进行人工智能创新的基础。
Summer Xia:那么现阶段这一技术能帮助我们做什么具体的事情呢?
Bill Luan:TensorFlow技术从最早的语音识别应用开始的,所以当然在语音识别应用方面仍旧是一个很大的应用范畴,有很多应用可以做,让计算机学习各种语音识别,可以帮助人类解决很多自动化的问题。
神经机器翻译(Neural Machine translation)一直是TensorFlow进行应用开发的一个重要科研方向。根据今年2月全球TensorFlow开发技术高峰会议(TensorFlow Summit) 所发布的新闻来看,人类的几种主要语言、特别是英语等欧美的语言的机器翻译的准确度已经达到了新的高峰。用TensorFlow开发的机器翻译错误率被下降了55%以上,准确度可以说几乎接近人类的人工翻译水平了。比较有意思的是,中文的机器翻译水平相比较还稍微差一些,比其它语言的错误率要高一些。这一方面反映出让机器学习中文语法的难度,但是从另外一方面来说这也是中国开发者的一个机会,可以在中文机器翻译上开发出能力更强大的人工智能应用来。可以想象在不久的将来中国人出国旅游要问各种问题可以拿出手机直接用中文提问,手机马上进行准确的外语翻译给外国人听,或者外国人到中国旅游可以直接向国内的各种智能设备说外语,设备能自动回答并提供中文语音翻译,等等。其实今天已经有类似的应用了只是准确度还差很多。
和语音翻译相关的另外一个应用范围是语音到文字的自动转换(speech to text),也就是说你对一个智能化的机器设备说话,设备能自动显示你说的语言的文字。这个在欧美语言上的应用开发已经做得很好了。比如谷歌公司自己的很多重要产品都已经带有语音输入。在国际上广为使用的谷歌搜索用户可以直接用说话来搜索。谷歌地图的导航用户就可以直接说带我去哪里,谷歌地图会直接显示驾车路线。这些功能的后面都有使用TensorFlow所带来的智能化和自动化。
图像识别和分类(Image classification)是另外一个机器学习的大应用范围,有很多智能化的应用可以开发。从最简单的训练机器识别各种图像。到机器根据所识别的图像进行跟进的处理。比如前面所提到的机器人说话或者为所识别的图像显示相关的文字(image captioning) 等这方面的应用创新机会,可以说是几乎无穷无尽,对企业来说也有巨大的商机。美国医学界的应用开发者利用TensorFlow训练计算机自动认识检查眼睛所拍摄的照片,然后根据眼球出现糖尿病病态的照片的规律,让计算机能自动判断病人的眼睛是否有需要就医的糖尿病症状。这种机器人工智能化的检查准确度已经达到了和有经验的医生的诊断相差无几的地步。
美国斯坦福大学的学生和科研人员利用TensorFlow训练计算机动过自动识别各种皮肤诊断的照片让计算机具有识别皮肤病变的能力。澳大利亚的海洋生物保护专家利用各种鱼的图像训练计算机自动辨认需要保护的鱼类、进一步了解和观察它们的行踪、帮助保护这类鱼。 诸如此类的训练机器通过图像识别的训练达到智能化判断的能力的应用有极其多的应用开发的机会。
还有就是各种信息的搜索、以及文档的归类等应用也能利用TensorFlow来训练计算机进行智能化的归类判断。
这里我把一些目前已经使用机器学习的技术开发了各种智能型产品和应用的领域列出一些给大家做创新领域方向的参考:
- 自适应网站- 自适应网站是一种为了更好满足用户的需求,根据用户使用行为建立自我调节的模型,将最合适的信息呈现给用户。
- 生物信息学 - 用于了解生物数据的方法和软件工具的跨学科领域。
- 计算解剖学 - 计算解剖学是医学成像中的一门学科,主要研究大体解剖学规模的解剖形态。
- 计算机视觉,包括对象识别
- 检测信用卡欺诈和互联网欺诈
- 医疗诊断
- 自然语言理解和处理
- 在线广告和市场行销
- 情绪分析(或意见数据挖掘)
- 言语和手写识别
- 金融市场分析
- 语法模式识别
- 工程结构健康监测和工程结构损伤检测
- 用户行为分析
- 翻译
Summer Xia:中国是全球最大的 TensorFlow 开发人员社区之一,就您了解现阶段开发人员取得了哪些成就?
Bill Luan:谷歌在去年的Google IO大会上把TensorFlow的技术开始向开发者们做分享。去年12月份在京沪两地举办的谷歌开发者大会(GDD)我们也邀请了谷歌的Deep Learning 和TensorFlow团队的工程师和技术推广专家来中国向大家作演讲。今年2月的全球TensorFlow开发技术高峰会议举办时我们还赞助了全国很多谷歌开发者社区(GDG)组织举办了观看全球TensorFlow Summit大会转播的活动。会议之后我们在为开发者进行技术分享的各种社交媒体上做了不少TensorFlow的技术资源分享。
所有这些吸引了大批中国开发者对这个技术的关注。我不知道是否可以称中国是全球最大的 TensorFlow 开发人员市场之一,因为我没有目前最新的全球各个市场的数据比较。但是我可以判断国内对学习和使用这个技术进行智能化开发的人数是巨大的。今年4月份我们在微信的谷歌开发者公众号上进行过一次使用TensorFlow进行技术开发的调查,结果全国各地有五十多位开发者呈交了他们的应用,告诉我们他们已经或接近完成利用TensorFlow进行的应用的开发。从去年底我们在国内的正式公开分享这个技术之后才短短的不到半年时间内,居然已经有这么多人已经动手在开发了,让我们欣喜地看到这个技术得到了大批中国开发者们的关注和喜爱。他们开发的应用范围非常广泛,不仅有像图像识别、图像分类、语音识别等常用的应用范围,还有很多很有创意的企业应用的创新,比如把智能化和商业广告结合起来的应用。这些虽然还是极其早期的开发尝试,但是让我们看到了中国开发者们的创新能力和TensorFlow在中国市场使用的潜力、以及TensorFlow给大批开发者和企业所带来的创新机会。
Summer Xia: 您了解到国内的哪些企业在利用TensorFlow来释放商业价值?
Bill Luan:目前国内很多大型企业都在学习利用TensorFlow为他们自己的商业系统注入人工智能的一些功能。因为这个技术的推广相对来说还是早期,很多具体的商业价值的信息目前还不是很清楚。我所知道的是京东是使用TensorFlow比较早的合作伙伴之一。所以可以看得出来TensorFlow的商业价值在电商方面已经得到了证实。另外我也知道阿里巴巴也在使用TensorFlow开发他们的系统所以这也是一个电商的案例。我觉得在可见的未来,TensorFlow在帮助国内企业通过机器自动辨认提高自动化和系统效率方面,可能会是一个获得商业价值完成得比较早的领域。还有就是,在学术界有大批高效师生对使用TensorFlow进行科研和人工智能教学是非常有兴趣的。
Summer Xia: TensorFlow这一技术现阶段被一些非AI领域的人关注起来主要是源于前段时间的Alphago、谷歌的I/O大会您作为业界的专家看待这些事情一定会有不同的感受那么您觉得为什么TensorFlow在前段时间突然“热”起来了?
Bill Luan:的确是,我不认为AlphaGo或者Google IO是造成TensorFlow受到关注的最主要的原因,虽然这些活动和会议对扩大机器学习和AI领域的影响力有着巨大的宣传和推动作用。TensorFlow之所以受到业界大量的关注,主要还是这个技术和框架本身和其它类似技术相比所具有的独特的优势,以及它在解决具体科研和商业需求上所提供的商业和创新机会。
首先,作为计算机科学的一个分支,机器学习的算法已经有很多种模式被建立了,包括像决策树(Decision Trees)、贝叶斯分类(Bayes Classification)、最小二乘回归(Ordinary Least SquaresRegression)、逻辑回归(Logistic Regression) 等十多种方式,用在所谓的监督学习、无监督学习、和强化学习这几种模式中。根据这些模式的使用有大量的运算和软件开发工具被开发出来,至少有三四十种各种软件吧,其中光是开源代码的就用二十多种。另外针对多维数组和矩阵的数学模式还有像NumPy这样的用Python编程语言进行运算的方式。作为深度学习的技术相关的软件也有很多,比如使用Lua编程语言的Torch、C++写的Caffe、使用Python的Theano、Mxnet等等。
但是所有这些都没有一个像TensorFlow这样的既是开源的技术,还具备可以同时提供进行科研和学术(用于research)应用开发的、又能提供商业系统和产品化(用于production)的开发,它还支持分布式运算的部署、以及在大规模企业系统上能采用类似TPU/GPU这样的高性能的运算机芯硬件。除此之外,像TensorFlow所提供的比如帮助数据可视化的TensorBoard开发者工具等,让原来很多看起来深奥的机器学习和人工智能问题,有可能被开发解决并直接用在商业解答方案中、大大提高很多商业系统的效率。
TensorFlow的这些优势在一年多前开源发布之后立即受到了全球开发者、以及学术界和互联网业界的关注。所以它的突然“热起来”并不是简单的只是受到宣传,而是它的功能和性能的全方位的优势,加上完全开源的技术能让全球的开发者们可以为它的继续发展一起共享智慧和创新。这些是受到欢迎、关注、和采纳的最主要原因。
Summer Xia:您觉得谷歌为什么会特别重视TensorFlow这一技术以至于反复强调呢?
Bill Luan:我认为谷歌把这个技术作为向开发者进行推广的重要技术的原因,是因为它能为众多开发者和业界带来很多新的创新机会。通过使用这个技术,开发者们不仅能继续开发出很多进行人工智能的科研和教学的东西,更主要的是它能为很多企业的商业提供新的解答方案、提供开发很多过去无法做到的智能化的新产品的开发。这些领域的创新机会是无穷无尽的,它们会给业界带来很多新的增加营利的商机、给开发者们带来很多新的机会。把机器学习和人工智能再整合到云计算平台,充分利用云计算平台来促进计算机的深度学习,会让各种产品和服务的质量和范围到达前所未有的高度,最终的结果是造成很多过去所没有的智能化产品被开发和生产出来、为百姓的生活带来很多新的极大的便利,而造福于全人类。
Summer Xia:当时谷歌为什么布局TensorFlow技术?这么重要的技术为什么要开源呢?
Bill Luan:就像我前面所提到的,谷歌的深入学习科研团队开发TensorFlow的技术的目的,就是把已经获得的一些机器学习的知识经验也和业界分享,让更多的开发者和企业能一起加入推动人工智能技术继续发展的努力中来。
开源的好处是全球众多的开发者们都能对这个技术贡献他们的开发结果,而开源代码的精神和实践会让众多的开发者和企业把他们的创新让更多人使用和获益。这种滚雪球或水涨船高的理念是推动创新的一个极好的方式。
谷歌公司的企业文化就是充分相信开源技术的使用、相信开放型的技术和整个业界的参与才是推动技术发展的真正动力。有人称这是谷歌公司企业文化的DNA、是我们公司根深蒂固的理念。谷歌之前把Android移动平台、Chrome 浏览器平台等关键技术都开源了,造成了移动手机市场革命性地发展和网络应用创新不断达到新的高度。我们相信TensorFlow的开源也能让无数的开发者们和企业,在机器学习和人工智能领域通过他们的创新把这个领域的发展推到一个新的高度。
Summer Xia:如果企业应用了TensorFlow技术这是不是意味着要把公司的数据“分享”出去?这会不会引发企业的一些担心呢?
Bill Luan:这个担心是对开源技术的错误理解。首先,我们所说的技术开源,指的是进行运算的软件程序的技术是开源的,也就是说软件的代码和运算方式是开源的,而并不是软件运行时的用户数据。
代码的开源方便于开发者们相互学习和取经、把前人开发的有效代码拿来用,有点像我们所形容的“踏着前人的肩膀往上爬”的意思。更主要的是,开源代码让众多开发者们可以对同样的代码和算法不断进行优化和增强功能、加入他们新的创新。这些大家所看到的、所共享的东西,是程序算法的代码不是软件在运行时所处理的内部数据。任何企业和机构都可以运行一个由开源代码所搭建的系统,但是所处理的数据是只有这个企业或机构才知道的保密信息。所以使用开源技术绝对不是和外部分享自己的数据。这个理念一定要先搞清楚!
其次,因为TensorFlow的应用可以充分利用谷歌云计算的平台进行很多大数据的处理、并充分利用谷歌云平台(Google Cloud Platform) 所提供的TPU这样的极高性能的运算硬件处理。这些独特的优势吸引了全球很多企业和科研机构就直接把他们的进行机器学习和人工智能的应用部署在谷歌云平台上。
我想说,如果有国内的企业需要开发面向国际市场的人工智能服务,这是一个极好的高效率高性能的开发部署模式,欢迎国内企业来找我联系进行合作的事宜,可发邮件到这个信箱DevRel-China-Contact@google.com。
有的企业可能对这种商业模式会有些担心,是否把自己的运算数据储存到了谷歌的云平台服务器上了是否等于在分享自己的数据了。这种担心其实是没必要的,因为谷歌的云平台对用户数据有大量的安全保护,数据的安全性和隐私性比自己建立服务器进行部署其实会更好。要是任何企业还不放心使用第三方云平台的话,是可以对自己的数据再进行加密保护的。所以使用像具有TPU高性能服务器的谷歌云平台进行自己的人工智能运算系统的部署,是完全不用担心数据的安全性的,实事上这么多年来全球无数的企业和机构使用谷歌的云平台的各种应用,也从来没出现过任何数据安全的问题。当然,我这个话题对我们这里大多数的读者来说并没太大关联性,因为谷歌云平台国内并不能用,我说的完全是国内的企业要在国际市场上部署他们的人工智能服务应该考虑这个。
对大部分只开发面向国内市场的人工智能服务的企业,虽然无法使用谷歌的云平台,但是使用TensorFlow也不是问题。因为它是开源的,任何企业可以直接把它部署到自己的内部系统上,不影响自己的使用。TensorFlow的开源特性让国内的很多企业可以这样使用。我想也是很多国内企业对这个技术感兴趣的原因之一,因为能使用。
Summer Xia:现在已经有越来越多的工程师希望了解和学习到这一技术了您能提供一些学习路径给大家做些参考吗?谷歌又为广大的开发者群体提供了哪些方面的支持呢?
Bill Luan:以下我给大家提供一个学习TensorFlow的重要资源链接:
1) 开源的TensorFlow的全球资源网站 www.tensorflow.org
这里有最全面的所有TensorFlow的学习资源包括API文档、开发案例等参考资料以及教你如何安装的辅导。
2) 今年的全球TensorFlow Summit的大会视演讲频录像集 www.youtube.com/results?sea… 它是极好的最新学习资料。
3) 鉴于上面的Youtub的视频国内的开发者们可能看不到,我这里再建议大家看我们在国内Youku上的技术分享视频 - 这些视频是我们把国际上的谷歌开发者技术分享视频,搬到国内的Youku平台上建立了一个“谷歌开发者”频道,便于中国的开发者们进行学习。这个频道上绝大多数的英语视频我们还加了中文字幕,英语听力不太好的开发者们可以打开中文字幕进行观看。这个链接是有关TensorFlow技术视频的,包括有些全球TensorFlow Summit的录像
i.youku.com/i/UMjczOTc0…
4) 中国各地谷歌开发者社区GDG的全国交流论坛 http://ChinaGDG.com
各地的GDG社区会定期举办学习TensorFlow技术分享活动,过去他们也举办过观看TensorFlow Summit的的活动所以请大家关注你所在的城市的GDG社区的活动通知,去参加未来的学习TensorFlow的活动。
最近全球GDG社区都统一使用一个叫做http://Meetup.com的社区活动发布平台,建议大家在Meetup上找到自己城市的GDG并加入他们。
如何报名参与各地谷歌开发者社区(GDG)活动? - 知乎专栏
5) 我们其它技术分享的信息发布渠道 - 我们也会定期发布和分享一些学习TensorFlow的资源和介绍文章
· 微信公众号:谷歌开发者
· 谷歌开发者博客中文版: developers.googleblog.cn
· 谷歌开发者微博: weibo.com/2401232554/
我们谷歌开发技术推广部门为了帮助中国的开发者能更方便地学习最新的谷歌技术,运行上面所提到的这些技术分享资源项目、以及赞助全国各地二十多个城市的GDG社区。
谷歌走了吗?没了搜索,还有技术! - 知乎专栏
谷歌的开发技术极其多,涵盖了很多技术领域,这里我就顺便提供我们所有技术的分享资源的总网站,国际上的是developers.google.com, 为中国开发者们提供的专门页面是developers.google.cn,它是可以在国内无璋碍进行访问的。任何关注谷歌技术和各种互联及移动技术的朋友们,应该经常访问这里,里面有大量的技术资源和参考资料。
最后我想提一下,学习任何技术很重要的一点是及时关注技术的最新发展、并有机会和业界同仁进行交流和分享,知道别人在做什么、在如何进行创新。
我们全国的GDG社区为大家提供了一个这样的很好的平台。他们定期举办技术分享活动,不仅让技术学习从枯燥的“宅”在家里自学变成开阔眼界的交流分享和有趣的经历,还让这样的交流碰撞出新的创新思想火花。因此我希望读者们都积极加入当地的GDG社区,帮助自己有机会一直跟上技术的最新发展、帮助个人的职业成长。
很高兴可以有机会和中国的开发者们有这样一个分享交流的机会。也在此预祝所有的读者们学习快乐、创新有成!
转载于:https://juejin.im/post/5965fa62f265da6c30653a5d
最后
以上就是苹果项链为你收集整理的资深 Googler 深度解读 TensorFlow的全部内容,希望文章能够帮你解决资深 Googler 深度解读 TensorFlow所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复