如何提高学习新东西的效率 - 跟我一起入门机器学习之二
作者:Jack47
转载请保留作者和原文出处
首先说明一下,我的学习目标是要把机器学习实际应用起来,而且要基本搞懂背后的数学知识。由于每个人学习的目的不同,所以大家的做法可能不尽相同,但背后的学习方法其实都是八九不离十的,掌握了好的学习方法,可以事半功倍!
强烈推荐 <<学习之道>> 这本英文翻译过来的书,结合作者在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?]((http://statisticsbyjim.com/regression/difference-between-linear-nonlinear-regression-models/))
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?
好了,以上就是所有内容了,欢迎留下你的学习方法!
如果您看了本篇博客,有所收获,请点击右下角的“推荐”,让更多人看到!