0 引言

自从去年AlphaGo打败中国围棋高手柯洁以来,人工智能就在社会上被炒的沸沸扬扬。人们对人工智能充满了无限的期待,与人工智能的相关项目都变得炙手可热,学习人工智能更是成为了社会热潮。其实,人工智能的概念早在上世纪50年代就已经被图灵提及,图灵也被称为人工智能之父。人工智能的发展也颇为曲折,在这近80年的时间里,它的起起伏伏总让人们对人工智能充满了疑惑。究竟机器是否能够达到所谓的人工智能?如果真有类似于人类的智能机器,它对社会伦理将会构成威胁!但是人类存在的意义就是探索未知,突破自身局限,将不可能变为可能。所以在疑惑和担心中,人们一次又一次推着人工智能向前发展。这次人工智能出现如此大的突破,主要归结于以下几个原因:

  1. 计算能力有了大幅提升
  2. 深度学习技术有了巨大的提升
  3. 像谷歌这样的科技公司做了很多的人工智能基础工作,比如TensorFlow的开源

从以上几个原因中我们发现,人工智能基础技术的开源为人工智能业界打开了一片新天地。人工智能也从科研院所走进各行各业对此有兴趣的人群中。独乐乐不如众乐乐,众人拾柴火焰高,个人智慧总是无法与集体智慧相比。我相信TensorFlow的开源会极大地促进人工智能的发展。我们无法判断我们的未来,因此我们只有不断地探索。

1 什么是TensorFlow

TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

2 TensorFlow的特征

  • 高度的灵活性 :TensorFlow 不是一个严格的“神经网络”库。只要你可以将你的计算表示为一个数据流图,你就可以使用Tensorflow。你来构建图,描写驱动计算的内部循环。我们提供了有用的工具来帮助你组装“子图”(常用于神经网络),当然用户也可以自己在Tensorflow基础上写自己的“上层库”。定义顺手好用的新复合操作和写一个python函数一样容易,而且也不用担心性能损耗。当然万一你发现找不到想要的底层数据操作,你也可以自己写一点c++代码来丰富底层的操作。
  • 真正的可移植性(Portability) :Tensorflow 在CPU和GPU上运行,比如说可以运行在台式机、服务器、手机移动设备等等。想要在没有特殊硬件的前提下,在你的笔记本上跑一下机器学习的新想法?Tensorflow可以办到这点。准备将你的训练模型在多个CPU上规模化运算,又不想修改代码?Tensorflow可以办到这点。想要将你的训练好的模型作为产品的一部分用到手机app里?Tensorflow可以办到这点。你改变主意了,想要将你的模型作为云端服务运行在自己的服务器上,或者运行在Docker容器里?Tensorfow也能办到。Tensorflow就是这么拽 :)
  • 将科研和产品联系在一起 :过去如果要将科研中的机器学习想法用到产品中,需要大量的代码重写工作。那样的日子一去不复返了!在Google,科学家用Tensorflow尝试新的算法,产品团队则用Tensorflow来训练和使用计算模型,并直接提供给在线用户。使用Tensorflow可以让应用型研究者将想法迅速运用到产品中,也可以让学术性研究者更直接地彼此分享代码,从而提高科研产出率。
  • 自动求微分 :基于梯度的机器学习算法会受益于Tensorflow自动求微分的能力。作为Tensorflow用户,你只需要定义预测模型的结构,将这个结构和目标函数(objective function)结合在一起,并添加数据,Tensorflow将自动为你计算相关的微分导数。计算某个变量相对于其他变量的导数仅仅是通过扩展你的图来完成的,所以你能一直清楚看到究竟在发生什么。
  • 多语言支持 :Tensorflow 有一个合理的c++使用界面,也有一个易用的python使用界面来构建和执行你的graphs。你可以直接写python/c++程序,也可以用交互式的ipython界面来用Tensorflow尝试些想法,它可以帮你将笔记、代码、可视化等有条理地归置好。当然这仅仅是个起点——我们希望能鼓励你创造自己最喜欢的语言界面,比如Go,Java,Lua,Javascript,或者是R。
  • 性能最优化 :比如说你又一个32个CPU内核、4个GPU显卡的工作站,想要将你工作站的计算潜能全发挥出来?由于Tensorflow 给予了线程、队列、异步操作等以最佳的支持,Tensorflow 让你可以将你手边硬件的计算潜能全部发挥出来。你可以自由地将Tensorflow图中的计算元素分配到不同设备上,Tensorflow可以帮你管理好这些不同副本。

3 基于TensorFlow的应用

  • AlphaGo
  • 自动驾驶
  • 天文学寻找类似地球的行星
  • 荷兰的养殖场监测奶牛的行为和身体数据,使用 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 数据中心做能耗优化

    参考

  1. http://www.tensorfly.cn/
  2. https://blog.csdn.net/jILRvRTrc/article/details/80578131