5D Library › 学习的85%最优错误率定律、髓鞘化动力学与刻意练习 · English
第五章 交错与集中:必要难度
练习时的表现不是学习
比约克在 1994 年提出了一个影响深远的区分:练习当时的表现,与经过一段时间之后、在新情境中仍然能表现出来的学习,是两回事;某些让练习当时变得更困难、表现更差的条件,反而会让长期的保持与迁移更好,他称之为必要难度(desirable difficulties)(Bjork 1994)。比约克夫妇后来把它与记忆的两种强度联系起来:「存储强度」表示一项知识与其他知识联结得多牢固,「提取强度」表示它此刻有多容易被想起;当提取强度高时(刚学过、一看就会),再练一遍对存储强度的提高很少;正是在提取变得有些困难时,成功的提取对长期学习帮助最大 (Bjork and Bjork 2011)。间隔、检索练习、变化练习条件和交错,都是这类难度的例子。
「必要」两个字很重要:这些难度只有在学习者能够成功应对时才有益。太难,学习者根本无法提取或理解,就不再是「必要难度」,而只是难度。这与第一章「刚好够难」的思想相通,但两者测量的东西不同:85% 法则关心每次试次的学习速度,必要难度关心练习时的表现与长期学习之间的背离。
交错练习:罗勒与泰勒的实验
数学课本的习题通常是集中安排的:学完一种方法,做一组只需要这种方法的题。交错安排则把不同类型的题混在一起,学生每做一道题都要先判断「这是哪一类、该用什么方法」。
证据
罗勒与泰勒 2007,实验二。 大学生学习计算四种不常见几何体的体积。集中组按几何体分组练习,交错组做同样的题目,但顺序打乱,每组四题各含一种几何体。两组各做两次练习,间隔一周,再在一周后测验 (Rohrer and Taylor 2007)。练习中,集中组的平均正确率为 89%,交错组为 60%;一周后的测验中,交错组为 63%,集中组只有 20%。这项实验的样本很小(完成全部环节的只有 18 人),但它的模式后来在许多研究中以不同形式出现。同一篇论文的实验一(60 人)还比较了间隔与集中:一周后测验,间隔组 74%,集中组 49%。
证据
交错效应依材料而异。 布伦迈尔与里希特 2019 年的元分析汇总了 59 项研究(238 个效应量,8,466 名参与者),交错学习的总体效应量为 g = 0.42 (Brunmair and Richter 2019)。效应在不同材料上差别很大:辨认画家风格的绘画学习最大(g = 0.67),自然照片约 0.35,数学任务约 0.34;说明文没有显著的总体效应;以词语为材料的少数研究中,集中反而更好(g = −0.39)。类别之间越相似,交错的好处越大;同一类别内部的样例越相似,好处越小。作者据此认为,交错的作用主要在于帮助学习者注意到区分不同类别的特征。运动技能中的「情境干扰」研究因学习标准不同,未纳入这项元分析。
在科内尔与比约克的绘画实验中,交错学习的效果更好,但多数参与者在实验后认为集中学习更有效 (Kornell and Bjork 2008)。这与上一章重读组对自己记忆最有信心的结果一样:练习时的流畅感,是一个不可靠的学习指标。
一个线索竞争的模型
为什么集中练习「练习时好看、考试时吃亏」?一个可能的解释是:在集中练习中,学习者不需要看题目本身就知道该用什么方法——上一道题用的是什么,这一道多半也是。这个表面线索几乎总能给出正确答案,于是题目本身的深层结构得不到足够的学习。到了混合在一起的测验中,表面线索失效,学习者就不知道该用哪种方法。
四类问题,每类有一个由 12 个二元特征构成的原型,具体题目在原型上随机翻转 15% 的特征;「共享」的特征越多,四类越相似。练习中有两种线索:表面线索(上一道题需要的方法)与深层线索(题目自己的特征)。比较两种学习者:理想贝叶斯学习者按类别统计特征(朴素贝叶斯),它的后验与题目顺序无关;误差驱动学习者用同一个预测误差同时更新两种线索的权重(德尔塔规则),因此两种线索会「竞争」解释答案。练习 64 题(每类 16 题,集中成 8 题一组或完全打乱),然后做 40 道混合测验。这是作者构造的模型,参数为示意值。
推导
# Blocked vs interleaved (author's model, illustrative). 4 types x 12-feature prototypes, 15 %
# flips; "shared" features make types alike. Surface cue = previous problem's type. Ideal Bayes
# (naive Bayes) vs error-driven delta rule where cues compete. 64 practice, 40 test problems.
import math, random
K, T, FLIP, ETA = 12, 4, 0.15, 0.25
def prototypes(shared, rng):
base = [rng.randint(0, 1) for _ in range(K)]
return [[b ^ (j >= shared and (j - shared) % T == k) for j, b in enumerate(base)]
for k in range(T)]
def problem(protos, k, rng):
return [b ^ (rng.random() < FLIP) for b in protos[k]]
def softmax(z):
m = max(z)
e = [math.exp(v - m) for v in z]
return [v / sum(e) for v in e]
def bayes_probs(counts, x):
return softmax([sum(math.log((c[j] + 1) / (n + 2) if b else 1 - (c[j] + 1) / (n + 2))
for j, b in enumerate(x)) for n, c in counts])
def inputs(prev, x):
return [1.0 if prev == k else 0.0 for k in range(T)] + [1.0 if b else -1.0 for b in x]
def session(order, protos, rng, learner, train=True):
hits, prev = 0, None
for k in order:
x = problem(protos, k, rng)
if learner["kind"] == "bayes":
p = bayes_probs(learner["counts"], x)
else:
u = inputs(prev, x)
p = softmax([sum(w * v for w, v in zip(W, u)) for W in learner["W"]])
hits += max(range(T), key=lambda j: p[j]) == k
if train and learner["kind"] == "bayes":
n, c = learner["counts"][k]
learner["counts"][k] = (n + 1, [cj + b for cj, b in zip(c, x)])
elif train:
for j in range(T):
err = (j == k) - p[j]
learner["W"][j] = [w + ETA * err * v for w, v in zip(learner["W"][j], u)]
prev = k
return hits / len(order)
def run(blocked, shared, seed):
rng = random.Random(seed)
protos = prototypes(shared, rng)
order = [k for k in range(T) for _ in range(8)] * 2
if not blocked:
rng.shuffle(order)
test = [rng.randrange(T) for _ in range(40)]
out = []
for kind in ("bayes", "delta"):
L = {"kind": kind, "counts": [(0, [0] * K) for _ in range(T)],
"W": [[0.0] * (T + K) for _ in range(T)]}
out += [session(order, protos, rng, L), session(test, protos, rng, L, train=False)]
return out
if __name__ == "__main__":
print("400 simulated learners per cell; P = practice accuracy, T = test accuracy;")
print("B = blocked, M = mixed (interleaved) practice")
print("shared | ideal Bayes B: P / T M: P / T | error-driven B: P / T M: P / T")
for shared in (0, 4, 8):
res = {b: [0.0] * 4 for b in (True, False)}
for s in range(400):
for b in (True, False):
res[b] = [a + v / 400 for a, v in zip(res[b], run(b, shared, s))]
B, M = res[True], res[False]
print(f"{shared:2d}/12 | {B[0]:4.0%} / {B[1]:4.0%} {M[0]:4.0%} / "
f"{M[1]:4.0%} | {B[2]:4.0%} / {B[3]:4.0%} {M[2]:4.0%} / {M[3]:4.0%}")
# 400 simulated learners per cell; P = practice accuracy, T = test accuracy;
# B = blocked, M = mixed (interleaved) practice
# shared | ideal Bayes B: P / T M: P / T | error-driven B: P / T M: P / T
# 0/12 | 92% / 93% 88% / 93% | 90% / 90% 84% / 91%
# 4/12 | 84% / 86% 80% / 86% | 84% / 77% 74% / 82%
# 8/12 | 68% / 70% 63% / 69% | 79% / 52% 56% / 65%结果分成两半。理想贝叶斯学习者在测验上完全不受练习顺序的影响(例如共享 8 个特征时,集中 70%、交错 69%,差别只是随机误差):对它来说,信息就是信息,什么顺序来都一样。这与威尔逊等人对贝叶斯学习者的评论一致。误差驱动学习者则重现了实验中的反差:练习时集中更好,测验时交错更好;而且类别越相似,反差越大。四类完全不共享特征时,两种安排在测验上几乎没有差别(90% 对 91%);共享 4 个特征时,测验 77% 对 82%;共享 8 个特征时,集中组练习时 79%、测验时只有 52%,交错组练习时 56%、测验时 65%。类别越相似、交错越有利,这与布伦迈尔和里希特发现的「类别间相似性越高、交错效应越大」方向一致。
这个模型的机制来自联想学习中经典的线索竞争:当一个线索已经能预测结果时,同时出现的另一个线索得到的学习就少,这是雷斯科拉—瓦格纳模型的核心特征 (Rescorla and Wagner 1972)。交错练习拿走了表面线索的预测力,迫使学习从题目本身的特征中进行。
注
模型说明了什么,没有说明什么。 第一,模型显示,交错效应不是一切学习者的必然性质:一个理想的贝叶斯学习者不会有这种效应,它出现在依靠误差驱动、线索相互竞争的学习者身上。第二,模型只模拟了「辨别该用哪种方法」这一个环节,没有模拟方法本身的执行;在需要先熟练掌握一种新方法的初学阶段,适度的集中练习可能仍然必要,这也是许多教学建议采用「先集中、后交错」的原因。第三,模型是作者为说明机制而构造的,参数是示意的,不能用来预测某门课的效应量。
什么时候交错
交错对需要辨别的材料最有帮助:不同类型的数学题、容易混淆的概念、风格相似的画家;类别差别明显或材料是需要顺序理解的说明文时,好处不明显甚至可能有害。交错会让练习时的正确率下降,与「维持约 85%」有张力;一种折中是以交错条件下的正确率为准调节单题难度,而不是放弃交错。第八章的试验采用这种组合,并说明它不能分离两者各自的贡献。
本章小结
比约克的「必要难度」区分了练习时的表现与长期的学习。罗勒与泰勒的小样本实验中,集中练习时 89% 对交错 60%,一周后却是 20% 对 63%。元分析显示交错学习的总体效应为 g = 0.42,但依材料而异:绘画最大,数学中等,词语上集中反而更好;类别越相似,交错越有利。线索竞争模型显示,交错效应出现在误差驱动的学习者身上,不出现在理想贝叶斯学习者身上。下一章讨论练习的另一个要素:反馈的时机与粒度。
参考文献
Fan, Y. (2026). The 85% Rule for Optimal Learning, Myelination Kinetics and Deliberate Practice: From Stochastic Gradient Descent and the Zone of Proximal Development to Spaced Repetition, Read Beside Classical Chinese Learning Theory [学习的85%最优错误率定律、髓鞘化动力学与刻意练习] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23761339 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).