过去几个月,我一直在深入探索问题解决[1]和阅读理解[2],现在我感到正被抽象迷雾所迷失,需要将想法结合实际。我碰到很多困惑,但不能确定解决它们需要量变还是质变。要是阅读策略理想,习题集合适,和合适的题目,这些困惑是不是就能消除?如果这部分已经做对了,还会剩下哪些困惑?
所以,这个月我没有继续观察学生,而是转向观察自己。我想知道,就算我用上了自己的记忆系统,掌握了「专家级」的阅读技巧,做完了所有的习题,我的学习经历中还会受到什么阻碍?我希望在学习解释性文章的过程中,能创造一种异乎寻常的轻松和自信感。之前跟学生 Alex 的合作[1]中, Alex 的障碍主要在阅读理解、解题的脚手架的缺乏上。假设我不缺这些,那我缺什么?我的系统和策略要哪些才能支撑我的的自信感?
碰巧,我也想重新学一遍线性代数(linear algebra)。大约 17 年前,我在加州理工学院尝试学过线性代数,但限于文科背景,我几乎没能掌握数学理论。这让我如今每每研究计算机图形和机器学习论文时,我都感受到脑子不够用。线代理解得不好,限制了图形学和机器学习上的深入。我真想彻底掌握它们!
线性代数不仅涉及陈述性的知识,对我的实验来说,它正好包括所需的概念性和程序性知识。具体一点,包含:一大堆符号和专用术语,很多相关联的数学概念和大量的数学性质,处理它们时,还需要一些经典而必要的数学方法。传统记忆软件偏向为陈述性知识的设计,而问题解决和实践更强调程序性知识。尽管记忆软件偏向如此,但我一直试图将记忆软件的适用范围延伸到概念性(以及浅层的)程序性知识中。
我选的阅读材料是 Jim Hefferon 的《线性代数》这本书,一来它名声在外,二来它版权比较宽松:我知道,以后或许要以这书为基础做些实验。起步阶段,我认认真真地啃了前 35 页(就像我和 Dwarkesh 在视频里做的那样),一边读一边做了 65 张记忆卡片。我把那几节的 57 道题都做了,并对了一遍答案,检查错误或者发现新内容,这些都做了笔记。这些一共花了大概 20 个小时。
虽说我觉得对学习内容的理解还不错,但我内心的体验和「异乎寻常的轻松和自信感」完全搭不上边。我给自己构建的这个学习环境,没能给予很多关键点上的支持。不过好在,这也给我后面(对助记媒介)进一步的原型开发和探索指了不少路。
理解辅助
在担心如何深入理解或加强长期记忆前,我首先得确保做到最基本的事情 —— 能搞懂文本在说什么。
我有个习惯,那就是通过提问和精细阐述文本来加强阅读理解[2]。这样确实让我比很多人理解得更好,但我知道,单凭这些还不够:经验表明,我仍会遗漏文本里的关键信息。
但线代这本书,我有了记忆系统和习题集的额外支持,结局可能有所不同。现在,咱们来看看这些支持是如何影响我的阅读理解。
制卡与理解辅助
如果对文本写出详尽的记忆卡片,我的阅读理解通常更加可靠。写卡让我进入一种主动的视界,我会留意任何可能重要的内容、基本不会忽略关键细节。而且,为了将这些细节转化为提取任务(指转换为记忆卡片),我通常需要以某种方式,来达成对文本最基本的理解。
这么做很不错,但我注意到一些明显的局限性。
有的内容,我不知道怎么写成卡片。学习写好卡片,如同学习写出优质的文章:你都需要摸索出一整套至细至密的策略,应对百变的情况。但我某些特定材料,我还没有(或者说尚未)找到编写记忆卡片的策略。举个例子,此书讲解方程组解集的首选形式(Preferred Form)时,展示了一个抽象的符号表示,然后通过多个对比鲜明的例子来深化讲解,目的是让读者理解为什么要这么构造解集的形式,实践中有什么用。用这种抽象符号做一些基础卡片还算简单,但这些例子里的微妙之处,以及选择这种形式的多重原因,就很不好写卡。如果我真的全身心投入并充分发挥创意,一般还是能找到解决办法的。但这会让我觉得很累,所以我就走马观花地往下读,有时甚至不自觉地就这么选择了。在这种情况下,编写卡片并没有真正检验我的阅读理解。(当然,这也意味着这些点的记忆也不会得到强化——后面再细说。)
制卡带来义务感。我当然想把作者说的话都搞懂,但我不想作者的每句话都听。当我大量依赖记忆卡片来加强理解,我经常会感觉被「卡片的密度」压得喘不过气。有时我发现很多细节我并不怎么在乎,或者这些细节会在后面由综合性的卡片得到强化。虽然,多余的卡我删掉就是了,但这多少会有点决策成本。而且,那么多「不必要的」卡片,成本要比某些非制卡的技巧高,比如自己向自己大声解释。这其中有一部分努力会有收益,但很多时候感觉像是白费劲。(译注:总觉得像是「过早制卡」的毛病)
肤浅的卡片,粗浅的理解。当文章给出一个关键定义时,仅用文中的定义稍作改写就能快速写出一张卡片,这样看似很简单。但这就是问题所在,因为很容易在没有真正理解的前提下做改写,这一点在自我解释的研究中也有体现。一般来说,仅仅是简单改写文本,效果并非最佳。有效的卡片,往依赖精练和延伸。有人可能会说:「那就写得更好一点嘛!」,但我要指出,机械的工具或者方式并不会帮我做正确的事。一不留神,就容易写出肤浅的卡片,要避免这种情况,我不仅需要保持高度自省 —— 这在学新东西时很难 —— 还需要在写卡片上多下工夫,但「值不值」这么做我不是总能确定的。
助记媒介与理解辅助
如果把制卡当做重要的阅读理解策略,那对于助记媒介[3],由于是他人写的,似乎会带来一些问题。这些内嵌的记忆卡片确实(无意间)起到了个基本的「理解检测」的作用。如果你对一张内嵌的卡感到莫名其妙,那多半不是忘记什么,很可能因为阅读时就太过粗略。而且这些内嵌卡片还有个间接作用:许多读者发现自己的理解这么糟后,就会开始细心阅读(正如附加问题研究所预测的那样)。
不过我们设计这个卡片界面,考虑的是记忆练习,而不是理解检测。观察一些助记媒介的用户后,我发现人们对「记忆失败」和「理解失败」之间的感受大不相同。
记忆上的失败一般是感到在挖掘一个你曾经理解但现在忘了的东西:「哦,那个虚数项又藏到哪儿去了呢?(查看答案)哎呀,在右上角呀。好,得再复习一遍。」或者:「这个我不记得了,但我也不关心能否记住它。(点击删除)」。当读者清楚地知道某东西是什么的时候,他们会更坦然地说自己并不关心它。
相比之下,理解失败会让人无所适从:「这是啥意思,我一点儿也不明白。(看答案)啊……行吧?还是不懂」。界面上有两个按钮:「记得」和「忘了」。这两个选项都挺让读者纠结的。他们明白,如果按「忘了」,只会让这个问题在学习结束时又弹出来,而读者并不想再碰它 —— 因为再弹一次还是会一头雾水,何况答案都看不明白那就不清楚记它的意义;何况下次看到后即使足以按「记得」,那只不过是机械地复读这次看到的答案,没意义。
另外一边,如果一开始就按「记得」虽然能「让卡片走开」,但这也并不能解决问题:说不定这卡片挺重要的?他们也不想以后还得再应付这问题。(译注:这是个典型的没有合适策略闭掉的开环)
如果我们特地设计一套附加问题来检测理解,我觉得最好在内容和界面设计上做点儿区别,让它跟用来做提取练习的卡片不要太像。
习题集与理解辅助
近来翻阅了一堆(认知方面的)文献后,我发现无论是这本书(还是其他大学级别的教材)中的练习题,其实都有三个不同的目的:
- 检查理解:确保你真的阅读并理解了文本。
- 促进技能习得:通过应用所学,来归纳使用模式,强化长期记忆,构建程序化的自动性(procedural automaticity)。
(译注:教育语境里,会强调学习知识要达到「自动化」) - 刺激展开(e)(elaboration):促使你扩展思维,从而看到更多不易察觉的细节,激发创造力。这样不仅让你对材料有更深刻的理解,也让记忆更牢固。
(译注:elaboration 指详细阐述、扩展概念。在教育心理学中,"elaboration" 还有一个特定的意义,指的是将新信息与已知信息联系起来的过程,这有助于深化对新信息的理解和记忆。本文会翻译为 “展开(e)”,用以和 “展开” 区分。我真是个天才)
展开e的例子:
场景:历史课堂上,老师正在教授二战的历史。
没有展开(elaboration)的情况:老师说:“1941年,日本偷袭了珍珠港。”
使用展开(elaboration)策略的情况:老师说:“1941 年,日本偷袭了珍珠港,这是一个美国的海军基地。这次袭击导致了美国舰船的大量损失,也使得许多无辜的美国士兵和平民丧生。这个事件是美国决定加入二战的关键原因,因为它使得美国民众对日本产生了强烈的反感。”
在第二个描述中,老师通过展开并提供更多的背景信息、结果和重要性,帮助学生更深入地理解这个历史事件的复杂性和重要性。通过这种方式,学生更容易记住这一事件,因为他们能够将这个事件与其背后的原因、影响和后果联系起来。
当然了,这几个目标间的比重在不同的题目中各不相同,但每一个都或多或少地涉及到检查理解。这样做的好处是,你可以通过实践——通过将材料运用起来——来检查理解。比起直接回答死记硬背的理解(和记忆)问题,这样的过程通常更能让人投入其中。特别是当这些题目本身就足够吸引人时,这一点尤为突出。
但大体上,由于习题的目标太多了,这本书里的习题集给我的理解支持没有达到我的预期。我认为,其他类似的书的习题集也有同样的问题。
失败方式很糟糕。习题不会做很正常,有时我感到被问题阻塞,但并不总清楚是因为知识点的遗漏,还是不够努力。一般情况下,如果理解上没问题,那么缺的只是苦干。这让我想要不要再加把劲。结果很容易乱搞一气不得其法。这种错误做毫无建设性,因为我根本就缺少某个关键信息。麻烦在于,身在此山中的人是不知道这点的。要弥补缺口,最常见的有效方法,是重看一遍正文里的某个解释。但没有上帝视角,我不知道应该注意哪一部分(就算有答案手册在旁)。此情此景,我只能整个章节重新遍历。这种失败的着落方式,大概是个普遍问题,因此用习题来检查理解程度并不总是那么准确。
检查不够全面。在读完一个章节后,你通常能学到某条定理成立的事实,为何成立,以及为什么它有意义。习题主要强调应用、分析和综合,所以它们通常考察的是你是否理解了某条定理成立,而对其他方面则关注较少。以书里的线性系统为例,线性系统的解可以由一个特定解,配上一组与之相关的齐次系统的解,形成的线性组合来表示。章节大部分内容在证明这个定理和它的派生含义。但没有一个习题会检查我是否理解了证明,另外,定理解释性的部分也仅仅触及皮毛。后来我自测看能不能解释这个证明的时候,才意识到我没理解一个关键步骤。尽管我已经做完了习题集。
有人可能会说,这仅是一个教材的不足——习题集应该全方位地考察你对该章节所有内容的理解。我的想法是,习题天然就该偏向于检查对一类内容的理解,而不考虑另一类,这是它的内禀属性。如果强行违背这天然的粒度,最后产生的东西可能不再是我们通常说的习题了。
哪些题目覆盖新的点?哪些是重复?有的题外观上看起来差不多,内里别出心裁,做起来感到对学过的内容不同角度出击。但有时候,相似的题目只是为了多练几遍,提高娴熟度。有时我觉得没必要再解一道线性方程组:我感觉自己已经炉火纯青了!可偏偏某些题目有点细微的差异,检查的是新的理解点。所以,我没有放过任何一道小题,但其中许多我都觉得没有必要。换个说法:这些重复性质的练习应该「分散」到未来几周里以促进长期记忆。而不是占用我检验新的理解点的时间。
答对了,但没领会精髓。有几次,题目就是这么设计的,按照书里讲的某个规律一步到位就能解出来。我虽然解出了答案,但却没抓住问题的核心。要察觉到这一点,光对答案是不够的,还得重新推敲一下解题步骤,看看跟自己有什么不同,特别是在关键的地方。
技能习得
我们学习新技能的过程中,会存在一个内化节点。一开始,我们得仔细琢磨每一个细节和步骤,经常得自言自语道:「解高斯消元,我得用这三招…」但练习多了之后,我们就学到了解体模式。不用再费脑筋去回想,变得天生就知道该怎么做:「好,这方程先除以二,再用它把另一个方程第一个项给消了……」[1]
我自己的感觉是,单靠提取练习并不能让这转折自然发生。尽管它让过程顺一点 —— 可能因为相关的陈述性知识牢牢记在了长期记忆里,减轻了工作记忆的负担 —— 而解题练习是让这个转折发生的传统方法。这招对我来说大多数时候挺管用的,但也遇上几个小挑战,感觉还有改进的空间:
应当随着时间推移一点一点刷题。我的学习模式是看一节内容、刷全部课后题。很多题目都是重复练习同一个技能,比如说:「找出含有自由变量的线性方程组的解集」。好,正是我需要的,提升我的熟练度 —— 但连续做十道同样的题目实在让人心塞。传统的教学方法是只布置课本里一部分题目来解决这个问题,但如果我需要大量练习以达到熟练呢?从情感和效用(间隔效应)来看,最好是把解题练习分散在不同的时间里,这在实际操作中颇为困难。也许你可能说,每天做一道题、再是隔天做一道、再是一周做两道 ...... 以此类推?这需要一种可编程的注意力[4]。
我应该练多少?也许我只要做一半的题?那种「以掌握为目标」的学习方法往往有个规则,就是「连续做对五题,就可以停下来了」。这里的问题是,有一些内容在学完之后仍未达到「无需思考就能识别」的标准,当我碰到更难、依赖这个前置技能的题目时,我可能就会卡住。因为内化不够,技能用起来仍然需要大量的认知负荷,而且原因并不一定清楚。就好像「可汗学院告诉我,我已经掌握了所有前置知识!」*1,但真正用起来,却还是手忙脚乱。关于程序性知识的文献可能已经找到了一些有用的答案,但我还没有深入地阅读这个主题。例如,我猜测时间压力*3(例如 Number Munchers?*2)会揭示出更为明显的差异。
*译注:1、在用户完成某些学习模块或课程并通过相应的测试或练习后,平台可能会给出反馈,表示用户已经掌握了某些内容。2、一种数学游戏。3、Andrew Huberman 博客里说,以一定节奏和时间压力学习会加强神经可塑性
如何练习证明题?本书包含了大量证明题。当然,证明题没那么机械化:你并不是在学习执行某种一致的操作。某种程度上说,证明是为了促使你更深入地理解(这一点我们会在下一节中讨论)。但这些证明题,也是在学习对特定的模式的识别、熟练利用数学对象的特定属性。那么,当我未能识别出其中的模式,或者未能看到如何利用这个属性时,我应该怎么做呢?我可以阅读答案,并记下我遗漏的洞见 —— 甚至为此写下一个卡片。但下一步怎么加强练习呢?怎么保证我下次能认出这个套路?证明题跟一般题目不同,没法轻易出一个题目去考察同一个属性(译注:用 GPT 让它出题呀)。
深化理解
我不只是想知道材料在说什么,更想搞懂它意味着什么、为什么它很重要。我希望能把这些新东西和我的先验经验联系起来,将来还能创造性地用上。总之,我想把这些内容彻底内化,形成一个丰富整合和详细展开 e 的认知表征(原文:I want to internalize a richly integrated and elaborated representation of the material.)。
编写记忆卡片对此有所帮助:写卡的过程让我举例子、去推断文本未明言的部分、去思考可能的推论,还能想清楚为啥自己会在意某个细节点。这些都是比较「专家」的卡片编写方法,大部分用记忆软件的人不太会体验到这一点。助记媒介的读者通过写卡片也不见得能有这种收获,但如果作者设计出能引导他们这么想的卡片,那他们也必能收获同样的益处。
这本线性代数书的习题就给了我这种启发,很多题目明显是为了让你更深入地思考正文里的细节。有个简单的例子:「在 3.6 引理的证明中,如果没有 0=0 这样的方程会怎样?」尽管我有写卡片的习惯,但当我读这个证明的时候,我就是没想到这一层。
但大部分习题其实是围绕着解题练习来提高你的技能。与其说我想要单纯的记忆支持,不如说我更希望能回答更多促使我去展开 e 和推理的问题。每次复习时解一两道,持续几周。理想情况下,这些问题能逐渐提高我运用知识的广度(译注:即提高知识迁移的距离)。
记住我所学的知识
付出这么多汗水,我当然希望能长久记住我学到的东西。我的记忆练习当然能起到一定作用。但在这里,还有几个饶有兴趣的议题,一些是我们在《灵活的记忆实践产生流畅的理解》[5]一文中首次探讨的。
高质量的习题能在多大程度上替代有针对性的提取练习呢?我的很多卡片都是为了让我回想某个具体的信息点,(比如:什么是「奇异性」的定义?)。但如果我解了一个依赖此定义的题*,那我其实也是在从长期记忆里提取这个信息,这也有助于加固记忆 —— 甚至可能因为进一步的展开 e 而更为牢固。解题可能不会让人觉得枯燥,或没意思,但代价是费时费力。这之间该如何取舍?哪些知识更适合隔离练习,哪些更适合整合到综合性的题目中?我的回答会随着熟悉程度有所不同吗?(*译注:此处可以和 Andy 在前文「我应该练多少?」里的内容结合看。)
卡片簇应该在时间轴上分散。以矩阵的「奇异性」这一概念为例,我当然应该知道它的定义。但除此之外,我还应能:根据定义说出相应的术语;给一个实例后,能判断是否满足「奇异性」;如果知道一个矩阵是「非奇异」的,应能推断出与它相关的线性系统的解有多少种可能性;回答一些特别强调「奇异矩阵必须是方阵」的问题等等。问题在于,当我一口气回答好几个这样的问题后,后续问题我就不必再从深层记忆里去摸索答案,因为前面问题的一部分答案还停留在我的短期记忆里*。我觉得更高明的做法是,在多次的复习中,把这些密切相关的问题分散开来。可能要让卡片的问答影响相关卡片的复习安排。传统的记忆软件主要为事实性知识服务,而上述这些是概念性知识记忆软件与之不同的关键环节。(*译注:集中复习的大问题)
有些卡片需要变体。我偏好那些包含实例的问题,比如给一个矩阵然后问「这个矩阵是不是奇异的?」,你肯定不想每次都看到同一个矩阵,那样就变成死记硬背了。关键是熟悉判定流程,这种问题很适合来点的例子,或者至少从几个预设的题库里挑一挑,就像《量子力学简明教程》里所用的「应用卡」那样。
如何将问题解决能力整合到复习环节中?在完成这些题目集后,我深感自己已经可以将所学用到各种场景下了。如何通过重复练习以保持状态?一种方法就是在复习中穿插类似的问题,但这些问题确实会影响我通常的复习模式:我在手机上复习,而题目需要专门准备纸笔,花费更多的时间。也许我得每周专门腾出一两个时间段,做些高复杂的练习?另外,为了试验,我也能把这些问题改编成「心算」的形式,不用纸笔也能解决。这个策略能普遍应用吗?这些「减配」过的问题,足够维持我所学的技能吗?
如何处理解题过程中萌发的新见解?这书里最有意思的一些题目,似乎是为了让我在解题过程中产生一些特定的见解,这些见解大多只可意会不可言传,多半涉及到符号或者抽象概念中微妙的联系或强调。但我明确感到这是极有价值的学习。怎么确保我能牢记这一经验呢?要编写关于这些见解的卡片,我总感到伤脑筋。
如何处理知识的证明?坦白讲,关于证明我还真没有一套行之有效的知识体系。我真正想要的不仅是知道那个证明,更重要的是深入了解其关键步骤和洞见,这样才能应用到其他相关的命题上。比如,书里给出了一个证明,说改变线性方程的顺序不会影响解的集合。借此思路,我也证明了高斯消元中的缩放和组合操作是坚实的。但怎么做才能永保这种理解?我对应该写什么样的卡片,或者怎么写,感到不是很确定[2]。现在距离我第一次学它已经过去两周了,我自测了一下,虽然费了点劲,但最复杂的证明我还是能复现出来。
编写卡片很耗时。我在这几节里花了 20 小时,其中至少有两小时是在写这些卡片上。 10% 的「制卡税」相对于能增强理解和记忆算不得什么。但这个过程比单纯看书或者解题都费神,感觉至少占了我三分之一的精力,有时候甚至是一半。(译注:woz:渐进!渐进!但渐进似乎不能解决问题)
高屋建瓴地总结几个点
抛开细节不谈,如果我有根魔法棒,我想要实现的愿望包括:
- 一种「迅速检测我有没有理解这一段」的小交互。也许简单的问题能促使我梳理一下关键点,不至于让复习变得乏味。在明白了文章的意图之后,解决问题和提取练习就会更加得心应手。
- 一种简便方法,让我能把以技能习得为导向的复习,散布到不同复习时间上。
- 在我的复习练习中,逐步加入 2-3 倍量综合性、拓展性 (展开 e ) 的问题。
- 将我的复习环节从单纯的固定的提取练习,转向非固定的解题练习,后者在某种程度上应该能包含前者。
- 解题过程中会出现洞见的萌芽,如何捕捉、加强这些萌芽呢?我希望能更好地理解这个过程。
- 最后,尽量不用亲自编写记忆卡片。
如果我能如愿以偿,我想我会感到更加接近「异乎寻常的轻松和自信感」。预计接下来的几周,我会着手制作一些这方面的原型。
————————
感谢 Gary Bernhardt、Elliott Jin 和 Russel Simmons 在这些主题上的有益讨论。
————————
[1] 欲了解这个过程的更多细节,可以参考 John R. Anderson 的《学习与记忆》一书的第九章。
[2] Michael Nielsen 的文章《如何用间隔重复深入理解数学》[6]给了我不少启发,但我现在还不能完全把这些见解联系起来。
Thoughts Memo 汉化组译制
感谢主要译者偶然奇怪~ ☆、GPT-4,校对 Jarrett Ye
原文:Studying myself studying linear algebra | Patreon
作者:Andy Matuschak
参考
1. 记忆系统如何帮助解决问题 ./620583957.html2. 阅读理解与记忆系统 ./653174197.html
3. 我们如何才能开发出变革性的思想工具? ./394795804.html
4. 可编程注意力 ./514626691.html
5. 灵活的记忆实践产生流畅的理解 ./646929920.html
6. 如何用Anki学数学? ./593630309.html