Use Anki to Leaning English

Anki 很早以前就听说了,是一款帮助你记忆东西的软件。

教小孩子的时候,一般不是会有一些卡片么,正面是一个字,比如 背面是一个老虎的图像,这样帮助小孩识字。这种叫做 flashcards 。Anki 提供的就是制作并使用这些 flashcards 来帮助你记忆。

所以广义上面讲,Anki 不止可以用来记忆单词,比如学中文老外可以用来记忆中文,学物理化学的记忆各种公式什么的。正面放需要理解学习的东西,反面放帮助记忆的东西。

Anki 神奇的不是因为可以制作任意的记忆卡片,主要是他的针对所谓的遗忘曲线来学习的套路。所谓遗忘曲线,复杂的逻辑我也没看过,简单的用方便理解的方法来讲,比如我们背单词的时候,刚背玩 1 分钟内,通常是记忆最深刻的,10 分钟后就会有一些模糊了,1 天后可能就会忘记很多今天已经记住的单词了,此后不及时复习的话,你会发现下次再见到和第一次见到没什么区别,完全就是个新的单词一样。这个就是说,随着时间遗忘一个东西的速度会越来越快。

我之前使用百词斩背单词,它把单词都做了的图形化的提示信息,这个非常有助于记忆,我非常喜欢这点。他的工作模式是,每天设定一个目标,比如 20 个单词吧,那今天的任务就是复习昨天的 20 个单词,以及学习今天的 20 个单词,每天都这样一个模式。记得我前面说的遗忘曲线了没,这样的模式你会发现,这两天记忆好的单词,下个月可能就基本不记得啥意思了,和没学一样。而百词斩似乎提供了一些你自己复习的途径,不过我目前没找到合适的方式使用。百词斩对于新的单词,会提供三遍机会学习,第一遍是单词+图片,第二遍是单词+释义,第三遍是根据释义选单词。在每一遍里面,如果你选错了,那就会再出现一遍相同的题目。对于熟悉的单词,还提供了一个 的选项,斩掉的单词就不会在出现了,你再也没有机会看到这个词了。百词斩还有一个问题是,因为他是选项模式,实际上那些选项也是一个提示,你可以使用排除法来选择答案,所以这些东西有时候会让你觉得你记住这个单词了,但实际上这个单词单独出现的时候不认识。

Anki 的工作模式是这样的,也是每天设定一个目标,比如新学 20 个单词。那今天你需要记忆的单词就包括了今天 之前 所有需要今天 review 的单词,和今天新的 20 个单词。新的单词没什么好说的,那 review 的单词是怎么构成的呢?当出来一个单词的时候,你根据自己的记忆情况,需要在单词下面的选项选择打算多久之后 review 他,选项按照单词被 review 的次数和你选择的 review 的情况来的,比如新单词的选项是 again 1m, good 10m, easy 1d, 如果你觉得这个词你不太熟悉,你可以从 again good 里面选一个,它会持续的在今天的学习里面出现,直到你觉得认识了,那就选 easy ,那这个词今天就不会出现了,会在明天的 review 里面出现。到了明天,这个词再次出现的时候,选项就变成了 again 10m, good 1d, easy 10d (具体选项我没记住,这里举个例子),这个时候,如果发现这个单词忘记了,那就继续 again again 的选择直到你觉得记住了,根据你自己的感觉,选择 good 还是 easy ,这样会决定他下次是什么时候出现。类似这样,单词你越熟悉,他出现的次数就会越少,而且你也完全不用担心这个单词会不会你只是现在觉得认识了,后面过 1 个月又忘记了怎么办,那放心这些单词会持续出现的。

事实上,Anki 的设计不止这些。在设置里面还有一些因子,这些会影响出现的选项的时间。具体可以看后面提到的视频。使用 Anki 的时候,基本用法如下:

  1. 一个新的词,如果已经认识,那选择 easy 就好了。如果不认识,那根据情况选择 1m 或者 10m ,一般看到一个词一点都不认识的时候,多选几次 1m 加深一下印象,然后选择 10m 看是不是记住了,然后可以往复的选择 1m10m 直到你觉得今天没必要看这个词了,那选择那个 1d
  2. 一个需要 review 的词,如果发现没记住,那就选 1m 让他进入和新词一样的逻辑,直到最后选择 1d
  3. 如果需要 review 的词你知道意思,这个时候有几个做法

    1. 这个词确实很简单,那继续 easy ,让他更少出现。
    2. 这个词有一点难度,是你新学的,但是基本也还能知道怎么回事,那可以选择 good ,让他适当的没那么少出现。
    3. 对这个词的部分释义不清楚,没记住,那可以酌情选择 hard ,让他增加出现的机会。

Anki 有一个问题是,随着你学习的新单词越来越多,那需要 review 的单词也越来越多,尤其当你偷懒几天没打开软件,巨大的 review 数量可能会让人崩溃。设置里面可以设置每天 review 的最大数量,默认是 200,如果自己实在不能 review 完可以改一下。我现在设置是 200,每天新词 20 个,看着情况是每天基本是需要处理 60 个词左右。只要持续每天清理就也还好。其实一天那么多时间,大可以利用碎片时间看看,也别担心自己实际没记住但是按了 easy 的情况,后面还会出现呢,后面出现的时候再好好记也可以。

Anki 还提供了一自定义学习模式,每天 Anki 不是会自动安排任务么,如果一天的任务完成后,还想多学习一些,那 Anki 提供了一个自定义学习模式 Custom Study。点击这个之后,需要你选择想学习什么,可以学习新的单词,也可以复习之前学过的,按照你自己的情况选择就好。选择之后,一些卡片就会添加到那个 Custom Study Session 这个 deck 里面。卡片到这个 deck 之后,如果你学习完毕就会都归还到原来的 deck 里面,也可以点那个 Empty 自己都清空。这个 deck 里面有两个设置比较重要,一个是 Step,我看默认是 1 分钟,这个和前面那个 step 是一个意思。还有一个是 Reschedule cards based on my answers in this deck,如果不选中这个,那一个卡片学习完毕之后,会有两个选项一个是 again 一个是 good ,选 good 会结束这个卡片的学习,不会对原来的 deck 里面对这个词的安排有什么影响。如果选中这个选项,那选项会有一个 good(n day) 这样的,点击之后实际会影响原来 deck 里面对这个词的规划。

2019.10.9 补充

前几天休假出去玩了一段时间,如何处理 anki 里面的任务是一个大事,我可不想回头因为这几天休假之后 review 太多把这个事情荒废了。还好我感觉我找到了解决 review 太多的方法。

可以通过设置,修改每天的新单词数量为 0 。这样你就只需要 review 历史学过的单词了,因为不会有新词,所以历史的单词 review 也会很快完成,而且还会发现之前积累的一些也慢慢消化了,每天 review 数量会下降。

所以实际上如果不想每天那么大压力,大可以默认设置新单词数量为 0, 再你觉得今天可以学习新单词的时候,通过 custome study 增加今天的新单词数量,这样今天学习之后,明天默认还是没有新单词的。可以灵活的安排你新单词的学习时间。只是 review 旧单词压力会小很多。

2019.11.18 补充

最近发现我的很多记住的单词会出现一个情况是,到了大概一个月的时候遗忘的可能性很高。而且还有个问题是,这样的词一旦发现没记住,就需要像新卡片一样从第一天再次开始,惩罚有点过分了。所以又研究了一下 Anki 的设置。

参考后面的视频链接,大概是几个思路的变化

  1. 增加卡片毕业难度。
  2. 修改犯错的惩罚。
  3. 越难记的卡片,一旦记住了越不容易忘记。

默认的 Anki 设置里面,毕业步骤是 1 10 ,也就是说一个卡片如果 10 分钟后第二次出现你点击了 good,这个卡片就会毕业。毕业之后就是按照它的 easy factor 来计算后续的出现的机会了。对这个配置做一个修改,改成 10 20 1440 4320 ,这样等于是需要第一天,第二天,以及第四天这个卡片都记得才能毕业。在毕业之前,随时点击 again 都不会对 easy factor 有影响。

默认的 Anki 设置里面,对于已经毕业的卡片,犯错之后会让这个卡片和新卡片一样从第一天开始。但是实际上我们犯错的时候并不一定总是需要从第一天开始,比如有可能就是和有的词有点混淆而已,没必要从第一天重新开始。默认的失败时候的 New interval 是 0,我们可以调整为 70% 这样。

review 时间间隔长会带来更好的记忆效果。不过要注意,需要保持 80% - 90% 的正确率,如果错误率太多,说明这个设置对你太难了。。这个可以通过调整 interval 来实现,Anki 文档有说明如何调整。

这样主要的目的是保证正确率大概是在 90% 左右。

具体详细的思路可以看参考视频,里面有比较详细的解释。

Low-key 理论

之前其实就知道这个,不过那个时候还没有使用过 Anki,对这个基本也看不明白。现在用了一段时间之后,再看文章,大致明白了。

文章先说了几个概念

  1. 召回率 retrievability

在某个时间点记住某个东西的几率。举个例子,如果有人问你的名字是什么,大概 99.99% 的几率都能回忆出来。如果我和你说了我的名字,然后过 30 秒之后问你我的名字,可能也有 99.99% 的几率回忆出来。那么比较这两个情况,显然还需要一个指标才能区分记忆情况。

  1. 持久性 stability

继续上面的例子,对于你的名字,可能过 1 年之后,你还能达到 99.99% 的召回率,但是对于我的名字,恐怕就只能有 20% 了(也就是只有 20% 的可能性你能回忆起来)。

如果在一个东西忘记之前,被成功的召回过(被 review/重新记忆过),那可能接下来一段时间,你又可以继续保持一段时间的 100% 召回率。这个取决于你的遗忘曲线,比如每天都重复记忆一下,那可能能一直记下去(当然你也得一直重复下去)。

  1. 记忆难度 intrinsic difficulty

显然不同的东西的记忆难度不一样。比如你母语里面的一个词,和记忆一个第二语言里面的一个词,显然区别很大。

在 Anki 里面

  1. retention rate 对应 retrievability
  2. intervals 对应 stability。interval 控制卡片出现的频率,比如每月 review 一次,那么就是一个月。
  3. ease factors 对应 intrinsic difficulty。easy factor 控制 interval 增加的幅度,越大对应的 interval 增加越快。

很明显,最理想的情况是,每次在忘记一个东西之前,review 一下,重新记忆一下,然后这样记忆就又可以保持了。但是这个事情比较难,一方面你无法知道一个东西什么时候就会被忘记,只有忘记了才知道忘记了。。。二方面人的记忆不是机器,可能有时候会有随机忘记一些东西,有时候又可能会随机想起来一些东西。这样,如果想要 100% 记住,那就需要花很多时间去 review,不管难的简单的,都需要不停的去 review 他们,因为不知道什么时候会忘记。

据说各种理论研究表明 90% 左右的比例是比较合理的,就是遗忘 10% 的内容,这样的投入产出比是比较划算的。每次 review 如果难的太多,打消积极性,简单的太多呢,又浪费时间。这样保持一个 90% 左右的正确率是比较好的。

Anki 里面,通过 ease factor 来区别卡片的难度。如果一个卡片毕业的时候是 again 或者 hard,那么会降低 ease factor,如果是 good,那不变,如果是 easy,那么会增加 ease factor。听着挺好的,但是实际有点问题。记忆有一定的随机性,可能会因为昨天太累,今天心情不好等因素影响,导致卡片没记住(比如我上午的记忆力,就比下午的记忆力好),这个时候如果调整了 ease factor 可能会导致这个卡片有不应该有的速度。也就是会因为这一次的选择影响这个卡片后续的情况,影响似乎有点大。

所以,就有了 Low-key 理论。关键是两点。

  1. 不使用 ease factor,全部卡片都是一样的 ease factor。

全部使用一样的 ease factor,那么如何区分难度?把内容(整个 deck 的难度,不是指单个卡片)按照难度分成 subdeck ,不同的 subdeck 里面都各自有大致相同的难度。然后通过修改各 deck 的 interval modifier 来区分难易程度。

这样卡片同一个 deck 里面的卡片就会总是保持相同的学习进度。如果一个卡片忘记了,那么经过再次毕业,也会慢慢跟上步伐。还是会有一些卡片可能会异常难的,这些肯定会比其他的需要更多学习。但是对于其他那些没那么难的,就会节约大量的时间。

对于超难的卡片,可以通过 Anki 设置里面的 Leech Threshold 选项设置小一点,比如 4,以及设置让这些卡片加标记来把他们挑出来。Leech 指的是连续几次都学习失败的卡片,这样的卡片,一般是需要重新制作或者完善,里面需要增加能让你记住的点。

  1. 使用 Fail/Pass 代替 Again/Hard/Good/Easy。

让一个卡片使用 Hard 按钮毕业,是一个奇怪的事情。Hard 通常表示,对这个卡片的记忆没有达到 Good ,那么按了 Hard 之后,Anki 只是会让这个卡片下次比按 Good 快一点出现。要主意这里并不是说让这个卡片比上个 interval 短一点出现,实际是给你一个比上次更长的 interval,更长的 interval 好像对于能不能很好的掌握这个卡片没有什么帮助,下次这个卡片再次出现的时候,你可能大概率还是会按 Hard。

所以,实际上对于一个记忆没达到 Good 的卡片,需要的是缩短这个卡片的出现周期,而不是给一个更长的周期。

在 Anki 的 Lapses 设置里面,默认是会设置 new interval 为 0。 这样会导致这个卡片和新卡片一样需要从头学起,这显然不对。一个你之前记住,现在忘记的卡片,和一个从来没见过的卡片,肯定是不一样的。调整这个值为 50% - 80% 之间合理一点。

这样两个搭配之后,可以让忘记卡片的惩罚降低,让队列里面的卡片变少,节约时间,减少压力。

对于有 Leech tag 的卡片,可以通过查找定期处理一下,比如重新制作,或者删除。如果一个卡片你觉得只是因为当时状态不好没有回忆起来话,也可以简单点把这个卡片的 interval 重置之后放到新卡片里面。

参考

  • 这里有一个对 Anki 的设置和工作模式的详细的解说,有兴趣可以看看。
  • 这个比较详细的介绍了 Anki 里面 Intervals 和 Steps 的设置逻辑和思路,以及如何避免 easy hell。
  • 这个关于 Easy hell 的说明,就是如何避免太多的简单卡片让你 review,浪费时间。
  • Low-key理论