从理论视角来分析我们为何不需要暑假作业

8.4k 词

从理论视角来分析我们为何不需要暑假作业

今日我亲爱的母亲又催促我完成暑假作业,遂写此文,试图从理论角度论证我们为何不需要暑假作业。
本文不构成任何行动建议,本文的理论框架也不一定正确。

学习的本质是什么?

我们先谈学生阶段的监督学习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{学习成本}}
\]

它立刻给出三个直觉:

  1. 已经会的内容,价值低;
  2. 和目标无关的内容,价值低;
  3. 太耗时间但收益很小的内容,性价比低。

于是,“学得多”并不等于“学得有效”。真正重要的是单位时间内获得了多少尚未掌握且与目标有关的信息

假设已经做过一组题 (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)
\]
也许是这个宇宙上最难优化的目标