什么是 FSRS?Glearn 怎么用它算你的记忆
R · S · D 三个数是什么、怎么来、有什么用,以及 Glearn 在它之上做的两件事
大家都知道单词背过了还会忘,有没有一个公式可以衡量我们的遗忘,把握我们的遗忘规律,从而让我们更好地复习呢?现在就介绍一套这样的算法 FSRS。
FSRS 中有三个参数 R、S、D,我们就逐一介绍它们是什么,怎么来的,以及有什么用。
01 · RetrievabilityR:回忆率
先从 R 说起,R 的英文是 retrievability,中文一般叫做回忆率,是描述某个时候能记起这个单词的概率。例如 R 是 90%,就是九成把握;R 是 50%,就是一半一半。R 越高,此刻越可能记得。
显然,如果不复习的话,因为遗忘的存在,R 是会随着时间持续衰减的。假设一个刚背下的词,第二天 R 就掉到 90%,那么今天 100%,明天 90%,后天 83%,一周后只剩 62%。而且有的词可能忘得比较快,有的则忘得比较慢。
02 · StabilityS:稳定性
这个遗忘的速度如何衡量呢?这个就用到了 FSRS 中 S 这个参数,S 的含义是当 R 下降到 90% 的时候需要的天数,显然下降得越慢说明记得越牢固。其实 S、R 和时间之间是有换算公式的,如图一所示,可以看到 R 是根据 S 随时间变化而变化的。另外图一还可以看到两条曲线,S 是 6 的那条比 S 是 1 的平缓得多,说明记忆衰减得更慢,例如到第三天,S 是 1 的词只剩 77%,S 是 6 的还有 95%,所以 S 越大也就记得越牢固。
图一
t 和 S 总是成对出现:S 越大,同样的天数掉得越少。t = S 时,R 正好 90%。
03 · DifficultyD:难度
现在应该很清楚了,所谓记得牢就是要让 S 变大,那么如何让 S 变大呢?讨论这个问题之前我们要引入 FSRS 中最后一个参数 D 也就是 difficulty 难度。大家都知道不同单词之间的难度是不一样的,那么我们如何量化这个难度呢?FSRS 的做法是看你每次复习答得怎么样,把作答结果分成四档,英文是 Again、Hard、Good、Easy,中文就是忘了、有点难、记得、秒答。每答一次,D 就跟着动一下:答错了 D 往上走,答对了 D 不动或者往下走。D 的取值范围是 1 到 10,越大越难,图二就是 D 随每次答题的具体变化。
图二
04 · 复习之后如何让 S 变大
现在 D 介绍完了,接着说如何让 S 变大,如图三所示,每次复习之后 S 会根据一个系数更新。这个系数越大也就代表了效果越好,决定这个系数主要有三个因素,第一个是难度项,就是说这个单词难度越小系数越大;第二个是时机项,看的是复习那一刻的 R,R 越小(离忘掉越近)这一项越大,效果就越好,而 R 和 S 有固定的换算,R 越小就说明间隔的时间要越长;第三个是评级加成,看的是你这次答得怎么样,有点难加成只剩两成多,记得不加不减,秒答翻三倍。
图三
4.7、0.12、1.02 是训练出来的常数,不用记。只盯两项:时机(R)和难度(D)。
- 难度项 · D 越大,涨得越少
- 时机项 · 离忘掉越近(R 越低),涨得越多
- 评级加成 · 有点难 ×0.23 · 记得 ×1 · 秒答 ×3.0
05 · 复习时机什么时候复习
有意思的是,时机项和评级加成这两项是互相牵制的:为了让 R 变小,间隔的时间就要足够长,不过万一这个时间太长真的忘了,评级就差,又得不偿失,所以效率最高的点就是在这个单词还没忘的情况下尽量拉长时间。也就是,R 掉到 90% 的时候就该复习了,太早没啥用,太晚来不及。如图四所示,首页提醒大家复习的标准就是 R 降到 90% 以下。
图四
每次刚掉到 90% 就复习 · S:1 → 4 → 14 → 46 天
首页 · 复习提醒
有 80 个学过的词记忆掉到了九成以下。
去复习 →06 · Glearn 的设计一四档怎么判
FSRS 介绍完了,根据这套算法 Glearn 有自己的设计考虑。
首先 FSRS 中回答有四个档,在 Glearn 里对应如下:
- 用户在只看英文释义的情况下能拼写对是 Easy
- 在借助发音、例句或者中文释义的情况下拼写对是 Good
- 没有拼写对,不过和正确答案差得不远是 Hard
- 完全不会、直接跳过或者差得非常远是 Again(图五)
图五
拼对了
S 涨得最多,间隔大幅拉长
S 稳稳上升
没拼对
S 只小涨,D 上调一点
S 回落,D 明显上调
有人可能觉得单词一字不差背出来太苛刻,尤其是还要用英文释义。这里我觉得练的时候哪怕强度拉满,用的时候肯定是要打折扣的。练的时候用拼写,可能用的时候也就认识,还是拼不出来,如果练的时候的标准就是认识,用的时候可能认识都做不到。
07 · Glearn 的设计二drill 反复训练
另外我还发现一个问题就是按图一的公式,刚复习完那一刻 R 恒等于 100%,哪怕这个单词一点都不会也一样,答对答错一个样。FSRS 的处理是把答错的词的 S 压得很小,让 R 很快掉下来,不过我认为「刚复习完就当记住」这一点对背单词并不适用,单词不可能说看过就掌握,所以 Glearn 设计了 drill(反复训练模式),在一组训练中,背错的单词会强制反复背,直到正确才能进入下一组,而 FSRS 的统计只以第一轮作答为准,后面几轮只当练习,不计入(图六)。
图六
- 第 1 轮一组 8 个词,逐个拼写进 FSRS · 只记这一次
- 第 2 轮错的 3 个马上再拼只是练习 · 不计入
- 第 3 轮还错的 1 个再拼只是练习 · 不计入
- 全部拼对 → 进入下一组
08 · Glearn 里的标签界面上这些标签什么意思
Glearn 界面上和记忆有关的标签,除了「新词」,全是 R、S、D 这三个数的翻译,对照如下。
- 只看 R。还在 90% 以上是「还没忘」,练它性价比低;掉到 90% 以下是「该练了」;再掉到 50% 以下是「多半忘了」,越早补越省事。
- 「还没忘」只说此刻,不说牢不牢:刚答错的词也是还没忘,牢不牢看下面的熟练度。
首页那句「有 N 个学过的词记忆掉到了九成以下」,数的就是「该练了」和「多半忘了」的词。
- 看 S,就是记忆能撑几天:不到 1 天是生疏,1 到 7 天是认识,7 到 21 天是熟悉,21 到 90 天是掌握,90 天以上是精通。
这是掌握程度,不随时间掉。先练谁看 R,熟练度看 S,别拿熟练度低当「该练」。
- 新词 = 没背过,还没有 R、S、D。
- 现在记不住的 = R ≤ 90%,也是系统默认的取词口径。
- 记得不牢固的 = S 不到 7 天,也就是生疏、认识两档。
- 难的 = D 大于 7。
不管勾哪些,都按 R 从低到高排,最快忘的先练。
09 · 总结三个数,一个时机,两处设计
总结一下:FSRS 用 R、S、D 三个数把遗忘算了出来,R 掉到 90% 就是最佳复习时机;Glearn 在这之上做了两件事,一是用拼写和提示来客观地给四档评级,二是用 drill 把「看过」变成「真会」。