深度学习入门(转载)

我来总结下我从一个小白到在国际顶会上发 paper 的学习经验。

深度学习的资料非常多,但这也成为了深度学习坑最大的地方,学习者很容易迷失在各种资料当中,最后只看了个皮毛。所以,我认为学习深度学习一开始就要盯着你挑选的那么一两个资料学习,最多不要同时看三本书。深度学习是一个理论与实践相结合的学科,所以我建议找一本理论和实践都覆盖的书,或者一本书讲理论,然后找些代码做实验。下面来说说我自己学习的总结的一条路径,难度由简到难,由浅到深。永远不要忽视基础,他们不是你学会之后就可以抛弃的东西,而是一点点积累让你达到更高高度的坚实台阶。

1. 入门材料。我推荐 Neural networks and deep learning,这本简短的书满足了上面我所说的既注重理论又有充分的实验代码伴随。这本书先是引入了最原始最简单的神经元和神经网络的概念,然后一步步引出全连接网络、激活函数、反向传播、优化方法、卷积神经网络等深度学习中最基本的内容,然后还给出一个视觉上的(非严格的)证明,神经网络可以计算任意函数(严格来讲,是有限制条件的)。书中还有大量的配图(其中还有很多可交互的动图),非常有助于理解。这本书对应的是作者自己的 python 代码,自己从头实现一个神经网络非常有助于理解。这本书真正做到了深入浅出,在不失理论深度的同时让难度变得很低。作为另一门不得不提的Stanford深度学习课程CS231n Convolutional Neural Networks for Visual Recognition,居然有中文版!好评如潮的话不多说了,网易云课堂上的名字是深度学习与计算机视觉

2. 找一本更深入的书学习理论,挑一个喜欢的框架可以做实验。我在入门深度学习的时候没有专门讲这个话题的书,还得自己寻找各种资料,看 paper,走了很多弯路,现在的同学可以直接看 Deep Learning 这本书了,对于基础理论讲的非常详尽了,是深入理解的一条捷径。至于框架,挑个主流的、教程完备的,我推荐 pytorch/tensorflow/mxnet 里面选一个,我个人比较喜欢 pytorch,程序非常优雅简洁。然后一边看书一边做实验,把书中的东西能实现的实现一下,把框架里面的教程也都跑一遍,这样你对于深度学习就入门了。

从这里开始,接下来你的学习可以分成两个分支了,分别对应理论和工业实践。

3.1 找一个专门的问题开始钻研,不断地试验自己的想法,前人没有的想法。同时阅读这个领域最新的文章,尝试实现。比如你可以挑物体检测这个问题,既然你对于理论和实践都已经比较熟练了,你完全可以开始修改别人的网络架构,改变训练的模式,尝试把先验信息加进来。总之,有很多的玩法都可以实验。说不定玩着玩着就能写一篇文章出来发表。

3.2 尝试实现一个自己的深度学些框架。目前深度学习离不开 c/c++ 和 cuda,所以你可以从头写一个 c/c++ 版本的,把坑自己踩一遍,这样工程能力肯定大为提高。或者,你也可以利用现有框架的后端实现一个前端,这样你对于这些框架后端的理解也能够大为提高。且你的所有的想法都可以写进这个前端里面。比如 pytorch 就是用 torch 的后端实现了一个 python 的前端,而且相比于原版的 torch 有了很多改进。

首推Geoffrey Hinton(不用多介绍了吧)在coursera上开的一门课,Neural Networks for Machine Learning,入门级课程,不需要太多的数学背景,但干货满满,对诸多算法有着深刻的解读。课程虽然并不是那么的激情四溢,但是同学们可以静静领略这位深度学习鼻祖的风采呀,处处闪耀着智慧的光芒。整个课程听下来,会让你有种宝刀即出,谁与争锋的感觉(当然啦,路漫漫。。)。(英文不好的同学看这里!)作为另一门不得不提的Stanford深度学习课程CS231n Convolutional Neural Networks for Visual Recognition,居然有中文版!好评如潮的话不多说了,网易云课堂上的名字是深度学习与计算机视觉,小伙伴们刷起来。接着上一条,安利“知名博主”(Andrej Karpathy)的博客,在这里你可以看到深入骨髓的分析。我相信学完CS231n的同学会有极大兴趣的。 到这里差不多就能入门了吧,大概还是赢在起跑线的那种。至于如何让自己的程序跑起来呢,TensorFlow有一个官方的教学视频挂在udacity上,感兴趣的同学可以看看,零基础入门教学,刷起来飞快。喜欢读paper的同学可以找来各种经典paper好好读起来。那如果想进行体系化的阅读看看教材呢,强烈安利Yoshua Bengio 2016年新书Deep learning. 别被厚度吓到了,要知道付出和回报还是成正比的,更何况练的是武林宗师双手的奉上的武林秘籍呢,一招一式说的清清楚楚。(对了,这是有中文版的)再安利一本Yoshua Bengio的书,Learning Deep Architectures for AI,09年写的,需要的数学基础高一些,短短一百页,让你有种高屋建瓴的感觉。希望能为你打开新世界的大门!

-------------------------速成的道路---------------
0、Andrew Ng的机器学习部分内容(机器学习介绍,回归问题与梯度下降,过拟合欠拟合)
英文能力足够推荐英文版:Machine Learning
(中文版对应网易公开课斯坦福大学公开课 :机器学习课程)
(中英链接里的章节貌似不对应,按内容看)

1.UFLDL: http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

  • Neural Networks
  • Backpropagation Algorithm

看这两部分内容

2.CMUAdvanced Introduction to Machine Learning PPT:http://www.cs.cmu.edu/~epxing/Class/10715/lectures/DeepArchitectures.pdf

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

3.CAFFE:Caffe | Caffe Tutorial

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

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

一个技术上认识DL(这里说CNN),的顺序是:
线性分类->感知机->梯度下降->神经网络->BP算法->三层全连接网络->CNN
感悟上认识DL的顺序是:
(生物基础)Hubel&Wiesel视通路研究 -->(计算机模拟)神经网络-->神经网络很好骗
-->神经网络一定要深吗?-->神经网络一定要深-->混沌理论&量子力学

如果是初学,我建议从Yoshua Bengio(NN的发明者之一)的书Deep Learning开始(Deep Learning),书的第一章就介绍了学习DL基本的数学知识,从第二章开始由浅入深的介绍不同的DL模型以及部分应用。

也可以配合着Stanford课程: Convolution Neural Networks for Visual Recognition材料一起看:CS231n Convolutional Neural Networks for Visual Recognition 虽然课程名称是CNN和图像识别,但只有最后一个模块才介绍到具体的CNN,前两个模块介绍了一些基本知识和Neural Networks。 我当时是从这份材料入门,对DL有了初步的认识后,通过实验,读论文对DL有进一步的认识。然后我又发现了上述的Deep Learning这本书,对我之前理解不清的地方都有相对详细的讲解,所以现在还在读。

Coursera上有一个关于Deep Learning的公开课:https://www.coursera.org/learn/neural-networks (Neural Networks for Machine Learning) 讲师是Geoffrey Hinton(NN的发明者之一)。公开课里讲的更深入一些,不过不适合初学者,在你看完前两份资料和自己做过分析过一些实验之后再上这门课可能更好一些。

1.数学基础:搞深度学习的学生一般是研究生,刚经历过考研,数学应该没什么问题,不是研究生当然也没关系,把高数的求偏导那部分看下,做几道练习题,推荐张宇的《高等数学18讲》,以及《概率论9讲》,淘宝买的书一般会赠送对对应的视频课程,看不懂书可以看看视频,都讲得比较通俗了,并没有必要去看市面上各种几百上千的培训班讲数学基础。凸优化属于进阶的内容了,我觉得入门阶段可以先不用看

2.机器学习基础:机器学习本身是一个庞大的领域,单单一个svm的推导就能把我们虐死,而在深度学习或者能够在UFLDL教程中,Andrew Ng 已经告诉我们可以先看到逻辑回归就好,看II,III,IV章(到逻辑回归)http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLearning

备注:由于ng的机器学习课程是英文的,觉得不习惯的同学,也可以参考台湾李宏毅老师的机器学习课程(网上搜索资源),一口台湾腔,讲得很棒啊,听懂没问题~

3.深度学习与计算机视觉:有了上面的两个基础,可以把李飞飞老师的网易云课堂的公开课http://study.163.com/course/introduction.htm?courseId=1003223001#/courseDetail?tab=1给刷了,最好自己把卷积的bp过程公式推导一下,参考http://ufldl.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B 当然,也可以事先看看一些中文博客对卷积神经网络的通俗讲解~

备注:同样,不习惯英文的同学可以参考台湾李宏毅老师的深度学习课程(网上搜索资源),我觉得李宏毅老师也算得上一个机器学习领域的新星,哈哈

4.选择一个深度学习框架开始搞事情了:像caffe TensorFlow pytorch 这三个我个人比较看好,用caffe来作为一个入门是非常不错的选择,把caffe自带的几个example跑通之后,可以开始着手选择一个领域,看相关的论文,比如人脸检测,开始训练一些模型,其中会需要用到python或者matlab来处理一些数据集的格式,对应的编程语言要学习下

5.近期大牛吴恩达离开百度之后,自己创业,在网易云课堂发布了一系列的免费课程,是关于deeplearning 的,在你有过一些实战经验之后,可以好好刷一下,地址如下:https://study.163.com/courses-search?keyword=%E5%90%B4%E6%81%A9%E8%BE%BE

深度学习入门(转)(备用)相关推荐

  1. 【AI参赛经验】深度学习入门指南:从零开始TinyMind汉字书法识别——by:Link

    各位人工智能爱好者,大家好! 由TinyMind发起的#第一届汉字书法识别挑战赛#正在火热进行中,比赛才开始3周,已有数只黑马冲进榜单.目前TOP54全部为90分以上!可谓竞争激烈,高手如林.不是比赛 ...

  2. 深度学习入门,一文讲解神经网络的构成、训练和算法

    小白深度学习入门系列 神经网络的构成.训练和算法 什么是神经网络 人工神经网络(Artificial Neural Network,ANN),简称神经网络(Neural Network,NN),是一种 ...

  3. PyTorch深度学习入门与实战(案例视频精讲)

    作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)

  4. PyTorch深度学习入门

    作者:曾芃壹 出版社:人民邮电出版社 品牌:iTuring 出版时间:2019-09-01 PyTorch深度学习入门

  5. 深度学习入门 基于Python的理论与实现

    作者:斋藤康毅 出版社:人民邮电出版社 品牌:iTuring 出版时间:2018-07-01 深度学习入门 基于Python的理论与实现

  6. 干货|《深度学习入门之Pytorch》资料下载

    深度学习如今已经成为了科技领域中炙手可热的技术,而很多机器学习框架也成为了研究者和业界开发者的新宠,从早期的学术框架Caffe.Theano到如今的Pytorch.TensorFlow,但是当时间线来 ...

  7. 福利丨一门面向所有人的人工智能公开课:MIT 6.S191,深度学习入门

    对初学者来说,有没有易于上手,使用流行神经网络框架进行教学的深度学习课程?近日,麻省理工学院(MIT)正式开源了在线介绍性课程「MIT 6.S191:深度学习入门」.该课程包括一系列有关神经网络及其在 ...

  8. 深度学习入门指北——从硬件到软件

    作者:隔壁王大喵 近日,Rachel Thomas在fast.ai上发布了一篇博文<What you need to do deep learning>,他希望通过这篇文章回答一些深度学习 ...

  9. LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络

    Root 编译整理 量子位 出品 | 公众号 QbitAI 深度学习和人脑有什么关系?计算机是如何识别各种物体的?我们怎样构建人工大脑? 这是深度学习入门者绕不过的几个问题.很幸运,这里有位大牛很乐意 ...

最新文章

  1. [逆向基础] C++中基本数据类型的表现形式
  2. 2018-07-09--记录一次gitlab迁移事件及遇到的问题
  3. golang float string int 相互转换 保留小数位
  4. python使用界面-如何使用python图形化界面wxPython
  5. 企业安全建设之浅谈数据防泄露
  6. short_open_tag 相关
  7. 【重点】LeetCode 25. Reverse Nodes in k-Group
  8. Windows Azure 系列-- Azure Queue的操作
  9. Java——变量和数据类型
  10. Java_Dubbo视频教程-雷丰阳-专题视频课程
  11. illegal instruction 解决办法
  12. 进行海外媒体发稿的稿件撰写技巧和方法
  13. Codeforces Round #734 (Div. 3)_B2. Wonderful Coloring - 2(贪心)
  14. element ui实现抽屉效果_抽屉效果的导航菜单
  15. 读书印记 - 《让大象飞》
  16. 前端根据后端返回数据导出指定样式的表格(xlsx-js-style)
  17. echarts地图的常见用法:基本使用、区域颜色分级、水波动画、区域轮播、给地图添加背景图片和图标、3d地图
  18. 如何把操作系统迁移到新电脑/硬盘
  19. 老树发新芽—使用 mobx 加速你的 AngularJS 应用 1
  20. Python第六周作业

热门文章

  1. Day29 - Countdown Timer
  2. Stata:离群值!离群值?离群值!
  3. 有没有人给我讲解一下这个呀看不懂
  4. Faster-RCN训练和入门使用--Pytorch版本
  5. android 小鸡走动动画,使用Matter.js实现的小鸡掉落动画
  6. 毫米波雷达「增量」升级
  7. 学java被“劝退”的第三天
  8. 软文标题怎么写?这8种标题写法你用对了吗
  9. 块级和图片的1px间隙
  10. linux组raid的工具,Linux下MegaRAID命令行使用工具