大模型也会"用进废退":一篇论文教你看懂AI持续学习的底层逻辑
(来源:科技行者)
你有没有想过一个问题:ChatGPT这样的模型上线之后,真的就一成不变了吗?
答案显然是否定的。现实世界里,一个部署中的语言模型会不断接收新东西:用户的反馈、检索回来的文档、工具调用的结果、甚至模型自己生成的对话记录。这些东西迟早要被"喂"回模型里,让它变得更聪明。这个过程,学术圈管它叫持续学习
持续学习*:指模型在部署之后持续从新数据中学习、更新自己,而不是训练一次就永远冻结的学习范式。
但这里有个麻烦事。每一次喂新数据进去,模型内部其实都在发生三件纠缠在一起的事情:该学哪些东西、学了之后到底改变了什么、以及学了这么多次之后,它是不是还能继续学新东西。这三件事,过去被分成三个互不相关的研究领域来做:数据该怎么选叫"数据归因",学了新东西把老本事忘了叫"灾难性遗忘",学着学着变笨了叫"可塑性丧失"。
今天要聊的这篇论文,来自牛津大学OATML实验室、UBC和Google DeepMind的研究者们,做了一件挺大胆的事:他们说,这三个看似不同的问题,其实是同一个底层机制在不同时间尺度上的表现。而且他们真的把这个机制用数学公式拆解出来了,拆到可以在训练过程中随时"forward"一遍就能算出来,不需要反向传播。
这就好比医生原本要给你验血、拍片子、做心电图三项检查,结果发现其实只要看一张体检报告里的某个指标,三件事都能一次性看明白。如果不这样做会怎样?你就得把血液科、影像科、心内科的号都挂一遍,还得等三份不同格式的报告互相对照,效率低不说,还容易漏掉它们之间的关联。
一次更新,到底改变了什么
先说清楚论文要解决的核心问题。
设想模型正在学习一个新的文本片段,这个片段里有个词叫"更新词"(记作u),模型对它做了一次梯度下降。这时候你想知道:这次更新,会不会影响模型对另一个词(记作o,"观察词")的预测置信度?
这个问题看起来简单,但要精确回答,传统做法得算整个模型的雅可比矩阵
雅可比矩阵*:描述模型输出如何随每一个参数变化而变化的矩阵,在大模型里参数动辄数十亿,完整计算这个矩阵几乎不可能实现。
对于一个几十亿参数的大模型来说,这种计算量是天文数字。研究者们于是做了一件事:把这个"一个词的学习如何影响另一个词的预测"这个量,拆解成几个可以从前向传播直接读出来的部分。
具体怎么拆?先看模型的基本结构:输入文本经过很多层Transformer块,最后经过一个共享的输出层(论文里叫"readout",也就是把隐藏向量映射到词表大小的那个矩阵),再过softmax变成概率分布。
readout*:语言模型最后一层的线性变换矩阵,负责把模型内部的隐藏表示转换成词表上每个词的预测概率,这个矩阵被词表里的每一个词共用。
研究者把softmax之前的那个"信号"称为token force(词力),它衡量的是模型预测和真实标签之间的误差方向。然后,通过把梯度沿着残差流(Transformer里那条贯穿始终的"直通车")向前追溯,同时只保留最主要的那条恒等路径(忽略掉那些绕来绕去的高阶路径),他们推出了一个公式:一个更新对另一个预测的影响,可以拆成两部分。
第一部分叫CH1(直接通道),它衡量的是两个词在词表空间里的"力"是不是对得上,说白了就是两个词的预测误差向量是不是指向相似的方向,同时乘以两者在最后一层隐藏表示上的相似度。这部分抓的是那种一眼就能看出来的、很直白的关联,比如两个句子问的是同一类问题。
第二部分叫CH2(扩散通道),它通过共享的readout矩阵把两个词的力都投影一遍,再看这两个投影后的向量像不像。因为readout矩阵不是对角矩阵,不同词之间存在耦合关系,所以哪怕两个词表面上八竿子打不着,只要它们在readout矩阵里对应的方向有重叠,这个通道就能捕捉到一种更隐蔽的关联。
这就好比你在一个大型办公楼里找同事聊需求。CH1是你直接认识的同部门同事,你们坐得近,说话风格接近,一眼就知道谁在做类似的事。CH2则像是公司内部的一套共享资源系统,比如打印机、会议室调度表,哪怕两个人分属完全不同的部门,只要他们都频繁用同一台打印机,公司后台就能从打印记录里发现他们其实在协作同一个项目。如果没有这套共享系统(也就是没有CH2这个通道),你就只能看到直接认识的人之间的关联,那些藏得更深、需要绕一圈才能发现的联系就彻底漏掉了。
论文里专门做了个实验验证这一点:如果任务之间表面相似度很高(比如都是英文数学题),CH1自己就能达到接近满分的识别准确率,CH2锦上添花的效果不大。但一旦换成跨语言场景,比如用中文、法语、韩语、西班牙语问同样一道数学题,CH1的识别力就明显下降,这时候CH2能把MMLU任务的检索准确率从0.488提升到0.625,GSM8K从0.445提到0.600。这说明当表层的词汇重叠消失后,藏在readout矩阵里的深层语义关联开始发挥作用。
这套方法最吸引人的地方在于,它只需要前向传播就能算出来,不用反向传播,计算量比传统的梯度归因方法小得多。论文里用它在数据选择任务上跟好几种主流方法(DataInf、HyperINF、LESS)做了对比,效果不落下风,速度却快出一大截。
学坏的两种方式:一击致命还是温水煮青蛙
聊完了"什么是好的更新",接下来该聊"坏的更新会怎么破坏已有的知识"了。
这就是传统意义上的灾难性遗忘。但这篇论文的贡献在于,它把遗忘拆成了两种性质完全不同的机制,一种叫碰撞(collision),一种叫侵蚀(erosion)。
灾难性遗忘*:模型在学习新任务时,突然大幅丢失之前学到的能力,这是神经网络自1989年就被发现的老问题。
碰撞指的是:某一次更新的力特别大,直接和已有的高置信度预测狠狠撞在一起,导致模型瞬间"翻脸"。论文举了个特别形象的例子:模型本来知道"Acme公司的CEO是Alice",突然来了一条新闻说"Bob被任命为新CEO",这一次更新的力道极强,会连带影响到所有涉及"Alice"这个词的预测,哪怕那些预测跟CEO换届这事完全没关系。
侵蚀则完全不同。它不是某一次更新造成的,而是无数次微弱的、方向一致的小推力,日积月累地把模型的行为往另一个方向拽。论文里举的例子是:你用GSM8K(数学应用题数据集)反复训练模型,模型被训练成总是先写"To solve this problem..."再给答案。这时候如果你拿一道MMLU选择题(本该直接回答A/B/C/D)去测试,会发现模型的输出概率一点点地往"写一段推理过程"这个方向偏移,尽管每一次偏移单独看都很微小。
这两种机制该怎么分辨?论文给出了一个漂亮的数学工具:更新能量
更新能量*:论文里定义为预测误差向量的平方范数(Eu=‖gu‖?),它衡量的是一次更新和模型当前预测之间的冲突有多剧烈。
研究者证明了一个很直观的结论:如果一次更新的能量特别大(超过某个阈值),那它一定在某个非目标词上产生了很大的负向力,这在数学上是可以严格证明的。反过来,如果某个负向力特别大,那这次更新的能量也一定很大。这意味着,你可以用一个简单的标量(更新能量)来提前预警哪些更新有可能引发碰撞式的遗忘。
碰撞和侵蚀需要用完全不同的方法来治。论文用实验证明了这一点。
如果你把能量过高的更新直接屏蔽掉(比如设定阈值1.8或1.5),能有效减少碰撞,而且对下游任务的学习影响很小,GSM8K准确率最多掉2.6个点。但如果阈值设得太狠(比如1.0),会连很多正常的语义学习信号一起屏蔽掉,模型的下游学习能力大幅受损,甚至快要退回到微调之前的水平。
但同样的能量控制手段,对侵蚀几乎没用。论文用一个指标P(A...D),也就是模型在答案位置上给A/B/C/D四个选项的总概率来衡量侵蚀的程度,发现不管怎么调节能量阈值,这个指标几乎纹丝不动。
那侵蚀该怎么办?论文给出的方案是格式隔离:让微调时用的回答格式和部署时用的回答格式不一样。他们做了个对照实验,先让模型在某种格式下学会MMLU的答题方式,然后用另一种格式(比如把"Question/Answer"换成"Problem/Result")去微调GSM8K。结果发现,只要两种格式不一样,MMLU的指令遵循能力基本能保住;但如果格式一样,指令遵循能力会大幅下降。更关键的是,两种情况下GSM8K本身都学得很好,说明格式隔离不是牺牲了学习效果去换取了记忆保留,而是把干扰重新导向了别处。
这就好比你家里养了两只猫,一只只在客厅活动,一只只在卧室活动。如果你给两只猫用完全相同的猫粮盆和猫窝摆放方式,它们会互相抢地盘,家里天天鸡飞狗跳。但如果你给它们划分清楚各自的专属区域(哪怕猫粮牌子一样),冲突就会大大减少。这不是说两只猫变乖了,而是你从物理空间上重新分配了它们的"势力范围"。格式隔离做的就是这件事:它没有让新任务和老任务的学习信号变弱,而是把它们各自"圈"在了不同的表达形式里,减少了相互踩踏的机会。
学得越多,是不是反而越难学新东西
前两部分讲的是"单次更新怎么影响别的行为",以及"负面影响怎么累积成遗忘"。但持续学习还有一个更深层的问题:一个模型被反复训练了很多很多次之后,它还能不能高效地学习全新的东西?
这就是可塑性丧失的问题,在强化学习领域早就被注意到了,但在大语言模型的持续训练场景下,直到最近才开始被系统研究。
可塑性丧失*:模型经过长期训练后,对新任务的学习能力逐渐下降的现象,哪怕这个新任务和之前训练的数据完全不重叠。
论文给出了一个特别巧妙的切入点:既然前面已经证明,readout矩阵(也就是模型最后那个共享的输出投影层)决定了CH2通道能不能把学习信号从词表空间传递到隐藏空间,那么如果这个readout矩阵本身被训练"重塑"了,会怎样?
答案是:不同任务会在readout矩阵里激活不同的方向。如果你持续在一个任务上训练,这个任务相关的方向会被不断强化,但那些跟当前任务无关的方向,会逐渐失去传递信号的能力。论文把这个能力量化成一个指标,叫readout transmission(读出层传输率),本质上是一个瑞利商,衡量的是某个任务的更新信号经过readout矩阵之后,还剩下多少能量能真正传到模型的骨干网络里。
研究者做了一个实验:让模型在PubMed(医学文献)数据上做长达约1亿token的持续训练,同时在GSM8K、MBPP(代码任务)、Dolly-QA三个分布外任务上持续测这个传输率指标。结果非常清楚:三个分布外任务的传输率随着训练进程持续下降,而分布内的PubMed任务本身却没有出现类似的系统性衰减。
这说明了什么?说明这不是那种"训练久了整体能力都变差"的均匀衰退,而是一种有选择性的重塑:模型把readout矩阵的"带宽"越来越多地分配给当前正在学的任务,代价是那些暂时用不上的方向逐渐被挤占。
更值得警惕的是,这个过程可能会自我强化。论文推导了一个理论上的循环:某个任务的传输率一旦下降,这个任务的学习信号传到骨干网络的力度就变弱,接下来如果还要继续学这个任务,模型可能就更依赖readout层本身去硬撑,而这进一步把readout矩阵往"当前支持的方向"上继续挤压,形成一个越缩越窄的瓶颈。
这就好比一条常年不清淤的河道。刚开始河床还算宽阔,水流能均匀地漫过整个河道。但如果你常年只往河的一侧倾倒泥沙(好比反复训练同一类任务),这一侧的河床会越淤越高,水流被迫全部挤向另一侧那条越来越窄的通道。时间久了,哪怕你想让水流重新均匀分布,河道本身的地形已经变了,水很难再漫到原来那片区域。如果不去管它,淤积只会越来越严重,这条河最终可能只剩一条细细的水道还能通。
那这条"淤塞的河道"能不能疏通?论文给出了答案:能,而且效果立竿见影。他们把readout层重置回训练前的初始状态,再继续做下游任务微调,发现验证损失明显改善,模型重新变得"好学"了。他们还试了重置最后四层Transformer块(连同readout一起),效果比只重置readout略好一点,但提升有限。这说明readout确实是可塑性丧失的一个重要来源,但不是唯一来源。
论文里还做了一个很有说服力的横向对比:把所有模型、所有任务、所有训练检查点上measure出来的"readout传输率下降幅度"和"reset之后带来的性能提升幅度"放在一起看相关性,结果Spearman相关系数达到0.83(分布外任务单独算是0.73)。这意味着这个诊断指标不是拍脑袋想出来的摆设,它真的能预测"这个场景值不值得去重置readout"。
数据说话:这套方法到底好在哪
光有理论不够,论文里用了大量实验来验证这套框架的实际效果,我挑几个比较有代表性的数字给你感受一下。
在受控的数据归因基准测试里(句子变换任务和数学题任务),CH1这一个通道就已经能把AUC做到接近1.0(满分),Top-K召回率接近0.99。作为对比,传统的影响函数方法DataInf大概是0.98的AUC,效果虽然也不错,但计算复杂度是O(nd_in\*L),比CH1的O(nd)要昂贵得多。
在跨语言检索任务上,CH1+CH2组合在MMLU上把准确率从随机基线的0.025拉到0.625,在GSM8K上从0.020拉到0.600,这比LESS、HyperINF等基线方法都要高出一大截。
在真实的下游微调场景里,用CH1+CH2选出的前5%训练数据去微调Qwen2.5-1.5B,最终GSM8K准确率能达到0.636,比随机选择的0.610和LESS方法的0.587都要高。
这些数字背后有个共同的特点:这套方法几乎不需要额外的反向传播开销,却能在多个维度上追平甚至超越计算量大得多的传统方法。
写在后面
读完这篇论文,我印象最深的其实不是那些漂亮的公式推导,而是一个更朴素的观察:研究者们没有满足于"发现一个现象",而是执着地想把它落到一个前向传播就能算出来的量上。这个执念很关键。
因为如果一个诊断工具需要反复做完整的反向传播才能用,那它在实际的大模型训练场景里基本就是个摆设,没人会为了监控训练过程而额外付出几倍的计算成本。这篇论文真正有价值的地方,是它把"理论上说得通"和"工程上用得起"这两件事同时做到了。
还有一个细节让我挺触动的,是关于"冷启动"的那部分补充实验。论文发现,这套近似方法在模型刚初始化的时候,虽然能准确判断两个交互的"强度"(绝对值意义上),但判断不准"方向"(到底是正面影响还是负面影响),符号经常是错的。但只要让模型在目标数据分布上先热身训练哪怕100步(不到整个训练过程的1%),这个符号判断的准确率就会迅速恢复正常。这个现象本身没有被完全解释清楚,论文作者也坦诚地说这是一个开放问题。我觉得这恰恰是研究诚实的地方:不是所有现象都能马上给出完整解释,但把现象本身如实记录下来,比强行编一个解释更有价值。
这套框架目前还没解决的问题也不少:它对多股残差流的架构(比如Hyper-Connections)、专家混合模型的路由机制都还没做细致处理;它依赖的是一阶近似和身份路径近似,忽略了更高阶的残差传播路径;而且它本质上还是一个局部的、单步的分析工具,要真正理解一整条几百步甚至上万步的训练轨迹是怎么演化的,还需要更系统的、跨越时间尺度的理论。
但这不妨碍这篇论文提出的核心视角值得记住:选什么数据、会造成什么遗忘、还能不能继续学,这三件事不是三个独立的问题,它们共享同一套底层的几何结构,这套结构会随着每一次训练不断地自我改写。模型不是在真空里学习,它在用每一次更新悄悄重新布置自己未来学习的地形。
下一次当你看到一个模型"学了新东西却忘了旧本事",或者"训练越久越难教"的时候,或许可以换个角度想:它不是坏掉了,它只是在按照自己的学习历史,一点点地把自己的未来锁死在了某个方向上。
Q&A
Q1:这篇论文提出的CH1和CH2两个通道分别捕捉什么信息?
A:CH1是直接通道,衡量两个词在预测误差向量上是否直接对齐,适合捕捉表面相似度高的关联;CH2是扩散通道,通过共享的readout矩阵传递更隐蔽的语义关联,在跨语言等表层重叠低的场景中更有效。
Q2:碰撞和侵蚀这两种遗忘机制该怎么分别应对?
A:碰撞源于少数能量极高的更新,用能量阈值过滤高能量更新可以有效缓解;侵蚀源于大量微弱更新长期积累,需要用格式隔离等手段重新分配干扰方向,单纯限制更新能量对侵蚀基本无效。
Q3:为什么模型训练久了会变得难以学习新任务?
A:论文发现共享的readout层会随训练不断向当前任务支持的方向收缩,导致分布外任务的学习信号传输率持续下降,这种可塑性丧失可以通过重置readout层部分恢复。