首先,我觉得很必要来重新认识一下学习,什么是学习?屯资料?买书?报班?大学课堂?还是向大牛请教?我觉得都不是,这些都是获取学习资源的阶段,去看视频资料、上课、读书、请教也依然处于记忆零碎知识的阶段,并没有进入真正的学习阶段。那什么时候才是真正开始学习?答案:输出。只有将自己记忆的零散知识点通过某一种方式从脑袋里面再次输出之后,才是学习的开始阶段。
我自己做过一个试验,一本权威的资料,只看不写,一本普通的资料,看完之后,在word里面写下自己的理解,随心所欲的写,正文写完之后再写一个Summary。一周之后,神奇的事情发生了,即使资料不是很好,我对其的理解依旧深刻,几乎可以脱口而出。
从此以后,我的学习方法都是以写下自己的理解和Summary为主,学习速度和效率大大提升,这样的学习方法让我很有成就感,就跟打游戏一样,一关一关通过。当然,这是我自己找的一套感觉很棒的学习方法,不是万能的,并非人人适用,主要的意思是及时输出,以自己喜欢的方式输出,所以老师讲课越来越厉害的原因找到了,当助教学习效果更好的原因找到了,动手实践发现自己啥也不懂的原因也找到了,本质上这些都是及时输出,找反馈。
不过学习也没有这么简单啦,学习资源也是前人留下来的,以文字、视频的方式记载下来的,那不免会有表达不当造成的理解错误,这是我在把自己的所学用到现实生活中发现的,根据这个问题我又找到一个方法克服,就是我们的一句老话,实践出真知,当把自己的所学有所运用,就会发现,由于各种原因,我们学到的知识其实理解还是有一些瑕疵和错误的,当我们把所学知识与现实世界交互的时候,就会得到很多正反馈和负反馈,正反馈帮助我们强化已经掌握的知识,负反馈来纠正错误的认识,达到完善知识体系的效果,这和目标检测网络的难负样本挖掘好像异曲同工之妙。
这时候经常听到别人会说,那看书有啥用?这里犯了一个逻辑上的错误,没有书本帮助我们在大脑里建立完整的知识体系,我们怎么知道应该如何和现实世界交互呢(成本很低的情况下,可以跳过书本和世界交互,如果风险大,直接撸起袖子干,一旦失败代价可能很惨重)。我的观点是,看书(记忆零散知识的统称)很重要,但是不会学习,那就变成书呆子了,看书+输出=成本最低的学习方法。
还有一点非常重要,就是一定要休息好,休息好是一切高效学习的前提。晚上一定要睡好,睡舒服,平时要多锻炼提高代谢率。如果打算学习了,就尽量避免去消耗精力的场景,比如超市,商品琳琅满目,大脑会将看到的商品一个一个自动识别。
再比如我从宿舍走到实验室有两条路,小路和大路,小路很快,大路反而绕路,但我每天都会选择都大路,因为小路要注意脚下,注意台阶,在用脑,而大路就是宽敞的大陆,没有任何障碍,我走路的同时可以发呆可以想一想计划,思考别的,然后到了实验室之后打开电脑,直接进入学习状态。
这么做的原因很简单,人的精力是很有限的,一天24小时,注意力集中高生产力的时间可能也就四个小时,所以不要让任何消耗精力的事情在做正经事之前发生,要把充沛的精力花在刀刃上。
下面介绍我自己的学习方法:
1、查找最权威最完整的学习资源;
2、以最快的速度把学习资源阅读(看、听、写)一遍;
3、花最大的努力将知识点及时输出并写Summary;
4、寻找最低的成本实践所学;
5、等待一个机会,将自己的所学发挥出来,创造价值。
1、 寻找学习资源的质量可以决定我们发展的天花板。这个动作其实不是一步到位的,当自己的水平提升之后,自己的视野就会更加广阔,这时候寻找的学习资料就会更加经典权威。刚开始步入一个行业寻找学习资源是最难受的,很难找到真实的全面的,我深深体会过,学习感受很糟糕,全靠自己的毅力,大部分人是在这一步就放弃的。
其实这里就涉及信息差这个概念,好的环境有靠谱的信息,那第一步就会非常容易。自己的建议是,去这一个领域的名校想办法找到那个专业的学生或者老师询问入门资源,或者通过高考和考研进入这个学校。
如果大家对人工智能或者机器人领域感兴趣,那就直接推荐深蓝学院了,全部是硬核课程,学完绝对是建立了完整的知识体系。对感知算法感兴趣当然是选择嘉信老师的三维点云处理课程了。
2、 快速的学习是非常有必要的。但我猜很多人会认为是快速看书看视频,快速动手做完一件事。这其实是错误的,真的快速去做的时候,就会发现,刚开始没多久就会放弃了。
我说的快速过一遍,其实是包含及时反馈的,一边学习资料,一边用word记录自己纯粹的理解,完全用自己的大白话讲出来的输出,一个知识点看完就及时输出。这个过程其实很慢的,所以要注意力集中,排除一切诱惑一切琐碎的事情,拿出整块时间做这件事,必须成模块的学习结束之后,才能停止,不然我会感觉很难受。
一个模块(一个章节、一个视频)学习结束之后,将自己的及时输出阅读一遍,趁热打铁写一个Summary,这个时候学习才算结束。
这里的及时输出很多方式,比如直接动手试一下是最好的,可以想办法为自己创造条件,现在人手一部电脑,可以用仿真软件寻找反馈,程序员可以敲代码试一下,算法工程师可以敲代码或者在机器人系统里面仿真一下。
方式各种各样,自己喜欢就行,不过目的是一样的,那就是及时的输出,因为这一步才是真正意义上的学习。
3、在第2步里面已经说了很多,但不全面。学习不是简单的事情,我们得尊重自己大脑会遗忘的这个事实,第一遍学习不可避免会出现知识点遗漏和知识点太难学不会的问题,第2遍学习的作用就直接凸显出来了。
用相同的方法以更快的速度将之前的笔记和原资料学习一遍,主要的操作:其实这时候对知识已经很熟悉了,所以阅读资料的速度也是飞起来了,阅读之后,就对自己的笔记重新修改删减,以达到全面、言简意骇的效果。这一遍梳理之后,就会有一种恍然大明白的感觉,仿佛见到了光明。
4、 理论知识扎实之后,就得用实践来检验一下是不是有效果,一般而言理论知识和现实世界交互都是有负反馈的,毕竟不是每一个人都是作家,不能用精准的语言记录自己的所闻所见。
这时候的实践就可以帮助我们调整或者重整自己对这个领域建立的知识体系。但有一个原则,那就是花最低的成本去实践,如果为了验证某一个idea,把自己年轻的生命搭进去了,那就太不值得了,不排除一些伟大的科学家。
比如算法工程师可以创建仿真环境,只需要一台带GPU的电脑就可以,程序员就更简单了,只要有电脑能敲代码就行,其他工科也有相应的仿真软件。像哲学、文学、教育这些行业,就真的需要时间慢慢沉淀了,与世界的互动非但不能快,还需要慢慢体悟。创新就是在这个阶段产生的。
5、 我们学习知识是为了什么?找工作?赚钱?炫耀?找存在感?我觉得都不是,我觉得会学习的人一定不会为了这些目的,会学习的人会有很强的思考能力,看到的远远不止这些。只有自己觉得这些知识很厉害的时候才会向别人炫耀,而自己对知识的掌握又有几成呢。
我从不敢跟别人说自己很懂算法,更不会去炫耀自己的学习方法,因为我有一个很强烈的感觉,懂得越多,明白的越多,越会发觉自己只是沧海一粟,时刻提醒自己多学习,充实自己。
对待学习,我觉得有两个目的:一是认识自己,二是参与到社会分工中,创造价值。不可否认,很多人都是从炫耀、找工作、赚钱这些目的开始的,我就是为了找到工作,哈哈。但找到工作之后,解决了温饱之后,人自然而然就会产生其他想法,也就是更高的追求。
所以,在柴米油盐的同时,抽出时间想一想,我是为什么学习?活着是为了什么?
当然,学习方法这一块只是我这两年根据自己的经历感受写的一些总结,说不定明年我就自己推翻这一套理论了,所以,我建议每一个人寻找适合自己的学习方法。但我还是想再强调一点,学习=输出,而不是自我感动、坚持等等。
学习算法一定一定要踏实,不管时间多么紧急,都要从基础理论学起,看似很慢,其实是最快的学习速度,不尊重基础,轻则学习速度慢,重则从入门到放弃。基础也是一个人对算法理解的天花板,想要在拿到算法岗的offer,请远离调包调参,深入算法的内部数学原理。
把我逼急了什么事都能做出来,除了数学。算法功底练深厚之后,那做啥都会很快,也能快速上手其他领域的知识。天才真的很少,甚至这辈子都遇不到一个,厚积薄发而已。
多和优秀的人交朋友,优秀的人,很谦虚礼貌,时刻关注自己的前方和脚下的路,和他们交流,会非常的充实、幸福。成长的路上,注定进入一个圈子后又很快离开一个圈子,这也是成长的代价,但并不是放弃自己的故友,有机会见面了,一定要不醉不归,回忆过去。
“遇贵人先立业,遇良人先成家,无贵人而先自立,无良人而先修身” 。所谓成长,挺过一个又一个困难,抓住一个又一个机会, Anything is Possible!