跳转到主要内容

Anki SM-2 间隔重复算法

使用这个简单但强大的算法来自定义你的闪卡调度。

作者:Nova Nightfall

RemNote 的默认闪卡调度器叫做 Anki SM-2。顾名思义,它基于流行的闪卡软件 Anki 使用的调度算法,并进行了一些旨在最大化你的长期学习效果的细微改动。

本文解释了 Anki SM-2 算法的技术细节。一些相关的文章:

  • 关于间隔重复如何工作的总体信息,请参阅理解间隔重复。你应该在阅读本文之前阅读那篇文章——如果你缺乏对间隔重复工作原理的整体了解,这里的细节将难以理解。

  • 关于如何更改特定闪卡或整个知识库所使用的调度器的信息,请参阅我们关于自定义调度器的文章。


  • 关于为何这样构建 SM-2 算法的第一性原理的解释,请查看从头开始理解间隔重复(此文章并非由 RemNote 编写,也不特定于 RemNote 对 SM-2 的实现)。

在本文的剩余部分,斜体的短语指的是在 RemNote 设置的“自定义调度器”部分中找到的调度器参数。

学习阶段

最初的学习阶段旨在帮助你快速吸收新的想法。在学习阶段,闪卡会通过一系列固定长度的步骤,这些步骤由初始学习阶段固定步骤参数决定。(间隔是指连续复习一张卡片之间的天数。)例如,如果你在此字段中输入 ⁠30m,2h,2d​,则该卡片将依次通过 30 分钟、2 小时和 2 天的步骤。

在此阶段:

  • 按下忘记会将卡片返回到第一步。

  • 按下部分记起会将卡片保持在同一步骤,并在显示前等待到达下一步时间的一半(因此,如果下一步是 2 天,则会在 1 天后再次显示,并在那时考虑进入 2 天的步骤)。

  • 按下费力记起会将卡片移动到下一步。如果下一步是最后一步,则卡片进入指数阶段,其初始间隔通过将指数阶段规则应用于当前固定步骤间隔来计算。

  • 按下轻松回忆会立即将卡片发送到指数阶段,其初始间隔为退出学习/重新学习模式时的轻松间隔。

注意:当你到达队列末尾时,处于学习阶段的卡片可能会略微提前显示以供练习(默认情况下,最多提前 15 分钟)。要理解为什么,请考虑如果你在学习阶段的一张困难卡片(当前间隔为 10 分钟)到期前 5 秒钟完成了队列,会发生什么情况。你可能至少几个小时内不会返回队列,甚至可能直到第二天,因为你预计很少有卡片会在该时间范围内到期。

显然,提前 5 秒看到你只是勉强记住的卡片比晚 1 天看到它要好,所以 RemNote 会提前显示它。你可以使用 设置>练习队列 中的提前学习限制选项自定 RemNote 允许学习卡片提前显示的时间量。

指数阶段

指数阶段是主要的学习阶段,卡片的大部分时间都处于这个阶段。此阶段的间隔呈指数级增长(通过将前一个间隔乘以某个数字)。相乘的数字称为间隔因子,每次你练习卡片时都会计算该因子。

间隔因子由两个数字决定:卡片的容易度(衡量你过去发现该卡片有多难)和你选择的评分按钮(忘记、部分记起、费力记起或轻松记起)。每张卡片的容易度都从起始容易度设置(默认为 230%)开始,并且每次你练习卡片时都会更新。在其他闪卡应用程序中,容易度有时被称为 E 因子。

在指数阶段,容易度和间隔因子的计算方式如下:

  • 按下忘记使用的间隔因子为遗忘间隔乘数(该值小于 1,因为当你忘记卡片时,卡片的间隔应该减少;默认值为 0.1),并将容易度降低 20 个百分点。此外,卡片会进入重新学习阶段(稍后描述)。

  • 按下部分记起使用的间隔因子为 1.2,并将容易度降低 15 个百分点。

  • 按下费力记起使用的间隔因子等于当前容易度。容易度保持不变。

  • 按下轻松回忆使用的间隔因子为(容易度 * 轻松加成),并将容易度提高 15 个百分点。轻松奖励默认为 1.3。

随后,间隔因子会进一步调整:

  • 间隔因子乘以间隔乘数(此设置的默认值为 1,即计算值不变)。你可以使用此设置使所有间隔比默认值稍微宽一些或窄一些。


  • 向间隔添加少量随机噪声;也就是说,间隔会随机变得稍长或稍短。这可以防止同一天引入的卡片“粘在一起”并始终在同一天出现,这将使它们人为地容易记住。

之后,间隔因子用于计算卡片的下一个间隔。在大多数情况下,下一个间隔只是当前间隔乘以间隔因子。但是,如果卡片被延迟复习(在最佳复习日期之后),并且你回答了忘记以外的内容,则在相乘之前,会将(延迟天数 / 难度分隔值)的奖励添加到卡片的当前间隔中。难度分隔值对于部分回忆为 4,对于努力回忆起来为 2,对于轻松回忆为 1。

为什么包含这个奖励?假设 RemNote 认为你需要在某一天复习卡片,但实际上你直到 10 天后才复习它,而你仍然记得答案。这意味着你可能比 RemNote 最初认为的更了解这张卡片(另请参阅关于稳定性的解释),而且你对一张卡片越了解,你就可以等待更长时间再复习,因此间隔应该比原来增长得更多(或者如果已经过了很长时间,则增长得更多)。难度分隔值根据你认为自己仍然记得卡片的程度来调整此增加量;如果你真的很难仍然记得它,那么增加量应该小于你仍然觉得它很容易的情况。

一张卡片的容易度在任何情况下都不会降低到 130% 以下;如果上述计算将其降低到 130% 以下,则容易度将设置为 130%。经验表明,如果一张卡片自然需要低于 130% 的容易度才能可靠地记住,那么它对于有效的间隔重复学习来说太难了,应该以某种方式进行改进(通过更清楚地编写它,开发助记符或一些类似的方法)。更频繁地显示卡片只会导致挫败感,对记忆几乎没有好处。

重新学习阶段

当你在指数阶段忘记一张卡片时,它会进入重新学习阶段。此阶段的工作方式与初始学习阶段非常相似;卡片通过一系列固定步骤,并在这些固定步骤完成时或当你按下容易时返回到指数阶段。

重新学习阶段的主要区别在于,它不是根据学习/重新学习的最后一次复习来计算卡片在指数阶段的初始间隔,而是使用卡片在其之前在指数阶段的最后一次间隔。新间隔将等于此最后间隔乘以遗忘间隔乘数(默认为 0.1,因此新间隔将是旧间隔的十分之一)。

这是否解答了您的问题?