重新思考间隔重复算法

Jul 22, 2025

我想做一个懂你的间隔重复算法。

明明下午在地铁上有20分钟空闲,但传统记忆软件非要我"明天再复习"。等到明天,那些本来还有点印象的单词已经变成彻底的陌生人。

这让我开始思考:为什么我们还在用20年前设计的算法,应对今天完全不同的生活方式?

传统的间隔重复算法很"科学":第1天→第3天→第7天→第14天...

但它假设了一个不存在的理想用户:

  • 每天固定时间学习
  • 永不延迟复习
  • 记忆力标准化

现实呢?我们在地铁上刷5分钟,午休学10分钟,晚上如果不加班可能有30分钟。我们会因为出差错过复习,会因为加班打乱节奏。

当算法不理解真实生活,失败就成了必然。

我想设计一个不一样的算法,核心公式如下:

下次复习间隔 = 当前间隔 × IF × EF × DF × PF × TF

看起来很复杂?其实每个因子都在回答一个简单的问题。

五个因子,五个问题

  1. IF(间隔因子):这次记住了吗?

三个按钮,诚实点击:

  • 忘记了 = 0.25(间隔缩短到1/4)
  • 有点难 = 0.6 (间隔缩短到60%)
  • 很容易 = 1.5 (间隔延长到150%)
  1. EF(难度因子):这张卡片有多难?

范围:1.3 - 2.8 初始值:2.0

每次你选择后,算法都在悄悄调整:

  • 忘记了:EF降低32%("这个词对你来说有点难")
  • 有点难:EF不变("保持现状")
  • 很容易:EF提升8%("你在进步!")

想象你学"algorithm"这个词:前两次都忘了,EF从2.0降到1.36。第三次终于记住了,EF开始回升。经过10次复习后,EF稳定在2.3——你已经征服了它。

  1. DF(延迟因子):你迟到了多久?

DF = e^(-延迟小时数/计划间隔小时数) ,用指数函数计算,因为遗忘本身就是指数级的:

  • 准时复习:DF = 1.0(无惩罚)
  • 延迟25%:DF ≈ 0.78(轻微惩罚)
  • 延迟50%:DF ≈ 0.61(下次间隔缩短39%)
  • 延迟100%:DF ≈ 0.37(下次间隔缩短63%)

特别的是,如果你延迟超过100%且选择"忘记",算法会说:"没关系,我们重新开始。"直接重置到2小时,迟到不可怕,算法理解并相应调整。

  1. PF(个人因子):你是哪种学习者?

算法会慢慢理解你,而不是强迫你适应它:

范围:0.7 - 1.3
初始值:1.0
# 每100次交互后
if 记忆保留率 > 90%:
    PF慢慢增加  # "你很厉害,可以学得更快"
elif 记忆保留率 < 70%:
    PF慢慢减少  # "慢一点没关系,我陪着你"
  • 记忆超人(保留率>90%):PF逐渐升至1.3
  • 普通人(保留率70-90%):PF保持1.0
  • 需要帮助(保留率<70%):PF降至0.7

如果你是"需要帮助型"(PF=0.7),这不是惩罚,而是保护。

算法在说:"我知道你需要看到这个词更多次,我会安排得更频繁,直到你真正掌握。"

  1. TF(时间因子):睡眠巩固的秘密

24-72小时的间隔会获得1.2倍加成,因为睡眠期间大脑会"重播"白天的记忆。这是基于神经科学研究的真实数据。

  • 间隔 < 24小时:TF = 1.0
  • 间隔 24-72小时:TF = 1.2(睡眠巩固加成20%)
  • 间隔 > 72小时:TF = 1.0

为碎片化时间而生

最关键的改变是初始间隔从1天缩短到2小时

为什么?我观察了自己的手机使用记录,发现平均每2.3小时会自然地拿起手机。既然改不了这个习惯,不如利用它。

实际学习节奏:

  • 早上9点学"algorithm"
  • 11点提醒复习(2小时后)→ 选"容易" → 6小时后
  • 下午5点再复习 → 选"容易" → 明天中午(获得睡眠加成)
  • 第二天复习 → 3天后见

特殊交互效应

1.延迟+忘记 = 温柔的重来

当你既延迟又忘记时,算法不会说"你真糟糕",而是承认这次失败,给你全新的开始。

2.连续困难 = 不离不弃

如果一个词连续4次都选"困难",EF会逐步降低,但当你第5次终于选"容易"时,EF立刻回升。算法从不放弃任何一个词,只是调整策略陪你攻克难关。

3.高EF+高PF = 效率的飞跃

当简单词汇遇上记忆力强的你,间隔可能达到数月。但系统会设置180天上限——再简单的东西,半年不见也会陌生。

写到这里,我突然有点激动。

不是因为设计了什么高深的算法,而是因为终于有一个算法在说:"嘿,我知道你很忙,我知道你会延迟,我知道你记性可能不太好,但没关系,我会调整自己来适应你。"

记忆很苦,但我们可以让它甜一点。

https://shelchin.com/posts/feed.xml