Hi, you are at clymup.com

Oac_tree

先做后学

再来说 build in public。之前我就关注了一个叫 张咋啦 的小红书博主,她学历和工作背景都很不错。她是 build in public 的提倡者。她还现身说法,在小红书分享自己在 X(原 Twitter)上发了一篇关于成年人在 AI 时代如何学习的文章,这篇文章还被很多大牛转载,我看了也很有共鸣。

我想说,像我这种普通人,如果要在 AI和ML方面 build portfolios该怎么做呢。比如我在Coursera上自学完一门课程,拿到了证书,接下来该怎么做呢?首先就是做出一个成果,向外界展示自己是有学习能力、能上手做事的。

她文章的核心观点是“do first learn later”,这点我深有感触。我来英国学习之后才发现,自己更倾向于边做边学,或者边学边做的模式。 国内学校的教育是给一个大纲,要求学生像 AI 一样,在脑海里构建一整套体系,但我不是这样。我倾向于从底层开始搭建(build from bottom up),从一个点出发,慢慢往上搭建,搭建过程中会联想到其他东西,然后进行关联。当学习新东西时,我也会不断和学过的东西进行关联。这种方法对于理解复杂事物很有帮助,不要一上来就拿着一本教科书按顺序学。

在爱丁堡学习的时候,在本专业课上,除了课程论文,平时的作业还包括写博客。这要求我们把学过的知识、自己经历过的事情以及反思和新学的理论相结合,这就是边学边做的一个例子。

我还参加了学院组织的一些定量研究的工作坊(workshops),比如R语言、SPSS,这些也非常强调边做边学。它们不是一上来就告诉你各种语法应该怎样,而是布置一个具体的任务,不管你是否有基础,都会比较直观地告诉你应该在界面上做些什么。

从这些工作坊入门之后,我发现自己缺乏定量研究中需要的统计学方面的知识。再加上受我的攀岩搭子的影响,他很厉害,准备读博。我看了他的个人经历后,也想像他一样,于是下定决心要努力自学统计学和概率论的知识。其实概率论我之前也陆陆续续接触过一点,还看了《逻辑学导论》这本书,不过只看了前面一部分,但大致对这本书有了一点了解,发现它跟概率论有一定联系。

还有一个因素是一位非常厉害的辩手庞颖出了一本书,叫《思辨力36讲》。我读了这本书,发现里面很多内容跟概率论、统计学以及《逻辑学导论》里的一些观点是重合的。虽然它讲的是思辨,但思辨里面内含的其实是逻辑,还有一些统计学、概率论的底层原理,我突然发现它们都是相通的。统计学和概率论侧重于技术理科方面的思维,而庞颖的这本书是写给那些喜欢辩论或想提升自己思辨能力的人,比较容易应用到日常生活中。不过,我觉得它里面一些概念的引入或举的例子不够贴近生活,即便我看过了统计学和概率论的相关知识,里面提到的一些概念我还是不太清晰。

我采取的是“先做后学”(Do first, learn later)的方式。我先参加了线下的工作坊,了解到实际做研究时是如何运用这些理论和知识的。做了之后,我发现自己缺乏哪些知识,然后就去自学。自学过程中我也是先行动。我买了一本《Ace The Data Science Interview》,这本书是2021年的,距离现在已经有4、5年了,在现在飞速变化的时代,有些东西也许有点过时了。买了这本书后,因为当时我想转码(其实一直有这个想法),想去做数据分析师,虽然现在觉得这想法比较天真,但至少我迈出了第一步,而且让我没想到的是,因为有了定量的基础,我能更好地理解质性研究了,这就是在比较中学习。我浏览了一下它的目录,大概知道作为一名数据科学分析师(Data Scientist)需要具备哪些知识,包括概率(Probability)、统计(Statistics)、机器学习(Machine Learning)、SQL、数据库设计(DB Design)、编码(Coding)、产品意识(Product Sense)、案例研究(Case Studies)等。

我当时是这样开始学习的,我去YouTube上找教程(tutorials),发现了3Blue1Brown这个频道。它带领我了解了概率,我知道了贝叶斯规则(Bayes' Rules)。当然,这也受我搭子的影响,我看到他的研究方向是有关贝叶斯的,当时很好奇这是什么研究方向,就去YouTube上搜,很容易就搜到了3Blue1Brown高质量的视频,然后就垂直入坑了。我觉得很有意思,而且这能训练我们的逻辑思维能力,也能锻炼思辨能力。所以我觉得思辨不只是文科生的事,其实思辨背后还是有理科知识支撑的,这就是理科思维的好处。

我当时虽然买了那本书,但没有从头开始学,而是通过一个点,比如说我刚刚说的 probability(概率)去切入。我发现自己对这方面很感兴趣,就开始学习相关内容。

时不时我会浏览一下《Data Science Interview》这本书目录里的内容。某天我发现,学习 probability 有些内容需要具备 statistics(统计学)的背景才能更好地理解,它们之间有重叠部分。于是我找到可能产生连接的地方,顺着这个连接去学习 statistics 相关的东西。我都不知道自己是怎么开始学的,浏览完目录,学完 probability 后,又像刚刚说的那样通过链接式的方法学习 statistics。

学习 statistics 时,我发现它需要具备一些假设检验等统计学知识,而这些知识正是我在学院的 workshops里所缺乏的。学习 statistics 我是看 YouTube 的视频,学着学着又发现它需要我具备一些数学知识,比如微积分。我就去找 3Blue1Brown 的视频学习微积分,他的视频看着很享受。学完微积分后,我边学边制作 Anki 的闪卡帮助自己回忆,还借助 ChatGPT 帮我生成问题。

总体来说,我从对这本书几乎什么都不理解的状态,渐渐到能看懂了,这是非常有成就感的事情。先不说能不能做书上的面试题,以我现在的水平可能过不了数据科学的面试,但至少我对这些内容有了一些了解。按照这样的节奏,我学完了 probability 和 statistics。

我发现数据科学还需要具备机器学习的知识。这时我想到我的攀岩搭子,他在简历里写到在 Coursera 上了一门机器学习的课程,还取得了证书。我去搜了这门课的评价,发现评价非常高,是 Andrew Ng 作为导师上的一系列课,讲得深入浅出,学完后我对机器学习大致有了一些了解。

机器学习最需要具备的数学知识是线性代数,我上Coursera的同时,又去 3Blue1Brown 那里学习线性代数。

我把这本书列出的需要具备的知识当作大纲,但没有把它当作教科书。我只是在需要查看自己知识定位到哪里时,才打开这本书的目录做一下对比,顺便看看接下来应该往哪个方向做知识链接,这样我所学的知识就能形成一个网络。

在学机器学习之前,这本书比较后面的章节提到需要具备编程和数据库处理的能力,比如 SQL 和数据库设计,这些属于计算机编程类的内容,和机器学习涉及的算法、统计学里的假设检验等大数据角度的内容不同。

为了增加我计算机方面的知识,我去上了 CS50 的课,这是计算机入门的一系列讲座,里面有很多实践内容,每周会让学生解决一个问题,但因为时间关系,我只听完了讲座。其实之前我就买了 Zero To Mastery 网站的年度会员,里面有很多像软件开发、Python 开发等计算机编程类的课程,讲得也深入浅出。

最后,特别表扬一下Andrew Ng教授的Machine Learning Specialization,这门课,有个非常好的点就是,在每一节视频之后,它都会提供一个 Jupyter Notebook 练习,你可以在上面写代码。也就是说,你不仅仅是学到了机器学习(Machine Learning)的概念,还能上手实操,了解它在实际编程中是怎样体现的。

在这个过程中,我采用的就是“先做后学”(Do First, Learn Later)的方法。看视频的时候,我会做笔记,遇到不懂的地方,我不会纠结。而以前我要是有一点不懂,就会去 ChatGPT 上查询,结果时间线拉得非常长。后来我就想,即便老师讲课水平非常厉害,某个点我没听懂,可能不是老师的问题,而是我自己某个地方没转过弯来,或者因为没有结合真实操作的例子,所以不理解。这可能也不是我的问题,也许是我本身不适合这种输入方式,所以我就放过自己。这个点不懂就先记下来,等这一章节结束后,到 Jupyter Lab 上去实际操作一下,看看能否理解和消化。这就是先做,然后再慢慢学,而不是纠结于授课视频。因为授课视频不可能事无巨细地讲解,一般都是讲重点,所以可能你无法了解某个算法的全貌,以及它在实际应用中的做法。

所以没必要在授课视频里不懂的地方纠结,先记下来,等能上手操作之后再去看、再去问问题,这样效果更好。

这就是“先做后学”(Do First, Learn Later),而不是先把东西完全理解、记忆好,再去做实操。因为有些东西不实操,永远都是比较抽象的。不在实际例子中做一些调整,最终也没办法理解它到底在说什么。

所以对于如何build my porfolios,我也要先做后学,从一个最粗糙的版本开始。