七步理解深度学习

七步理解深度学习html

By Matthew Mayo     翻译by LonelySoulpython


网上有不少的深度学习的免费学习资源,可是可能会对从哪里开始有些困惑。七步内从对深度神经网络的模糊理解到知识渊博的从业者(knowledgeable practitioner)!git

深度学习是机器学习的一个分支,拥有不少的类似性,可是却也不一样,深度神经网络结构在天然语言处理、计算机视觉、生物信息学和其余领域解决了各类各样的问题。深度学习经历了一场巨大的最近研究的重现,而且在不少领域中已经展示出最早进的成果。github

本质上,深度学习是超过一层隐藏神经元的神经网络的执行。可是,这是对深度学习的一个简单的见解,而且不是一个没有争议的观点。这些深层构架也很是不一样,对不一样任务或目标优化会有不一样的执行。在这样一个恒定速率进行着的大量研究在以史上未有的速度展示新的和创新的深度学习模型。算法


最近的一个白热化的研究课题,深度学习彷佛影响着机器学习的全部领域,相关的还有数据科学。粗略看看相关arXiv目录下最近的论文,很容易看出大量正在被发表的论文都是深度学习相关的。鉴于已经产生的使人惊叹的成果,不少研究者,从业者和外行都在想深度学习是不是真正的人工智能的边界。api

这系列的阅读材料和教程旨在给深度神经网络的新人提供一条路径去理解这个巨大而复杂的课题。尽管我不假设对神经网络和深度学习真正的理解,可是我假设你对通常的机器学习理论和实践具备某种程度的熟悉度。为了克服在通常机器学习理论和实践的不足,你能够看看最近KDnuggets发布的7 Steps to Mastering Machine Learning With Python。因为咱们也看用Python写的例子的执行,对语言有些熟悉会颇有用。介绍和综述的资源在previodsly mentioned post也是提供的。网络


这篇博客将以紧密结合的顺序使用网络上免费提供的材料在理论层面上得到对深度神经网络的一些理解,而后继续转向一些实际的执行。一样的,借鉴过来的引用材料只属于建立者,跟资源会一块儿被标注。若是你看到有人由于他们的工做没有被正确引用,请告知我,我会很快修改的。app


一个彻底诚实的免责申明:深度学习是一个复杂而在广度和深度(pun unintended?)变化很快的领域,所以这篇博客不保证包括全部成为深度学习专家的手册;这样的一个转化将会须要更多的时间,不少附加材料和不少实际创建和测试的模型。可是,我相信的是,使用这里的资源能够帮你在这样一个路径下开始。框架


第一步:介绍深度学习

若是你正在读这个而且对这个课题感兴趣,你可能已经对深度神经网络已经熟悉,甚至在一个很基础的层次。神经网络有一个故事性的历史,可是咱们将不会深刻。可是,咱们须要若是在开始就有一个广泛高层次的理解。机器学习

首先,看看DeepLearning .tv精彩的介绍视频。在 写完这个的时候已经有14个视频了;若是你喜欢看完他们,可是必定要看前五个,包含了神经网络的基础和一些更常见的结构。

而后,仔细阅读Geoff Hinton,Yoshua Bengioh和Yann LeCun的NIPS 2015 Deep Learning Tutorial,一个稍微更低层次的介绍。

完成咱们的第一步,读the first chapter of Neural Networks and Deep Learning,这个由Michael Nielden写的精妙的,不断更新的在线书,这会更近一步可是依然很粗浅。


第二步:学习技术

深度神经网络依赖代数和微积分的数学基础。然而这篇博客不会产生任何理论上的数学,在继续以前有一些理解将会颇有帮助。

第一,看Andrew Ng的linear algebra review videos。可是不是绝对的必要,想要对线性代数了解更深的话,从Ng的斯坦福课程看看Zico Kolter 和Chuong Do写的Linear Algebra Review and Reference.

而后看看Professor LeonardIntroduction to the Derivative of a Function. 视频是很简洁的,例子是很清晰的,而且提供了从数学的视角来看在反向传播的过程当中到底发生了什么。一下子会更多。

接下来迅速浏览下维基Sigmoid function的词条,一个在神经网络中常常经过单个神经元应用的边界差分函数。

最后,从数学上休息下阅读谷歌研究科学家 Quoc LeDeep Learning Tutorial.




第三步:反向传播和梯度降低

神经网络包括现代深度构架重要的一部分是反向传播算法的错误,使用离输入更近的神经元经过网络更新权重。很是坦率的说,这就是神经网络继承他们”力量“(缺少更好的术语)的地方。反向传播和一个随后分布式的最小化权重的优化方法,为了最小化损失函数。在深度学习中一个常见的优化方法是梯度降低。

首先,看看这些斯图加特大学Marc Toussaint 写的关于梯度降低的介绍笔记

而后,看看Matt Mazur写的this step by step example of backpropagation in action.

继续,阅读Jeremy Kun关于 coding backpropagation in Python的信息博客。仔细看看完整代码也是建议的,尝试本身写一遍代码。

最后,读Quoc Le写的Deep Learning Tutorial的第二部分,为了获取一些更具体更常见的深度结构和他们用途的介绍。


第四步:实践

具体的神经网络结构的下一步介绍将会使用在如今研究中最流行的python深度学习库包括实际执行。在一些状况下,一些不一样的库的优化是为了某个特定的神经网络结构,而且已经在某些特定的领域立足,咱们将会使用三个不一样的深度学习库。这不是多余的,在特定领域的实践中与最新的库保持一致时学习时很重要的一步。接下来的训练也将会让你本身评价不一样的库,而且造成一个在哪些问题上用哪一个的直觉。

如今欢迎你选择一个库或者联合库进行安装,是否继续那些教程取决于你的选择。若是你但愿尝试一个库而且使用它来执行接下来步骤的教程,我会推荐TensorFlow,缘由以下,我会提到最相关的(至少是在个人眼中):它执行自动分化(autodifferentiation),意味着你不须要担忧从头执行反向传播,更可能使代码更容易理解(尤为是对一个初学者来讲)。

我写关于TensorFlow的文章是在刚出来的时候TensorFlow Disappoints – Google Deep Learning Falls Shallow,这个标题暗示着比在实际中更失望;我最初关注的是它缺乏GPU集丛的网络训练(极可能很快会有它本身的方式).不管如何,若是你没有看列在下面的白皮书可是想看更多关于TensotFlow的材料,我建议读我原始的文章,而后跟着Zachary Lipton's 写的很好的部分,TensorFlow is Terrific – A Sober Take on Deep Learning Acceleration.


TensorFlow

Google的TensorFlow是基于数据流图展示的一个通用的机器i学习库。

Theano
Theano是被蒙特利尔大学的 LISA group积极开发的。
Caffe
Caffe是由加州大学伯克利分校的 BVLC开发的。Theano和Tensorflow能够认为是通用的深度学习库,Caffe是由一个计算机视觉的组开发的,主要考虑的解决那样的问题;可是,它也是一个通用的库为了为不一样领域创建不一样的深度学习框架。
记住这些并不只仅是如今流行的库。事实上,还有不少不少能够选择,这些选择是基于教程的流行性,文档和整体上研究上的接受程度。

其余的深度学习库选择包括:
  • Keras---一个用于Theano和TensorFlow高层、极简Python神经网络库
  • Lasagne---Theano顶上的轻量级python库
  • Torch---Lua机器学习算法库
  • DeepLearning4j---Jaav和Scala开源、分布式深度学习库
  • Chainer---一个灵活的、直观的python神经网络库
  • Mocha---Juliade的一个深度学习框架
安装好这些库,如今咱们能够继续实践。

第五步:卷积神经网络和计算机视觉

计算机视觉解决处理和理解图片和它的符号信息。大部分领域最近的突破都是来自于深度神经网络的使用。特别的, 卷积神经网络在最近扮演一个很重要的角色。


首先,读Yoshua Bengio的 deep learning with computer vision,为了对这个课题有一个理解。
而后。若是你安装好了TensorFlow,阅读并执行这个 教程,这个是用卷积i神经网络分类 CIFAR-10图片。若是你安装了Caffe,对于上一个教程的替代,执行 Caffe中的卷积神经网络分类 MNIST数据集图片。
这里是一个粗略等同于Caffe 的练习 Theano tutorial.
而后,读 Krizhevsky, Sutskever和Hinton的seminal convolutional neural network paper增长额外的视野。

第六步:递归网和语言处理

天然语言处理(NLP)是收益与深度学习的另外一个领域。关心理解天然语言,NLP经过运用递归神经网络(RNN)有不少最新的成功。
Andrej Karpathy有一篇很赞的博客,题目是The Unreasonable Effectiveness of Recurrent Neural Networks,列出了RNN在训练字符级语言模型的有效性的大纲。它提到的代码是经过Torch用Lua写的,因此你能够跳过;这个在纯理论层次上依旧颇有用。
这个教程为语言处理在TensorFlow上执行RNN.
你也能够用Theano而且用这个教程尝试,用文字嵌套执行了一个RNN.
最后,你能够读Yoon Kim的 Convolutional Neural Networks for Sentence Classification,这是CNN在语言处理上的又一个应用。 Denny Britz 有一篇博客,题目是Implementing A CNN For Text Clasification in TensorFlow,使用的是电影的评论数据。

第七步:更深刻的课题

上面的步骤在深度学习已经从理论上进步到实践。经过在前两步执行卷积神经网络和递归神经网络,但愿的是对它们力量和功能性的预先感知。与CNN和RNN同样广泛的有不少其余随着基础研究出现的已经存在的深度结构。
有不少超过前面理论步骤展示的其余的考虑,一样的,下面是这些另外结构和考虑的快速的调研。
为了更深的理解适合时间序列预测的特定类型的RNN,长短项记忆网络,读Christopher Olah写的这篇文章
Denny Britz写的这篇文章是用LSTM和GRUs的 很好的一个关于RNN的教程。看这篇论文更深地讨论GRUs和LSTMs.
很显然这没有包含全部的深度学习构架。限制波尔兹曼机是一个脑中很明显须要排除的,正如antoencoders,和一系列产生的相关的模型包括Generative Adversarial Networks. 可是,必须在某处画一条线,否则这篇将会一直下去。
对那些感兴趣其余深度学习构架的,我建议看看Yshua Bengio的ftml.
对于咱们的最终目标和有一些不一样的东西,看看Google DeepMindShakir Mohamed A Statistical Analysis of Deep Learning。这个比咱们日常看到的材料更理论一些,可是值得用另外一种方法看咱们熟悉的事物。Shakir对6个月的课程写了一系列文章,展示测试wide-held beliefs,加强数据的链接,而且深度学习中要隐藏的东西。有一个全部发布的PDF集合.

但愿足够的信息已经展示,可以给读者一个对深度神经网络介绍性的综述,而且提供一些想对这个课题继续研究的热情。

Bio: Matthew Mayo is a computer science graduate student currently working on his thesis parallelizing machine learning algorithms. He is also a student of data mining, a data enthusiast, and an aspiring machine learning scientist.

相关的:

相关文章
相关标签/搜索