机器学习

入门机器学习

http://www.cnblogs.com/Jack47/p/learning-more-effectively.html

http://www.cnblogs.com/Jack47/p/tips-on-learning-ml-coursera-course.html

作者:Jack47
种下一棵树,最好的时机有两个:十年前和现在。本系列是我作为机器学习的门外汉,学习斯坦福大学吴恩达教授的机器学习课程时的一些总结,目前我学到了第五周,我会在学习过程中分享一些东西出来,希望能够帮助到对机器学习感兴趣,想自学的小伙伴。

如果你对机器学习感兴趣,但也仅此而已,还没有入门,并没有系统的学习过。那么本课程适合你,它就是入门级课程,所有需要用到的东西,比如一点点线性代数的知识,编程工具Octave/Matlab的使用,都在视频里有对应的课程及练习帮助你掌握。这是公认的进入机器学习领域最好的课程,已经有180万人学习了本课程,而且本课程也是17年最流行的网上课程。

很多人在自学机器学习时可能会有疑问,这课程适合自己吗?能收获什么?需要什么条件吗?比如Python或者线性代数?抛弃这些疑问吧,如果想学习就学吧,先学起来,你就有感觉了,直觉会引导你走下去。

引用一下大神卡马克在<< Doom启示录 >>里的一段话:

在信息时代,客观障碍已不复存在,所谓障碍都是主观上的。如果你想动手开发什么全新的技术,你不需要几百万美元的资金,你只需要在冰箱里放满比萨和可乐,再有一台便宜的计算机,和为之献身的决心。我们在地板上睡过,我们从河水中趟过。

当你在学习本课程时,除了视频课程之外,还有下面的这些配套的资源可以用来提高学习的效率

视频是几年前(11年?据说是coursera开办时的第一个课程)拍摄的,里面可能有一些错误的地方,注意看勘误:
比如 Errata Week3

编程作业的额外测试用例 因为编程练习题里只有一两个测试用例,所以可能会出现你提交后发现这道题目没有过的情况,此时可以借助这些额外的测试用例来帮助你找到问题所在。

每周课程和编程练习的FAQ:
比如第三周的
可以在看视频课程之前大致浏览一下这里的内容,等学完视频课程后,再浏览一下这里的内容。

每周重点总结
这个是吴恩达教授发起的讨论,主要目的是让大家用自己的语言复述一下本周的5大重点,只有自己能复述出来的东西,才是自己真正学习到的东西,这也算是一种高度浓缩的总结了。视频课程的问题是本身承载的内容有限,很容易跟着视频走,失去自己思考的时间。

学习小组,有slack, what's app 和 微信群
我也组建了一个微信群,适合最近(2018.4月)开始学习的同学

每周相关的讨论组,比如第三周。
可以从里面看到一些有意思的idea,比如把linear regression和 logistic regression的cost function绘制出来,一图胜千言;或者有些人会把第四周logistic regression里题目给定的特征向量展示出来,也非常有意思。

References:
Recommended Courses and Study Groups for Data Scientist or Machine Learning Engineer

Kaggle: competitions, datasets, kernels

卷积神经网络(CNN)之父Yann Lecun的youtube视频

人工神经网络(ANN)教父Jeffrey Hinton的youtube视频

10 Most Popular Courses in 2017

好了,以上就是所有内容了

首先说明一下,我的学习目标是要把机器学习实际应用起来,而且要基本搞懂背后的数学知识。由于每个人学习的目的不同,所以大家的做法可能不尽相同,但背后的学习方法其实都是八九不离十的,掌握了好的学习方法,可以事半功倍!

强烈推荐 <<学习之道>> 这本英文翻译过来的书,结合作者在coursera上的对应课程,效果更佳,作者讲的比我这里写的好上百倍!花上7天的的时间,每天1h,基本就能看完。我下面写的东西,其实都是对这本书里学到的东西在我学习机器学习时的具体实践。

学习方法
找到激励和驱动自己的“神秘力量”
对我而言,学习本身就是一件很有意思的事情,一直对机器学习感兴趣,最近因为工作需要,下定决心要好好学习一番,想花3个月的时间来入门。
组建了一个微信讨论组,大家会在群里讨论不懂的地方。回答别人的疑问,抛出自己的疑问,大家一起学习,是比较容易坚持下来的。
你也可以找到你自己的驱动力!

高效的学习,而不是“努力”的学习
使用番茄工作法,关注过程,而不是结果。列一个周表格,写上这周要完成的事儿。每天晚上睡觉之前,做两个事情:1. 花个5分钟回顾一下今天学到的东西,研究表明这样会帮助你的大脑在睡觉的时候,把你学到的东西转化到长期记忆中!2. 想好早上起来要看哪部分内容,提前做好准备工作。

早上自己精力最充沛时,学习最难的部分
上一步说了每天晚上睡觉之前想好第二天要学习的内容,那么早上起来,在自己电量满格时,精力最充沛时,学习今天最难的部分吧。

完成目标后,奖励自己
完成当天,每周的目标后,奖励自己,这样可以培养成一个良性循环。

尽量使用英文的学习资料
因为计算机技术,机器学习起源自西方,英文的资料浩如烟海,是第一手的资料。

我从4年前开始,技术资料都是用Goole搜索英文关键词,所以现在阅读一般的英文资料,对我而言易如反掌。我平常也会听亚马逊的有声读物来练听力,这条路一开始会比较难,但是如果你知道“复利”的含义,你知道你现在的复出,未来会有指数级的回报!

资料很多怎么办?
要有主心骨,比如以视频课程进度为主,中间遇到问题,去查资料,如果资料很多,可以记录到一张纸上/evernote 上。因为太早看过多资料,效果反而不好,先把基本的概念搞清楚。

多读资料的好处是各个资料的角度会有所不同,所以可以从各个方面帮助你理解新东西。例如backpropagation,通过 neurnetworks and deep learning 一书,你就知道了除了这种方法,还有什么方法可以计算 dC/dW ? backpropagation 为什么会比较快? 它是 1986 年提出了,极大了扩大了NN能够解决的问题范围。因为之前都受限于算法的速度。

每天学习一点
不要妄想段时间能就能掌握好,学习是有一个过程的,如果学习速度过快,反而效果不好。就跟大学里考试的最后时间突击应付考试一样,这种学习方式长期效果非常不好。有一些新颖的概念,接纳起来是需要时间的,这就是大脑运转的规律,顺着规律,你会学的很舒服,逆着规律,会让自己事倍半功,而且容易产生负面情绪。

不要被学会的假象所蒙骗
千万不要觉得自己学完了视频,做了里面的题,就认为自己会了哦。就像机器学习里的Cross Validation一样,一定要用习题或者实践来检验自己,Andrew Ng在Coursera上机器学习课程的缺点之一就是小测验不足。怎么弥补呢?此时你可以去Coursera课程的论坛里,或者学习讨论小组里看看其他人提的问题,可以帮助他们解答。回想你学过的知识,怎么把他们整体串起来?

给别人解释问题,或者教会别人你学了的东西,是检验你是否学会的好办法。

做好笔记
推荐Cornell笔记方法。把一页笔记分成三个区域,让你养成留下自己的疑问,一句话高度总结的习惯。

纸质笔记比电子笔记效果要好,手写公式,手写推导过程,这样能够培养你的肌肉记忆,就如同NBA球员要大量练习投篮这个动作一样。不信你就试试,你会发现效果的

不要被困难阻挡住
把心中的疑问放大,但是不要让他阻挡你前进的脚步,学完这一段,有个整体认识之后,再来攻克这一小节。这跟工作一样,得把当天的活干的差不多了,再回头攻克这个问题。不然一直盯着某个问题,容易思路受限,而且也没有利用到大脑的diffuse 模式
比如 NN 这一节,那个反向传播的公式里,那几个参数当时就没搞懂,一直蒙蒙呼呼的,我大概花了一周时间,才把他们搞明白。期间我看了 Multivariate Calculus, Maximum likelihood, 也学完了下一节课 Support Vector Machine。虽然都没有立马解决我的疑惑,但是最终证明都是有帮助的。最终有一天我看到了网页上我之前打开的 neuralnetwork and deep learning chap2.html, 花了一上午时间学习完(边看,边在纸上埋头演算,确保自己理解了)后,发现没有什么神秘的。跟高中数学课类似,用了一些简单的技巧进行转化。毕竟我们不是发明这套东西,而是搞清楚背后的数学原理,所以已经知道结论,只需要证明就好了。

对于抽象的东西,进行拟人化
想象自己是一个特征,经历了Neural Network中的好几个层。这些层都对你做了些什么,可能在第一层,你克隆了,通过W1为你加持(weighted)出好几个孩子,成为l2里每个节点输入的一部分,然后历经 sigmoid函数的转化,它们成功进入了l3层,在此过程中,可能你的孩子有一些发挥了很大作用,有一些没有。

对于反向传播(backpropagation),可以想象成它就是根据实际的绩效来论功行赏。这样你的孩子们的权重是不断的在调整,最终目的就是利用训练集合里大量的数据,打磨出一套参数,让整个网络预测的效果达到最好!

刻意练习
不要停留在简单的理解上面,俗话说“欲穷千里目,更上一层楼”。要想提高,就得练习比较难的部分,取法其上,得乎其中。具体做法,可以是去了解背后的数学原理,或者找找习题来做,或者去kaggle上找实际的赛题来做。

交叉学习
比如在学习机器学习的同时,可以学习需要用到的数学知识,两者交叉着学。或者在学习 Logistic Regression 时,也可以同步学习 Linear Regression, 比较他们的异同点及优缺点。这样的好处是让你能够跳出当前的这一课看问题。

学会总结
以下是我自己给自己提的问题,让我自己去总结学到些什么东西

What is cost function
Are cost functions all the same?
What is Linear Regression
How to distinct linear or nonlinear?
Why using linear regression? is there other regression?
Why using Ordinary Least Square as cost function in linear regression?
Why using cross entropy as cost function in logistic regression?

The relationship between neural networks, linear regression and logistic regression?
What is SVM?
Why using SVM?
好了,以上就是所有内容了,欢迎留下你的学习方法!

原文地址:https://www.cnblogs.com/Leo_wl/p/9133903.html