备注:此为本人实践过的入门路径(严格意义上勉强入门,其实坑很大),并不一定适合所有人,仅供参考。
0.基本条件
熟悉编程语言(至少是python等OOP语言),习惯编程思维。了解算法理论。
1.了解入门
学习coursera上Andrew ng的machine learning课程,理解经典机器学习是怎么样的。
课程所有的quiz和编程作业完整做一遍。这个课程是最经典的入门教程。
稍微遗憾的是里面编程用的是matlab(或者开源免费的octave,但问题不少,编程作业完成过程会有不少磕磕绊绊),但是里面案例很有趣,说明比较详尽,做下来还是值得的。
2. 实践入门
学习udacity上的machine learning nanodegree课程。与coursera不同,udacity的课程有明显的实践侧重,对理论讲解的很少,但是重点是通过实践解决各种问题,所用的工具和技术也更加贴近实战,而且还有通过真人对项目的review达到mentor机制。
所以udacity的学习重点是项目,所有的项目都要认真做。
Machine learning nanodegree对算法的讲解和ng的课程有一部分重叠,但是很大一部分内容是ng课程里没有的,比如说决策树、boosting等,以及强化学习。
3.深度学习入门
学习udacity上的deep learning foundation nanodegree课程,了解深度学习的基本原理和应用。因为是foundation,所以理论上并不会很深入,但是提供了大量的应用案例和代码,趣味性比较强,做过一遍之后至少对深度学习可以说开始了解了。
4.深度学习进阶
学习coursera上ng最新开的deeplearning.ai专项课程5门。Coursera(或者是ng)的特点是原理方面讲解地非常深入浅出。在udacity上了解但是不是很明白的地方,在这个课程里基本上都会一个个搞得恍然大悟,比如说优化算法、CNN、RNN、LSTM、GRU的原理之类的,原理的解释秒杀其它材料。Quiz和programming assignment都是精心设计过的,非常值得一做。
5.交叉巩固
另外,还推荐学习mit的人工智能课其中机器学习部分。这个课程相对比较老了,那时候深度学习还没火起来,而且讲解的是人工智能整个课程,其中有几节课讲了机器学习。个人感觉老师讲的虽然浅显,但是注重intuition. 有一些比较重要的概念,在前面coursera和udacity上都不是弄得很清楚的,在这里梳理地更浅显明白了,比如说svm算法、boosting等等。
推荐学习周志华的《机器学习》,该领域中文著作第一推荐。相对上述MOOC而言,此书有一定的深度,而且数学理论性更强,但总体上可读性还是不错的。可以挑选一些感兴趣的内容进行阅读研究。有助于巩固理论认识。当然如果想要高要求自己达到一定的理解,建议仔细阅读几遍,收获会很多。
6.在项目中实践,编码,编码,编码
做一些项目,找一些感觉。
7.继续前行(依照个人兴趣)
强化学习方面,David Silver的 Reinforcement Learning课程。
基础算法理论方面,普林斯顿Robert Sedgewick的Algorithms. (非机器学习)
有时间把Ian Goodfellow的“花书”Deep Learning也看一下,虽然写的并不是那么友好。
GPU优化方面,看看nVidian的CUDA系列教程。
如果对网络简化感兴趣,研究一下Mobilenet, Shufflenet等方法。
一些主流框架(例如Tensorflow)的网站,因为版本迭代更新很快,建议以官网说明为准。
跟踪最新研究进展,找到可能的应用点。
...