从理论视角来分析我们为何不需要暑假作业
今日我亲爱的母亲又催促我完成暑假作业,遂写此文,试图从理论角度论证我们为何不需要暑假作业。
本文不构成任何行动建议,本文的理论框架也不一定正确。
学习的本质是什么?
我们先谈学生阶段的监督学习(Supervised Learning)。
假设存在一个函数:
\[
F(x)=y
\]
其中,$x$ 是题目,$y$ 是答案。学习的目标,就是找到一个近似函数 $\hat{F}$,使它能够根据题目预测出正确答案:
\[
\hat{F}(x)\approx F(x)
\]
现在我们需要一个目标。只要能够求得当前状态与目标之间的差距,就可以不断调整大脑中的参数,使自己的答案逐渐逼近正确答案。
假设学生当前的知识状态由参数 $\theta$ 表示,那么一次学习过程大致可以写成:
\[
\theta_{t+1}=\theta_t-\eta\nabla_\theta\mathcal{L}(\theta_t)
\]
其中:
- $\mathcal{L}$ 表示当前答案与正确答案之间的差距;
- $\eta$ 表示学习率,也就是每次根据错误修改自己的幅度;
- $\nabla_\theta \mathcal{L}$ 表示应该朝哪个方向修改自己的知识和解题策略。
不过,对于学生而言,这一整套复杂过程最终可以被压缩成一个非常 elegant、非常简洁的目标:
\[
\max_\theta \operatorname{Score}(\theta)
\]
也就是:最大化你的分数。
实际上,这个目标是存在 bug 的。
如果你已经预先得到了所有题目 $x$ 与答案 $y$,那么最简单的办法并不是理解其中的规律,而是直接把答案全部背下来。
假设训练集中有 $n$ 道题,那么学生可以通过记忆使训练误差接近于零:
\[
\mathcal{L}{\text{train}}=\frac{1}{n}\sum{i=1}^{n}\ell\left(\hat{F}(x_i),y_i\right)\approx 0
\]
但这并不意味着他真的掌握了知识。当遇到没有见过的新题时,他的测试误差仍然可能非常高:
\[
\mathcal{L}{\text{test}}\gg\mathcal{L}{\text{train}}
\]
这在机器学习中被称为过拟合(Overfitting)。
这一点上,人类学习和机器学习采取了相似的解决方案:划分出“训练集”和“测试集”。
\[
D_{\text{train}}\cap D_{\text{test}}=\varnothing
\]
其中:
- $D_{\text{train}}$ 是平时刷过的题;
- $D_{\text{test}}$ 是考试中从未见过的题。
此时,学生无论怎么背训练集中的答案,也没办法保证在考试中取得高分。于是,他只能“退而求其次”,尝试总结训练集中的规律,再把这些规律应用到测试集上。
真正的学习目标因此不是简单地记住答案,而是最小化未来题目上的期望误差:
\[
\min_\theta\mathbb{E}{(x,y)\sim P{\text{test}}}\left[\ell\left(\hat{F}_\theta(x),y\right)\right]
\]
这样才能获得良好的泛化(Generalization)性能,真正做到“学习”。
回到监督学习。
监督学习的特点,是存在足够密集的反馈信号。
你做一道题,系统立刻告诉你标准答案是什么。你写完一套数学卷子,答案就在后面;你做完一篇英语阅读,A、B、C、D 哪个选项正确,标答已经给你了;你写完一篇作文,老师会告诉你这个句子不高级,那个例子不典型,这个结构不够清楚。
你的每一次输出,后面都跟着一个非常明确的反馈信号:
\[
r_t=
\begin{cases}
1, & \text{答案正确}\
0, & \text{答案错误}
\end{cases}
\]
做对了,打勾。做错了,打叉。
你不知道为什么错,老师或者解析还会进一步告诉你:这里漏了条件,那里公式用错了,这里审题没看清,那里答案格式不规范。
换句话说,在正常的学习环境中,反馈信号不仅密集,而且具有较高的信息量。每次练习都能够提供一次有效的参数更新:
\[
\text{练习}
\rightarrow
\text{反馈}
\rightarrow
\text{纠错}
\rightarrow
\text{能力提升}
\]
这强吗?
显然,如果目标仅仅是最小化与前文那个简单目标之间的差距,那可太强了!
可惜,真实世界并不只是监督学习,它更接近于强化学习。
这一部分会在下一篇文章展开。
为什么我们不需要暑假作业?
撒,细数你的罪恶吧
分布失配
前文所述的监督学习隐含了一种强假设:
\[
P_{\text{train}}(x,y)
\approx
P_{\text{test}}(x,y)
\]
也就是说,训练集和测试集应当来自基本相同的分布。
只有这样,模型从训练集里学到的规律,才可能泛化到测试集上。
然而,现实中这两个分布经常发生失配:
\[
P_{\text{train}}(x,y)\neq P_{\text{test}}(x,y)
\]
假设你每天都在学习德语,最后却要求你去参加数学考试,那么即使你在德语训练集上的损失已经降到了零,也不可能因此获得更高的数学分数。
非常可惜的一点是,暑假作业的分布往往和测试集大相径庭,甚至和正常学习使用的训练集关系也不大。
它可能包含练字,虽然大家应该都会写字;包含大量已经学过的数学题;包含你可能根本没有选择这一科目的化学题。
看起来非常丰富,非常全面,非常有用,实际上却可能出现:
\[
\Delta \operatorname{Ability}
\approx 0
\]
也就是,投入了大量时间,实际能力却几乎没有变化。
当然实际上下学期的数学建立在“上学期的数学”基础上。此时,暑假作业的分布 $P_{\text{homework}}$ 其实与未来测试集 $P_{\text{future}}$ 是有重叠的(比如三角函数、导数基础)。
但是暑假作业为了照顾所有人,通常压低了难题比例,提高了基础题重复率。这导致:
\[
P_{\text{homework}}(x) \quad \text{是均匀/平庸的,而} \quad P_{\text{exam}}(x) \quad \text{是有区分度的(尖峰分布)}
\]
这造成了一种难度上的失配。
更糟糕的是,如果学生长期重复与自身薄弱点无关、与未来考试无关的任务,就可能把有限的时间和注意力浪费在低价值样本上。
假设完成第 $i$ 项任务需要时间 $t_i$,能够带来的能力提升是 $\Delta a_i$,那么它的学习效率可以粗略表示为:
\[
\eta_i=\frac{\Delta a_i}{t_i}
\]
如果某项暑假作业满足:
\[
\eta_i\approx 0
\]
那么它占用的时间越多,机会成本就越高,因为这些时间原本可以用于阅读、运动、补足薄弱知识,或者学习真正感兴趣的内容。
暑假作业并不一定增加泛化能力,甚至可能因为大量重复、机械、低相关性的训练,使学生更加依赖固定题型和固定套路,从而让泛化能力反而变差。
反馈信号稀疏
如前文所述,在学校里学习时,你有极其充足的反馈。
无论是考试、练习还是上课,都有大量信号反馈回来,允许你修正自己的策略。
我们可以定义一个非常粗略的“有效反馈密度”:
\[
\rho=\frac{\text{得到具体纠错的练习数量}}{\text{完成的练习总数量}}
\]
在正常教学中,$\rho$ 通常相对较高。题目做错了,老师会讲;试卷写完了,会有批改;方法不正确,也可能被及时纠正。
而暑假作业所面临的反馈往往是(我没说一定是):
写完了,很好。Nothing Anymore!
老师压根没有那个闲心逐题帮你批改。你吭哧吭哧认真做完,和隔壁昨天刚抄完的小胖,得到的反馈可能没有任何差别。(实际上抄答案有时还能看作一种自监督学习,这里不展开了。)
此时:
\[
\rho_{\text{homework}}
\approx 0
\]
没有反馈,学生就无法知道自己究竟错在了哪里。
甚至可能出现一种更加危险的情况:学生使用错误的方法完成了一百道题,却始终没有得到纠正。于是,每做一道题,都在进一步强化错误策略:
\[
\theta_{t+1}=\theta_t+\eta\nabla_\theta\mathcal{L}_{\text{错误目标}}
\]
看起来进行了大量训练,实际上却是在非常努力地朝错误方向收敛。
从信息论角度看,真正有价值的不是“做了多少题”,而是每道题之后获得了多少能够改变认知的信息。
如果完成任务之后,学生只知道“我写完了”,而不知道“我哪里不会”“哪里错了”“下一次该如何改进”,那么这项任务提供的信息量就非常有限。
因此:
\[
\text{练习量大}
\not\Rightarrow
\text{学习量大}
\]
更准确地说,学习效果取决于:
\[
\text{学习效果}\propto\text{有效练习量}\times\text{反馈质量}
\]
当反馈质量接近于零时,仅仅增加作业数量并不会带来同比例的能力提升。
退一步讲,即使老师批改了,延迟反馈的价值也会大打折扣。
前面提到正常学习中“反馈→纠错→能力提升”的链路是紧密的。而暑假作业的反馈往往是开学后统一检查,延迟长达数周。此时学生早已忘记当时的解题语境和思维过程,反馈几乎无法与他当时的认知状态对齐:
\[
I(\text{反馈}; \text{当时的知识状态} \mid \text{数周后的知识状态}) \approx 0
\]
所以即便有批改,信息也无法被有效纳入参数更新。这进一步降低了它的学习价值。
Reward Hacking
别看这一段的标题是英文,其实 Reward Hacking 非常好理解,意思就是:系统中的参与者找到了某种非预期的手段,在没有真正完成设计者意图的情况下,让表面指标看起来达标了。
暑假作业和平时学习的目标函数根本不一样。
平时学习的理想目标是:
\[
R_{\text{learning}}=\operatorname{Score}+\operatorname{Ability}+\operatorname{Generalization}
\]
也就是提高分数、能力和泛化水平。
但在实际执行中,暑假作业的目标往往退化成:
\[
R_{\text{homework}}=
\begin{cases}
1, & \text{作业本被填满}\
0, & \text{作业本没有被填满}
\end{cases}
\]
老师最终能够低成本检查的,通常不是学生是否真正理解了知识,而是:
- 有没有写;
- 有没有空白;
- 有没有按时交;
- 字数和页数够不够。
于是,学生真正面对的优化问题就从:
\[
\max
\operatorname{Learning}
\]
变成了:
\[
\min
\operatorname{Effort}
\quad
\text{subject to}
\quad
\operatorname{Completion}=1
\]
翻译成人话就是:
在确保作业看起来已经完成的前提下,尽可能少花时间。
在这个目标函数下,搜答案、互相抄写、胡写一气,并不是某些学生突然失去了道德,而是当前评价机制下非常自然的局部最优解。
例如,假设认真完成作业需要十小时,能够获得的外部奖励是“已完成”;抄答案只需要一小时,获得的外部奖励仍然是“已完成”。
那么:
\[
R_{\text{认真完成}}=R_{\text{抄答案}}
\]
但成本却满足:
\[
C_{\text{认真完成}}\gg C_{\text{抄答案}}
\]
如果系统只观察作业是否完成,而无法观察学生是否真正学习,那么从纯粹的优化角度来看,抄答案反而成为了更高效的策略。
这就是 Reward Hacking。
学生成功优化了系统明确测量的指标,却没有完成系统真正希望实现的目标。
换句话说:
\[
\text{作业完成度}
\neq
\text{知识掌握度}
\]
当评价指标不能准确代表真实目标时,对指标进行强力优化,最终只会制造出一本本写得满满当当、知识增量却接近于零的暑假作业。
数据质量低
在做机器学习时尚且需要根据模型不同的归纳偏置(Inductive Bias)去选择合适的数据,然而暑假作业却纯粹是大锅饭,通过信息论的视角,我们可以很容易地看出这种配置的不合理性。
设:
- $K$:学习者当前已有的知识;
- $x$:下一项学习材料;
- $Z$:最终真正希望掌握的能力;
- $c(x)$:学习这项材料所需的时间和精力。
那么,材料 (x) 的边际学习价值可以写成:
\[
\boxed{
V(x\mid K)=\frac{I(Z;x\mid K)}{c(x)}
}
\]
也就是:
\[
\text{学习价值}=\frac{\text{它还能提供多少新信息}}{\text{学习成本}}
\]
它立刻给出三个直觉:
- 已经会的内容,价值低;
- 和目标无关的内容,价值低;
- 太耗时间但收益很小的内容,性价比低。
于是,“学得多”并不等于“学得有效”。真正重要的是单位时间内获得了多少尚未掌握且与目标有关的信息。
假设已经做过一组题 (S),再做一道题 (x) 的收益是:
\[
\Delta(x\mid S)=I(Z;x\mid S)
\]
当已有经验越来越多时:
\[
A\subseteq B
\quad\Longrightarrow\quad
I(Z;x\mid A)\geq I(Z;x\mid B)
\]
翻译成人话:
做过的相似题越多,下一道相似题能够提供的新信息通常越少。
可以写成一个很形象的衰减模型:
\[
\Delta_n=\Delta_1r^{n-1},
\qquad 0<r<1
\]
其中 (n) 是同类练习次数。
总收益为:
\[
G_N=\sum_{n=1}^{N}\Delta_1r^{n-1}=
\Delta_1\frac{1-r^N}{1-r}\]
随着 (N) 增大,总收益确实还在增加,但增长越来越慢:
\[
\lim_{N\to\infty}G_N=\frac{\Delta_1}{1-r}
\]
这就得到一个结论:
机械重复并非完全没有收益,但它的收益存在上限;题量可以无限增加,真正获得的新知识却会逐渐饱和。
简单说“刷题没用”不准确。刷题在前期有用,问题在于暑假作业经常把已经进入饱和区的练习继续批量生产。
为什么我们仍然需要“暑假作业”(以及学校会布置它?)
不像ML中的模型权重存在硬盘上就不再会衰减,人类记忆会持续的衰减。
可以用最简单的指数模型:
\[
K(t)=K_0e^{-\lambda t}
\]
其中:
- $K_0$ 是刚学完时的掌握程度;
- $\lambda$ 是遗忘速度;
- $t$ 是间隔时间。
于是,可怜的人类被迫定期学习自己忘掉的东西,but,“复习的边际价值”不是固定的。
刚学完立刻复习时:
\[
I(Z;x\mid K)\approx 0
\]
因为内容还记得很清楚,复习几乎没有新信息。
过了一段时间后,一部分知识已经模糊:
\[
I(Z;x\mid K(t))
\]
会重新升高。
这自然推出间隔复习:
同一份材料的价值,会随着遗忘先逐渐恢复;最合理的复习时机,不是刚做完就再做十遍,而是在记忆开始松动时重新介入。
可以把复习价值近似写成:
\[
V_{\text{review}}(t)=\frac{\Delta_{\max}\left(1-e^{-\lambda t}\right)}{c}
\]
刚学完时 (t=0):
\[
V_{\text{review}}(0)=0
\]
随着间隔增加,复习价值上升;但等到完全忘光,重新学习的成本也会上升。因此最佳复习时间通常在“即将忘记,但还没完全忘记”的位置。
这样,间隔复习不是经验主义技巧,而是从“信息增益随遗忘恢复”自然推出的。
\[
\boxed{U_t(x)=\frac{I(Z;x\mid K_t)}{c(x)},\qquad K_{t+1}=(1-\lambda)K_t+L(x_t,K_t)}
\]
第一条决定:
此刻学什么最划算?
第二条决定:
已经学会的东西会逐渐流失。
这里的 (L(x_t,K_t)) 是材料带来的知识增长。
于是,理想学习策略是:
\[
x_t^\star=\arg\max_x\frac{I(Z;x\mid K_t)}{c(x)}
\]
也就是每个时刻都选择:
对当前的自己而言,单位时间内能补充最多有效新信息的内容。
这会自动导出几条学习原则。
1. 不应该平均用力
不同知识点的掌握程度不同,所以条件信息量不同。
已经熟练的章节:
\[
I(Z;x\mid K_t)\approx 0
\]
薄弱但重要的章节:
\[
I(Z;x\mid K_t)\gg 0
\]
因此,暑假作业中整齐划一地“每章做二十题”,在数学上并不自然。更合理的是把学习资源投向当前边际收益最高的区域。
2. 错题通常比随机新题更有价值
错误意味着当前知识状态无法正确预测答案,因此往往存在较大的剩余不确定性。
于是:
\[
I(Z;x_{\text{错题}}\mid K_t)>I(Z;x_{\text{已熟练题}}\mid K_t)
\]
当然,这不意味着所有错题都值得反复做。有些只是抄错数字、看错符号,这类错误与目标能力之间的互信息可能很低。
真正高价值的是那些暴露了:
- 概念缺口;
- 错误策略;
- 边界条件遗漏;
- 知识迁移失败;
的题目。
3. 多样化练习优于高度重复
如果两道题几乎等价:
\[
I(Z;x_2\mid x_1)\approx 0
\]
那么第二道题的价值很小。
如果第二道题改变了表述、条件或应用环境:
\[
I(Z;x_2\mid x_1)>0
\]
它能够验证学习者掌握的是抽象规律,还是只记住了第一道题的表面模板。
所以变式训练的价值,本质上来自它减少了不同方向上的不确定性,而不是单纯增加题量。
\[
\text{净知识变化}=\text{新学习}-\text{遗忘}
\]
可以写成连续形式:
\[
\frac{dK}{dt}=u(t)-\lambda K(t)
\]
其中:
- $u(t)$:每天有效学习带来的知识输入;
- $\lambda K(t)$:每天发生的遗忘。
若整个暑假完全不学习:
\[
u(t)=0
\]
则:
\[
K(t)=K_0e^{-\lambda t}
\]
知识会持续衰减。
但为了避免衰减,并不需要每天进行高强度、海量重复。只要平均学习输入能够抵消遗忘:
\[
u(t)\approx\lambda K(t)
\]
就能大致维持现有水平。
因此可以推出:
学校担心暑假中的灾难性遗忘,这个担心并非完全没有道理;但从“需要维持一定学习输入”到“需要一本厚重、统一、重复的暑假作业”,中间并没有逻辑必然性。(当然和管理成本倒是很有关系)
学校真正需要的是:
\[
u(t)>0
\]
但学校通常给出的是:
\[
u(t)\gg\lambda K(t)
\]
而且大量输入来自低边际收益的重复练习。
问题不是“暑假不应该学习”,而是:
\[
\text{保持学习}
\neq
\text{完成固定的大量练习}
\]
什么是我们需要的?
狭义暑假作业
指学校统一发放的练习册、试卷和抄写任务。
其价值近似为:
\[
U_{\text{narrow}}=\sum_i\frac{I(Z;x_i\mid K_i)}{c_i}
\]
如果题目高度重复,后半本的条件互信息会迅速下降。
结果是:
\[
\text{页数持续增长,边际信息趋近于零}
\]
广义暑假作业
指暑假中用于抵抗遗忘、维持认知活动的一切学习:
- 阅读;
- 少量针对性复习;
- 错题回顾;
- 新知识探索;
- 写作;
- 实验和项目;
- 数学思考;
- 真实问题解决。
其目标不是填满纸张,而是维持:
\[
u(t)\gtrsim\lambda K(t)
\]
并尽量最大化:
\[
\frac{I(Z;x\mid K)}{c(x)}
\]
为什么狭义暑假作业不是广义暑假作业
学校布置作业时,并不知道你的当前参数 $\theta$,它只能假设一个“平均学生” $\bar{\theta}$。但你和 $\bar{\theta}$ 的 KL 散度极大,因此统一作业的期望收益 $\mathbb{E}[U_{\text{narrow}}]$ 不仅低于个性化复习,甚至可能为负(因为挤占了本就稀缺的、用于自主探索的认知带宽)。
于是可以得到本文的核心主张:
狭义上的暑假作业并非必要;广义上的暑假学习却是必要的。我们需要的不是一整本重复练习,而是足以抵消遗忘、保持认知活性的高信息密度学习。
附录:我们为什么还是写了?
因为一般而言我们的目标除了有:
\[
\max_\theta \operatorname{Score}(\theta)
\]
其实还有:
\[
\min_\theta \operatorname{AngerFromMotherAndTeachers}(\theta)
\]
也许是这个宇宙上最难优化的目标