SM2 与 FSRS —— AnkiDroid 背后的两种间隔重复算法
SM2:间隔重复的经典实现
Anki 最早的调度器基于波兰学者 Piotr Woźniak 在 1987 年提出的 SuperMemo 2 算法(简称 SM-2)。SM-2 定义了一套初始间隔和递增倍率:
- 卡片第一次被答对(Good)后,初始间隔通常从 1 天开始
- 每次答对,间隔乘以一个倍率(默认约 2.5)
- 答 Again(不会)时,间隔重置回一个很小的值(比如 10 分钟)
- 答 Hard 时倍率调低,答 Easy 时倍率调高
SM-2 的优点是简单、可预测,所有参数都在牌组选项里明文可调。Anki 把这套逻辑工程化后,数百万用户已经用它记了十几亿张卡片。
FSRS:新一代调度器
2023 年起,Anki 引入了基于 DSR(Difficulty-Stability Retrievability)模型的 FSRS 算法。FSRS 和 SM2 最大的区别是:它不再只看"上次间隔 × 倍率",而是给每张卡片维护两个状态变量:
- Difficulty(难度):这张卡对你有多难,会影响它从学习阶段毕业的速度和后续复习间隔
- Stability(稳定性):这张卡在你脑子里扎根有多深,直接对应下次出现的间隔
FSRS 用大量用户真实数据训练了一套参数,根据你对每张卡的每次评分动态更新这两个变量,预测准确性比 SM2 更高——官方数据显示在相同的学习量下,FSRS 能把卡片的 retention 率提升约 10~20%。
在 AnkiDroid 里怎么选
AnkiDroid 的算法选择是和牌组(Deck)绑定的,不是全局开关。每个牌组的「牌组选项」里有一个「调度器」字段:
- 选 SM-2:沿用经典的倍率递增
- 选 FSRS:启用 DSR 模型
切换算法不影响已有的复习记录(卡片的学习历史仍然完整),但切换后的新卡片会用新算法排期。建议:
- 老用户如果 SM2 用得顺手,可以保持原状
- 新用户直接上 FSRS,效果会更好
- 混合使用也没有问题——不同牌组可以用不同算法
算法选项在哪里调
AnkiDroid 里的算法参数入口在:
牌组列表 → 长按某个牌组 → 牌组选项 → 学习组 / 复习组
这里能看到 SM2 的「新卡初始间隔」「学习步骤」「毕业间隔倍率」等经典参数。如果这个牌组已经启用了 FSRS,这些参数会变成 FSRS 专用的「最大间隔」「毕业难度」等。
注意:AnkiDroid 的「牌组选项」能调的参数比桌面版 Anki 略少。更精细的参数(比如模板、笔记类型)建议在桌面版上调整后再同步到手机。