作者:吴忠强,东北大学,Datawhale成员
写在前面
我们现在处在了一个知识高速迭代的时代,在这个时代,你可能会有这样一种感觉,如果学习时从头到尾学一遍再使用(就像我们在学校学习时),会发现刚学完又出现了新的,等学了后面的理论还没实践,前面的又忘了。这样的学习方式,仿佛永远在学理论,自身没有进步,浪费了很多时间。
在刚入坑人工智能的时候,我也是这样的一种学习思路。先从机器学习开始,搜一些课就开始学习记笔记,然后再深度学习,等学完之后,深度学习又出了新的东西,又去学理论……如此反复。表面上,我很努力,也学习到了很多理论,但是实际上,如果问这些理论的细节,我大脑里面根本就模糊不清。这是因为,我学习到的这些知识,我都没有真正的用到它。没有机会实践出来。所以后来我开始反思,在现在这个时代,我们以前的学习方式不太适用了,如果想高效率的学习,需要转换一种学习方式,不妨从实用的角度出发,遇到不会的再去查漏补缺,这样效率更高。
从实用的角度出发
学习知识的时候,一切从实用的角度出发,我们学习知识,都是要解决实际问题的,所以千万不要把过多的时间都放在理论之上,因为理论知识太多了,我拿入门机器学习和深度学习来讲,如果真的想做好人工智能,需要四个维度的知识(当然这是我自己的知识框架):
- 编程基础(Python编程,数据分析基础:numpy,pandas,可视化,特征工程等, 深度学习框架TensorFlow,Pytorch)
- 数学基础(数学,数理统计,线性代数)
- 算法基础(内功算法:算法与数据结构, 外功算法:机器学习和深度学习算法)
- 应用领域(CV, NLP,RS,预测,分类,聚类等)
对于一个刚入门的小白来讲,千万不要从头一个个的补充理论,这样你会发现,光数学这块都够你学习很长时间的,并且学习完之后忘了不说,还不会用。这就是我之前采用的学习方法。我确实浪费了一些时间。
后来我发现,其实,我们完全可以不用全知道上面这些维度所有的知识,只需要了解一些基本概念(这个还是要了解一遍的,要不然都不知道后面讲的是啥),就挑一些简单的知识进行学习,比如数学基础,由于大学里我们都学过这几门科目,所以这里其实不用那么仔细的再来一遍,一些概念比如积分,矩阵乘法,数理统计的一些知识有印象就可以了,编程基础,Python的基础语法学一些,numpy,pandas等基本的使用学一些(可参考我上一篇Pandas入门),可视化的东西学一点, 就是各个学点,然后就可以先上手了。
找一些项目上手练习,可能一开始确实很辛苦,因为很多东西,你并不知道说的是啥,比如过拟合,欠拟合等这些东西,然后去查,去找,补充到自己的知识框架里面,然后再学习,通过这种方式,时间长了,你会发现,你的知识框架会慢慢的变得丰富起来,并且由于总是在用,遗忘速度也没有那么快。这样还可以追赶新的技术。
这是一种开始速度慢,但是加速度快的学习方式,但是出发之前,一些基本的概念,尤其是机器学习算法和深度学习算法,一些基本的概念还是必须要弄清楚明白的。上面说的这个一点, 也是很重要的,不仅要全,还要精。
MAS方法 – 出发之前我应该如何掌握知识
上面讲的是从实用的角度出发,就是我开始一个项目,从项目中学习新知识,但是能出发的前提是有了一个基本的知识框架和基础了。 这个基本的知识应该如何学习呢?或者说跟着课程学习的时候应该如何学习呢? 这里记录一个在课程中学习到的一个高效的学习方法, 称之为MAS方法。
- Multi-Dimension:想要掌握一个事物,就要从多个角度去认识它。
如何建立多维连接呢?
- 基础概念:这是基础,一定要吃透
- 工具:掌握工具,锻炼实操
- 题库:想真正的了解概念,就要多练,多动手
这个过程,就是从“思维”到“工具”再到“实践”的一个过程。如果说重要性,一定是“思维”最重要,因为思维是底层逻辑和框架,可以让我们一通百通,举一反三,但是思维修炼也是最难的。所以,我强调把学习重心放在工具和实践上,即学即用,不断积累成就感,思维也就慢慢养成了。
- Ask:不懂就问,程序员大多都很羞涩,突破这一点,不懂就问最重要。
- Sharing:最好的学习就是分享。用自己的语言讲出来,是对知识的进一步梳理。
修炼指南 – 从认知到实践再回到认知,如此反复
人与人最大的差别在于“认知”,所谓成长就是认知的升级。
很多人存在对“认知“的误解,认为认知不就是概念么?那么你有没有想过,针对同一个概念,为什么不同的人掌握的程度是不一样的呢?
我们只有把知识转化为自己的语言,它才真正变成了我们自己的东西。这个转换的过程,就是认知的过程。
那么如何提升自己的学习吸收能力呢?简单地说,就是要“知行合一”。
如果说认知是大脑,那么工具就好比我们的双手,数据工程师和算法科学家每天打交道最多的就是工具。如果你开始做数据分析的项目,你脑海中已经思考好了数据挖掘的算法模型,请牢记下面这两点原则。
1.不重复造轮子
举个数据采集的例子,很多公司,都有数据采集的需求,他们认为某些工具不能满足他们个性化的需求,因此决定招人专门做这项工作。而结果怎样呢?做了 1 年多的实践,工资投入几十万,结果发现 Bug 一大堆,最后还是选择了第三方工具。耗时耗力,还没什么成效。一个模型是否有相关的类库可以使用——这几乎是每个程序员入行被告知的第一条准则。
2.工具决定效率
“不要重复造轮子”意味着首先需要找到一个可以用的轮子,也就是工具。我们该如何选择呢?这取决于你要做的工作,工具没有好坏之分,只有适合与否。除去研究型的工作,大部分情况下,工程师会选择使用者最多的工具。因为:Bug 少、文档全、案例多。比如 Python 在处理数据挖掘上就有很多第三方库,这些库都有大量的用户和帮助文档可以帮助你来上手。
选择好工具之后,你要做的就是积累 “资产”了。我们很难记住大段的知识点,也背不下来工具的指令,但是我们通常能记住故事、做过的项目、做过的题目。这些题目和项目是你最先行的“资产”。
如何快速积累这些“资产”呢?三个字:熟练度。把题目完成只是第一步,关键在于训练我们工具使用的“熟练度”。
当熟练度增加的时候,你的思考认知模型也在逐渐提升。
总结
认知三部曲:从认知到工具,再到实战,然后如此反复。 不管是学习什么知识,我们都应该这样做:
- 记录下你每天的认知。尤其是每次课程后,对知识点的自我理解。这些认知最好是通过博客或者笔记的方式整理,分享出来, 不懂的也一定要问MAS。
- 这些认知对应工具的哪些操作。用工具来表达你对知识点的掌握,并用自己的语言记录下这些操作笔记。
- 做更多练习来巩固你的认知。我们学习的内容对于大部分外人来说,就像“开车”一样,很酷。我们学习的内容,对于要掌握的人来说,也像“开车”一样,其实并不难,而且很多人已经上路了。你需要的就是更多的练习。