常用的深度学习框架

深度学习框架

​ 在深度学习中,一般通过误差反向传播算法来进行参数学习. 采用手工方式来计算梯度再写代码实现的方式会非常低效,并且容易出错. 此外,深度学习模型需要的计算机资源比较多,一般需要在CPU 和GPU 之间不断进行切换,开发难度也比较大. 因此,一些支持自动梯度计算、无缝CPU 和GPU 切换等功能的深度学习框架就应运而生. 比较有代表性的框架包括:Theano、Caffe、TensorFlow、Pytorch、飞桨(PaddlePaddle)、Chainer 和MXNet 等.

(1) Theano:由蒙特利尔大学的Python 工具包,.用来高效地定义、优化和计算张量数据的数学表达式. Theano 可以透明地使用GPU 和高效的符号微分.( Theano 项目目前已停止维护)

(2) **Caffe:由加州大学伯克利分校开发的针对卷积神经网络的计算框架,主要用于计算机视觉. Caffe 用C++ 和Python 实现,但可以通过配置文件来实现所要的网络结构,不需要编码。(Caffe2 已经被并入Py-Torch 中.)

(3) TensorFlow:由Google 公司开发的深度学习框架,可以在任意具备CPU或者GPU 的设备上运行. TensorFlow 的计算过程使用数据流图来表示.TensorFlow 的名字来源于其计算过程中的操作对象为多维数组,即张量(Tensor). TensorFlow 1.0 版本采用静态计算图,2.0 版本之后也支持动
态计算图.

(4) PyTorch:由Facebook、NVIDIA、Twitter 等公司开发维护的深度学习框架,其前身为Lua 语言的Torch4. PyTorch 也是基于动态计算图的框架,在需要动态改变神经网络结构的任务中有着明显的优势.

(5) 飞桨(PaddlePaddle):百度开发的一个高效和可扩展的深度学习框架,同时支持动态图和静态图. 飞桨提供强大的深度学习并行技术,可以同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数和数百个节点的高效并行训练.

(6) Chainer:一个最早采用动态计算图的深度学习框架,其核心开发团队为来自日本的一家机器学习创业公司Preferred Networks. 和Tensorflow、Theano、Caffe 等框架使用的静态计算图相比,动态计算图可以在运行时动态地构建计算图,因此非常很适合进行一些复杂的决策或推理任务.
(7) MXNet:由亚马逊、华盛顿大学和卡内基梅隆大学等开发维护的深度学习框架. MXNet 支持混合使用符号和命令式编程来最大化效率和生产率,并可以有效地扩展到多个GPU 和多台机器.

​ 在这些基础框架之上,还有一些建立在这些框架之上的高度模块化的神经网络库,使得构建一个神经网络模型就像搭积木一样容易. 其中比较有名的模块化神经网络框架有:(1)基于TensorFlow 和Theano 的Keras和(2)基于Theano的Lasagne.

(目前,Keras 已经被集成到TensorFlow 2.0 版本中.)

​ 要理解深度学习的意义或重要性,就得从机器学习或者是人工智能的更广的视角来分析. 在传统机器学习中,除了模型学习算法外,特征或表示也是影响最终学习效果的重要因素,甚至在很多的任务上比算法更重要. 因此,要开发一个实际的机器学习系统,人们往往需要花费大量的精力去尝试设计不同的特征以及特征组合,来提高最终的系统能力,这就是所谓的特征工程问题.

​ 如何自动学习有效的数据表示成为机器学习中的关键问题. 早期的表示学习方法,比如特征抽取特征选择,都是人工引入一些主观假设来进行学习的. 这种表示学习不是端到端的学习方式,得到的表示不一定对后续的机器学习任务有效. 而深度学习是将表示学习和预测模型的学习进行端到端的学习,中间不需要人工干预. 深度学习所要解决的问题是贡献度分配问题,而神经网络恰好是解决
这个问题的有效模型. 套用马克思的一句名言“金银天然不是货币,但货币天然是金银”,我们可以说,神经网络天然不是深度学习,但深度学习天然是神经网络.目前,深度学习主要以神经网络模型为基础,研究如何设计模型结构,如何有效地学习模型的参数,如何优化模型性能以及在不同任务上的应用等. [Bengioet al., 2013] 给出了一个很好的表示学习综述. 若希望全面了解人工神经网络和深度学习的知识,可以参考《Deep Learning》[Goodfellow et al., 2016] 以及文献[Bengio, 2009]. 关于神经网络的历史可以参考文献[Anderson et al., 2000]. 斯坦福大学的CS231n1 和CS224n2是两门非常好的深度学习入门课程,分别从计算机视觉和自然语言处理两个角度来讲授深度学习的基础知识和最新进展.

学术会议

​ 深度学习的研究进展非常迅速. 因此,最新的文献一般会发表在学术会议上.和深度学习相关的学术会议主要有:

(1) 国际表示学习会议(International Conference on Learning Representations,ICLR):主要聚焦于深度学习.
(2) 神经信息处理系统年会(Annual Conference on Neural Information Processing Systems,NeurIPS):交叉学科会议,但偏重于机器学习. 主要包括神经信息处理,统计方法,学习理论以及应用等.

(3) 国际机器学习会议(International Conference on Machine Learning,ICML):机器学习顶级会议,深度学习作为近年来的热点,也占据了ICML 的很大比例.

(4) 国际人工智能联合会议(International Joint Conference on Artificial Intelligence,IJCAI):人工智能领域最顶尖的综合性会议. 历史悠久,从1969年开始举办.

(5) 美国人工智能协会年会(AAAI Conference on Artificial Intelligence,AAAI):人工智能领域的顶级会议,每年二月份左右召开, 地点一般在北美.

​ 另外,人工智能的很多子领域也都有非常好的专业学术会议. 在计算机视觉领域,有计算机视觉与模式识别大会(IEEE Conference on Computer Visionand Pattern Recognition,CVPR)和国际计算机视觉会议(International Comferenceon Computer Vision,ICCV). 在自然语言处理领域,有计算语言学年会(Annual Meeting of the Association for Computational Linguistics,ACL)和自然语言处理实证方法大会(Conference on Empirical Methods in NaturalLanguage Processing,EMNLP)等.

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2024 lk
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信