写这篇教程的初衷是很多朋友都想了解如何入门/转行机器学习,搭上人工智能这列二十一世纪的快车。文章的宗旨是:1. 指出一些自学的误区 2. 不过多的推荐资料 3. 提供客观可行的学习表 4. 给出进阶学习的建议。
这篇文章的目标读者是计划零基础自学的朋友,对数学/统计/编程基础要求不高,比如:
- 在读学生
- 非计算机行业的读者
- 已经工作但想将机器学习/数据分析和自己的本职工作相结合的朋友
1. 自学机器学习的误区和陷阱
1.1. 不要试图掌握所有的相关数学知识再开始学习
不要试图补足数学知识再开始学习机器学习。一般来说,大部分机器学习课程/书籍都要求:
- 线性代数:矩阵/张量乘法、求逆,奇异值分解/特征值分解,行列式,范数等
- 统计与概率:概率分布,独立性与贝叶斯,最大似然(MLE)和最大后验估计(MAP)等
- 优化:线性优化,非线性优化(凸优化/非凸优化)以及其衍生的求解方法如梯度下降、牛顿法、基因算法和模拟退火等
- 微积分:偏微分,链式法则,矩阵求导等
- 信息论、数值理论等
一般人如果想要把这些知识都补全再开始机器学习往往需要很长时间,容易半途而废。而且这些知识是工具不是目的,我们的目标不是成为优化大师。建议在机器学习的过程中哪里不会补哪里,这样更有目的性且耗时更低。
1.2. 不要把深度学习作为入门第一课
虽然很多人都是冲着深度学习来的,但把深度学习作为机器学习第一课不是个好主意。原因如下:
- 深度学习的黑箱性更加明显,很容易学得囫囵吞枣
- 深度学习的理论/模型架构/技巧还在一直变化当中,并未尘埃落定
- 深度学习实验对硬件要求高,不太适合自学或者使用个人电脑进行学习
1.3. 不要收集过多的资料 & 分辨资料的时效性
机器学习的资料很多,动辄就有几个G的材料可以下载或者观看。而很多朋友都有“收集癖”,一下子购买十几本书的人我也常常能够看到。
机器学习的发展和变化速度很快。在入门期间,建议“小而精”的选择资料,选择近期出版的且口碑良好的书籍。。
一般来说,我比较推荐近5年内出版的书籍,或者10年以后出版的书籍。有些书籍虽然是经典,比如Tom Mitchell的《机器学习》,但因为其出版已经超过20年,还是不建议大家购买。
在这篇文章中我所推荐的书籍和课程都相对比较经典,同时属于紧跟时代潮流的。入门阶段我推荐了1门课程和2本书,进阶阶段推荐了1本书,深度学习推荐了1门课程一本书,高级阶段推荐了2本额外书籍。
2. 机器学习的一些前期准备
2.1. 硬件选择
另一个大家常问的问题是:是否可以用自己的笔记本电脑进行机器学习。答案是肯定的,大部分市面上的数据集都可以放到你的内存中运行。在入门阶段,我们很少会用到非常大的数据集,一般最大也就是MNIST,完全可以使用个人笔记本电脑进行运行。
2.2. 软件选择
如果要做深度学习,Linux还是首选,因为其对很多学习模型支持比较好(主要是深度学习的Library)。但即使你使用的是Windows系统,也可以用虚拟机装Ubuntu来进行学习。小型的深度学习模型足够了,大型的深度学习我们很少在本地/个人计算机上运行。
至于编程语言,首推Python,因为其良好的拓展支持性,主流的工具包都有Python版本。在特定情况下,选择R作为编程语言也是可以的。其他可能的语言还包括C++、Java和Matlab,但我个人不大推荐。
此处也想额外提一句,因为编程属于机器学习基本要求之一,所以推荐大家可以自学一些基础编程的知识(如Python),在文中不再赘述。
2.3. 语言能力
学好英语,至少打下阅读和听力的基础。虽然人工智能领域中国现在已经做得很不错,但主流的书籍、期刊和会议,资料都是英文的。我们可以接受翻译版,但最好的方法还是自己有能力直接阅读。即使你将来不做机器学习,英文阅读能力还是会有很大的帮助。