深度学习入门方法讨论--摘自知乎

从逻辑回开始,将所有梯度求导部分都向量话,然后试着推导并向量话实现feed forward neuralnetwork,如果非常熟悉了bp算法,可以试着完成stanford的两门公开课的作业,将主流dl算法,比如cnn,rnn,lstm等全部向量化实现,当你觉得你能推导并实现任何神经网络的结构时,应该就入门了,个人基本是这么过来的。
 
知乎用户,computer vision
肖潇知乎用户、知乎用户 等人赞同
先了解个大概 A Deep Learning Tutorial: From Perceptrons to Algorithms
神经网络肯定是要学*的,主要是BP算法,可以看看PRML3、4、5三章,可先忽略其中的贝叶斯视角的解释。一些主要的算法理解要看具体的论文了,有个Matlab的程序不错,有基本算法的实现,见rasmusbergpalm/DeepLearnToolbox · GitHub。有一本系统的介绍深度学*的书,不过还没写完,样稿见DEEP LEARNING。还有评论中提到的UFLDL教程:Unsupervised Feature Learning and Deep Learning Tutorial
 
郭小贤,统计套利/算法交易/机器学*/数据科
先看你有没有相关的应用需求,如果有的话就太好了。借助情景学*起来非常快。

Tutorial

论文
  • The Learning Machines - 一个导论性质的文章,让你大致了解深度学*是什么,用来干什么的。

  • Deep Learning - (Review Article in Nature, May 2015) 三大神 Yann LeCun, Yoshua Bengio, and Geoffrey Hinton的文章,不解释。

  • Growing Pains in Deep Learning

  • Deep Learning in Neural Networks - This technical report provides an overview of deep learning and related techniques with a special focus on developments in recent years. 主要看点是深度学**两年(2012-2014)的进展情况。


课程

教材
  • Deep Learning - Yoshua Bengio, Ian Goodfellow and Aaron Courville,目前最权威的DL教材了


几个常见应用领域:

几个常用的深度学*代码库:

  • H2O - 一个开源的可扩展的库,支持Java, Python, Scala, and R

  • Deeplearning4j - Java库,整合了Hadoop和Spark

  • Caffe - Yangqing Jia读研究生的时候开发的,现在还是由Berkeley维护。

  • Theano - 最流行的Python库


News
  • Deep Learning News - 紧跟深度学*的新闻、研究进展和相关的创业项目。

So,各位加油咯!!!



--------------------------------------------------------补 充--------------------------------------------------------------------------

另外建议看看大神Yoshua Bengio的推荐(左边的链接是论文,右边的是代码),有理论有应用(主要应用于CV和NLP)

 
知乎用户,CS2EE2CS
CNN的tutorial,楼上各位说的已经很齐全了。
But talk is cheap, show me the code。自己徒手撸一遍很重要啊,开源的工具包工程量大,代码还是C++,看的眼花怎么办?

没错我就是来打广告的!!!:

一个简单的CNN实现(Python)
GitHub - Eniac-Xie/PyConvNet: Convolutional Neural Network for python users
现在有很多深度学*工具包各种C++各种第三方依赖,适合拿来跑实验却不适合拿来入门CNN。所以就用python写了一个简单的CNN,跑一跑mnist、cifar还是可以的。

评论区有知友提出im2col比较难看懂的问题,im2col是convolution层的核心操作,使我们可以用矩阵乘代替卷积计算,这样实现上更简单,不过也占用了更多的内存。
caffe中的im2col貌似使用了4层for循环,而我是用python实现的,大量的for循环会降低程序的效率,所以做了一些优化,不可避免的降低了代码的可读性。
 
唐家声,Algorithm Engineer@iDST, Alibaba
知乎用户、QIchao tang黄大 等人赞同
答案已更新(16.04.13)。

其他回答者资料给的很充足了,这里补充点类似于学*路径的东西。
一个领域的成功,既要看自身的努力,也要考虑到历史的进程。学*深度学*的一个很好的路线就是跟着历史的进程学*一番。

除了一些基础的机器学*知识,在学*和理解Deep Learning之前,需要先对于Neural Network和AutoEncoder这两个模型有所了解,特别是后者,AutoEncoder的隐藏层与输入层的关系、使用AutoEncoder来pre-training一个多层网络。

下一步就是要理解『简单的增加神经网络深度』会遇到什么问题。比如diffusion of gradients,比如严重的over-fitting,比如计算时间开销。
继续下去,要知道这些问题的原因与解决办法,这一步就映射到神经网络向深度学*的发展过程,比如pre-training(甚至包括大约在10年左右,pre-training技术的变化)、dropout、ReLU等技术的出现以及我们现在有能力(计算能力、相对于以前的大数据量)处理深层网络。
到这里,初步理解通常意义的Deep Learning模型就是深度神经网络。

但是接下来的才是关键。

对于不同的应用方向,有不同的具体的DNN的模型,比如CNN之于图像,RNN之于NLP。

这里以CNN为例子。CNN的特殊的一些地方在于:卷积、池化、子采样、白化、权值共享等等非常多的技术。每一个都是一个概念/方法。这是CNN所特有的。如何理解这些技术呢?
动手实现一个LeNet然后跑一下Minst数据集的手写识别(或者自己搞点图像数据),学以致用,会帮助建立好的直觉,甚至可能不懂的地方也慢慢理解了。
不过一个比较有趣的概念是 卷积。
------这个地方说得不是很好,但是我也不知道怎么表达更清楚点------
卷积这个东西有很多种理解方式:比如信号处理的理解、数学/物理上的理解、或者我的理解 :-D
『个人现在持有的看法是,这些技术都围绕一个重要的观点:减少网络参数(包括卷积也是有这个功能的)。其实每一个技术,都有自己更具体的意义,但是有共性的地方』。
对于使用CNN,要知道现在最常用的方法:AlexNet等的pre-training+具体问题的fine-tuning这种手段:一定要读一下一些相关paper

至于RNN,个人的经验是建议大家看一看Neural Network Language Model相关的工作。

还有就是一定要动手,关于Deep Learning的库,除了经典的Caffe和Theano,这里推荐大家使用MXNet和TensorFlow。MXNet最令我喜欢的一点就是依赖极少(对我就是这么low。。。),轻便、易用以及丰富的文档和活跃的开发者社区;而TensorFlow,说真的这半年以来让我非常惊讶,具体参见这篇文章:深度学*框架大
除此之外,关于TensorFlow最*的进展<转自微博>:
TF迭代太快了,性能已经不比别的差了GitHub - soumith/convnet-benchmarks: Easy benchmarking of all publicly accessible implementations of convnets ,这篇文章发时还是用cudnnv2,现在已经是v4了,v5版也在进行中,分布式版本预计下一个release接口会倾向稳定,最*刚加上了一个完全随机森林实现
--04.14更新--
昨天刚更新完答案,今早就看到Google最新博客:

Ever since we released TensorFlow as an open-source project, distributed training support has been one of the most requested features. Now the wait is over. 
Today, we're excited to release TensorFlow 0.8 with distributed computing support, including everything you need to train distributed models on your own infrastructure.
也就是说:TF的0.8版本中,分布式的支持已经Ready!

点评:你大爷还是你大爷...

收藏之余,也给个赞吧~
 
小石头,学生仔la
这个答案是我去年做本科毕业设计写的,那时候连模式识别是个什么概念都不懂。但毕设课题强行选了DL相关,所以给了当时自己看的资料,直接跑深度学*框架,其实并没有技术含量。
发现回答以后评论与关注也较多,现在经过一年学*回头来看确实这个答案不适合扎实的新手入门,有一些误导。特此修正。我想让答案尽可能短,看起来不吓人。
--------------------------------
我入门CV时清华的朋友给的资料,帮助十分大!十分适合新手入门!
我是本科EE入门的,所以应该没有底子比我差的了。
-------------------------速成的道路---------------
0、Andrew Ng的机器学*部分内容(机器学*介绍,回归问题与梯度下降,过拟合欠拟合)
英文能力足够推荐英文版:Machine Learning
(中文版对应网易公开课斯坦福大学公开课 :机器学*课程)
(中英链接里的章节貌似不对应,按内容看)

1.UFLDL: 

看这两部分内容

2.CMU Advanced Introduction to Machine Learning PPT: 

这是一门Machine Learning课程中讲到CNN的部分


3.CAFFE: Caffe | Caffe Tutorial

CAFFE是一个常用的deep learning的软件工具,其页面上有deep learning的tutorial材料,同时想要深入了解具体实现的话可以直接阅读源代码


--------------------------比较全面的道路--------------


一个技术上认识DL(这里说CNN),的顺序是:
线性分类->感知机->梯度下降->神经网络->BP算法->三层全连接网络->CNN
感悟上认识DL的顺序是:
(生物基础)Hubel&Wiesel视通路研究 -->(计算机模拟)神经网络-->神经网络很好骗
-->神经网络一定要深吗?-->神经网络一定要深-->混沌理论&量子力学
 
匿名用户
CNN的入门可以参考今年斯坦福刚开的一门课,slides和一些资料可以从课程主页下载到:
Stanford University CS231n: Convolutional Neural Networks for Visual Recognition
 
田雷,CS PhD@Bupt, Deep Learning and Compute…
Deep Learning还需要入门?!俺们都是用踹门的!

开个小玩笑!

如果你想了解理论的东西,可以直接看UFLDL教程 - Ufldl
如果你是在读硕士或博士的话,看完UFLDL教程后,先看看LeNet5那篇文章热热身,然后建议你直接看看Hinton et al <ImageNet classification with deep convolutional neural networks>和最*港文的王小刚老师和FaceBook的杨铭老师的相关工作!都在LFW数据库上得到了很好的效果!

而实际代码的东西,目前Caffe BVLC/caffe · GitHub和MatConvNet 都是比较好的框架!前者是基于C++代码,提供了Matlab和python的接口,而后者是Matlab的代码,在学术界的影响力不如caffe!但两者作为入门都绝对够了!而caffe更好的一点在于,它能够让你在大框架不变的情况下,fine-tunning你自己的数据库,得到对应的model。但效果估计不好,主要原因是理想的模型是需要与数据的分布与规模 相match,否则要么over-fitting,要么under-fitting。

在看完最基本的DL内容后,这两个框架均不难理解~但对于不同情况下的Train model的生成,如上所述,则是个经验活!
 
Vinjn张静,微信订阅号:黑客与画家
hjxbrlbt知乎用户、知乎用户 等人赞同
 
 
呵呵
所有不学基础理论就先用工具看代码改代码的都是为了短期利益而牺牲长期利益。
神经网络都不懂, feed forward, backward propagation, loss function,gradient 都推不明白的,就别先入门 deep learning了。
深度学*不是魔术,不是你传个输入,验个输出,再看看改改哪个参数结果更好就行的。如果你的要求只是会用caffe,那你其实也不需要入门。


UFLDL教程 - Ufldl :UFLDL,理论性强,但是比较抽象,适合数学基础扎实的人

Stanford University CS224d: Deep Learning for Natural Language Processing stanford 224d, 文本方面的深度学*
Stanford University CS231n: Convolutional Neural Networks for Visual Recognition stanford 231n, CV方面的深度学*
这两个课程的最大好处是用ipython notebook这个平台来做作业。你需要自己编写最核心的代码,它帮助你实时展示验证你的结果, 你还可以自己定义很多输出方式。而这两个课程都很注重程序的效率,它对factorization的要求之高超乎我的想象。我上完课才发现自己以前写的python都是幼稚园手工。而Andrew Ng 在ML课程里所教的很多东西课程里也有涉及,如何train, validate, test,如何选择参数,如何选择初始化,如何根据图像来判断你的模型参数是否合适等等等。
 
wgwang,民工
Eric Shao知乎用户、李 昂 等人赞同
深度学*是一门综合性的偏工程的学科,除了扎实的基础知识之外,更多的是需要极强的工程能力,对问题理解、抽象和建模的能力,以及综合运用多种工具把问题 解决掉的执行力。同时,深度学*兴起的时间比较短,很多人才刚刚热门,成为专家还需要一段时间,从而导致当前深度学* 人才紧缺的现状。

首先是数学基础,虽然这块的要求并不需要学的很深入,但基本的了解还是要的,如果能够较为深入的学*,在真正做分析和工程时的帮助也会比较大。如果是在校生,并且有志于深度学*方向,多花点时间在这上面是十分值得的。

1. 线性代数,矩阵和张量的计算
了解标量、矢量、矩阵和张量,对相关的运算(比如加法、乘法、转置等)比较熟悉,知道特征分解和奇异值分解是怎么回事等等。如果有时间,啃点书总没有坏处,比如Linear Algebra (豆瓣) ,和矩阵计算 (豆瓣)  。这两个公开课 可汗学院公开课:线性代数 和 麻省理工公开课:线性代数 ,有空看看也没啥坏处

2. 微积分
微积分应该是大学理工科必须的课程吧,求导是微积分里面最基本的概念了吧,在深度学*里也是基础之一,对其了解是必要的。如果有时间,还是啃书,柯朗的两卷本微积分和数学分析引论(第一卷) (豆瓣) 和 微积分和数学分析引论(第二卷) (豆瓣) 貌似是很经典的,有兴趣的可以啃啃。麻省理工学院公开课:单变量微积分 和 麻省理工学院公开课:多变量微积分 这两个公开课讲的不错的,偶当年在地铁上看下来的,也是不容易啊。

3. 概率,统计和随机过程
几个基本的分布(如高斯分布,指数分布等)是需要了解的,条件概率之类的也得知道吧,贝叶斯是谁还是得认识一下的,大数定律和中心极限定理能够熟悉熟悉也是有帮助的,如果能够认识下马尔科夫,想来也是有帮助的。手头的书翻了下,貌似有 概率论沉思录 (豆瓣), 还有 随机过程 (豆瓣)。网易公开课这类课程比较少啊,搜索了下,只有 可汗学院公开课:统计学 这个看起来有点意思(没看过,找个时间瞧瞧去)。


第 二块是机器学*的基础知识。深度学*是机器学*的一个分支,由于在图像识别语音识别机器翻译等多个地方的效果卓越而流行起来的。总体上,线性回归是机器学 *里最基本也是最常用的算法,直至2015年的时候,Google,百度等互联网公司在广告及其相关项目中所使用的最多的算法依然是线性回归,简单,可解 释和高效率是它的最大的优点。其他诸如过拟合和泛化,training,validation和testing等机器学*中最基本的概念也同时是深度学* 所必须的。其他诸如贝叶斯网络,svm,nn,k-means,mcmc,sgd,熵,分类和聚类,监督和无监督等算法和概念在大部分机器学*的书籍中都 或多或少涉及到。大部头书籍Pattern Recognition And Machine Learning (豆瓣)是最经典的书籍(没有)之一,斯坦福的经典教程UFLDL教程 - Ufldl 涉及到无监督学*和深度学*(与时俱进的比较快), 另外,公开课加州理工学院公开课:机器学*与数据挖掘 看看也会有所收获的。

1. 数据,training, validation和testing

2. 线性模型,classification和regression

3. 贝叶斯网络,SVM,马尔科夫随机场

4. cluster,k-means

5. 神经网络




第 三块是编程。纸上得来终觉浅,绝知此事要编程。在一个美帝总统奥巴马都学*编程,美帝监狱都开编程客的年代,一个搞深度学*的编程水平太差,也说不过去 吧。同时,深度学*在目前阶段,还是需要很大的计算力来支持的,对于稍微有点规模有点实用的场景,分布式和GPU都是需要涉及到的,编程语言的 话,C/C++肯定会涉及,Python估计也无法避免会遇到,java和lua等其他语言会一些则更好,至于世界上最好的语言PHP不会倒无关紧要。这 本书 深入理解计算机系统 (豆瓣) 有助于从各方面了解计算机,(特别是非计算机专业的)啃完后会受益匪浅。C和C++的书籍多如牛毛,C程序设计语言 (豆瓣) 和 C++ Primer 中文版(第 5 版) (豆瓣) 这两本书是我的偏好(想当年啃下后一本的时候,还是有点成就感的)。如果能够把 Learning Python (豆瓣) 和 SciPy and NumPy (豆瓣) 啃完,用起Python应该是能够得心应手的。至于cuda(进行GPU计算的),官方资料(https://developer.nvidia.com/cuda-zone  )十分丰富,有需要就去看看好了。




第四块是深度学*(这个名字有点奇怪就是,不过都这么叫了,熟了就好了)。在不熟之前还生着的时候,深度学*有另外一个名称叫神经网络(不是神经病网络哦),貌似上个世纪后期的时候就火过一阵,奈何先驱约等于先去的意思,那个时候由于计算机的能力问题,没搞出啥好的效果,让位于一堆其他的机器学*算法。直到201×年,突然间,Hinton,Bengio,LeCun等人依靠强大的计算力让多层神经网络能够很好的运行,并且效果好的令人发指,于是乎大家才想起,原来神经病还能这么玩,然后大家就high起来了。wikipedia上dl的条目Deep learning 编辑的挺不错的,很适合作为入门材料,了解一下基本概念。LeCun,Bengio和Hinton合作的Nature的Review: Deep learning()应该是必读的文献之一吧,另外Bengio的Learning Deep Architectures for AI( ) 和Schmidhuber的Deep Learning in Neural Networks:An Overview()也是了解这个领域的好文。不想看论文的,可以看看这个 (基础+框架介绍)和 这个 (牛津大学的课程,国外大学的课程真是与时俱进,不知道国内大学是否有开课?)

接下来是不同领域的应用,印象中,深度学*首先是在图像识别和计算机视觉中火起来的,这篇ImageNet Classification with Deep Convolutional Neural Networks()是dl在计算机视觉中应用的经典文章之一。自然语言处理方面,当年word2vec(,)刚出来的时候,让一小撮土鳖大吃一惊,原来nlp还能这么玩。而这次alphaGo(Mastering the game of Go with deep neural networks and tree search: )则让超越了码农群体之外的一大撮人大吃一惊,原来,围棋也有另一种玩法。

了解完了之后,就开始写代码。早些年呢,需要从0开始一把鼻涕一把泪的搬很多砖才能搞出一个能够work的东西。后来,不知道何年何月为了啥目的,各种开源框架纷纷冒出,现在随便花店心思,就能过搞出一个忽悠人的东西出来。这么些个 GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning. GitHub - tensorflow/tensorflow: Computation using data flow graphs for scalable machine learning GitHub - Theano/Theano: Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It can use GPUs and perform efficient symbolic differentiation. 和 GitHub - torch/torch7: http://torch.ch 以及更多的各种框架,就任君选择了。至于哪个好用,谁用谁知道。号称码神的jeff dean在韩国汉城的演讲中(),穿着那件TensorFlow的t恤,看起来还是蛮不错的。其实我蛮想知道的,AlphaGo是不是用tersorflow的?如果不是,为嘛不用?




第五块是领域知识,随便列举,有空的时候整理一下我自己做过的一些内容。
比如alphago,aja huang是业余6段的水平;
比如之前有个同事做色情图像识别,貌似天天看图片看到吐啊;
比如想在金融领域玩玩的,对金融也是得有所了解的


其他内容,貌似只能写写段子的部分了
问题的理解、抽象和建模
执行力
勤奋



上述几个方面要(都)做的好的,算算人数也不会太多。而能够都做的好的,还不一定去干深度学*这事,比如有些人抱着白富美去做人生赢家去了,有些人游山玩水到处自拍显摆去了,剩下的也就寥寥无几了。


看到这里的,数学还不错,编程水平又比较高,人也聪明并且勤奋的,如果还闲着的话,欢迎私信我啊。

写着写着变成一个教程了
慢慢更新
 
 
千崎宇治,RNN / LSTM / NTM / MemNN / ...
QIchao tang知乎用户、bachml 等人赞同
入门的问题我可以试着答一答。

一开始我认为 PRML 中的神经网络那一章早就过时了,现在看起来还是有必要一读的,涵盖了很多基础的概念。

然后,比起读书,入门的时候更需要去高屋建瓴地了解这个领域大概分为哪些部分,目前的前沿工作都各自沿着哪个方向展开。 可以看一看Reading List « Deep Learning 这里面的分类以及所对应的经典论文。LeCun, Hinton 以及 Bengio 最*有一篇综述,题目就叫 Deep Learning, 基本上各个方向都提及了一些,值得一看。

如果课题组是偏 CV, 那么CNN 一定是要吃透的,可以说很多工作都是围绕着 CNN 展开, 或是 添加了 不同的 layer, 或是用多任务共享参数来提升预测效果。。等等这一切基本离不看 CNN。 几个关键词: weights shared, filter/kernel, (max) pooling, feature map, 这些词语的意思,都要吃透。

而如果是偏 NLP 的话, 那么 RNN 则是 相比之下比较重要的了,因为 RNN 这种 能够对 同一层 layer 的 unit 与 unit 之间的关系做表达的model 非常适合于上下文的任务中。 然后就是 LSTM 等子问题,也有很多可研究的工作。这方面的话可以参考 Stanford NLP 组的 Socher, Manning等人, 有很多不错的工作。Alex Graves 的 "Supervised Sequence Labelling with Recurrent Neural Networks" 前几章讲述了从 普通的多层感知机 到 RNN 然后再到 LSTM, 值得一读。

最*在看图说话,以及简单一点的给定一个图片找出与之对应的描述句子(句子使给定的),这样的工作正好可以把 CNN 和 RNN 结合起来,即 用 CNN 识图, 用 RNN 做句子的向量表示,这样组合起来又能发好几篇文章= =, 所以说着力点还是很多的。

至于 sparse coding 和 deep/restricted boltzmann machine, 就不太了解了。 也见过将 CNN 和 RBM 结合起来用的, 有同好可以讲一讲吗。。。

P.S. Bengio 的那本 《Deep Learning》DEEP LEARNING 啥时候才能正式出版。。。。 休刊了吗?
 
 
知乎用户,我是认真的
千岛洪知乎用户、知乎用户 等人赞同
时代在变啊,看到还有人看这个答案所以还是要修改下。
现在深度学*的门槛真心是越来越低了,低到已经几乎像svm一样人人都说会了。。
关于入门,如果要迅速了解一般深度学*模型的前向反向计算过程的话,个人依然还是很推荐原答案中提到的tutorial和matlab代码包的,很基础很好懂。
不过在实战上,这个matlab的包确实作用不大。。不过好在相关代码已经漫天飞了,而且一般都配有很详细的教程。CNN的话caffe和mxnet都已经非常好上手了,很适合单机单卡初学者,其他的像LSTM、RNN之类的在github上也都可以找到很经典的代码包可以分享了。不妨先下个跑跑demo,方便入门~~
总之时代在变,deep泛滥的时代,复现别人的工作也变得容易多了,所以上手的顾虑可以放低一些,不过依然要说,个人认为这毕竟还是一个需要烧机器烧人力烧经验的行当,所以如果要做出好工作,确实还是需要一些个人和实验室层面的积累的。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

原答案:

我觉得首先得看题主是几年级,以及是否考虑读博,因为深度学*是一个在算法上超级简单但是在实现和融合上比较麻烦的东西,上手确实需要时间,所以如果时间紧张而且实验室没有基础的话,不太建议跳这个大坑。。。 

如果已经下定决心要跳了,而且要比较速成的方式,个人建议先看UFLDL的tutorial和BP算法,结合DeepLearnToolbox,对理解算法很有帮助。

最后,放下书,下载code,换上自己的数据库跑它几次,这个东西真心是谁用谁知道。。。。
 
 
知乎用户,摸鱼失败 身败名裂
魏子敬 赞同
被 Free Mind 这个聚聚安利了一本书,叫这个 Deep Learning , 看着不错。
 
 
吴晓民
千岛洪知乎用户 赞同
1:ufldl
2:CNN for visual recognition.李飞飞
3:deep learning for nlp.
按以上三步,英文基础好的话,最多四个月就能有不错的底子了。
4:看论文+做真实项目。这是最后一步,需要有写代码和看英文的能力,还要有对业务的理解能力。
 
 
達聞西
黄大知乎用户、eastflowing 等人赞同

Yoshua Bengio的书似乎快搞定了,最佳没有之一:

DEEP LEARNING

 
 
于菲,小硕,方向机器学*。
入门的话呢,可以看这个.
UFLDL Tutorial
这个教程是Andrew Ng他们做的。教程讲解了深度学*的基本概念,讲解非常清晰明了,你关心的神经网络的问题,教程里也有讲解。这个教程还有中文翻译,你可以在该页面下方将教程设置为中文。
这个教程一个牛逼的地方在于,他会带着你一步一步地实现一个深度学*算法,并在一个手写数字的数据集上测试。
但是深度学*里一些其他重要的方法,如Restricted Boltzmann Machines,并没有涉及到。在你学*完这个教程后你可以继续找资料学*。教程中也给了一个Recommended Readings.

当然这只是一个入门,告诉你深度学*大概是个怎么回事。如果你要继续学*,就要继续读相应的文献和相关的最新书籍。
 
 
李Shawn,人工智能研究人员/学生
Eric Shao知乎用户、朱瑞 等人赞同
前面同学都说得非常好,我再引用一下我之前的一个回答,主要是中文的教程,英文不好的同学一样可以看看(但还是得好好学英语啊!)。
这是我学*深度学*看过的一些资料,会不定时补充。

1、http://ufldl.stanford.edu/wiki/index.php/UFLDL教程
这是我最开始接触神经网络时看的资料,中文的,把这个仔细研究完会对神经网络的模型以及如何训练(反向传播算法)有一个基本的认识,算是一个基本功。

2、斯坦福大学公开课 :机器学*课程
这可能是机器学*领域最经典最知名的公开课了,由大牛Andrew Ng主讲,有中文字幕,这个就不仅仅是深度学*了,它是带你领略机器学*领域中最重要的概念,然后建立起一个框架,使你对机器学*这个学科有一个较为完整的认识。这个我觉得所有学*机器学*的人都应该看一下,我甚至在某公司的招聘要求上看到过:认真看过并深入研究过Andrew Ng的机器学*课程,由此可见其重要性。

3、Deep Learning Tutorials
这是一个开源的深度学*工具包,里面有很多深度学*模型的python代码还有一些对模型以及代码细节的解释。我觉得学*深度学*光了解模型是不难的,难点在于把模型落地写成代码,因为里面会有很多细节只有动手写了代码才会了解。但Theano也有缺点,就是极其难以调试,以至于我后来就算自己动手写几百行的代码也不愿意再用它的工具包。所以我觉得Theano的正确用法还是在于看里面解释的文字,不要害怕英文,这是必经之路。PS:推荐使用python语言,目前来看比较主流。

4、Stanford University CS231n: Convolutional Neural Networks for Visual Recognition
斯坦福的一门课:卷积神经网络,李飞飞教授主讲。这门课会系统的讲一下卷积神经网络的模型,然后还有一些课后*题,题目很有代表性,也是用python写的,是在一份代码中填写一部分缺失的代码。如果把这个完整学完,相信使用卷积神经网络就不是一个大问题了。

5、周志华老师的《机器学*》
这本书是今年刚出的,我买了一本,看了一下目录,真是把机器学*领域重要的内容都涵盖进去了,包括深度学*。这本书我正在看,看一段时间后再回来更新。

遇到具体问题的话推荐在网上搜一些大牛的博客,很多都写得非常好。
 
 
者也,在读博士,研究小世界里的大数据
如果有机器学*的基础,想做深度学*(deep learning),边学边做是最好的,很多答主都提到了 UFLDL Tutorial,本人也做过,根据自己的理解,写一下特点:
  1. 从神经网络的基础开始,既有直观认识,也有数学细节。
  2. 攻略内容详细,可操作性强,虽说只用了两个隐层而已,但是需要理解的重要的内容都涵盖了,(计算梯度(gradient),反向传导算法(back-propagation),微调(fine-tuning)),而且提供了代码框架,通过学*可以自行完成核心代码,用提供的测试结果进行验证,作为攻略真的够完整。
再说说难度和局限性:
  1. 还是有一些数学的推导的,特别是算梯度那块。
  2. 编程用的是matlab,有一定基础的话而且又能理解数学推导部分
  3. 用的模型是stacked auto-encoder,还有很多其他的深度学*模型,现在最火的是卷积神经网络(CNN),自从ImageNet Classification with Deep Convolutional Neural Networks 2012年在NIPS发表以来,各种改进版本层出不穷,刷新各种CV的数据集指标,也是该领域当前最热门研究内容,本攻略只在最后一章有所涉及。

如果理解UFLDL感觉比较困难,以下是建议:
  1. 在弄清楚基本的原理之前,我不觉得阅读类似caffe实现的代码会很有帮助,只会更加困惑
  2. 深度学*并不是一个独立的研究领域,应该说是众多机器学*问题中的一个,而且是从神经网络这个模型衍生出来的,也许你根据自己的背景、需求和兴趣,在对机器学*各个方面有所了解之后,觉得需要用深度学*做点工作,再继续会比较好
  3. 补充一些更关于数学基础的内容: 数据挖掘、人工智能、模式识别等学科的公共数学基础有哪些?(比如贝叶斯网络) - 者也的回答
posted @ 2016-04-25 18:50  胡立峰  阅读(14584)  评论(0编辑  收藏  举报