七步理解深度学习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 Leonard的Introduction to the Derivative of a Function. 视频是很简洁的,例子是很清晰的,而且提供了从数学的视角来看在反向传播的过程当中到底发生了什么。一下子会更多。
接下来迅速浏览下维基Sigmoid function的词条,一个在神经网络中常常经过单个神经元应用的边界差分函数。
最后,从数学上休息下阅读谷歌研究科学家 Quoc Le的Deep 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学习库。