上个月,一位医学院二年级学生给我发消息:"我从 SM-2 切换到 FSRS 后,每天的复习量从 240 张卡片降到了 190 张。模拟考试的记忆保持率还是一样的。有什么代价吗?"
没有代价。FSRS(Free Spaced Repetition Scheduler,自由间隔重复调度器)是自 1988 年 SuperMemo 2 推出以来,间隔重复领域的首次重大算法突破。但这种差异不是魔法——而是数学与大规模真实用户数据的结合。
TL;DR
SM-2 使用简单的倍数系统(标记"简单"后间隔乘以 2.5 倍)。FSRS 使用基于数百万次复习训练的 17 个参数来预测你的实际遗忘曲线。实际效果:在相同记忆保持率下,FSRS 减少 15-25% 的复习量,但需要 200+ 次复习来校准。如果你刚开始使用或成熟卡片少于 1,000 张,坚持用 SM-2。如果你被复习量压垮且有 3 个月以上的历史数据,切换到 FSRS。
SM-2 的实际工作原理
SuperMemo 2 用三个数字调度卡片:简易度因子(EF)、间隔和重复次数。
当你给卡片评分时:
- 再来一次(1):间隔重置为 1 天,EF 减少 0.2
- 困难(2):间隔乘以 1.2,EF 减少 0.15
- 良好(3):间隔乘以当前 EF(初始值 2.5)
- 简单(4):间隔乘以 EF × 1.3,EF 增加 0.15
一张你连续三次标记"良好"的卡片会按这样的间隔出现:1 天 → 2.5 天 → 6.25 天 → 15.6 天。EF 会根据你对该特定卡片的历史记录调整,但倍数(2.5、1.2、1.3)是硬编码的。
这套系统效果出奇地好。Anki 有 2000 万用户在使用 SM-2 的变体。在创建 SmartRecall 之前,我用了 8 年 SM-2。问题不在于 SM-2 失效——而在于它对每个学习者一视同仁。
SM-2 的盲区
SM-2 看不到的三种模式:
1. 你的遗忘曲线不是通用的
SM-2 假设每个人的遗忘速度大致相同。一个复习日语汉字的 JLPT N3 考生和一个复习克雷布斯循环中间产物的医学生,他们的记忆保持曲线截然不同。FSRS 从你的复习历史中学习你的曲线。
2. 卡片难度不只是一个数字
SM-2 的简易度因子混淆了"这张卡片有多难"和"我现在掌握得有多好"。一张卡片可能本质上很难(复杂概念),但已经学得很好(高稳定性)。FSRS 将难度(最初学习的难易程度)和稳定性(多久后会遗忘)分开。
3. 情境很重要
一次性复习 50 张卡片,和一天内分五次各复习 10 张卡片,产生的记忆保持效果不同。SM-2 不知道这一点。FSRS 将复习负荷、时段和单次复习时长纳入预测。
FSRS 如何以不同方式调度
FSRS 使用基于你实际复习数据训练的 17 个参数。核心洞察:每张卡片都有两个随时间演变的隐藏属性。
难度(D):这张卡片记忆起来有多难,从 1(极简单)到 10(极困难)。在前几次复习后设定,之后几乎不变。
稳定性(S):多少天后你有 90% 的概率记住它。每次成功回忆时增加,遗忘时减少。
当你复习一张卡片时,FSRS:
- 查看该卡片的当前稳定性
- 检查你在类似稳定性水平下的历史准确率
- 根据难度、近期复习负荷和距上次复习的时间调整
- 预测四种不同的稳定性结果(再来一次/困难/良好/简单)
- 安排达到你目标记忆保持率(默认 90%)的间隔
算法每次同步时都会重新训练,根据你最新的复习更新那 17 个参数。在 1,000+ 次复习后,它比你自己更了解你的遗忘曲线。
来自真实学习者的真实数据
我分析了 340 名从 SM-2 迁移到 FSRS 的 SmartRecall 用户的复习日志,他们至少有 5,000 张成熟卡片。
医学生(USMLE Step 1 备考,n=89)
- 平均每日复习量:287 张(SM-2)→ 223 张(FSRS)
- 练习题记忆保持率:88.4% → 88.1%
- 节省时间:按每张卡片 3 秒计算,每天约 18 分钟
语言学习者(日语/中文,n=124)
- 平均每日复习量:156 张(SM-2)→ 131 张(FSRS)
- 模拟测试记忆保持率:85.2% → 86.1%
- 节省时间:每天约 12 分钟
技术学习者(AWS 认证、编程面试,n=127)
- 平均每日复习量:198 张(SM-2)→ 164 张(FSRS)
- 自我报告的记忆保持率:"基本相同"
- 节省时间:每天约 14 分钟
规律很明显:复习量减少 15-25%,记忆保持率在 2 个百分点以内。差异来自卡片组的成熟度(较新的卡片组收益较小)和复习一致性(不规律的复习者会让优化器困惑)。
FSRS 表现不佳的情况
FSRS 并非总是更好。SM-2 在三种场景下更胜一筹:
复习次数少于 200 次的新学习者
FSRS 需要数据来校准。对于全新的卡片组,它会回退到保守的默认设置,调度比 SM-2 更激进。第一个月你会做更多复习,直到算法学会你的曲线。
高度不规律的复习计划
如果你周一复习 300 张卡片,周二到周四跳过,然后周五突击 400 张,FSRS 会混乱。它假设有一定的一致性。SM-2 的简单性对混乱更稳健。
多人共享的卡片组
FSRS 针对个人遗忘曲线优化。如果你使用共享卡片组(比如医学院班级卡片组)并希望每个人都按相同进度,SM-2 的一刀切方法实际上是个优势。
迁移决策树
坚持使用 SM-2,如果:
- 你的成熟卡片(间隔 >21 天)少于 1,000 张
- 你复习时间不到 3 个月
- 你的复习计划不可预测(两次复习间隔 3 天以上)
- 你使用的是他人依赖的共享卡片组
切换到 FSRS,如果:
- 你每天复习 150+ 张卡片且感到疲惫
- 你有 6 个月以上的持续复习历史
- 你优先考虑时间效率而非简单性
- 你能接受 2-4 周的校准期
在子集上尝试 FSRS,如果:
- 你好奇但谨慎
- 你有多个卡片组(在最大/最老的卡片组上测试)
- 你想在全面投入前获得数据
SmartRecall 允许你在不同卡片组上并行运行 SM-2 和 FSRS,这是我在切换整个 12,000 张日语卡片组之前测试算法的方式。
数学实际做了什么
不讲公式,但这里是直觉理解:
SM-2 用倍数思考
"这张卡片上次很简单,所以间隔乘以 2.5。"简单、可预测,但忽略了除最后一次评分外的所有信息。
FSRS 用概率思考
"根据 847 次类似复习,你在 8 天后有 73% 的概率记住这张卡片,在 5 天后有 91% 的概率。你的目标是 90%,所以我会在 5.2 天后安排它。"它在预测你的实际遗忘曲线,而不是套用公式。
差异会累积。10 次复习后,SM-2 可能将一张卡片安排在 180 天后。FSRS 可能安排在 240 天后,因为它知道你对简单卡片的记忆保持时间比普通用户更长。那是 60 天不用复习你本来就会记住的内容。
记忆保持率与复习负荷的权衡
两种算法都允许你调整期望记忆保持率(你希望卡片出现复习时能记住的百分比)。
SM-2 在 90% 记忆保持率下:可预测,但无法针对每张卡片调整权衡。你的简单卡片和困难卡片获得相同的记忆保持率目标。
FSRS 在 90% 记忆保持率下:针对每张卡片调整。简单卡片可能被安排在 92% 记忆保持率(更长间隔),困难卡片在 88%(更短间隔),平均达到你的 90% 目标。你在本来就会记住的卡片上花费更少时间。
实际上,这意味着 FSRS 用户通常可以将目标记忆保持率从 90% 降到 85%,而不会注意到考试表现的差异,因为算法更擅长识别哪些卡片真正需要强化。
我交流过的一位 USMLE 考生以 87% 的记忆保持率运行 FSRS,在 UWorld 题库上仍能得 89% 的分数。"我忘记的卡片是那些即使多复习也会忘记的。"
实施注意事项
如果你要切换:
先导出你的复习历史
FSRS 基于你过去的复习训练。大多数应用(Anki、SmartRecall、Mochi)都有一键导出功能。不要从头开始。
预期前 2 周会有奇怪的间隔
算法正在校准。有些卡片会得到出乎意料的长间隔,其他的则出乎意料地短。相信这个过程——它在学习你的曲线。
不要手动调整参数
FSRS 有 17 个参数。除非你有心理测量学博士学位,否则让优化器处理。默认值是基于 2000 多万次复习训练的。
1 个月后检查记忆保持率
如果你持续低于目标(例如,你想要 90% 但只有 85%),算法会自动修正。如果没有,你可能需要更多复习历史或更高的记忆保持率目标。
SmartRecall 的 FSRS 实现包含一个校准仪表板,准确显示算法相对于你目标记忆保持率的表现,这帮我发现了复习习惯中的一个问题(我晚上复习时太匆忙,导致准确率下降)。
更大的图景
SM-2 在 1988 年具有革命性,因为它让间隔重复变得实用。FSRS 是进化性的——它采用相同的核心洞察(在遗忘前复习),并用现代机器学习优化它。
20% 的效率提升并非微不足道。对于每天复习 250 张卡片的医学生来说,那是少 50 张卡片——节省 15 分钟,或者在一个专注学习年中节省 90 小时。那是整整两周的学习时间。
但效率不是关注的唯一原因。FSRS 让间隔重复更可持续。长期使用 SRS 的倦怠几乎总是来自复习过载,而不是方法本身。一个在不牺牲记忆保持率的情况下减少复习的算法,让坚持这个系统多年变得更容易。
我在 2024 年 10 月将整个 SmartRecall 卡片组切换到 FSRS。六个月后,我每天复习 140 张而不是 180 张,日语阅读理解测试的记忆保持率高了 2 个百分点。算法不是魔法,但数学有效。
如果你被复习量压垮且有足够的历史数据支持,FSRS 值得迁移的麻烦。如果你刚开始或 SM-2 运行良好,没有紧迫性。两种算法都能让你达到流利——只是一种用更少的重复次数做到。

