这篇主题来源于我在知乎上一篇有关 Anki 的使用经验贴。之后我在 linux do 论坛上进行了分享,收获了很多的反馈。这篇帖子是想借助 V2EX 论坛,获得佬友们更多的意见和反馈。这也是我撰写这篇帖子的初衷:在分享 anki 的同时,提示自己对它的理解。Open and Open,欢迎交流!
以下是经验贴的内容:
不知不觉已经使用 Anki 两年多了,他陪伴我度过了人生中最艰难的岁月,改变我的思维习惯和对学习的认知。在这里,我深深的感谢 @Thoughts Memo 在知乎的分享和他开发的 FSRS 算法。叶神只大我一岁,但是他所开发的算法已经让世界无数人所受益。他是我永远的学习榜样和偶像。
人类的记忆可以粗略的分为工作记忆,长期记忆和程序性记忆三类 。其中工作记忆负责处理当前环境下的信息,对时效性的要求较高;长期记忆最具创新性,经常成为研究人员洗澡或散步时的灵感源泉;而程序性记忆则专门用于存储完成特定任务所需的知识,最适合用来考试。
我们使用 Anki 的本质是通过间隔重复效应,通过特殊设计的 scheduler 算法,在任务量相同的前提下,使用最小的代价去形成记忆。举例来说,在同样的高考备战时间内,我们可以利用 Anki 对知识点进行间隔重复,在相同的时间内达到更高的分数(具体可以参考叶神的帖子 )。
在阅读正文前,请思考:你使用 Anki 的目的是什么?中学生经常是为了考试,他们使用 Anki 巩固的主要是程序性记忆。更进一步,当摆脱高考等选拔的桎梏后,大学生为了提高自己的工作技能,他们选择使用 Anki 去加强自己专业知识点的长期记忆。场景切换到研究或工作中,科研人员经常会凭借自己的长期积累,在工作记忆中时时浮现灵感。
理解了 Anki 背后的原理,我们需要注意 Anki 正确的使用时间,以及它和实践的关联。这里总结了一些常见的对 Anki 的错误理解并给出了笔者对其的分析:
本文的 Anki 的使用经验可以归纳为:
下面正文主要围绕第三点展开叙述。
在开始分享 Anki 工科的使用经验之前,我想先分享一下 Anki 对我英语学习的帮助。语言类的学习应该是 Anki 最常见的用法,在 Ankiweb 上也有很多非常高质量的 deck 分享。而我对 Anki 的使用正是从上面一个托福绿宝书 deck 开始的。在这个过程中,我走了很多弯路,但也通过叶哥分享的文章和其他很多优质资源学到了很多技巧,逐步搭建了一套自己的学习体系。虽然远不如知乎的平均水平,但从阅读英文论文如天书到现在在一所全英的学校毫无语言压力的学习,我相信我的经验可以帮助很多同学少经历一些曲折,多一份对语言的热爱和自信。
首先我先介绍下我认知中英语学习的一个 big picture:英语学习,在没有语言环境的条件下,应该从大量的阅读开始。整体的顺序大概是 reading -> listening -> writing -> speaking.
虽然在备考托福期间我大概以每天 100 个新词的速度过完了 2/3 左右的卡片,但其实真正的词汇保有量并不理想。我真正的突破是在花费了三个月左右刷完了诡秘之主的英文翻译版( Lord of mysteries )后产生的。在这期间我大约记录了 1 万多个生词/长难句笔记,并自己编写脚本将它们整理到了 Anki 当中。
这里最大的体验是我完全消除了对英语的畏难情绪,对任何英文资料不会再有“读不下去”的感觉。个人认为 reading 里最重要的一步就是心理障碍的克服,而资料的选取往往决定着这一步骤的成败。
值得一提的是,效果最好的卡片一定是自己制作的。Anki 二十条规则的前两条(同样被我放在 Anki 里反复学习)是 "Don't Learn if you don't understand" 和 "Learn before you memorize"。
英语学习和理工类科目最大的不同之处在于其颗粒化程度较高,知识点之间联系较为松散。这些特征极大便利了我们的制卡过程。
听力方面笔者主要是通过刷宝可梦(英文版)和美剧进行的练习。这里有两点需要注意:
总结来说,笔者曾经尝试过将整个视频分段放入 Anki 学习( 30s 每张,结合实时高亮字幕)。但最终的效果差强人意。现在想来,还是没有很好的遵循 Anki 卡片原子化的要求,复习单位成本过高导致难以坚持。
这两方面笔者尚处在学习期,但可以肯定的是 Anki 对于素材积累有很大的帮助。( popclip, cubox->obsidian->Anki, marginnote->anki )等等。希望这个部分可以随着我的学习进程逐步更新。
笔者在这两者上的学习主要以兴趣和专业需求(机器学习)为导向,以下内容可能无法覆盖 CS/数学 专业同学的需求,因此不足之处还请多多见谅。
由于 Anki 本身编辑器的局限性,一般而言我们无法很好的进行代码块高亮或多行数学公式的插入。obsidian 的 obsidian_to_anki 插件则很好的解决了这个问题。
obsidian_to_anki 可以很好的保留我们在 obsidian 编辑器中编辑内容的格式,包括代码高亮,图片和数学公式。同时,其通过特定的语法可以有效的进行类似存放 deck 等更加深入的个性化设置。
插件的具体教程可以参考对应的官方文档。下面是其一些具体效果展示和优缺点分析。
使用 Anki 的一个很大缺憾是卡片之间的联系无法保留,容易造成知识点的割裂。虽然通过遵循 Anki 的二十条规则或使用 supermemo 可以在一定程度上缓解这个缺陷,但结果仍是治标不治本或因过于古老的界面而导致入门即劝退(就像当初学 vim 一样)。通过和 obsidian 结合,我们可以很好的解决上面的难题。下面是一张我用这个插件生成的 Anki 卡片。可以看出它通过层级标题以及超链接的方式,简化了文本并保留了相当的语境。
(好像 V2EX 不支持图片?)
Latex 语法以及 latexsuite 缩写卡片 上面的卡片中,我通过一个简单的 cloze 挖空来巩固 latex 相关的知识点。下方的链接可以让我有效的追踪学习历程和相关语境。
除了格式的保持,我们还可以通过结合 latexsuite 等插件来提高我们的输入/制卡效率。具体使用还请参看插件文档(具体教程我会抽时间放上来)。
不得不提,上面方案的入门具有一定难度。其中我根据自己的需求进行了大量的个性化配置,因此无法做到一键/零配置安装使用。但就像使用 Anki 最好要自己制卡一样,这篇经验贴也只是一个 entry point, Anki 的具体使用方法仍要因人而异。
相信我用 Anki 复习围棋的方法很多人就不会感兴趣。
本文的定位为一个 Anki 使用方法的架构篇。更多的细节会随着我有时间/大佬的意见/我见识的长进慢慢填充。 一个好的配置永远是实时修改和维护的,就像是每个程序员的 config file 一样。