Anki 使用什么间隔重复算法?

原 文:What spaced repetition algorithm does Anki use?

SM-2

截至 Anki 23.10,Anki 拥有两种可用的算法。第一种基于 SuperMemo 2 算法,第二种称为 FSRS

Anki 的算法在某些方面与 SM-2 不同。值得注意的是:

  • SM-2 定义初始间隔为 1 天然后是 6 天。在 Anki 中,你可以完全控制初学间隔的长度。Anki 明白,在你能记 住一张新卡片之前,可能需要多次查看,而这些初始「失败」并不意味着需要通过多次重复出现卡片来惩罚你。 学习阶段的表现并不反映在记忆阶段的表现。

  • Anki 用于回答复习卡片的选项有 4 个,而不是 6 个。只有一个失败选项,而不是 3 个。这是因为失败占 总复习量的一小部分,因此通过简单地改变正面答案即可充分调整卡片的简易度。

  • 在预定时间之后回答卡片会被考虑到下一个间隔计算中,因此你会对那些回答延迟但仍记住的卡片产生提升。

  • 像 SM-2 一样,Anki 的失败按钮默认会重置卡片间隔。但用户可以选择仅减少卡片的间隔,而不是完全重置。 此外,你可以选择在不同的日期而非当天复习失败的成熟卡片。

  • 轻松记住不仅会提高简易度,还会在当前间隔计算中增加额外奖励。因此,回答轻松记住相比标准 SM-2 算法略显激进。

  • 当卡片处于学习状态时,连续失败不会导致卡片简易度的进一步降低。标准 SM-2 算法的常见抱怨是卡片重复失 败会导致卡片陷入「低间隔地狱」。在 Anki 中,初始习得过程不会影响卡片的简易度。

FSRS

FSRS 旨在比 SM-2 更有效地学习你的记忆模式并安排复习。

FSRS 基于「记忆的三变量模型」。该模型断言三个变量足以描述人类大脑中的单一记忆的状态。这三个变量包 括:

  • 可提取性 (R):指某人在特定时刻可以成功回忆特定信息的概率。它取决于自上次复习以来的时间和记忆稳定性 (S)。

  • 稳定性 (S):指可提取性从 100% 下降到 90% 所需的时间,单位为天。例如,S = 365 表示要过整整一年才会 使得回忆特定卡片的概率下降到 90%。

  • 难度 (D):指特定信息的内在复杂性。它代表在复习后增加记忆稳定性有多困难。

在 FSRS 中,这三个值统称为「记忆状态」。R 值每天变化,而 D 和 S 只有在卡片复习后才会变化。每张卡片都 有其独立的 DSR 值,也就是每张卡片都有其独特的记忆状态。要准确估计 DSR 值,FSRS 分析用户的复习历史, 并使用机器学习来寻找与复习历史最匹配的参数。

请注意,用户不应该手动调整参数。如果你想调整安排,只需选择适当的期望记忆值。通过 FSRS,用户可以针对 特定的记忆值,允许他们在多少记忆和多少复习之间找到平衡。更高的记忆度意味着每天需要进行更多复习。

除了允许用户轻松控制他们的记忆之外,FSRS 相较于 Anki 的默认算法还有其他一些优势。相比使用 Anki 的默 认算法,使用 FSRS 时,用户达到相同的记忆水平所需的复习的次数更少。FSRS 在安排被延迟复习的卡片方面也 要好得多,例如,如果用户暂时离开 Anki 几周或几个月。

调度代码可以在 rslib/src/scheduler/states 中找到。这里是总结(请参阅手册的 牌组选项部分,查询提 到的 斜体 选项):

学习/重新学习卡片

如果你按下…​

  • 重来
    将卡片移回 初学间隔/重学间隔 中设置的第一个间隔。

  • 困难
    在第一步之后重复当前步骤,并且是「重来」与「良好」的平均数。

  • 良好
    将卡片移 至下一间隔。 如果卡片在最后一步,则该卡片将转化为复习卡片(即它「毕业」)。

  • 简单
    立即将卡片转化为复习卡片。

新卡片没有简易度,所以无论你按多少次「重来」或「困难」,卡片的未来简易度都不会受到影响。对于重新学习 卡片也是如此:按下「重来」或「困难」不会对卡片的简易度产生影响。

复习卡片

在 SM-2 中,一旦卡片毕业,就会拥有简易度。默认值是 2.5,但你可以使用 牌组选项 设置其他值。

如果你按下…​

  • 重来
    卡片进入重新学习模式,简易度会减少 20 个百分点(即从简易度值中减去 20,单位为百分点),并且当 前间隔乘以新间隔的值(该间隔将在卡片退出重新学习模式时使用)。

  • 困难
    卡片的简易度减少 15 个百分点,当前间隔乘以困难间隔的值(默认为 1.2)。

  • 良好
    当前间隔乘以当前简易度。简易度保持不变。

  • 简单
    当前间隔乘以当前简易度再乘以容易奖励,简易度增加 15 个百分点。

对于困难、良好和简单,接下来的间隔还乘以间隔修饰符。如果卡片正在延迟复习,将会有额外的天数添加到当前 间隔中, 如之前的 FAQ 中所述。

在 FSRS 中,一旦卡片至少复习过一次,就会被分配 DSR 值。

如果你按下…​

  • 重来
    卡片进入重新学习模式,稳定性明显下降,难度显著增加。

  • 困难
    卡片的稳定性增加或保持不变,难度适度增加。

  • 良好
    卡片的稳定性增加,难度可能略微增加或减少。

  • 简单
    卡片的稳定性显著增加,难度适度减少。

限制

在使用 SM-2 时,卡片可接受的调度值存在一些限制。简易度不会降低到 130% 以下;SuperMemo 的研究表明,低 于 130% 的简易度往往导致卡片变得由于为频繁,从而让用户感到烦扰。间隔不会超过最大间隔的值。最后,所有 新的间隔(除再次外)总是比上一个间隔长至少一天。

为什么 Anki 不使用 SuperMemo 的最新算法?

简单的答案是,SuperMemo 的最新算法是专有的,并需要授权。由于 Anki 是一个开源应用程序,因此只能使用像 FSRS 这样免费提供的算法。初步测试似乎表 明,FSRS 大致与 SM-17 相当。