间隔重复:简要回顾
掌握任何学科的基石在于知识的积累:无论是事实知识、经验法则,还是解题技巧。如果你所从事的领域是你的全职工作,那么你很可能会通过反复接触这些知识来逐渐精通。但若你只是利用业余时间学习某样东西——以我自己学习日语为例——就很难达到那样的练习强度。
在校学习的各门课程亦是同理:每周几小时的课程或家庭作业,往往不足以构建起稳固的知识体系,对于历史、医学这类需要大量记忆事实的学科而言尤其如此。即便是生活中那些你或许不曾与「学习」联系起来的方面,亦可作如是观:如果你能将从播客或 Hacker News 文章中获取的信息长久保留下来,这些信息难道不会显得更有价值吗?
间隔重复系统(Spaced Repetition Systems, SRS)正是应对这一难题最为成熟的解决方案之一。它们本质上是展示抽认卡的软件程序,卡片正面提出问题,要求你回忆起背面的信息。你可以阅读 Andy 的相关笔记[1]以了解更多详情,或通过以下我个人收藏的图片来直观感受一下:

这类程序的核心特点在于,它们会根据你对自身回答的评价,来安排下一次复习同一张卡片的时间间隔。在你给出正确答案后,系统会逐渐延长复习间隔,从而避免每日的复习任务越积越多。例如,正是凭借这种方法,你才能够做到每天学习 10 个新的外语单词(一年累计 3650 个!),而每天仅需花费 20 分钟进行复习。
(如果你对此仍存疑虑且尚有余暇,我推荐阅读 Michael Nielsen 发表的文章《增强长期记忆[2]》。)
调度算法的革新
以上所述,目前已是众所周知。但鲜为人知的是,在过去几年间,一场悄无声息的革命极大地改进了间隔重复系统,使其效率显著提高,并大幅减少了使用时的挫败感。其成功的秘诀在于一种名为 FSRS[3] 的新型调度算法,由 Jarrett Ye* 开发。(*校对:没错,正是在下。)
要理解这些系统是如何改进的,我们首先需要回顾一下它们以往的运作方式。大致来说,你会在创建卡片一天后首次看到它。如果回答正确,6 天后会再次看到。若第二次仍回答正确,下一次出现则是在 15 天后。如果连续三次都答对,那么下一次就是 37.5 天之后。通常情况下,从 6 天的间隔开始,复习间隔会按指数级递增,默认的计算方式是 天。可见,如果你持续答对某张卡片,便能逐渐建立起庞大的知识库,而每天只需进行少量复习!
但如果你答错了呢?那么,复习计划会重置回第一天!你会在次日再次看到这张卡片,然后是 6 天之后,以此类推。(不过,答错卡片也可能会调整其「简易度因子(ease factor)」,即那个默认为 2.5 的指数底数。)这往往会带来相当令人沮丧的体验,因为你会眼看着一张卡片在长短不一的复习间隔之间反复出现。
如果我们跳出细节,从宏观视角审视,便会意识到这个名为「SuperMemo-2」的调度系统其实颇具随意性。那些诸如 1 天、6 天、 天的间隔,以及一旦答错便重置的规则,究竟从何而来?事实证明,这是一位大学生于 1987 年基于个人实验得出的。难道我们不能做得更好吗?
回想一下间隔重复理论的核心思想[4]:我们试图通过在「我们即将遗忘某项知识点的前一刻」进行自我测试,从而战胜「遗忘曲线」。我们很难相信,每一条知识的遗忘曲线都是完全相同的:即无论学习什么内容,我们都会恰好在 1 天后、再过 6 天后、再过 15 天后等等时间点上濒临遗忘。诚然,我们可以对简易度因子进行一些调整,但即便其底数能根据反馈稍作变动,理想的复习计划也未必就是一个完美的指数函数。

FSRS 算法的独到之处在于,它将我们的目标——在「我们即将遗忘的前一刻」进行测试——具体化为一个预测问题:「一张卡片的可回忆概率何时会下降到 90%?」而这类预测问题,恰恰是机器学习系统大显身手的领域。
FSRS 工作原理浅析
上述洞见——即运用机器学习来确定最佳复习间隔,而非沿用一套固定的公式——正是 FSRS 算法的核心所在。即便不了解其工作原理,你也能从中受益。不过,下文将简要介绍一些我认为颇为精妙的细节。
FSRS 自称为「三组分」模型,因为它运用机器学习来拟合三个主要函数的曲线:
- 难度(Difficulty):代表卡片难易程度的数值(1-10 之间),每张卡片对应一个。
- 稳定性(Stability):指一张卡片从 100% 的可回忆概率下降到 90% 所需的时间。
- 可提取性(Retrievability):指在给定天数之后,回忆起某张卡片的概率。
它会依据各种公式为每张卡片计算这些值。例如,为了更好地拟合观测数据,可提取性曲线已经过调整,从最初的指数函数演变为幂函数。
曲线拟合过程涉及 21 个参数。这些参数的初始值,是通过对数以万计的用户先前完成的复习数据进行曲线拟合而得出的。但要获得最佳效果,还需针对你个人的复习记录运行 FSRS 优化器,它会调整这些参数以适配你专属的难度、稳定性及可提取性函数。(机器学习正是在参数调整这一环节发挥作用:这些参数值是运用一些你可能有所耳闻的技术计算出来的,例如最大似然估计和随机梯度下降法。)
尽管 FSRS 核心算法致力于预测这三个函数,但作为用户,你更关心的是卡片的调度安排。为此,FSRS 允许你设定一个期望的记忆保留率(默认为 90%),然后在你完成复习并进行自我评估后,运用这三个函数来计算下一次复习该卡片的时间。
不过,你也可以根据需要调整这个期望的记忆保留率。由于 FSRS 凭借其难度、稳定性及可提取性函数,构建了关于你如何保留信息的精细模型,因此它能够模拟出在任何给定保留率下你的学习负荷。该算法的维护者建议你将期望保留率设定在能使「学习负荷与知识获取量之比」达到最小值的水平。
这可能会带来相当显著的效果:下方展示了针对我个人日语词汇库的两次模拟结果。橙色线代表默认的 90% 期望记忆保留率,蓝色线则代表 FSRS 建议我采用的、旨在最小化「学习负荷与知识获取量之比」的 70% 期望记忆保留率。该模拟持续 365 天,在我的每日复习量低于 200 张卡片时,每天会新增 10 张新卡片。如图所示,采用 70% 期望记忆保留率的设置,不仅每日复习次数大幅减少,花费时间也更少,最终记住的卡片数量却反而更多(因为它没有触及那个限制新卡片加入的 200 张复习上限)。



(需要注意的是,在计算稳定性函数时所用的 90% 这一数值,与用户设定的期望记忆保留率并非同一概念。它仅仅是用来预测遗忘曲线的形状。原始研究论文[5]采用的是半衰期,即卡片可回忆概率降至 50% 所需的时间,因为这种表述更具学术性。)
FSRS 在实践中的应用
如果你希望使用 FSRS,而非其他那些已被证明效果稍逊的算法,那么你必须选用支持该算法的软件。目前领先的间隔重复软件 Anki 已从 2023 年 11 月发布的 23.10 版本开始集成了 FSRS。略显遗憾的是,它尚未成为默认设置,因此你需要手动启用它,并为你创建的每一个牌组优化其参数。
顺便一提,FSRS 被整合进 Anki 的过程颇具传奇色彩。FSRS 的创造者,当时还只是一名本科生[6],在 Anki 的 Reddit 子版块上发布了他的新算法。一位评论者向他发起挑战,鼓励他将算法付诸实践开发成软件,而不仅仅是发表一篇论文。他最初将 FSRS 实现为一个 Anki 插件,随着其受欢迎程度日增,最终成功说服了 Anki 的开发者们将其整合进了核心代码!
从我个人的主观体验来看,相较于先前 Anki 所采用的源自 SuperMemo-2 的算法,FSRS 极大地提升了我的复习质量。复习负担显著减轻,答错卡片时的挫败感也大幅降低,因为答错不再意味着一切归零,重回第一天的复习进度。此外,FSRS 提供的更优良的统计模型,让我对那些被 Anki 标记为「已掌握」的卡片是否真正印刻在脑海中,抱有更强的信心。
具体到日语学习领域,若将 FSRS 与两款流行的付费订阅服务所采用的「算法」相比较,其优势则更为突出。WaniKani(一个专注于汉字和词汇学习的网站)和 Bunpro(一个语法学习网站)所使用的算法可谓极其糟糕,甚至比 SuperMemo-2 那套「1 天、6 天、 天」的规则还要逊色。它们反而采用了一些其他的间隔模式,这些模式看起来简直是凭空捏造出来的:
- WaniKani 的间隔设置:4 小时、8 小时、1 天、2 天、7 天、14 天、1 个月、4 个月,之后永不再现。
- Bunpro 的间隔设置:4 小时、8 小时、1 天、2 天、4 天、8 天、2 周、1 个月、2 个月、4 个月、6 个月,之后永不再现。
这些复习间隔既不会因用户个体差异而调整,也不会因卡片本身的难易度而变化:它们甚至连类似 2.5 那样的可调节难度因子都没有。而那种在最后一次复习之后便「永不再现」的设计更是令人不寒而栗,因为这意味着你所学的知识正在不断流失。
然而,这些甚至还不是最糟糕的部分:这些网站算法最令人诟病之处在于,一旦答错某张卡片,它在复习间隔的阶梯上只会下移一两级,而不是像 SuperMemo-2 那样直接重置到初始间隔,更不会像 FSRS 那样运用机器学习来预测下一次最佳复习时间。这种做法极大地妨碍了记忆巩固,浪费了用户大量时间,并且从根本上将这些学习网站变成了一种日常仪式——让用户为自己遗忘的内容而懊恼,而非为自己记住的知识而欣喜。大约一年前,当我忍无可忍决定弃用 Bunpro 转投 Anki 怀抱时,曾在 Bunpro 的论坛上发帖吐槽过此事。
回顾这段经历,我深刻体会到:Anki 才是真正的王者。尽管有人抱怨其用户界面是开发者而非设计师主导开发的,或是用户必须自己寻找或制作学习卡组,而非直接使用现成的。这些抱怨都有其合理之处。但 Anki 是由一群真正关心学习效率的人在维护的。它会频繁更新,不断朝着提升学习效率的目标迈进。而且,它拥有足够的灵活性,能够陪伴你走过知识获取旅程的每一个阶段。投入时间去精通它,将为你奠定一个受用终身的坚实基础。
拓展阅读
如果你希望进一步了解该领域,以下是我推荐的一些参考链接:
- 了解间隔重复的普适价值:
- 更多关于间隔重复发展历程的故事:
- 《间隔重复简史》简要概述了间隔重复算法随时间演进的过程,尤其突出了 SuperMemo-2 与 FSRS 之间的巨大差异。
- 《我是如何在本科期间发表顶会论文的?[6]》是 Jarrett 以第一人称讲述他如何对该领域产生兴趣并最终成功发表论文的经历。
- 《FSRS for Anki 发展史[7]》由 Jarrett 记述了 FSRS 如何最终被整合进 Anki,以及其集成方式随时间演变的过程。
- FSRS 工作原理详解:
- 《间隔重复记忆算法:e 天内,从入门到入土。[4]》更深入地探讨了遗忘曲线以及构建高效间隔重复算法所依赖的其他模型。
- 《算法详解》全面介绍了 FSRS 算法的细节及其随时间的演变。(建议从后往前阅读。)
- 《FSRS 技术解析》提供了一种在我看来更易于理解的 FSRS 算法阐释。
- 《优化机制详解》比单纯的「运用机器学习」更为详尽地解释了 FSRS 参数的具体训练过程。
- 《最佳记忆保留率探讨》讨论了知识获取量与学习负荷之间的权衡。
- 《关于 FSRS-5、短期记忆及学习步骤的澄清》探讨了尽管 FSRS 的设计初衷是面向长时程记忆,但在何种程度上可被用于短期突击记忆。
- 《基于时序模型与最优控制的记忆算法[5]》是开启这一切的奠基性原始论文。尽管具体的算法此后有所更新,但该论文包含了所有常规学术论文应有的要素,例如与既有研究的比较以及精美的图示。
- open-spaced-repetition/awesome-fsrs 列表收录了 FSRS 在多种编程语言中的实现版本,以及采用 FSRS 的各类抽认卡和笔记软件。
- open-spaced-repetition/srs-benchmark 对 FSRS 与包括 SuperMemo-2、FSRS 早期版本、Duolingo 算法在内的众多其他系统进行了基准测试对比。(有趣的是,唯一能持续胜过 FSRS 的是一种基于 OpenAI Reptile 算法的 LSTM 神经网络。我很想对此作进一步了解。)
感谢 Expertium 审阅了本文的早期草稿并提出了宝贵的意见和修正。
Hacker News 上的相关讨论:Spaced repetition systems have gotten better | Hacker News
Thoughts Memo 汉化组译制
感谢主要译者 gemini-2.5-pro-exp,校对 Jarrett Ye
作者:Domenic Denicola
原文:Spaced Repetition Systems Have Gotten Way Better | Domenic Denicola
发布于 2025 年 5 月 18 日
参考
1. 间隔重复记忆系统(Spaced repetition memory system) ./404257681.html2. 【三万字长文】量子物理学家是如何使用 Anki 的? https://zhuanlan.zhihu.com/p/65131722
3. FSRS 算法简介 ./672908338.html
4. 间隔重复记忆算法:e 天内,从入门到入土。 ./556020884.html
5. KDD'22 | 墨墨背单词:基于时序模型与最优控制的记忆算法 [AI+教育] ./577383961.html
6. 我是如何在本科期间发表顶会论文的?(内含开源代码和数据集) ./543325359.html
7. FSRS for Anki 发展史 ./1907786810685395276.html