学习如何学习

当下还有什么比机器学习,深度学习,人工智能更火?除了教机器学习,不妨也教教自己。拥有一个高效的大脑,可以帮你学习一切知识。所以我上了Coursera上至今最火的一门课(顺利拿到证书):学习如何学习。下面分享几个非常有用的技巧。

本文略长,如果一次看不完,建议你回头再来,因为每个技巧都很重要。

为什么学习如何学习?

高中毕业,流行互赠留言。有人认为我是一个真心享受学习的同学。当时的快乐,来自好成绩和别人的好评。如今,三十多了,早已没有考试,却比以往任何时候都更爱学习,因为学习让我能挖掘藏的很深的美丽。你学习的动力是什么?

注重过程而非结果

这是一个容易激起辩论的话题:到底是过程重要,还是结果更重要?不同的情景,有不同的答案,在学习这个领域,过程更重要。

首先,专注于过程,可以减少心里打击,治愈拖延症。对于人脑来说,学习并不是一件让它感到舒服的事情,毕竟你在绞尽脑汁思考一些从来没有思考过的问题。万一你学习的新知识,很难,比如深度学习,你一时半会领会不了,就会有一种挫败感。一旦有了这种心理打击,你就很有可能患上拖延症,找各种借口逃避啃硬骨头。这都是注重结果的弊端。因为你过于关注是否学会,而忽略了微小进步。注重过程,忽略结果,就不会有这种烦恼,因为你压根也没期待着掌握些什么,只要把时间用够就行了。

其次,专注于过程,更有利于知识的积累,培养长远目标。俗话说的好,一口吃不成胖子。暗示事物的发展是循序渐进的。很多知识复杂度极高,从本质上来说,不可能一下子都被消化掉。所以在处理这种知识的时候,注重过程,可以鼓励我们建立长远目标,一点一滴的积累。道理,就不多说了,古文“劝学”讲的不能再清楚了。从实践上来讲,比如一年前,当我在法国最佳程序员比赛里获奖的时候,我就突然意识到积累的效果显现了

当下,我仍在积累,每天花一到两个小时做程序员面试金典书中的算法题。请注意,这是注重过程而非结果的核心。我没有要求自己每天要做出来一道,而是说花一到两个小时,做到哪是哪。时间用完了,有可能做出来了三道,也有可能一道都没做出来。如果你也喜欢算法,和我一块积累吧,来我的Github算法仓库

休息并非浪费时间

有一次,我练一个算法题(132模式),苦思冥想,不得其解。一气之下就去游泳了。在用泳池里吐气的时候,灵感突然上来了,游完回去直接给搞定了。

我所描述的这个经历,是“学习如何学习”中非常核心的一个概念。就是大脑的专注模式和分散模式。当你苦思冥想的时候,你使用的是大脑的专注模式,这种模式有利于高相关度的概念,但很容易让你陷入思维的孤城,无法调兵遣将。在大脑的分散模式下,你没有特殊的目的,悠闲的徜徉于你大脑的各种分区,灵感更容易在这种条件下闪现光芒。

更为神奇的是,大脑会在你睡觉的时候,充当整理员的角色。它会打包处理你白天学到的知识,归类,总结,清洗,甚至碰撞出新的火花。德国有机化学家,凯库勒梦见猴子,创造苯的环状结构,是科学史的一段佳话。

知识碎片

开发一个知识碎片,就好像是学习一个泳姿。当你学习自由泳的时候,老师会一步一步的教你,打腿,划水,换气。而当你成为自由泳能手的时候,所有动作一气呵成,你根本不会再去想细节。如果你很有天赋,成为了混合泳高手的时候,什么蛙泳,仰泳,蝶泳都成为了你的知识碎片。知识碎片,就是有这样的魔力,我们可以通过不断的练习,把复杂的技能,概念打包转换成你直接可以消费的小单元。小单元一旦信手拈来,你就可以它们为基础再创建新的更大的碎片。

谈到这里,我想拿个算法举例,要不大家以为我是游泳运动员呢。比如说你通过勤学苦练掌握了二叉堆(这是我目前最喜欢的数据结构),把它用的得心应手。当你在学习最小生成树的时候,二叉堆就成了你的一个知识碎片,稍加功夫,你就能学会Prim算法。当你把最小生成树也用的炉火纯青的时候,如果你遇到了一个分堆(clustering)的问题,最小生成树就成了你的知识碎片。所以这是为什么,作为程序员,你要投资数据结构,积累你的知识碎片。

“我学会了”的假象

这个假象,是人们自我安慰的一个体现。你看完了概率论的一本书,觉得知识都学会了。可没过多久,你就把贝叶斯条件概率的公式给忘了,你又回去重温了一遍,告诉自己这次是真的学会了。那现在给你个挑战,看看你能不能把下面的这个概率算出来。

说,你有一个袋子,里面装了两枚硬币。其中一个是正常的,一个不正常。你闭上眼从里面拿一个,它是正常硬币的概率是50%,不正常的也是50%。正常硬币,投掷一次,得到正面反面的概率各50%;不正常的,有40%的概率得到正面,60%的概率反面。现在,你闭上眼从中取了一个硬币,投了一次,拿到了正面,问这个硬币是正常硬币的概率。

如果这个题的解法,对你来说没那么明显,那么我强烈建议你使劲的回想你概率里学过的知识,而不是回头去翻公式。如果你能回想出来,那么说明你真的掌握了,否则你之前是给了自己一个学会了的假象。

真正的学会一个知识,不能只靠被动的去看,去听。而是要主动的去回想,去创造,或者看你能不能把你的知识传授给别人。有一次在知乎上一个人问有哪些优秀的Java开源项目最值得阅读?,我的第一反应,就是这种人很容易就陷入“我学会了”的假象,别人的代码读的再多,自己的大脑没有用力的思考挣扎过,那还是别人的东西。

总结

学习如何学习,是可以让你受用一生的技能,特别是对爱学习的你来讲。技巧先分享到这,记住千万不要给你“我学会了”的假象,实践出真知!