Skip to content
Published on

别再重读,合上书回忆 — 测试效应的原始论文与间隔重复算法

分享
Authors

引言 — 最受欢迎的学习法,恰恰是最会背叛你的学习法

回想一下考试前一天。大多数人做的事都一样:重读教材和笔记。划荧光笔,把画了下划线的部分再读一遍,看着眼熟的书页感到安心。"这下我懂了。"

那份安心正是陷阱。重读造就的不是记忆,而是流畅感 — 文字如滑行般进入眼睛的那种熟悉 — 而大脑把这份流畅感误译成了"我懂了"。从论文读心理学第七篇,深入剖析用实验揭穿这一错觉的论文,并把它的替代方案挖到代码层面。这将是本系列最实用的一篇。

2006年的实验 — 重读 对 自我测验

亨利·罗迪格(Henry Roediger)与杰弗里·卡皮克(Jeffrey Karpicke)2006年论文(Psychological Science)的设计堪称教科书级。他们让大学生学习一段短文,但学习方式各不相同。

  • SSSS条件: 把短文重复读四遍(纯粹重读)
  • SSST条件: 读三遍,最后合上书凭记忆写下能想起的内容(测验1次)
  • STTT条件: 只读一遍,连续做三次回忆测验(测验3次)

然后把最终测验分成两个时点来看:5分钟后,以及一周后。

条件5分钟后回忆率一周后回忆率
SSSS(读4次)约83%约40%
STTT(读1次 + 测验3次)约71%约61%

在5分钟后的测验里,重读获胜。可一周过去,排名彻底反转。读了四遍的那组丢掉了一半以上,而读一遍、提取三次的那组守住了大部分。阅读是短期战的技术,提取是长期战的技术。

还有更残酷的细节。学习刚结束时让他们预测"一周后大概能记住多少",结果重读组把自己的记忆预测得最高 — 而实际上他们才是会忘得最多的一组。"觉得懂"和"真懂"是两套不同的系统,而重读只会把前者吹大。

这就是测试效应(testing effect)。测验在成为评估工具之前,首先是一种学习工具。从记忆中取出某样东西这个行为本身,就会提高那段记忆的存储强度。这一效应在此后的课堂现场研究和元分析中被反复证实,是学习科学中最受信赖的发现之一。

第二种材料 — 间隔效应

与测试效应成对的是间隔效应(spacing effect)。这是自1885年艾宾浩斯的遗忘曲线以来存活得最久的记忆法则:同样总量的复习,**分散(spaced)进行也比集中(massed)**进行对长期记忆压倒性地有利。尼古拉斯·塞佩达(Nicholas Cepeda)研究团队2006年的元分析(254项研究,1万4千余人)对此做了量化,后续研究还给出了实用的经验法则:把复习间隔设定为距离考试所剩时间的10~20%左右(一个月后考试就是3~6天间隔)。

为什么间隔会有效?有力的解释是"合意困难(desirable difficulty)"。复习的时刻,记忆必须略微变淡,提取才需要付出努力,而越是费力的提取,越能把记忆强力地重新存储。昨天记的单词今天复习太容易,一个月后又已经消失。存在一个将忘未忘的最佳时刻。

那么,几千张卡片各自的"最佳时刻",人能追踪得过来吗?追不过来。于是算法登场了。

用代码理解 — Anki的心脏,SM-2算法

间隔重复软件(Anki等)的原型,是1980年代彼得·沃兹尼亚克(Piotr Wozniak)的SuperMemo中诞生的SM-2算法。原理很简单:为每张卡片维护一个难度系数,每次成功回忆,就把下一次复习间隔按该系数拉长;失败则把间隔重置。

def sm2_review(quality, reps, interval, ease):
    """One SM-2 update after a review.
    quality: 0-5 self-grade (>=3 means recalled)
    reps: successful reviews in a row so far
    interval: current interval in days
    ease: difficulty factor, starts at 2.5
    Returns (reps, interval, ease) for scheduling the next review.
    """
    if quality < 3:                    # forgot -> relearn from scratch
        return 0, 1, ease

    # ease drifts with how hard the recall felt (min 1.3)
    ease = max(1.3, ease + 0.1 - (5 - quality) * (0.08 + (5 - quality) * 0.02))

    if reps == 0:
        interval = 1                   # first success: see it tomorrow
    elif reps == 1:
        interval = 6                   # second success: ~a week out
    else:
        interval = round(interval * ease)  # then multiply out
    return reps + 1, interval, ease

# simulate one card always recalled with quality 4
reps, interval, ease = 0, 0, 2.5
schedule = []
for _ in range(7):
    reps, interval, ease = sm2_review(4, reps, interval, ease)
    schedule.append(interval)
print(schedule)   # -> [1, 6, 15, 37, 90, 219, 533]

看看输出。1天、6天、15天、37天、90天……复习间隔呈几何级数扩大。七次复习,就把一张卡片一直排到了一年半以后。间隔效应(不断扩大的最佳间隔)和测试效应(每次复习都是提取测验),被20行代码同时实现了。即便每天新增20张卡片,每日复习量也不会爆炸,原因就在这种指数级的间隔里。

顺便一提,现代的Anki除了SM-2的后代,还提供像FSRS这样显式建模记忆概率的最新调度器。但无论哪种调度器,心脏都一样:取出来,就在快要忘记之前。

我们要带走的 — 学习法的替换清单

这一篇的实践很明确:在学习流程里执行下面这些替换。

  • 重读 → 合上书回忆。 读完一章就合上书,在白纸上试着做总结。卡住的地方,正是该复习的地方。用提取的不适取代流畅的安心 — 这是刻意练习中"走出舒适区"的原理应用到记忆上的形态。
  • 荧光笔 → 编写问题。 划下划线是在预约未来的重读。不如就地写下你要考自己的问题。一份好的问题清单,本身就是一张考卷。
  • 临时抱佛脚 → 间隔排期。 距考试还有4周,就别把同样的8小时挤进一天,而要拆成间隔3~5天的4次。总量相同,结果却不同。
  • 记忆型科目 → 间隔重复工具。 英语单词、资格证、医学与法律知识这类事实密度高的领域,是Anki类工具的主场。不过,卡片自己做的比别人做的好,因为做卡片本身就是第一次提取练习。

对开发者同样适用。新语言的语法、总记不住的命令、系统设计模式 — 因为存在一场"搜一下就行"行不通的最终考试,也就是面试与故障现场,工程师的学习归根结底也是一场提取的游戏。

原文阅读指南

  • 测试效应: Roediger, H. L., & Karpicke, J. D. (2006). Test-enhanced learning: Taking memory tests improves long-term retention. Psychological Science, 17(3), 249-255.
  • 间隔效应的元分析: Cepeda, N. J., Pashler, H., Vul, E., Wixted, J. T., & Rohrer, D. (2006). Distributed practice in verbal recall tasks: A review and quantitative synthesis. Psychological Bulletin, 132(3), 354-380.
  • 现场应用综述: Dunlosky, J., et al. (2013). Improving students' learning with effective learning techniques. Psychological Science in the Public Interest, 14(1), 4-58. — 10种学习法的评级表。重读和荧光笔拿到最低等级的那一幕堪称精华。

阅读提示:罗迪格与卡皮克的论文,全部精华都在图1(5分钟/2天/1周测验的分条件柱状图)。邓洛斯基的综述,只看表4按技法给出的综合评级,就能顶十本学习方法书。下一篇是身体系列的论文版,睡眠负债的剂量-反应实验