Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

Facebook今天宣布开源深度学习框架 Torchnet。Torchnet 基于广泛使用的开源深度学习框架 Torch 7 搭建,支持模块化编程方法,能减少程序员工作量、降低错误率,简化深度学习模型训练过程。相比其他巨头自己搭建的深度学习框架,Torchnet 更加开放,也将大幅推进深度学习的应用普及。

Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

2016年6月24日,Facebook 宣布开源深度学习框架 Torchnet,简化研究和开发人员建立深度学习系统过程。

深度学习是当下一种时髦的学习方式,涉及到培训人工神经网络处理大量的数据,如图片,然后让神经网络做出新数据的预测。与其建立一个全新的深度学习框架, Facebook 选择的是在 Torch 上编译一个开源库,Facebook 先前也曾致力于此。

“这使得它很容易实现完全隐藏 I/O(输入 / 输出)成本功能,而如果你想创建一个实用的大型深度学习系统,你就很需要这项功能的。” Facebook 人工智能研究所(FAIR)的一名科学家 Laurens van der Maaten 在一次采访中这样说道,“我们并不是要让 Torch 运作的更快或者更慢或者其他怎样,这些都不是框架的重点所在。” van der Maaten 还表示,Torchnet 是用 Lua 脚本语言写成,能够在标准的 x86 芯片或图形处理单元(GPUs)上运行,也可以让程序员重用某些代码。这样一来就能够降低工作量,同时也可以降低出现 bug 的几率。

Facebook 并不是唯一一家为 Torch 编译工具的公司,Twitter 也这样做过,可以肯定的是,同 van der Maaten 聊过的一些 Twitter 的员工似乎也对 Torchnet 感兴趣。亚马逊、谷歌和微软也在近几个月发布了全新的深度学习框架,Facebook 之前一直致力于开发原生开源项目,如 React Native 和 Presto,所以现在 Facebook 做出一些改变看上去还是挺有意思的。

van der Maaten 说道:“这种方法同 Theano 框架的 Blocks and Fuel 库有点相似。”

在这份报告中,van der Maaten 写道:Torchnet 可能并不会一直局限在 Torch 上使用,Torchnet 是抽象的,可以轻松应用到其他框架中,例如 Caffe 还有谷歌的 TensorFlow 框架。

Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

在六、七个月前,Facebook 发布了 Torchnet 的第一版本。van der Maaten 说道:“现在有许多团队在不同应用中使用这一版本。” 他没有说具体是 Facebook 的哪些工作依赖于 Torchnet,但它可以被应用到图像识别和自然语言处理等方面,这样一来便可以在一些事情上派上用场,例如找到相关的 Instagram 图片来为 News Feed 选择最佳 Facebook 帖子。Facebook 希望它的内容能够比网络上的其他内容都更具吸引力,这样既可以留住 “回头客” 又能够吸引新用户,所以这是很重要的东西。

Torchnet 以目前广泛使用的深度学习框架 Torch 7 为基础,采用 Lua 语言编写,可以在 CPU 和 GPU 上运行,支持代码复用,从而减少程序员工作量,降低程序运行的错误率。

Facebook人工智能研究实验室的研究科学家 Laurens van der Maaten 告诉 VentureBeat,Torchnet 主要目的并非为了加快 Torch 运行速度,而是免去输入/输出的成本(cost)。

如今,越来越多的企业都开始使用深度学习,而在训练用于解决实际问题的大规模深度学习系统时,输入/输出成本是非常现实而且经常会遇到的问题。因此,可以预计 Torchnet 将极大推动深度学习应用的普及。

点亮深度学习之路

Facebook 的 3 位研究员在官方博客中比较详细地介绍了 Torchnet。据悉,Torchnet 是 Facebook 于刚刚结束的 ICML 2016 大会上介绍的一款开源的新型深度学习软件包,为了帮助研究和开发人员在 Torch 上建立快速的、可复用的学习系统原型而推出。

虽然 Torch 已经是比较成功的深度机器学习研究框架,但它不为机器学习实验提供抽象概念和样本代码,导致开发人员需要进行大量重复编程工作。这样会造成错误重现,可能得出不正确的研究结论,减慢开发的整体进度。Torchnet 能指引研究者建立清晰编程框架,而样本代码能帮助他们加速开发进程。

Torchnet  提供了基本概念和代码集,包括样本代码(boilerplate code)、关键抽象概念(key abstractions)和参考执行代码(reference implementations)。这些概念和代码集可以被灵活组合或拆开,并在后续开发中重复使用。其中,还有一个重要的子程序包,含有计算视觉、自然语言处理和语音处理等与机器学习有关的样本代码实现。

Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

Torchnet 的总体设计就像乐高,程序块都按照一定的规则设计,很容易组合在一起,所有组合在一起的模块构成了一个统一的系统。在这个系统中,各个组件紧密相连又能相互取代。

Torchnet 的模块化设计使数据集测试、数据加载过程和模型、性能评估等衍生程序测试更加容易,从而加快实验速度。借助 Torchnet,在不同的数据集上运行相同的实验,就跟插入不同的(基本)数据加载器一样简单,改变评估标准只用改变一行代码就能实现(插入不同的性能指示器)。

Facebook 研究员在博文中写道,开源 Torchnet 是为了促进 Torch 开发社区相互交流,让大家共同打造更加高效的深度学习模型。

Torchnet > TensorFlow

继谷歌、微软、亚马逊等巨头之后,Facebook 也终于来到开源深度学习平台的竞技场。Torchnet 的表现会如何?看看它和谷歌的 TensorFlow 有什么不同。

Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

首先,Torchnet 并不关注提升深度神经网络的推理计算和梯度计算性能,而是为了便于研究人员更加便捷地进行机器学习实验或设计相关工具(主要以插件的方式)。如果说谷歌的分布式 TensorFlow 3 天训练一个模型,是高手过招的竞技场,那么 Torchnet 则是将训练深度学习模型的门槛连降 3 级。

此外,TensorFlow 原本是谷歌内部研发的产品,后来变成开源。而 Torchnet 则一开始就 以开源深度学习框架 Torch 7 为基础。虽然目前 TensorFlow 吸引了很多开发者,但 Torch 有着非常活跃的开发者用户群,再加上门槛低,Torchnet 的使用人数反超 TensorFlow 也并非不无可能。

最后,Torchnet 并不局限于 Torch,还可以应用于其他框架,比如 Caffe 和谷歌的 TensorFlow。

名称
支持平台 语言 界面 训练好的模型
TensorFlow Linux, Mac OS,

Windows roadmap

C++, Phython Phython, C/C++
Torchnet Linux, iOS, Android, Mac OS X C, Lua C, Lua, LuaJIT,

utility libaray for OpenCL/C++

深度学习迈入商业应用

虽然近来深度学习广受关注、引领技术潮流,但真正使用深度学习的应用还在少数。

对于任何产业而言,规模或者普及程度都是至关重要的,起着决定性的作用。没有足够大的规模,就无法建立基础设施、商业模式、培养用户、形成市场……也正因此,Facebook 才开源 Torchnet。

这跟此前巨头掀起的“开源”浪潮不同,Facebook 并不是开源公司内部的一个平台,Torchnet 是真正的公开,不仅仅是为了吸引更多开发者,最重要的目的是降低门槛,让更多人使用深度学习技术,扩大产业整体的市场规模。

【本文综合自新智元和36氪】

氧分子网(www.yangfenzi.com)是关注互联网生态圈的科技新媒体

·氧分子网(http://www.yangfenzi.com)延伸阅读:

Facebook深度学习专家:未来的人工智能是怎样
可编程门阵列FPGA:深度学习的未来?
科大讯飞刘庆峰:人工智能全球决战未来十年
地平线机器人李星宇:复杂的中国驾驶场景,正是深度学习的优势
深度学习会让机器学习工程师失业吗?
【nature】深度学习巨头看人工智能界人才迁徙
百度吴恩达谈深度学习局限:AI经济价值目前仅来自监督学习
出门问问李志飞:一个硅谷工程师在中国的 AI 创业“实践论”
《自然》论文详解:AlphaGo 背后的深度神经网络和树搜索

分享给您的好友:

您可能还喜欢…

3 Responses

  1. 深度学习大新闻:谷歌 Tensorflow 选择 Keras说道:

    Keras 的作者、谷歌 AI 研究员 Francois Chollet 宣布了一条激动人心的消息:Keras 将会成为第一个被添加到 TensorFlow 核心中的高级别框架,这将会让Keras 变成 Tensorflow 的默认 API。

    在 Reddit 的一条评论中,Keras 的作者、谷歌 AI 研究员 Francois Chollet 宣布了一条激动人心的消息:Keras 将会成为第一个被添加到 TensorFlow 核心中的高级别框架,这将会让 Keras 变成 Tensorflow 的默认 API。

    背景介绍:Keras 是一个高级别的 Python 神经网络框架,能在 TensorFlow 或者 Theano 上运行。此外,能用到 TensorFlow 上的还有一些高级别的 Python 神经网络框架,比如,TF-Slim,虽然它们发展更不完善,也不是 TensorFlow 的核心部分。

    神经网络研究者 Rachel Thomas 在 fast.ai 上撰文介绍了这一消息,并写下了他使用TensorFlow 的心得体会:

    他说,使用 TensorFlow 给我的感觉就是我还不够聪明,但是,在使用 Keras 的时候我会觉得神经网络要比我想象的简单。这是因为,TensorFlow 的 API 过于冗长和混乱,也是因为 Keras 拥有我体验过的最贴心的、最具表达力的 API。对我来说,在刚开始使用TensorFlow 受挫后就来公开批评它有点尴尬,它让人觉得沉重、不自然。当然,其中有我自己的原因。但是,Keras 和 Theano 确实证实了我的想法:tensors 和 神经网络不一定都是那么折磨人的。

    在一次大学作业中,我曾经使用一个硬件描述语言,通过添加和改变 CPU 暂存器中的字节来编码除法(division)。这是一个很有趣的练习,但是我非常确定,我不想用这种方式对神经网络进行编码。使用一个更高级别的语言的好处是显而易见的:更快地编码、更少的bug,以及,更少的痛苦。Keras 的好处还有更多——它更适配神经网络的概念,能促进新的发现。Keras 让我更加擅长神经网络,因为语言抽象与神经网络的概念搭配得更加好。

    使用与我的思维相同的概念语言写程序,能让我把注意力集中在需要解决的难题上,而不是编程语言的伪迹上。因为,当我把更多的精力花在头脑中的思维与编程语言之间的概念转换的时候,我的思考就会变慢。TensorFlow 影响了我的生产力。

    正如 Chollet 所写:“如果你想要长期使用一个更高级别的面向对象的 TF API ,Karas 就是正确的道路。”

  2. 深入浅出Tensorflow:深度学习及Google深度学习框架说道:

    在国内,从InfoQ的判断来看,TensorFlow仍处于创新传播曲线的创新者使用阶段,大部分人对于TensorFlow还缺乏了解,社区也缺少帮助落地和使用的中文资料。InfoQ期望通过深入浅出TensorFlow系列文章能够推动Tensorflow在国内的发展。本文是整个系列的第一篇文章,将会介绍深度学习的发展历史以及深度学习目前成熟的应用,同时也会介绍目前主流的深度学习工具,以及TensorFlow相比于其他工具的优势。

    从计算机发明之初,人们就希望它能够帮助甚至代替人类完成重复性劳作。利用巨大的存储空间和超高的运算速度,计算机已经可以非常轻易地完成一些对于人类非常困难,但对计算机相对简单的问题。比如统计一本书中不同单词出现的次数,存储一个图书馆中所有的藏书或是计算非常复杂的数学公式都可以轻松通过计算机解决。然而,一些人类通过直觉可以很快解决的问题,目前却很难通过计算机解决。人工智能领域需要解决的问题就是让计算机能像人类一样,甚至超越人类完成类似图像识别、语音识别等问题。

    计算机要像人类一样完成更多智能的工作需要够掌握人类的经验。比如我们需要判断一封邮件是否为垃圾邮件,会综合考虑邮件发出的地址、邮件的标题、邮件的内容以及邮件收件人的长度,等等。这是我们受到无数垃圾邮件骚扰之后总结出来的经验。这个经验很难以固定的方式表达出来,而且不同人对垃圾邮件的判断也会不一样。如何让计算机可以跟人类一样从历史的经验中获取新的知识呢?这就是机器学习需要解决的问题。

    什么是机器学习?

    卡内基梅隆大学(Carnegie Mellon University)的Tom Michael Mitchell教授在1997年出版的书籍Machine Learning中有对机器学习进行非常专业的定义,这个定义在学术界内被多次引用。在这本书中对机器学习的定义为“如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则我们称这个程序可以从经验中学习”。让我们通过垃圾邮件分类的问题来解释机器学习的定义。在垃圾邮件分类问题中,“一个程序”指的是需要用到的机器学习算法,比如逻辑回归算法;“任务T”是指区分垃圾邮件的任务;“经验E”为已经区分过是否为垃圾邮件的历史邮件,在监督式机器学习问题中,这也被称之为训练数据,也就是说对于机器学习而言,所谓的经验其实就是数据;“效果P”为机器学习算法在区分是否为垃圾邮件任务上的正确率。

    在使用逻辑回归算法解决垃圾邮件分类问题时,我们会先从每一封邮件中抽取对分类结果可能有影响的因素,比如说上文提到的发邮件的地址、邮件的标题及收件人的长度,等等。每一个因素被称之为一个特征(feature)。逻辑回归算法可以从训练数据中计算出每个特征和预测结果的相关度。比如在垃圾邮件分类问题中,我们可能会发现如果一个邮件的收件人越多,那么邮件为垃圾邮件的概率也就越高。在对一封未知的邮件做判断时,逻辑回归算法会根据从这封邮件中抽取得到的每一个特征以及这些特征和垃圾邮件的相关度来判断这封邮件是否为垃圾邮件。

    在大部分情况下,在训练数据达到一定数量之前,越多的训练数据可以使逻辑回归算法对未知邮件做出的判断越精准。也就是说逻辑回归算法可以根据训练数据(经验E)提高在垃圾邮件分类问题(任务T)上的正确率(效果P)。之所以说在大部分情况下,是因为逻辑回归算法的效果除了依赖于训练数据,也依赖于从数据中提取的特征。假设我们从邮件中抽取的特征只有邮件发送的时间,那么即使有再多的训练数据,逻辑回归算法也无法很好地利用。这是因为邮件发送的时间和邮件是否为垃圾邮件之间的关联不大,而逻辑回归算法无法从数据中习得更好的特征表达。这也是很多传统机器学习算法的一个共同的问题。

    什么是深度学习?

    对许多机器学习问题来说,特征提取不是一件简单的事情。在一些复杂问题上,要通过人工的方式设计有效的特征集合需要很多的时间和精力,有时甚至需要整个领域数十年的研究投入。例如,假设想从很多照片中识别汽车。现在已知的是汽车有轮子,所以希望在图片中抽取“图片中是否出现了轮子”这个特征。但实际上,要从图片的像素中描述一个轮子的模式是非常难的。虽然车轮的形状很简单,但在实际图片中,车轮上可能会有来自车身的阴影、金属车轴的反光,周围物品也可能会部分遮挡车轮。实际图片中各种不确定的因素让我们很难直接抽取这样的特征。

    深度学习解决的核心问题之一就是自动地将简单的特征组合成更加复杂的特征,并使用这些组合特征解决问题。深度学习是机器学习的一个分支,它除了可以学习特征和任务之间的关联以外,还能自动从简单特征中提取更加复杂的特征。图1中展示了深度学习和传统机器学习在流程上的差异。如图1所示,深度学习算法可以从数据中学习更加复杂的特征表达,使得最后一步权重学习变得更加简单且有效。在图2中,展示了通过深度学习解决图像分类问题的具体样例。深度学习可以一层一层地将简单特征逐步转化成更加复杂的特征,从而使得不同类别的图像更加可分。比如图2中展示了深度学习算法可以从图像的像素特征中逐渐组合出线条、边、角、简单形状、复杂形状等更加有效的复杂特征。

    人工智能、机器学习和深度学习的关系

    总的来说,人工智能、机器学习和深度学习是非常相关的几个领域。图3总结了它们之间的关系。人工智能是一类非常广泛的问题,机器学习是解决这类问题的一个重要手段,深度学习则是机器学习的一个分支。在很多人工智能问题上,深度学习的方法突破了传统机器学习方法的瓶颈,推动了人工智能领域的发展。

    图4展示了“deep learning”(深度学习)这个词在最近十年谷歌搜索的热度趋势。从图中可以看出,从2012年之后,深度学习的热度呈指数上升,到2016年时,深度学习已经成为了谷歌上最热门的搜索词。深度学习这个词并不是最近才创造出来的,它基本就是深层神经网络的代名词。受到人类大脑结构的启发,神经网络的计算模型于1943年首次提出。之后感知机的发明使得神经网络成为真正可以从数据中“学习”的模型。但由于感知机的网络结构过于简单,导致无法解决线性不可分问题。再加上神经网络所需要的计算量太大,当时的计算机无法满足计算需求,使得神经网络的研究进入了第一个寒冬。

    到20世纪80年代,深层神经网络和反向传播算法的提出很好地解决了这些问题,让神经网络进入第二个快速发展期。不过,在这一时期中,以支持向量机为主的传统机器学习算法也在飞速发展。在90年代中期,在很多机器学习任务上,传统机器学习算法超越了神经网络的精确度,使得神经网络领域再次进入寒冬。直到2012年前后,随着云计算和海量数据的普及,神经网络以“深度学习”的名字再次进入大家的视野。2012年,深度学习算法AlexNet赢得图像分类比赛ILSVRC(ImageNet Large Scale Visual Recognition Challenge)冠军,深度学习从此开始受到学术界广泛的关注。

    深度学习的应用

    图5展示了历年ILSVRC比赛的情况,从图中可以看到,在深度学习被使用之前,传统计算机视觉的方法在ImageNet数据集上最低的Top5错误率为26%。从2010年到2011年,基于传统机器学习的算法并没有带来正确率的大幅提升。在2012年时,Geoffrey Everest Hinton教授的研究小组利用深度学习技术将ImageNet图像分类的错误率大幅下降到了16%。而且,从2012年到2015年间,通过对深度学习算法的不断研究,ImageNet图像分类的错误率以每年4%的速度递减。这说明深度学习完全打破了传统机器学习算法在图像分类上的瓶颈,让图像分类问题得到了更好的解决。如图5所示,到2015年时,深度学习算法的错误率为4%,已经成功超越了人工标注的错误率(5%),实现了计算机视觉研究领域的一个突破。

    在技术革新的同时,工业界也将图像分类、物体识别应用于各种产品中了。在谷歌,图像分类、物体识别技术已经被广泛应用于谷歌无人驾驶车、YouTube、谷歌地图、谷歌图像搜索等产品中。谷歌通过图像处理技术可以归纳出图片中的主要内容并实现以图搜图的功能。这些技术在国内的百度、阿里、腾讯等科技公司也已经得到了广泛的应用。

    在物体识别问题中,人脸识别是一类应用非常广泛的技术。它既可以应用于娱乐行业,也可以应用于安防、风控行业。在娱乐行业中,基于人脸识别的相机自动对焦、自动美颜基本已经成为每一款自拍软件的必备功能。在安防、风控领域,人脸识别应用更是大大提高了工作效率并节省了人力成本。比如在互联网金融行业,为了控制贷款风险,在用户注册或者贷款发放时需要验证本人信息。个人信息验证中一个很重要的步骤是验证用户提供的证件和用户是同一个人。通过人脸识别技术,这个过程可以被更加高效地实现。

    深度学习在语音识别领域取得的成绩也是突破性的。2009年深度学习的概念被引入语音识别领域,并对该领域产生了巨大的影响。在短短几年时间内,深度学习的方法在TIMIT数据集上将基于传统的混合高斯模型(gaussian mixture model,GMM)的错误率从21.7%降低到了使用深度学习模型的17.9%。如此大的提高幅度很快引起了学术界和工业界的广泛关注。从2010年到2014年间,在语音识别领域的两大学术会议IEEE-ICASSP和Interspeech上,深度学习的文章呈现出逐年递增的趋势。在工业界,包括谷歌、苹果、微软、IBM、百度等在内的国内外大型IT公司提供的语音相关产品,比如谷歌的Google Now,苹果的Siri、微软的Xbox和Skype等,都是基于深度学习算法。

    深度学习在自然语言处理领域的应用也同样广泛。在过去的几年中,深度学习已经在语言模型(language modeling)、机器翻译、词性标注(part-of-speech tagging)、实体识别(named entity recognition,NER)、情感分析(sentiment analysis)、广告推荐以及搜索排序等问题上取得了突出成就。在机器翻译问题上,根据谷歌的实验结果,在主要的语言对上,使用深度学习可以将机器翻译算法的质量提高55%到85%。表1对比了不同算法翻译同一句话的结果。从表中可以直观地看到深度学习算法带来翻译质量的提高。在2016年9月,谷歌正式上线了基于深度学习的中译英软件。现在在谷歌翻译产品中,所有从中文到英文的翻译请求都是由基于深度学习的翻译算法完成的。

    TensorFlow:来自Google的深度学习框架

    要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤。
    TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法,但它的应用也不限于深度学习。

    TensorFlow是由Jeff Dean领头的谷歌大脑团队基于谷歌内部第一代深度学习系统DistBelief改进而来的通用计算框架。DistBelief是谷歌2011年开发的内部深度学习工具,这个工具在谷歌内部已经获得了巨大的成功。

    基于DistBelief的ImageNet图像分类系统Inception模型赢得了ImageNet2014年的比赛(ILSVRC)。通过DistBelief,谷歌在海量的非标注YouTube视屏中习得了“猫”的概念,并在谷歌图片中开创了图片搜索的功能。使用DistBelief训练的语音识别模型成功将语音识别的错误率降低了25%。在一次BBC采访中,当时的谷歌首席执行官Eric Schmidt表示这个提高比率相当于之前十年的总和。

    虽然DistBelief已经被谷歌内部很多产品所使用,但是DistBelief过于依赖谷歌内部的系统架构,很难对外开源。为了将这样一个在谷歌内部已经获得了巨大成功的系统开源,谷歌大脑团队对DistBelief进行了改进,并于2015年11月正式公布了基于Apache 2.0开源协议的计算框架TensorFlow。相比DistBelief,TensorFlow的计算模型更加通用、计算速度更快、支持的计算平台更多、支持的深度学习算法更广而且系统的稳定性也更高。关于TensorFlow平台本身的技术细节可以参考谷歌的论文TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems。

    如今在谷歌内部,TensorFlow已经得到了广泛的应用。在2015年10月26日,谷歌正式宣布通过TensorFlow实现的排序系统RankBrain上线。相比一些传统的排序算法,使用RankBrain的排序结果更能满足用户需求。在2015年彭博(Bloomberg)的报道中,谷歌透露了在谷歌上千种排序算法中,RankBrain是第三重要的排序算法。基于TensorFlow的系统RankBrain能在谷歌的核心网页搜索业务中占据如此重要的地位,可见TensorFlow在谷歌内部的重要性。包括网页搜索在内,TensorFlow已经被成功应用到了谷歌的各款产品之中。如今,在谷歌的语音搜索、广告、电商、图片、街景图、翻译、YouTube等众多产品之中都可以看到基于TensorFlow的系统。在经过半年的尝试和思考之后,谷歌的DeepMind团队也正式宣布其之后所有的研究都将使用TensorFlow作为实现深度学习算法的工具。

    除了在谷歌内部大规模使用之外,TensorFlow也受到了工业界和学术界的广泛关注。在Google I/O 2016的大会上,Jeff Dean提到已经有1500多个GitHub的代码库中提到了TensorFlow,而只有5个是谷歌官方提供的。如今,包括优步(Uber)、Snapchat、Twitter、京东、小米等国内外科技公司也纷纷加入了使用TensorFlow的行列。正如谷歌在TensorFlow开源原因中所提到的一样,TensorFlow正在建立一个标准,使得学术界可以更方便地交流学术研究成果,工业界可以更快地将机器学习应用于生产之中。

    其他已开源的深度学习工具

    除了TensorFlow,目前还有一些主流的深度学习开源工具。笔者认为,不同的深度学习工具都在发展之中,比较当前的性能、功能固然是选择工具的一种方法,但更加重要的是比较不同工具的发展趋势。深度学习本身就是一个处于蓬勃发展阶段的领域,所以对深度学习工具的选择,笔者认为应该更加看重工具在开源社区的活跃程度。只有社区活跃度更高的工具,才有可能跟上深度学习本身的发展速度,从而在未来不会面临被淘汰的风险。

    图6 不同深度学习工具在GitHub上活跃程度对比图,图中数据获取的时间为2016年11月17日
    图6对比了不同深度学习工具在GitHub上活跃程度的一些指标。图6(a)中比较了不同工具在GitHub上受关注的程度。从图中可以看出,无论是在获得的星数(star)还是在仓库被复制的次数上,TensorFlow都要远远超过其他的深度学习工具。如果说图6(a)只能代表不同深度学习工具在社区受关注程度,那么图6(b)对比了不同深度学习工具社区参与度。图6(b)中展示了不同深度学习工具在GitHub上最近一个月的活跃讨论贴和代码提交请求数量。活跃讨论帖越多,可以说明真正使用这个工具的人也就越多;提交代码请求数量越多,可以说明参与到开发这个工具的人也就越多。从图6(b)中可以看出,无论从哪个指标,TensorFlow都要远远超过其他深度学习工具。大量的活跃开发者再加上谷歌的全力支持,笔者相信TensorFlow在未来将有更大的潜力。

    本文内容来自作者图书作品《TensorFlow:实战Google深度学习框架》

    作者介绍:郑泽宇,才云首席大数据科学家,前谷歌高级工程师。从 2013 年加入谷歌至今,郑泽宇作为主要技术人员参与并领导了多个大数据项目,拥有丰富机器学习、数据挖掘工业界及科研项目经验。2014 年,他提出产品聚类项目用于衔接谷歌购物和谷歌知识图谱(Knowledge Graph)数据,使得知识卡片形式的广告逐步取代传统的产品列表广告,开启了谷歌购物广告在搜索页面投递的新纪元。他于2013 年 5 月获得美国 Carnegie Mellon University(CMU)大学计算机硕士学位, 期间在顶级国际学术会议上发表数篇学术论文,并获得西贝尔奖学金。

  3. 【PyTorch 挑战 TensorFlow】28303 篇 arXiv 论文看深度学习 6 大趋势说道:

    本文由 Andrej Karpathy撰写,他前不久加入了特斯拉,担任AI 负责人。本文是他在 OpenAI 担任研究员期间所写,陈述了他通过分析机器学习论文数据库arxiv-sanity里面的28303篇论文里面的高频关键词所发现的有趣的结论。

    你是否用过谷歌趋势(Google Trends)(https://trends.google.com/trends/?cat=)呢?它的功能很酷:只需要输入关键词,就可以看到该词的搜索量随时间变化的情况。这个产品在一定程度上启发了我,恰巧我有在过去五年中发表在(arxiv)机器学习论文数据库(http://arxiv-sanity.com/)上的28303篇论文,所以我想,为什么不研究一下该领域发展变化的情况呢?研究结果相当有趣,所以我决定跟大家分享一下。
    (注:机器学习是一个包罗万象的领域,本文中相当长的篇幅是对深度学习领域的研究,这也是我最为熟悉的领域)

    arXiv 的奇点

    让我们先来看看提交到arxiv-sanity的所有分类(cs.AI, cs.LG, cs.CV, cs.CL, cs.NE, stat.ML)下的论文总数随时间变化的趋势,如下图所示:

    没错,峰值位于2017年3月,这个月这些领域有近2000篇论文提交。这一峰值很可能是某些会议的截稿日期(例如NIPS/ICML)造成的。由于并不是所有人都会将他们的论文上传至arxiv,而且上传比例也在随时间变化而变化,所提交的论文数量并不能完全体现机器学习这一领域的研究规模。不过可以看到,有大量的论文为人所注意、浏览或者阅读。

    接下来,我们用这一数字作为分母,看看多少文章包含我们感兴趣的关键词。
    深度学习框架

    首先,我们关心的是深度学习框架的使用情况。如果在文中任何地方有提到深度学习框架,包括参考书目,都会被记录在案。下图是在2017年3月提交的论文中提到深度学习框架的情况:

    可见2017年3月提交的论文中有约10%提到了TensorFlow。当然不是每篇文章都会写出他们所用的框架,不过如果我们假定提及与否和框架类型无关(即说明框架的文章有相对确定的使用比例)的话,可以推断出该社区大约有40%的用户正在使用TensorFlow(如果算上带TensorFlow后端的Keras框架,数量会更多)。下图是一些常用框架随时间变化的趋势图:

    我们可以看到,Theano在很长时间占据主流,后来不再流行;2014年Caffe的发展势头强劲,不过在最近几个月内被TensorFlow取代;Torch(和最近的PyTorch)同样在缓慢稳步发展。它们未来发展的状况会是怎样呢?这是一个有趣的话题,个人认为Caffe和Theano会继续下降,TensorFlow的发展速度则会因为PyTorch的竞争而放缓。

    ConvNet 模型

    常用的ConvNet模型的使用情况又是怎样呢?我们可以在下图看到,ResNets模型异军突起,该模型出现在去年3月发表的9%的论文中。

    另外,我很好奇在InceptionNet出现之前有谁在讨论inception呢?

    优化算法

    优化算法方面,Adam一枝独秀,在所有论文中的出现率高达23%!其真正的使用率很难统计,估计会比23%更高,因为很多论文并没有写出他们所使用的优化算法,况且很多关于神经网络的研究并不使用任何此类算法。然而也有可能要下调5%,因为这个词也非常可能是指代作者的名字,而Adam优化算法在2014年12月才被提出。

    研究者

    我关注的另一指标是论文中提及深度学习领域的研究专家的次数(这与引用次数有些类似,但是前者能更好的用0/1指标表达,且能根据文章总数进行标准化):

    需要注意的是:35%的文章提到了“bengio”,但是学界有两个叫Bengio的专家,分别是Samy Bengio和Yoshua Bengio,图中显示的是两者总和。特别地,Geoff Hinton在30%的最新论文中也被提到,这是一个很高的比例。

    关键词研究

    最后,本文没有针对关键词进行手动分类,而是关注了论文中最热门和最不热门的关键词 。

    最热门关键词

    定义最热关键词的方法有很多,本文使用的方法如下:对于在所有论文中出现的一元分词和二元分词,分别计算出去年和去年以前该词的使用次数,并用二者相除得到的比例做排名。排名靠前的关键词是那些一年前影响有限、但是最近一年出现频率极高的词汇,如下表所示(该表是删除重复词以后的结果):

    举例来说,ResNet的比例是8.17,该词在一年之前(2016年3月)只在1.044%的论文中出现,但上个月8.53%的论文中都有这个关键词,所以我们有8.53 / 1.044 ~= 8.17的比例。

    所以可以看到,在过去一年流行起来的核心技术有:1) ResNets, 2) GANs, 3) Adam, 4) 批规范化(BatchNorm)。

    关于研究方向,最火的关键词分别是1)风格转换(Style Transfer), 2) 深度强化学习, 3) 神经网络机器翻译(“nmt”),或许还有 4)图像生成。

    整体构架方面,最流行的是1) 全卷积网络(FCN), 2) LSTMs/GRUs, 3) Siamese网络, 和4) 编码-解码器网络。

    最“过时”关键词

    相反的,过去一年不再流行的关键词有哪些呢?如下表所示:

    我并不确定“fractal”的含义,不过大体上看,贝叶斯非参数统计似乎不那么流行了。

    结论

    所以,是时候提交应用全卷积网络、编码-解码器、批规范化、ResNet、Gan来做风格转换,用Adam来优化你的论文了。嘿,这听起来也不是很离谱嘛:)

    原文链接:
    https://medium.com/@karpathy/a-peek-at-trends-in-machine-learning-ab8a1085a106

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>