灾难性遗忘不是"新旧打架"——旧知识记不住,是因为它没长成"环"

先说结论:持续学习(continual learning)里最头疼的灾难性遗忘(catastrophic forgetting),主流解法都建在同一个假设上------新旧任务在梯度上"打架"。但这个假设可能从一开始就偏了:忘掉的旧知识,往往不是被新知识"挤掉"的,是它自己从来没长成过"环",只是一条"线"。

主流在治什么

给不熟的同学快速对齐一下。灾难性遗忘是这么个事:你拿一个已经训练好的模型去学新任务,学着学着,它把旧任务忘得一干二净。

学术界的标准解法,大致三路:

  • EWC(弹性权重巩固):给"对旧任务重要"的权重加一个二次惩罚,让它们在新训练里别动太多。
  • 经验回放(replay buffer):留一小撮旧样本,新训练时混进去一起喂。
  • 梯度约束:硬性限制新任务的梯度方向,别跟旧任务的梯度方向对着干。

三路都有效,但都盯着同一件事------新旧之间的"冲突"。它们的潜台词是:旧知识是被新知识"顶掉"的。

可这解释不了一个现象:同样是"旧知识",有些模型忘得飞快,有些却能扛住十几个任务的连续训练。如果只是"冲突",为什么有的扛得住、有的扛不住?

忘和忘不掉,差在结构

换个角度看,记忆这东西,有两种形态:

一条线。 知识点 A 串着 B,B 串着 C,一个接一个,排成一串。整条线的稳定性,全靠最前面那个头撑着。新任务一来,从 A 那里一推,整串就散了。为什么?因为每个知识点只有一个"上家",上家一乱,下游全塌。

一个环。 A、B、C 互相记得对方,绕成一圈。A 忘了点什么,B 提醒它;B 断了,C 补上。这个结构不靠某一个点撑着,靠的是点与点之间互相兜底。缺一块,别的地方能补回来。

学新忘旧的那部分知识,多半是"线";能扛住十几年不动的,多半是"环"。

映射回模型:什么是"环"

把"线 vs 环"翻成模型的语言,成环的记忆有三个特征,缺一不可:

一,互相记得,不是单向惩罚。 EWC 给重要权重加惩罚,是"单方面按住它别动"。但真正的稳固,来自权重之间的相互约束------这个参数约束那个参数,那个参数回头又兜住这个参数。单向的惩罚是"线",双向的约束才是"环"。

二,绕一圈回到自己。 一条链从 A 走到 C 就断了,那是线。环的终点要接回起点,形成闭环。落到模型上,就是一组参数之间要存在回路式的依赖,而不是纯前馈的一路到底。

三,在同一段经历里一起记住。 一起被训练、一起被更新的参数,比孤零零各自更新的参数牢得多。因为它们是在"同一时间"刻进权重的,天然互相咬合。这对应到持续学习里,就是那些联合编码、共享表征的部分,比独立参数抗遗忘。

三样齐了,这段知识就成了个环。环越深(套的层数越多),新任务冲进来越冲不散它。成环的记忆,不用你天天护着它;成线的记忆,你一松手就散。

这跟你的工作有什么关系

如果你在干这几件事,这个视角值得你停下来想想:

  • fine-tune 一个基座模型:别只想着"加正则防遗忘",先想想你的旧能力是不是本来就"一条线"------孤立的知识点,没跟别的能力长成环。线你补多少正则都是线。
  • RAG / 知识注入:你把一段知识塞进系统,它跟系统里已有的知识之间,有没有形成"互相记得"的关系?还是只是堆了一堆孤立的事实?
  • 多任务 / 持续学习:与其绞尽脑汁让新旧"别打架",不如想想怎么让旧知识"成环"------让参数之间互相约束、共享表征、形成回路。

主流方法在"冲突"层面打了几十年补丁,方向可能一开始就偏了:真正的问题不是"新旧打架",是"旧知识没长成环"。 成环,才是抗遗忘的根本。


把"泛化""耦合""自我""记忆"这些说不清的东西说清楚,是结构认知 一直在做的事。第一发现者:林小黑,完整推导见 gitee.com/samforce/st...。

相关推荐
垆边人似月.1 小时前
华为题:任务调度
数据结构·c++·算法
垆边人似月.1 小时前
华为题:编辑距离
算法·华为
会灭火的程序员1 小时前
大模型部署硬件资源计算指南:从显存估算到显卡选型
人工智能·算法
信奥卷王1 小时前
[GESP202506 六级] 最大因数(含视频)
数据结构·算法
局部有解1 小时前
Leetcode - 42 接雨水(一维)
数据结构·c++·算法·leetcode
垆边人似月.1 小时前
华为题:矩阵中的最长递增路径
算法·深度优先
小诗懂技术1 小时前
linux驱动中断,相关中断的方式与适用场景
linux·arm开发·驱动开发·算法
不会就选b2 小时前
算法日常・每日刷题--<动态规划>25
算法
Keep_Trying_Go2 小时前
分割算法FastSAM论文详解
深度学习·算法·计算机视觉