科技界泰斗Tim O’Reilly刚刚试用了谷歌相册(Google Photos),惊叹于其人工智能深度。
今年5月,谷歌年度I/O大会(网络开发者年会)的小型新闻酒会上,O'Reilly就站在谷歌首席执行官兼共同创始人Larry Page身边几英尺远的地方。那天,谷歌揭开了它个人相册应用的面纱,O'Reilly很惊讶地发现,如果他在搜索框中输入类似“墓碑”这样的关键字,该APP甚至能找出很久很久以前照的他叔叔墓地的照片。
谷歌正在开源坐镇其科技帝国核心的软件
该应用使用了称为深度学习的日益强化版人工智能技术。通过分析成千上万张墓碑照片,这一人工智能技术可以学会识别从未见过的墓碑。猫猫狗狗,花草树木,蓝天白云,各色美食都一样。
谷歌相册搜索引擎并不完美。但它的准确度相当惊人——它是如此惊人以致O'Reilly万分不解为什么谷歌不将其人工智能引擎的访问权通过互联网、云计算售出,让其他人也用这种机器学习驱动他们的app。这东西可以成为谷歌真正的赚钱机器,他说。毕竟,谷歌也用这个人工智能引擎来进行语音识别,语言翻译,改善互联网搜索结果等等。从广告目标锁定到计算机安全,其他人也可以将这一科技应用到很多很多其他任务上。
好吧,今天早晨,谷歌将O'Reilly的想法实现得更高远了。不是卖出深度学习引擎,而是将其开源,让全世界都能自由分享引擎的底层代码。这一软件被称为TensorFlow,通过完全奉上该技术,谷歌相信,人工智能的发展脚步将被加快。通过开源,外部人士也可以帮助改善谷歌的技术,而且,这些改善会切实回馈给谷歌。
“我们希望的是,社区将开源接纳为一种表达很多不同类型的机器学习算法的好方式,并且以多种不同且有趣的方式帮助建立和完善【TensorFlow】。”谷歌最主要的工程师之一,深度学习技术崛起的关键人物Jeff Dean如此说道。
Jeff Dean
近些年来,其他公司和研究人员,如Facebook、微软和推特,也在人工智能领域取得了巨大的进步。有些已经开源了与TensorFlow类似的软件。包括Torch——最初由纽约大学的研究人员(现在很多都在Facebook上班)制作的一个系统,以及类似Caffe和Theano这样的系统。但谷歌的举动影响重大。这是因为,有些人认为谷歌的人工智能引擎是世界上最先进的,而且,这是谷歌嘛!
“这真的非常有趣。”深度学习初创公司Skymind老板Chris Nicholson说,“谷歌领先了其他人5到7年。如果他们将自己的工具开源,世界上其他人的机器学习技术都会得到提高。”
诚然,谷歌并没有公开它所有的秘密。到目前为止,该公司只开源了部分人工智能引擎的代码。只有引擎顶层运行的部分算法被分享了出来。驱动该引擎的超级先进的硬件基础设施并为列入开源之列(这东西肯定会标价出售的)。但是谷歌起码贡献出了它某些非常重要的数据中心软件,这可是该公司过去通常不会做的事儿。
谷歌成为互联网最具影响力的力量,很大一部分原因是由于建立在其计算机数据中心内部的超级强力的软件和硬件。这些硬软件可以帮助运营谷歌所有的在线服务,可以处理全球无数人产生的海量数据和流量。而且,谷歌通常不会在它还没进入到其他设计之前就与全世界分享它的现有设计。即使分享了,也仅仅是共享出描述其技术的研究文档。这家公司不开源它的代码。保持领先的秘诀就在于此。
然而,在TensorFlow一事上,谷歌改变了策略,自由分享了某些它最新,实际上也最重要的软件。是的,谷歌开源了部分它的安卓手机操作系统和其他很多较小的软件项目。但这一次还是有所不同。通过释出TensorFlow,谷歌正在开源坐镇其科技帝国核心的软件。“这是一次重大的转变。”帮助建立了包括谷歌文件系统GFS、分布式计算框架MapReduce和分布式存储系统BigTable在内的诸多谷歌突破性数据中心软件的Dean说道。
开放算法
深度学习依赖于神经网络——类似人类大脑神经网的系统。基本上,你向这些网络输入大量数据,它们就学会执行一项任务。喂给它们大量关于早餐、午餐和晚餐的照片,它们可以学会识别一顿饭菜。喂给它们语音,它们能学会识别你在说什么。喂给它们老电影台词,它们自己就能学会进行一场谈话——不是太完美的交谈,但也是很好的对话了。
一般而言,谷歌采用配备了GPU芯片的大量计算机来训练这些神经网络。GPU是图形处理单元,最先是为电脑游戏和其他视觉依赖度高的应用渲染图形图像用的,但也被证明在深度学习上相当擅长。GPU长于并行处理大量数据,而这恰恰是深度学习需要的。
但在经过训练之后,也就是到了要付诸行动的时候,这些神经网络却要以不同的方式运行。它们通常运行在数据中心内部的传统计算机处理器上,某些情况下,还会运行在手机上。谷歌翻译app就是运行在手机上的例子。它可以完全独立地运行在一台手机上——不用通过网络接入到某个数据中心,让你甚至可以在没有无线信号的情况下也能用它将外语文字翻译成你的母语。比如说,你可以将该APP对准一块德语路标,它就会即刻将之翻译成英语(随你设置)。
TensorFlow是建立和运行这些神经网络的一种方式——训练阶段和执行阶段都包括了。它是一个软件库集合,也就是一堆代码,你可以将它嵌入进任何应用,这样它就可以学习诸如图像识别、语音识别和语言翻译这样的任务了。
TensorFlow的底层代码是用C++编程语言写的。但在为这款人工智能引擎开发应用时,程序员既可以用C++,也可以用深度学习研究员中间最流行的Python语言。然而,希望在于,外部人士会把这个工具拓宽到其他语言上,包括谷歌的Go语言、Java,甚至可能是Javascript,这样程序员们便能有更多的方式可以开发APP了。
据Dean说,TensorFlow不仅仅非常适于深度学习,其他形式的人工智能,包括增强学习和逻辑回归,也适用。谷歌之前的系统,DistBelief,就不是这样。DistBelief非常适于深度学习,2014大规模视觉识别挑战赛就是在它的帮助下赢的。。但Dean说,TensorFlow比它快1倍。
随着开源这款工具,谷歌还将提供某些神经网络模型和算法,包括照片识别、手写数字识别和文本分析的模型。“我们将提供在公共数据集上训练这些模型所需的所有算法。”Dean说。
目前的问题是,谷歌还没有开源可以在大量机器上训练模型的TensorFlow版本。最初开源的版本只能运行在单个电脑上。这台电脑可以包括很多GPU,但它仍然只是独立的一台电脑。“谷歌还是在保持领先优势。”Nicholson说,“想打造真正的企业级应用,你需要大规模分析数据。”但在执行阶段,TensorFlow的开源版本可以运行在手机、台式和笔记本电脑上,并且谷歌表示最终将会开源可以运行在成百上千台机器上的版本。
哲学上的改变
为什么谷歌哲学会发生这么明显的改变?为什么在重要代码保密这么多年后决定开源TensorFlow?部分原因在于,机器学习社区通常就是这么运作的。深度学习植根于开放分享他们想法的那些学者,他们中很多人现在都供职于谷歌,包括深度学习教父——多伦多大学教授Geoff Hinton。
但是Dean也说到,TensorFlow创建的时间与其他工具,如: MapReduce、GFS、BigTable、Dremel、Spanner和Borg,都不一样。互联网公司广为分享他们的工具以加快开发速度的开源运动,在过去10年间切实提速了不少。谷歌现在也朝着开源的方向打造软件。Dean解释说,那些早期的工具都与谷歌的基础设施联系太紧密了。开源它们没什么实际意义。
“它们就不是用开源思维开发的。它们和谷歌现有的系统有着丝丝缕缕的联系,要割断这些联系太难了。”Dean说,“而TensorFlow,我们刚开始开发它的时候就有点像是在对自己说:‘嘿,或许我们应该开源它。’”
这就是说,某种程度上,TensorFlow还是与谷歌内部基础设施绑定的,谷歌工程师Rajat Monga如是说。这也是为什么谷歌没有完全开源TensorFlow的原因。正如Nicholson指出的,你也可以打赌谷歌因为想保持优势而保留了代码的神秘感。不过,很明显,谷歌已经尽其所能地开源了。
回馈环
谷歌并没有像其他很多人开源主要软件那样将开源项目交给独立第三方。谷歌自己将在新的Tensorflow.org网站上管理该项目。不过,它确实在Apache2协议下共享了代码,意味着任何人都可以自由使用那份代码。“我们的许可条款足以向社区表明这真的是一款开源产品。”Dean说。
当然,这一举动将为谷歌在世界软件开发者中间赢得一些声誉。但更重要的是,它将回馈新的项目。Dean表示,你可以将TensorFlow看作Torch和Caffe和Theano的精华组合。他说,像Torch和Theano,适合快速堆砌研究项目,而Caffe,适合将这些研究项目推向现实世界。
其他人可能会有不同意见。社区里很多人都说,现在已被谷歌收购的著名深度学习初创公司DeepMind,就继续在用Torch——尽管它早就可以用TensorFlow和DistBelief了。但至少,一个开源的TensorFlow给了社区更多的选择。而这,是件好事。
“过去3或4年间深度学习领域的大量发展都受益于这些各种各样的库,它们帮助研究人员专注在他们的模型上。研究人员不用过于分心在底层软件工程上。”在多伦多大学Geoff Hinton教授指导下精研深度学习的博士生Jimmy Ba说。
即使有TensorFlow在手,打造一款深度学习APP仍然需要下一番工夫。但这一点在未来或许也会有所改变。如Dean指出的,一个谷歌深度学习开源项目和一个谷歌深度学习云服务并不是互斥的。Tim O'Reilly的好主意依然可能实现。
但短期内,谷歌仅仅对分享代码感兴趣。如Dean所说,这将帮助公司改善代码。但同时,Monga说,它也将帮助改进整个机器学习,哺育各种各样的新想法。而且,好吧,这些也将反哺谷歌。“机器学习的任何发展,”他说,“也会为我们带来进步。”
(编辑:Zoey)