机器学习该怎么入门?

作者:红色石头、Leon

原文首发于极市开发者社区:http://bbs.cvmart.net/topics/147/ML
导读:缺乏一个系统的学习体系及指导,面对越来越多的培训课程及资源却无从下手,如何学习机器学习成为一个大家都比较困扰的问题,本文精选两位知乎答主的回答,希望能从大佬的学习经验中给各位带来机器学习启发和指导。

红色石头:

1. 放弃海量资料!

没错,就是放弃海量资料!在我们想要入门机器学习的时候,往往会搜集很多资料,什么 xx学院机器学习内部资源、机器学习从入门到进阶百 G 资源、xx 人工智能教程,等等。很多时候我们拿着十几 G、几百 G 的学习资源,然后踏踏实实地放到了某云盘里存着,等着日后慢慢学习。殊不知,有 90% 的人仅仅只是搜集资料、保存资料而已,放在云盘里一年半载也忘了打开学习。躺在云盘的资料很多时候只是大多数人“以后好好学习”的自我安慰和“自我”安全感而已。而且,面对海量的学习资料,很容易陷入到一种迷茫的状态,最直接的感觉就是:天啊,有这么多东西要学!天啊,还有这么多东西没学!简单来说,就是选择越多,越容易让人陷入无从选择的困境。所以,第一步就是要放弃海量资料!而是选择一份真正适合自己的资料,好好研读下去!

2. 放弃从零起步!

说到入门,很多人会想着那就要从最基础的知识开始学起!机器学习是一门融合概率论、线性代数、凸优化、计算机、神经科学等多方面的复杂技术。学好机器学习需要的理论知识很多,有些人可能基础不是特别扎实,就想着从最底层的知识开始学起,概率论、线性代数、机器学习凸优化公式推导,等等。但是这样做的坏处是比较耗时间,而且容易造成“懈怠学习”,打消学习的积极性。因为啃书本和推导公式相对来说是比较枯燥的,远不如自己搭建一个简单的回归模型更能激发自己的学习积极性。当然,不是说不需要钻研基础知识,基础理论知识非常重要!只是说,在入门的时候,最好先从顶层框架上有个系统的认识,然后再从实践到理论,有的放矢的查缺补漏机器学习知识点。从宏观到微观,从整体到细节,更有利于机器学习快速入门!而且从学习的积极性来说,也起到了“正反馈”的作用。

3. 机器学习入门学习路线

1)Andrew Ng《Machine Learning》

首先,非常推荐吴恩达(Andrew Ng)在 Coursera 上开设的机器学习入门课《Machine Learning》,授课地址是:www.coursera.org

关于这门课的官方介绍是:本课程将广泛介绍机器学习、数据挖掘和统计模式识别。
相关主题包括:
(i) 监督式学习(参数和非参数算法、支持向量机、核函数和神经网络)。
(ii) 无监督学习(集群、降维、推荐系统和深度学习)。
(iii) 机器学习实例(偏见/方差理论;机器学习和AI领域的创新)。

课程将引用很多案例和应用,您还需要学习如何在不同领域应用学习算法,例如智能机器人(感知和控制)、文本理解(网络搜索和垃圾邮件过滤)、计算机视觉、医学信息学、音频、数据库挖掘等领域。

这门课基本涵盖了机器学习的主要知识点,例如:线性回归、逻辑回归、支持向量机、神经网络、K-Means、异常检测等等。而且课程中没有复杂的公式推导和理论分析。Ng 的目的是让机器学习初学者能够快速对整个机器学习知识点有比较整体的认识,便于快速入门。

红色石头整理了这门课所有知识点的思维导图:
file

这门课每个知识点都会配套相应的练习题。大家可以在 Coursera 上下载,线下完成并提交。唯一的缺点可能是该习题都是基于 matlab 平台的。但是,Github 上已经有人把作业整理成为 Python 的形式了。有 .py 和 .ipynb 两种格式。
nsoojin/coursera-ml-py

kaleko/CourseraML

2)台大林轩田《机器学习基石》

台湾大学林轩田老师的《机器学习基石》课程由浅入深、内容全面,基本涵盖了机器学习领域的很多方面。其作为机器学习的入门和进阶资料非常适合。而且林老师的教学风格也很幽默风趣,总让读者在轻松愉快的氛围中掌握知识。这门课比 Ng 的《Machine Learning》稍难一些,侧重于机器学习理论知识。

3)台大林轩田《机器学习技法》

《机器学习技法》课程是《机器学习基石》的进阶课程。主要介绍了机器学习领域经典的一些算法,包括支持向量机、决策树、随机森林、神经网络等等。难度要略高于《机器学习基石》,具有很强的实用性。

4)《机器学习实战》

学完了上述几门优秀的公开课之后,已经具备了比较不错的机器学习理论了。接下来就要注重实战。简单地说,最直接的方法就是自己实现一遍主流的机器学习算法。这里可能有的同学说不需要重复造轮子。但是我觉得简单地把所有机器学习算法使用python实现一遍还是很有必要的,至少是伪代码的形式。一方面能够加深自己对理论的深入理解,另一方面能够锻炼自己的代码实操能力。可以看下这本《机器学习实战》书:
file

这本书最大的特点就是从零开始,使用python实现主流的机器学习算法。可以借鉴和参考。但是这本书的缺点也很明显,比如代码基于python2,代码比较晦涩难懂,可读性不高。但整体了解下还是很不错的。

5)吴恩达《深度学习专项课程》

file


从去年 8 月份开始,AI 界大IP吴恩达在 Coursera 上开设了由 5 门课组成的深度学习专项课程,掀起了一股人工智能深度学习热潮。关于该深度学习专项课程,红色石头非常推荐!它对于理解各种算法背后的原理非常有帮助,同时提供了大量的应用场景,涉及图像、语音、自然语言理解等各方面,还提供了一些工具函数、数据集。这个系列课程是从机器学习过渡到深度学习的必备课程!


今年,Ng 又在斯坦福大学又开设了高质量的深度学习课程 CS230。这门课的主页是:
CS230: Deep Learning
这门课是 deeplearning.ai 的线上、线下综合课程。这门课采用翻转课堂的教学形式,你可以在家观看教学视频,完成深度编程作业和在线测试,然后来到课程做进一步讨论并完成项目。这门课将以一个开放式的最终项目作为结束,此过程中教学团队会提供一些帮助。该门课的线上部分与deeplearning.ai一致,线下部分包含了一个课程项目。目前 CS230 的项目报告与 Poster 展示都已经发布。包含多种主题,如音乐生成、情绪检测、电影情感分类、癌症检测等。https://web.stanford.edu/class/cs230/proj-spring-2018.html

4. 进阶

基本上完成上述课程就算是入门了。接下来可以根据自己的兴趣和方向,有的放矢。

数学

很多人翻看任何一本机器学习的书,看到一推的数学公式就开始打退堂鼓了。开始搜索,提问“机器学习需要哪些数学知识?”然后得到的结果可能会是“矩阵分析,概率论,优化设计……”而且还会有大量的人推荐一些例如“All of Statistics”,“Convex Optimation”等等外文教材。至少我当时面对的情况就是这样的。这种情况很可能后面会朝以下画风发展。
看到上述推荐的那些经典教材,你像看待圣经一样看待他们。抱着一种学会了那些课,我再看机器学习的书简直就会是探囊取物的想法,你下载了巨多相关材料。但是,慢慢你会发现,除了把他们下载了下来,你并没有任何的进步。你并没有完完整整的看完一本,你并没有在机器学习方面卓越超群。
入门阶段真的需要这么多的数学储备吗?未必。

入门阶段我个人认为只要有普通工科专业大一大二那几门基础数学课“线性代数”,“高数”,“概率论与数理统计”就可以让你入门了。所以,千万别被机器学习中的数学所吓倒而不知道该如何下手。只要有上述的几门课的基础,你完全可以看懂很大一部分机器学习算法。

程序语言

机器学习入门最佳的方法其实就是理论和代码一起学习。一边看相应的理论推导,一边看并且实践经典代码。所以,为了更快入门,我推荐你最好能够懂点MATLAB或者是Python语言。Matlab和Python说实话做高端的机器学习肯定是不推荐的,但是如果你想的是机器学习快速入门,那这两门语言绝对是绝佳选择。

第一步

有了上述基础后,你可以开始看点机器学习的相关内容了。我看很多人推荐elements of machine learning。我想说,你想让一个基础为零的人去看这本书,真的合适吗???所以,我推荐的是Machine Learning in action,(这里面的完成语言为Python)这是英文版本的。当然如果你觉得英文对你是一个完全过不去的坎,(虽然我建议做技术的人都必须至少要看得懂英文)现在有中文版本,叫“机器学习实践”。
这本书用尽量少的公式把机器学习的基本算法都过了一遍,而且还讲得很清楚,更为重要的是他将公式和代码结合了起来。因此,你的机器学习并没有那么的抽象了,你知道算法里的公式如何的转化为代码。

所以,第一步,你可以耐着性子将这本书看完。反正我当时,把书中的代码自己敲了一次,虽然代码有的下载,你也可以选择只是把代码看懂完事。但我还是建议,自己敲一次,运行运行,这样你会得到不一样的体会。

第二步

学习Coursera上面Andrew Ng老师的machine learning的课程。这门课造福了众多机器学习的入门者,不仅仅是因为课程全面,内容由浅入深。更加重要的是这门课程每次课都有课堂作业,作业不需要你写出来所有的代码,但是关键代码要你写出来,而且还会教你如何调试代码。初学者学这门课的时候很可能会买有耐心,又是英文的,又有进度要求,又有作业。没关系,你可以把视频下载下来(很多网盘里都有下载好的视频),然后慢慢的去啃。作业也是,可能你自己不能一口气写出来,没关系,在自己做了大量尝试后,去Github上面下载一些别人写好的代码看一看,找找自己的问题到底出在了哪里。总之,一定要耐着性子过一遍甚至是几遍这个课程。


看到有人在问,Andrew Ng的视频,还有代码这些的资料。再次整理一下:
1、机器学习实战的书:《机器学习实战 (图灵程序设计丛书 72)》 [美]Peter Harrington, 李锐, ***, 曲亚东, 王斌 书评 简介 电子书下载 Kindle电子书
2、Andrew Ng老师的视频教程:Machine Learning:斯坦福大学机器学习个人笔记完整版(附所有视频和字幕)(现在Andrew Ng老师没开新课了,这是一个同学自己下载的所有视频和相关资料,大家可以自行下载)
3、Andrew Ng老师早期的一个机器学习公开课:斯坦福大学公开课 :机器学习课程
4、Andrew Ng老师机器学习课的代码
Python版本:icrtiou/Coursera-ML-AndrewNg


第三步

这时候你已经对机器学习很多简单的算法比较清楚了,但是可能还没有一种大的全局观。所以,我建议大家可以看看这两本中文教材。周志华老师的西瓜书《机器学习》和李航老师的《统计学习方法》,这两本书都是作者花了大量心思编写的,也是在中国众多科技书籍中难得的两本佳作。英文书籍,可以推荐《Patten Recognition and Machine Learning》,《Elementsof Statistical Learning》(但是这本书难度比较大,如果你有足够的耐心,可以慢慢啃,多次的啃。相信每次都会有不同的收获。我自己已经看了好几次,但是确实每次都没有完全看完,但是目前我遇到很多问题,我去翻这本书,还是能找到很多答案,尤其是我做稀疏相关的工作,里面的相关内容讲解非常清楚。)

第四步

这时候,机器学习你已经可以说大概入门了。后面的事情,就得根据你的需求来制定相关的学习路线。比如,做大数据分析的,得去学学spark,Hadoop等计算框架;另外,图模型,深度学习……等等内容,都是一些方向。自然语言处理、图像识别、语音识别等等也是一些应用方向,更有大量的领域知识需要结合。



另外,鉴于现在深度学习这么的火热,而且现在做机器学习也避免不了了解及应用深度学习,我这里也加入一些深度学习的内容。
1、入门的数学和编程基础和机器学习的要求是一样的。
2、入门读物还是推荐Andrew Ng老师组织的一个WIKI,UFLDL Tutorial - Ufldl , 非常建议大家老老实实花两个星期的时间把这个wiki的内容和相关程序自己实现一次。而且,这个wiki是有中文版本的,在每个页面的最下面都可以点击查看中文版本。(PS:我还很荣幸的当时参与了当时的翻译工作,为内容的中文化做了一点点微小的工作。)。
3、现在的深度学习应用最为广泛的就是卷积神经网络(Convolutional neural network, CNN),所以建议大家可以多看看这个方面的内容。正好这几天Fei Fei Li老师的CNN课程又开课了,大家有兴趣可以去看看。这个网站会同步更新,而且有中文翻译。【中文字幕】2017春季CS231n 斯坦福深度视觉识别课。
4、做深度学习避免不了的要选择一个平台,Tensorflow,Caffe,Torch,MxNet等等都是选择。如果是新手,尤其是基于Windows平台的新手,我还是比较建议用Tensorflow。具体的内容可以参见这个莫烦系列教程 - Tensorflow教程。
5、最后,就是勤联系、勤联系、勤联系啦。
6、最后的最后,如果没有项目参与,那么最好的检验自己的学习成果的手段就是参加比赛啦。国外的Kaggle,KDD CUP,...。国内的天池大数据竞赛,...。
https://www.kaggle.com/
http://www.kdd.org/kdd-cup
https://tianchi.shuju.aliyun.com/


#机器学习##深度学习##算法工程师#
全部评论

相关推荐

3 72 评论
分享
牛客网
牛客企业服务