微调一个模型去听指令、或者在数学上再训一轮,它在旧任务上的表现经常会掉,行业里管这叫「遗忘」。但遗忘到底是什么?是一整块知识被覆盖了,还是只是模型输出层对某些 token 的偏好被抬了价?

这个问题听上去无聊,实际很要命:如果遗忘只是后者,那你不需要重新训练,只要在推理时给每个 token 加一个固定的加分或减分,就能把丢掉的东西捞回来。

arXiv 上 10 月 30 日挂的一篇论文认真测了这件事,结论有点扫兴:捞不回来。

14 组模型对,一百万 token 网页文本

作者拿的是 14 组已经公开的 base 模型和它的衍生模型,来自 OLMo-2、Qwen2.5、SmolLM2 三个家族,参数规模 1B 到 7B;其中 SFT、DPO、Instruct 三种后训练各占几行,另有数学、代码方向的继续预训练,以及一组预训练收尾检查点。打分用的是 OLMo-2 预训练混合里一个 DCLM 分片的一百万 token 网页文本,文档截断到 2,047 token;FIT 段前 90% 用来拟合修正、最后 10% 用来选模型,EVAL 完全独立留出。

方法上有个关键细节值得注意:如果你针对一段文本去调一个修正量,任何模型都能被调好看,包括原始 base 模型。所以作者对 base 和衍生模型各拟合一个同样形式的修正,然后只报告衍生模型相对 base 多拿回来的那部分,叫「对称恢复份额」。

偏置最多捞回 9.8%,加温度能到 35.9%

先看只用偏置的结果,范围限定在最高频的 4,096 个 token 上:论文报告的这 14 组配对里,最高的一点估计是 9.8%,来自 Qwen2.5 7B → Instruct,95% 区间 9.2%–10.4%,其余各组都低于 7%。作者在仓库 README 里把这事说得更死:这类修正在全部 14 组上都没能超过 0.20。

加上温度之后数字明显好转:OLMo-2 7B → Instruct 恢复到 35.9%,同族的 DPO 检查点是 33.5%,Qwen2.5 7B → Instruct 是 28.8%。但这里得看清适用面——Qwen2.5 7B → Instruct 那一组的原始损失差只有 0.050 nats/token,本来就没丢多少;SmolLM2 和 Qwen2.5 1.5B 的 Instruct 都在 6% 以下。

顺带一个副产品:拟合出来的温度,后训练过的 OLMo-2 和 Qwen2.5 7B Instruct 都落在 1.08–1.28 之间,而六个 base 模型是 0.996–1.013。作者自己也提醒,这个温度差分不开「纯粹温度变化」和「其他 logit 变化」。

丢得最狠的那批,几乎修不回来

真正扎眼的是继续预训练那几行。Qwen2.5 Math 在 7B 上的损失差是 0.485 nats/token、1.5B 是 0.796 nats/token,是这 14 组配对里最大的两个缺口,而偏置加温度的对称恢复份额分别只有 1.3% 和 1.2%。Coder 那一组差距约 0.13 nats/token,恢复份额基本贴着零(7B 是 0.003,1.5B 甚至是 -0.001)。

README 里那句说得最准:数学方向「丢得最多,也几乎什么都修不回来」。作者补充说明,数学模型每一次样本外修正最多只能拿回 0.031,样本内一步闭式解最多 0.055。

最扎心的对照:随机损坏的模型也「修回」了 29%

这才是这篇论文真正有价值的地方。作者不满足于报告自己测到的数字,他做了一组已知答案的合成实验:给输出权重加随机噪声(高斯噪声标准差 0.25,原始权重标准差 0.5),不植入任何偏置、也不改温度,纯粹随机损坏。

然后用同一套偏置加温度去修。对称恢复份额是 0.290,单独用偏置是 0.076。

也就是说:在一个根本不该有可修之物的模型上,这套修正照样能「修回」三成。论文里那句话很重——光看恢复了多少,并不能说明到底损坏了什么。

反过来,作者也做了植入偏置的正向对照,能恢复 90% 以上;logits 翻倍时拟合出的温度是 1.987,说明这套测量管线本身没坏。另一个 proxy 例子保留权重噪声但改了数据先验,base 模型也跟着受益,把这部分扣掉之后,恢复份额从 0.474 降到 0.299。

所以呢

这篇论文的结论不是「遗忘修不回来」,而是更精确的一句:在这套受限的拟合下,绝大多数真实的模型损失增量够不着。作者在「我们不声称什么」那一节写得很直白——一个分片、三个模型家族、7B 及以下,14 组对比属于探索性工作;排除了特殊 token 上的先验漂移;而且没有单独拟合温度的基线。作者还坦白说,那段打分文本对 OLMo-2 来说很可能就是训练数据。整个原始扫描花了约 13.5 个 A100 小时。

但它留了一个对读者最有用的提醒:任何声称「用某某方法修回了 X% 的遗忘」的说法,都得先回答一个问题——如果我拿一个随机损坏的模型来测,这套方法会报出多少?这篇论文顺手把这个数给算出来了:29%。

论文和数据都公开了,代码和逐文档损失和存在 GitHub 仓库,Zenodo 上有带 DOI 的存档,CC BY 4.0。仓库目前 4 次提交、0 star,还没有任何第三方复现——所以上面每个数字都应该读成「作者自己测的」,不是行业共识。

想真正修好遗忘,得回到权重里去改;想在输出层捞一点回来,最多也就三成左右,而且还得先跟随机损坏的对照组比一比。