LOADING

Follow me

【转载】深度学习入门指南
三月 27, 2017|DockerPaaS

【转载】深度学习入门指南

【转载】深度学习入门指南

我们SVDS的研发团队一直在研究比较从识别列车图像到识别语音的不同深度学习技术。我们需要构建一条获取数据、创建模型,并评估模型性能的管道(pipeline)。然而,我们在研究外头有什么技术时,苦于找不到可供参考的一份简洁的概述性文档,以便启动一个新的深度学习项目。

要回馈为我们提供众多工具的开源社区,一个方法就是帮助别人评估和选择那些工具,并可以借鉴我们的经验。我们给出了下表,同时解释了我们做决定时所基于的各项标准。

深度学习入门指南

这些排名结合了我们的主观经验和这些技术所适用的图像和语音识别应用领域,以及公开的基准测试研究。请注意:这不是要全部列出现有的深度学习工具包,更多的工具包请参阅这里(https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software)。我们的团队会在今后几个月逐一打量DeepLearning4j、Paddle、Chainer、Apache Signa和Dynet。我们在下面解释了如何给评测的工具评分:

语言:开始接触深度学习时,最好使用一套支持你所熟悉的那种语言的框架。比如说,Caffe(C++)和Torch(Lua)都有面向其代码库的Python绑定,但是我们会建议:如果你想要使用那些技术,最好分别精通C++或Lua。相比之下,TensorFlow和MXNet都有出色的多语言支持功能,因而即便你并不精通C++,照样可以充分利用这项技术。

注意:我们没有机会试用新的面向Torch的Python封装器:PyTorch,Facebook人工智能研究实验室(FAIR)在2017年1月份发布了它。这个框架是为Python程序员开发的,旨在充分利用Torch动态构建神经网络的功能。

深度学习入门指南

深度学习入门指南

教程和训练材料:深度学习技术在教程质量和数量以及获得入门材料方面大不一样。Theano、TensorFlow、Torch和MXNet都有说明文档完备的教程,通俗易懂、易于实施。虽然微软的CNTK和英特尔的Nervana Neon是强大的工具,但是我们很难找到入门级材料。另外,我们发现,GitHub社区的参与度是个重要的指标:这不仅表明了工具未来的发展,还表明了通过搜索StackOverflow或软件库的Git Issues,解决某个问题或软件错误的可能性有多大或速度有多快。值得一提的是,在教程数量、训练材料以及开发者及用户社区这些方面,TensorFlow可谓是业界巨头。

深度学习入门指南

CNN建模功能:卷积神经网络(CNN)用于图像识别、推荐引擎和自然语言处理。CNN包括一组不同的层,这些层将初始的数据量转换成预定义类别评分(predefined class scores)的输出评分。想了解更多信息,请参阅尤金尼欧·卡洛西亚罗(Eugenio Culurciello)的神经网络架构概述(https://culurciello.github.io/tech/2016/06/04/nets.html)。CNN还可用于递归分析,比如在自动驾驶汽车中输出转向角度的模型。我们认为,一项技术的CNN建模功能包括几个特点。这些特点包括:定义模型的机会空间、预构建层的可用性,以及可用来连接这些层的工具和功能。我们发现,Theano、Caffe和MXNet都拥有出色的CNN建模功能。话虽如此,TensorFlow也能够轻松增强其InceptionV3模型,Torch拥有出色的CNN资源(包括易于使用的时域卷积),因而让这两项技术凭借CNN建模功能脱颖而出。

RNN建模功能:递归神经网络(RNN)用于语音识别、时间序列预测、图像标题(image captioning),以及需要处理顺序信息的其他任务。由于预构建的RNN模型不如CNN那么众多,如果你有一个RNN深度学习项目,那么考虑之前针对某一项特定的技术实施和开源了什么RNN模型很重要。比如说,Caffe的RNN资源极少,而微软的CNTK和Torch拥有丰富的RNN教程和预构建模型。虽然普通的TensorFlow有一些RNN材料,但TFLearn和Keras包括多得多的RNN实例,这些实例使用TensorFlow。

架构:为了使用某种框架创建和训练新模型,拥有一种易于使用、模块化的前端至关重要。TensorFlow、Torch和MXNet拥有一种简单的模块化架构,它让开发工作显得简单直观。相比之下,Caffe等框架需要做大量的工作才能构建一个新的层。我们发现,TensorFlow在训练过程中和训练之后尤其来得易于调试和监控,原因是它包括TensorBoard web GUI应用软件。

速度:就开源卷积神经网络基准测试而言,Torch和Nervana拥有最出色的性能。就大多数测试而言,TensorFlow 性能相当,而Caffe和Theano落在后面。微软的CNTK声称拥有最短的RNN训练时间。针对RNN直接比较Theano、Torch和TensorFlow的另一项研究表明,Theano的性能是三者当中最出色的。

多GPU支持:大多数深度学习应用软件需要数量众多的浮点运算(FLOP)。比如说,百度的DeepSpeech识别模型需要数十ExaFLOP才能训练。这大于10e18次运算!由于像英伟达的Pascal TitanX这些领先的图形处理单元(GPU)每秒可以执行11e9 FLOP,针对一个足够庞大的数据集训练一个新模型需要一周以上的时间。为了缩短构建模型所花的时间,就需要多台机器上的多个GPU。幸好,上面介绍的大多数技术都提供这种支持。尤其是,MXNet据称拥有最充分优化的多GPU引擎之一。

与Keras兼容:Keras(https://github.com/fchollet/keras)是一种用于快速建立深度学习原型的高级库。我们发现,它是一种出色的工具,有助于让数据科学家们从容处理深度学习。Keras目前支持两个后端:TensorFlow和Theano,将来会在TensorFlow中获得官方支持。考虑到其开发者最近表示:Keras会继续作为一种可与多个后端结合使用的前端而存在,Keras就高级库而言也是个不错的选择。

如果你有兴趣开始搞深度学习,建议你首先评估一下自己团队的技能和项目要求。比如说,如果一支以Python为中心的团队准备利用深度学习搞图像识别,我们会建议使用TensorFlow,那是由于它拥有详尽的说明文档、尚佳的性能以及出色的原型工具。如果一支擅长Lua的客户团队将RNN扩大到生产环境,我们会建议使用Torch,因为它拥有出众的速度和RNN建模功能。

我们在将来会探讨扩展模型方面遇到的一些挑战。这些挑战包括优化多台机器上的GPU使用,针对我们的深度学习管道改动CMU Sphinx和Kaldi之类的开源库。

相关阅读:

中高端IT圈人群,欢迎加入!

赏金制:欢迎来爆料!长期有效!

深度学习:FPGA VS GPU

英特尔3.5亿多美元收购深度学习初创企业Nervana Systems

雅虎开源CaffeOnSpark:基于Hadoop/Spark的分布式深度学习

百度研究院在 Kubernetes 上跑深度学习框架 PaddlePaddle

机器学习和深度学习的最佳框架大比拼

AWS CTO:解读首选 MXNet 做为 AWS 的深度学习框架的原因

谷歌开源深度学习系统 TensorFlow 的图片文字说明模型,可深层次理解图片

“Amazon Go”超市:利用深度学习和算法的传感器,不用排队便可自动结账

深度学习市场地图:60余家涉足电子商务、网络安全、销售及更多领域的初创公司

2016年:互联网行业的“深度学习年”

帮助企业驾驭人工智能的12种机器学习工具

驾驭机器学习的13种框架

【重磅】视频版:谷歌的视频内容识别原来是这样的,视频革命来临!

深度学习入门指南

no comments
Share

发表评论