关于遗忘曲线,大多数介绍停在那个向下弯曲的示意图上,配一句"要趁早复习"。图是画对了,但结论给得太弱——如果这条曲线是真实的数学关系,那它应该能回答一个更具体的问题:

下一次复习,到底安排在第几天?

这篇文章就把这件事算出来。结论不复杂,但算的过程能让你看清间隔复习为什么必须"递增"。

一、把记忆强度写成一个函数

艾宾浩斯曲线的形状,用指数衰减描述得相当好:

R(t)=e−t/SR(t) = e^{-t/S}

其中:

  • R(t)R(t) 是经过时间 tt 之后,记忆的保留率,取值在 0 到 1 之间。
  • SS 是记忆强度,单位是时间。它决定这条曲线衰减得多慢。
  • 注意 SS 出现在分母的指数上,所以 SS 越大,衰减越慢——这就是"记得牢"的数学含义。

这条式子里没有任何"复习"的痕迹。它描述的是放任不管的情况。复习的作用,是改变 SS 的值。

二、什么时候该复习

假设我们把复习时机定在保留率掉到某个阈值 θ\theta 的时候。比如 θ=0.6\theta = 0.6,意思是"等记住的东西只剩六成时,就该复习了"。

代入 R(t)=θR(t) = \theta 解出 tt:

θ=e−t/S⟹t=−Sln⁡θ\theta = e^{-t/S} \quad \Longrightarrow \quad t = -S \ln \theta

这个结果很干净:该复习的时间点,和记忆强度 SS 成正比。

ln⁡θ\ln \theta 是一个负的常数,所以 tt 是正数。θ\theta 定得越低(越晚复习),这个乘数越大。

举几个具体的数:

阈值 θ\theta−ln⁡θ-\ln \theta若 S=2S = 2 天若 S=10S = 10 天
0.80.2230.45 天2.2 天
0.60.5111.0 天5.1 天
0.40.9161.8 天9.2 天

看最后两列。同样的阈值,因为 SS 不同,复习时间差了五倍。

这就是为什么固定的复习计划——"每三天复习一次"——对一部分内容是浪费,对另一部分是灾难性的不足。计划必须跟着 SS 走。

三、复习为什么能让间隔变长

关键的一步在这里:复习不只是把 RR 拉回 1,它还会提高 SS。

在间隔复习的实验数据里,每次成功提取之后记忆强度大致按一个固定比例增长。把这个写成递推关系:

Sn+1=Sn⋅kS_{n+1} = S_n \cdot k

其中 k>1k > 1 是每次成功复习带来的强度增益。因为 SS 是几何增长的,而间隔 tn=−Snln⁡θt_n = -S_n \ln\theta 与 SnS_n 成正比,所以间隔本身也是几何增长的:

tn=t0⋅k nt_n = t_0 \cdot k^{\,n}

这解释了间隔复习里那个看起来很随意的序列:1 天、3 天、7 天、21 天。它不是谁拍脑袋定的,取 k≈2.5k \approx 2.5、t0≈1t_0 \approx 1 天,算出来就大致是这条序列。

一个必须说的前提

递推式 Sn+1=Sn⋅kS_{n+1} = S_n \cdot k 只在提取成功时成立。

如果复习时想不起来,SS 不升反降,正确的处理是回到上一个更短的间隔重新开始,而不是在同一个时间点上反复重读。这也是为什么复习必须用"回忆"而不是"重看"——重看时你并没有真正提取,SS 也就没有理由增长。

四、把它写成代码

上面整套逻辑只有十几行。给定初始强度、增益系数和阈值,就能打印出一份复习日程:

const THETA = 0.6        // 保留率阈值
const GAIN = 2.5         // 每次成功复习的强度增益
const INITIAL_STRENGTH = 1  // 初始记忆强度(天)

function schedule(rounds) {
  const days = []
  let strength = INITIAL_STRENGTH
  let elapsed = 0

  for (let n = 0; n < rounds; n++) {
    const gap = -strength * Math.log(THETA)
    elapsed += gap
    days.push({ round: n + 1, gap, elapsed, strength })
    strength *= GAIN
  }
  return days
}

console.table(schedule(6))

跑出来的结果,间隔和累计天数大致是这样:

round  gap(天)  累计(天)
  1     0.51      0.5
  2     1.28      1.8
  3     3.19      5.0
  4     7.98     13.0
  5    19.95     32.9
  6    49.88     82.8

第六次复习被排到了两个半月之后。这正是我们想要的效果——越是已经记住的东西,越不需要频繁打扰。

五、这套模型的边界

必须说清楚它不解决什么,否则很容易用过头。

第一,它只管"记住",不管"理解"。 上面每一个式子描述的都是保留率,没有任何一项关于理解深度。没弄懂的内容进了这个队列,只会被高效地巩固成误解。

第二,θ\theta 和 kk 不是普适常数。 表格里那些数字依赖具体取值,而真实取值因人、因内容而异。它们应该从你自己的复习记录里拟合出来,而不是照抄别人的。

第三,模型忽略了一个重要因素:内容和内容之间是有关联的。 复习"化学反应"会顺带强化"光合作用",因为它们在图谱上相邻。单条曲线的模型看不见这层关系,这也是为什么我们最终把它和知识图谱放在一起用。

小结

把三件事连起来看:

  1. 保留率按 R(t)=e−t/SR(t) = e^{-t/S} 衰减,SS 越大越慢;
  2. 该复习的时间点是 t=−Sln⁡θt = -S\ln\theta,与 SS 成正比;
  3. 每次成功提取让 SS 乘以 kk,于是间隔几何增长。

所以"间隔复习有效"这句话的真实含义是:它在利用记忆强度自身的增长,自动把复习频率降下来。 频率下降不是偷懒,是记忆变强的结果。


工具与模板区的间隔复习计划器就是这套公式的实现,包含从复习记录拟合 kk 的部分。