Google Brain陈智峰:TensorFlow可以用来做什么?

7,241 阅读10分钟

2018 年 1 月 19 日,极客公园创新大会 IF 2018 在北京召开,Google Brain 首席工程师陈智峰分享了《寻找答案从定义问题开始——TensorFlow 可以用来做什么?》的演讲。

深度学习的演变过程

深度学习这几年非常流行,在上面这张图中,我们可以看到在 Google 上搜索“深度学习”的请求在过去 7、8 年间大约增长了 100 倍。从这个侧面也反映出业界对这个技术的关注程度迅速提高。大家都想知道,深度学习是什么?它能够为我们做什么?我们可以怎么来应用它?

其实,深度学习并不是一个突然出现的技术领域,它的核心算法就是神经网络,是一种机器学习的模型。这个模型的主要特点是它可以近似逼近任意复杂的函数,并且特别适宜利用大数据反复迭代的学习训练。

随着大数据的普及,计算机硬件算力的发展,还有算法本身的突破,人们突然发现这个以神经网络模型为核心的深度学习技术在很多应用领域都可以大大地提高完成预定义的任务性能。最经典的应用领域就是图像识别领域了,现在,一个手机应用就可以轻松的告诉我们一张照片里面有哪些人,有哪些动物等等。

Google 好几年前就在从事把深度学习应用到它的很多产品中去。在这个过程中,我们也迭代开发了好几代支持深度学习的软件系统,这些最终导致了我们在 2015 年 10 月开源了 TensorFlow,借此希望能够进一步推进深度学习的应用和研究。

TensorFlow 是什么?

TensorFlow 现在已经演化成一个相当完整的深度学习开放平台,比如说,它支持 CPU、GPU 混合搭建的数据中心计算平台,它也支持将数据中心训练好的模型相对便捷地部署到不同的移动端平台上。它既可以支持类似 Google 自主研发特别定制的 TPU 处理器,也可以支持侧重于教学的数莓派。对于这种多平台的支持,我们觉得可以帮助到最多的用户和应用场景。我们同时也很感谢很多同行对我们的支持,比如说在美国 Intel 和英伟达都在帮助我们优化 TensorFlow 在他们的硬件上的性能。

支持多种硬件平台是基础,TensorFlow 一直以来的一个目标就是能够帮助尽量多的开发者能够把深度学习的技术利用起来,最终使得更多的用户从中受益。基于这个想法,TensorFlow 一直很重视多种程序语言开发环境的支持。比如说,开发者可以在 Python, C++, Java, Go, C# 等很多开发环境中使用 TensorFlow。

TensorFlow 能做哪些事情?

TensorFlow 在 Google 内部的应用和推广是非常全面的,也相当的有效。比如说 TensorFlow 很早就帮助搜索、广告等最核心的业务上应用实施了深度学习模型;垃圾邮件过滤也用了 TensorFlow 训练的模型;Android 的应用商店推荐也上线了 TensorFlow 的模型等等。

很多 TensorFlow 的应用都发生在后台,可能很多用户没有直接的体验,这里我举几个移动端的例子来说明深度学习其实已经很直接地影响了普通用户。

自拍虚化

比如说,Android 手机相机最近有个自拍功能可以通过应用深度视觉模型非常准确地分离出前景和背景,然后就可以分别处理。而传统的办法是在手机上装两个摄像头,相对而言,利用深度学习算法既降低了手机的造价,又可以让现有的手机增加功能。

语音处理

和图像处理一样,语音处理是另一个被深度学习深刻改变的领域。事实上,语音识别要比图像处理更早采用神经网络。产品方面,智能音箱、语音助理大行其道,其中一个很大的原因就在于深度学习算法把语音识别和生成的技术门槛大大的降低了。像 TensorFlow 这样开源的、通用的机器学习框架使得越来越多的开发人员可以开发出适合自己应用场景的语音应用。

另外一个例子是机器翻译。现在你可以用手机拍一张照片,手机软件可以自动识别出图形中的文字,并把文字翻译成另外一种语言。这个看似简单的应用其实是图像技术和机器翻译技术很自然的结合。

Google 翻译是个十几年的产品了,一年多以前,我们把它的后台系统升级成为以神经网络为基础的系统。我们可以看到那次升级极大地降低了翻译的错误率,一些语言之间的翻译现在几乎可以达到手工翻译的效果。

其他应用

利用深度学习技术,我们不仅可以大幅提高已有产品功能的性能,我们还开发出一些过去不存在的新功能。比如说,邮件自动回复功能,Android 上的邮箱软件现在可以分析用户收到的邮件,然后给出三个用户可能的回复供他选择。举例来说,你收到吃饭的邀请,你可能的回复是“我来”、“没空”、“来,晚点来”,这极大的方便了用户在手机上处理邮件的效率。

TensorFlow 在其他领域的应用

通过前面的许多 TensorFlow 应用例子,我们看到一个通用的深度学习框架可以帮助到现有互联网应用提升它们的智能水平,但是我们也看到,TensorFlow 深度学习框架也在很多其他领域得到使用。比如说,我们在伦敦的同事过去两年努力推进的 AlphaGo 的工作就得益于 TensorFlow 框架的帮助。因为 TensorFlow 在利用超大计算机集群和最新加速器方面的支持,AlphaGo 团队可以更加专注于算法的研发。

我们有做智能医疗工作的团队,由于 TensorFlow 一个通用的框架,他们可以很方便地重用现成的图像识别模型,然后针对特定的应用领域和特定的数据,微调、训练一下模型,他们就可以在检测视网膜病变达到了 95% 的准确率,超过了眼科专家诊断率为 91% 的准确率。

在自动驾驶方面,我们在 Waymo 的同事也在使用 TensorFlow 不断改进他们的自动驾驶系统中各种深度模型,包括对路况场景的分割、雷达信号的处理等等。

我们特别欣慰的是,通过把 TensorFlow 开源,我们把利用深度学习技术的门槛大大减低了。过去两年里,我们看到很多和互联网行业毫无关系的行业也开始尝试利用深度学习的技术和方法。比如说有一家婴儿制品公司,这家公司正式选择引进 TensorFlow 的人造智能系统以改善婴儿食品的质量控制系统,可以对公司产品成分进行“异常检测”。他们提供大量数据作为训练数据,系统能够学习如何识别可接受的成分,拒绝任何不合格的缺陷成分。

我们也很兴奋的看到,TensorFlow 也在计算机科学研究以外的科学研究上得到了使用。比如,美国太空总署开普勒计划的科学家和我们同事联合开发了一个 TensorFlow 的模型。开普勒计划本身的目标是通过星载望远镜持续不断地观察太空中恒星亮度的变化,希望发现太阳系以外的行星系统,最终希望发现另外一个适宜人类居住的行星。目前,该计划已经积累了上百亿的观察数据。几个月前,这个 TensorFlow 的模型帮助科学家发现了 2500 光年以外的开普勒 90 恒星系统的第八颗行星,这也是人类目前知道的太阳系以外拥有最多行星的恒星。

人们不光仰望星空,同时也在回望我们的地球。在这个应用例子里,澳大利亚的科学家用TensorFlow 开发的图像识别模型在数万张海洋航拍张片中可以快速准确地找到需要保护的大型海洋哺乳动物,比如海牛、须鲸等等。

类似的,也有科学家利用 TensorFlow 把语音处理技术应用到鸟类保护上。他们在丛林里安装话筒,采集鸟类的声音。模型就可以很准确的估算出鸟类在一片丛林的数量,从而可以更加精准的对它们实施保护。

还有一个很有意思的应用, 我们有同事正在尝试利用深度学习来创作音乐。有意思的是,这些机器创作出来的乐曲还受到了专业乐手的肯定。

跟国内公司的合作

TensorFlow 自 2015 年开源以来,我们一直在努力投入。我们是 Github 上最受欢迎的开源深度学习框架。同时,我们也看到超过 1000 多名开发者参与了 TensorFlow 的开发,这是一个非常活跃的社区。

最近我们开始加大对中国市场的支持力度,比如说我们建立了一个 TensorFlow 中文网站 tensorflow.google.cn,TensorFlow 的开发者也实现了快速的增长。

我们统计数据显示,到目前,全球 180 多个国家和地区的用户已经下载了 1000 万次 TensorFlow 开发包,这表明 TensorFlow 的应用开发也是非常普遍的。

上面的图显示中国拥有大量的开发人员在关注使用 TensorFlow,事实上,我们也在积极地和众多中国高科技公司建立伙伴关系,积极地支持和帮助他们更好地使用 TensorFlow。

比如说,京东内部就搭建了 TensorFlow 的训练平台,用于开发训练图像、自然语言相关的模型,并应用到客服、广告等领域。小米也在尝试类似的技术路线,支持他们生态线上各种特殊的应用。网易的有道笔记、网易翻译君也使用了 TensorFlow 视觉和语言的模型。

非常感谢我们的用户和合作伙伴对 TensorFlow 的反馈,TensorFlow 也正在努力开发新的功能。比如,为了使 TensorFlow 前端更加易于使用,便于调试、支持更加动态的编程模式,TensorFlow 花了很大的努力开发了 Eager 模式。Eager 模式最主要的特征就是前端程序的流程更加直接反应了程序算法逻辑的流程。这一点,我们相信会特别有助于快速原型开发和调试。

另外是我们最近努力推进中的TensorFlow Lite,它是专门针对移动和嵌入式应用场景打造的机器学习软件库。它的目标是希望把部署机器学习模型迁移到移动端变得更加简单和高效。

最后,我们也在继续开发新一代的深度学习硬件加速器,TPU。去年我们宣布了第二代TPU处理器,这个处理器每秒可以达到 180 万亿次浮点运算的性能,有 64 千兆的内存。目前,我们正在内部各种产品研发中使用 TPU 二代,并且逐步开放给公众使用。