Agent 持续学习的弹性权重理论 2026:从 EWC、SI 到任务向量正交的统一形式化
约 31 分钟9154 字2 次阅读

一、问题的提出:Agent 终身学习的灾难性遗忘困境
当我们把 Agent 从 demo 推到 production,从单任务推到多任务、从短期 demo 推到长期运营,第一个撞上的不是 prompt 漂移、不是工具调用失败率、不是检索召回下滑——而是灾难性遗忘。一个 Agent 在第 1 周学会了"调用 weather API 查某地温度",到第 4 周引入新的 calendar 工具并继续 fine-tune 后,原本已经稳定的函数调用格式、参数解析偏好、长上下文工具排序会集体衰退;更隐蔽的是行为层面的"人格漂移"——Agent 的语气、风险偏好、对话风格会随训练数据分布漂移而系统性偏移,直到用户投诉"它不像以前那个 Agent 了"。
灾难性遗忘在深度网络里被研究了近十年,但 Agent 场景把它推到了一个新的复杂度等级。传统的视觉分类网络是在固定 i.i.d. 数据分布上做监督学习,任务边界清晰、损失函数可分、评估指标可量化;而 Agent 学习是在线、非平稳、跨模态、长尾分布的——它同时要保留:工具调用的 schema 偏好、对话风格的潜变量、用户偏好的隐式表示、规划推理的过程模式、错误恢复的元策略。每一项都是一个"子任务",每一项都会随着新数据分布而被梯度下降吞噬。McCloskey 与 Cohen(1989)最早用 connectionist 框架指出这一现象的本质——新旧任务的梯度在共享参数上互相干扰而非正交——但三十年后我们仍然没有一个统一的理论框架来描述"Agent 该如何衡量并保留它的历史能力"。
本文要做的事情是:把过去八九年里持续学习(continual learning)的四条主要路线——参数正则化(EWC / SI / MAS / RWalk)、功能正则化(Knowledge Distillation / LwF)、任务向量正交化(Task Arithmetic / TIES / Model Soups / DARE-TIES)、以及重放机制(Experience Replay / Generative Replay)——在 Agent 场景下做一次形式化统一。我们关心的不是哪个方法在 CIFAR-100 上拿了最高分,而是:在 Agent 的真实部署曲线(任务序列 T1→T2→...→Tn,模型参数 θ 不断被新任务梯度更新)下,每条路线保护的"不变量"到底是什么?它的代价函数能否写成同一类二次型?Agent 工程师应该根据什么样的运行时信号选择哪条路线?
回答这三个问题,本文将沿着 §2 的参数空间形式化、§3-§5 三条主要技术路线的逐条拆解、§6 的统一泛函视角、§7-§8 的工程实践推论与边界讨论、§9 的十条可执行规则展开。
二、形式化基础:参数空间上的任务嵌入与局部干扰度量
在进入具体方法之前,先把符号统一一下。设 Agent 神经网络参数 θ∈ℝ^d 在任务序列 T1, T2, ..., Tn 上依次训练。每个任务 Ti 都有自己的损失函数 L_i(θ)、自己的数据集 D_i、自己的最优参数 θ*_i。我们的目标是在训练完 Tn 之后,模型参数 θ_n 仍然能在 T1, ..., Tn-1 上保持接近最优的表现——形式化地写就是:
这是一个带约束的多目标优化。把约束放松成 Lagrangian 就是各类正则化方法的出发点:
其中 Ω_i 是"偏离任务 i 最优解的惩罚"。不同的方法给 Ω_i 不同的数学形态——这就是 EWC、SI、MAS 之间的本质差别。我们关心的不是 L_n 本身,而是 L_n 的梯度更新 θ_{t+1} = θ_t - η∇L_n 对历史任务的影响。
定义任务敏感度矩阵(task sensitivity matrix):
这就是 Fisher 信息矩阵在经验分布下的估计——它度量的是参数空间中"哪个方向对任务 i 最重要"。EWC 选择的是 F_i 的对角线近似(每个参数独立敏感度),MAS 选择的是 F_i 的无偏梯度幅度近似,SI 选择的则不是 Fisher 矩阵本身,而是 Hebbian trace(每个参数累计的"贡献度"):
这三者的关键差别在于:EWC 关心"参数空间的局部曲率"(二阶信息),SI 关心"参数在训练轨迹上的累积贡献"(一阶信息 + 路径积分),MAS 关心"参数对 loss 输出的敏感度"(无梯度的输出空间扰动)。三种数学形态背后是同一种直觉——不要让对旧任务重要的参数动太多——但它们的代价函数曲线完全不同,这直接影响 Agent 训练时 optimizer 的 dynamics。
另一个核心概念是任务向量(task vector)。Ilharco et al.(2023)观察到:把模型在任务 i 上 fine-tune 后的参数 θ_i 与原始预训练参数 θ_0 做差,得到的 δ_i = θ_i - θ_0 是一个可组合的"方向"——δ_A + δ_B 可以同时提升任务 A 和 B 的表现,δ_A - δ_B 可以"否定"任务 A。这个发现把持续学习从"参数空间优化"转译成了"任务向量空间的代数",而 Agent 场景下天然具备多个"子任务"(工具调用、对话风格、规划、错误恢复),任务向量空间是 Agent 多能力管理的天然操作域。
三、EWC 家族:从 Fisher 对角线到块对角 Laplace 近似
EWC(Kirkpatrick et al., PNAS 2017)的原始形式把损失函数写成:
这里 F_{i,k} 是 Fisher 信息矩阵对角线元素——它度量第 k 个参数对任务 i 的预测变化有多敏感。直觉:如果某个权重对旧任务非常敏感(Fisher 大),那么 fine-tune 新任务时它被挪动的"代价"就大,optimizer 倾向于把它"钉"在 θ*_i 附近。
EWC 的工程实现里有几个关键 trick:
- Fisher 计算用的是经验 Fisher(empirical Fisher),不是真正的 Fisher 信息矩阵——它把网络输出的 log-prob 在采样数据上的梯度平方求平均,而不是完整 Fisher expectation。这是个近似,但在实践中稳定得多,也不需要 ground-truth label(用模型自己的预测即可)。
- Fisher 矩阵是对角线——这是工程上必须的,因为完整 Fisher 矩阵的存储是 O(d²),对一个 7B 参数的 LLM 来说就是 196TB。但对角线假设忽略了参数之间的相关性,这在 Transformer 的 QKV 投影、attention head 之间显然是错的——所以后来出现了块对角 EWC(block-diagonal EWC),把 Transformer 每层的 attention + FFN 当成一个 block 算局部 Fisher,对角线的块内假设仍然成立。
- Fisher 的"在线累积"——原版 EWC 是为每个旧任务算一个 Fisher,然后求和。如果任务序列长(n=100),Fisher 累积的内存与算力都吃不消。Online EWC 用递归累积 F_total = γ·F_total + F_new,避免存所有历史 Fisher,但代价是遗忘曲线的折扣——很久以前的任务 Fisher 会被新任务的累积稀释。
在 Agent 场景下,EWC 的失败模式非常具体:它保护的是参数值,不是行为。如果 Agent 在 T1 上学会了"调用 weather API 返回结构化 JSON",EWC 会保护"产生该 JSON 路径上的网络权重",但如果 T2 引入了 calendar API、JSON schema 相似但字段不同,Agent 可能产生 schema 漂移——返回的 JSON 字段名从 {temperature, unit} 漂移到 {temp, scale}——但 EWC 看不出 schema 漂移,因为参数距离的平方仍然小。这是 EWC 在 Agent 上最大的盲区:参数空间的 L2 距离不能代理行为空间的差异。Agent 工程师应该把 EWC 当作"参数级 inertia"而不是"能力级保留"——它是底线,不是天花板。
四、SI 家族:在线路径积分与归一化敏感度
SI(Synaptic Intelligence, Zenke et al., ICML 2017)对 EWC 的核心改进是不依赖二阶信息。SI 的核心思想是 Hebbian 式的"重要性累积":
其中 ω_{i,k} 是参数 k 在任务 i 训练过程中的累积贡献:
这本质上是在做路径积分——"参数 k 在训练过程中实际贡献过多少梯度-位移乘积"。直觉:如果参数 k 在任务 i 训练过程中被显著更新且对应损失显著下降,那么 ω_k 应该大,下次更新时它就该被保护。
SI 的两个关键 trick 是:
- 不存历史 Fisher,只存路径积分 ω——内存从 O(d·n) 降到 O(d),适合长任务序列。
- 归一化——原始 ω 数值范围依赖学习率和损失大小,需要除以
(Δθ_k)² + ξ做归一化,避免尺度漂移。
MAS(Memory Aware Synapses, Aljundi et al., ECCV 2018)是 SI 的一个重要变种,它把"参数重要性"的度量从"梯度 × 位移"换成"参数对输出幅度的影响"——具体做法是把参数 θ_k 加一个微小扰动 δ,测输出变化 |f(x; θ+δ·e_k) - f(x; θ)|/δ。MAS 不需要 ground-truth label,这在 Agent 场景下意义重大:Agent 的很多训练信号是无监督的(用户反馈日志、对话样本、工具调用结果),MAS 可以直接从无标签样本算敏感度。
在 Agent 持续学习上的经验:SI/MAS 优于 EWC 的场景通常是 (a) 任务数量大(n > 50),因为 O(d) 内存;(b) 训练信号稀疏,因为 Hebbian trace 在稀疏梯度下更稳定;(c) 无监督/自监督数据为主,因为 MAS 不需要 label。但 SI/MAS 共同的下游问题是"路径积分的累积误差"——长时间训练后 ω 会被噪声梯度污染,重要的/不重要的参数区分度下降,需要定期"重置"或做 importance 衰减。
五、任务向量正交:从 Arithmetic 到 Geometry of Tasks
任务向量(Task Vectors)的引入(Ilharco et al., ICLR 2023)把持续学习从"参数空间的二次型惩罚"转译成了"任务方向空间的代数操作"。形式化地:
预训练模型 θ_0 + 任务向量 τ_i = 在任务 i 上 fine-tune 后的模型 θ*_i。这个简单的等式打开了一个巨大的操作空间:
- 任务加法:θ_0 + α·τ_A + β·τ_B → 同时增强 A 和 B(α, β > 0)
- 任务否定:θ_0 - α·τ_A → "忘记"任务 A
- 任务冲突检测:τ_A · τ_B(内积)小 → A、B 正交 → 同时学不冲突
- 任务剪枝 / TIES:当多个 τ_i 加起来超出参数容量时,按"符号一致性 + 幅度"剪枝
- DARE-TIES:随机 drop 一部分任务向量的坐标,再合并
任务向量在 Agent 场景下有特殊的价值——Agent 的"能力"天然是模块化的:调用工具是一种能力、对话风格是一种能力、规划推理是一种能力、元认知是一种能力。如果每种能力都有一个独立的任务向量 τ_call / τ_style / τ_plan / τ_meta,那么 Agent 工程师就有了"组合操作"的能力:
- 能力热插拔:τ_call_new = τ_call_old + ε·(新工具的微调差),可以在线学习新工具而不影响旧工具
- 能力回滚:τ_call ← τ_call - ε·(错误更新的差),快速回滚错误的能力变更
- 能力冲突检测:τ_style 与 τ_call 的内积大 → 风格微调干扰了工具调用 → 该任务组合需要更小的学习率
- 能力组合:θ_0 + τ_call + 0.5·τ_plan → 在调用工具时获得轻微规划增强
但任务向量方法有一个根本的数学限制:它假设"任务影响是参数空间中的一个可加方向"——这只在 fine-tune 学习率小、数据分布偏移不大时近似成立。当 Agent 进入持续学习的"深度领域漂移"(domain shift 跨多个 epoch、多个用户群),τ 不再是单一方向而是曲线,Arithmetic 操作的几何基础就崩了。Agent 工程师对任务向量的正确预期是:它是一个"局部操作符",适合短期能力调整,不适合跨越任务相变的长期演化。
六、统一视角:任务梯度子空间上的二次型惩罚泛函
把 §3-§5 三条路线放在一起看,可以发现一个被遮蔽的统一结构:所有持续学习方法本质上都是在任务梯度子空间 G_i = span{∇L_i} 上定义一个二次型惩罚:
其中 M_i 是任务 i 的"重要性度量矩阵"。具体对应:
| 方法 | M_i 的数学形态 | 存储复杂度 | 关键特性 |
|---|---|---|---|
| EWC | F_i(Fisher 对角线) | O(d) | 二阶局部曲率 |
| Online EWC | 累积 γ-折扣 Fisher | O(d) | 适合长任务序列 |
| Block-diag EWC | F_i 的 block 近似 | O(d²/layers) | 捕获层内相关性 |
| SI | Hebbian trace ω | O(d) | 一阶路径积分 |
| MAS | 输出敏感度 | O(d) | 无需 label |
| Knowledge Distill | LwF 蒸馏损失 | O(d) | 行为级保留 |
| Task Arithmetic | 任务向量差异 δ_i | O(d) | 可组合代数 |
| TIES / DARE-TIES | 符号一致 + 幅度 | O(d) | 抗多任务干扰 |
这种统一视角给我们一个工程上有用的诊断工具:给定一个 Agent 持续学习的失败案例,先问"是参数级失败还是行为级失败"——
- 参数级失败:fine-tune 后 L2 距离原模型远、行为漂移明显 → 选 EWC / SI 路线(保护参数)
- 行为级失败:L2 距离小、但某些关键能力(工具调用 schema、对话风格)衰退 → 选 KD / Task Vector 路线(保护行为)
- 任务组合失败:多个 τ 加起来冲突 → 选 TIES / DARE-TIES(符号合并 + 剪枝)
- 跨长尾任务失败:旧任务 Fisher 累积 → 选 Online EWC + importance 衰减
更进一步,统一视角给了 Agent 工程师一个"重要性的元学习"机会——可以训练一个 meta-controller,根据运行时信号(任务 ID、性能回归、用户反馈)动态调整 λ_i 的权重,实现在线选择"现在该保护哪条能力"。这种 meta-controller 本质上是一个持续学习的元学习器,它本身也面临灾难性遗忘——这就要求 meta-controller 用与被保护对象不同的方法实现(比如 meta-controller 用 SI,被保护模型用 EWC),避免"保护机制自身被遗忘"的递归崩溃。
七、对 Agent 工程实践的推论
把上面的形式化推到具体的 Agent 工程实践,给出七条可执行推论:
推论一:Agent 的"能力"必须先分解成可独立度量的子任务——任何持续学习方法都需要任务边界。如果 Agent 把"工具调用 + 对话风格 + 规划 + 元认知"混在一个训练循环里做端到端 fine-tune,那任何持续学习方法都无法生效,因为没有"任务 i"可言。正确的做法是:(a) 把训练数据按能力维度分桶;(b) 每种能力用一个独立的数据集 D_i 训练;(c) 每种能力保存自己的最优参数 θ*_i 作为持续学习的 anchor。
推论二:Fisher / importance 的计算成本必须摊到训练里——单独为每个任务算 Fisher 是不可承受的工程负担。Agent 持续学习的生产级做法是把 importance 计算集成到主训练循环里:每个 mini-batch 在算 L_n 梯度时,顺便累积 ω(SI 式)或扰动测输出(MAS 式),而不是单独跑一轮 importance eval。
推论三:任务向量应该作为 Agent 部署的标准 artifact——每次 fine-tune 都自动生成 τ = θ_new - θ_base,存到 model registry。当生产环境检测到能力衰退时,可以选择"参数回滚"(θ ← θ_base + τ_old)或"行为回滚"(θ ← θ_base + 0.8·τ_new,根据 validation set 上旧任务的表现动态调整权重)。
推论四:在线 importance 衰减必须有上限——Online EWC / 累积 SI 的 ω 会被噪声梯度污染。在 Agent 长周期训练(n > 100 个 micro-task updates)下,每隔 N 步需要做一次 importance reset / renormalization,否则持续学习会退化成"什么也不保护"。具体的 N 取值与训练噪声水平、任务粒度、模型规模相关,没有通用答案,必须在每个 Agent 项目里做 empirical sweep。
推论五:持续学习的失败模式诊断应该自动化——生产 Agent 应该有一个"遗忘探测器":在每次 fine-tune 后自动跑一组 anchor task 的 validation,监控 L_i(θ_new) - L_i(θ*_i) 的偏差。如果偏差超过阈值(比如 5%),触发自动 rollback + 报警。这个探测器本身也是一个独立模型,最好用 EWC 训练(与主 Agent 不同方法),避免"探测器自身遗忘 anchor"。
推论六:multi-task 训练 ≠ continual learning——很多团队把"同时训练多个任务"当作"持续学习",但这两个完全不同。Multi-task 是离线、一次性、所有任务同时可见,可以用 joint training、shared backbone、gradient accumulation 解决;Continual learning 是在线、序列、任务陆续到达,必须用本文讨论的方法保护旧任务。Agent 工程师应该明确区分"一次性 multi-task"和"真正的 lifelong learning"——前者不需要 EWC/SI/Task Vector,后者必须。
推论七:参数正则化与重放机制应该正交组合——重放(Experience Replay / Generative Replay)与 EWC/SI 是正交的:前者通过保留旧任务的样本(数据级保护)实现,后者通过保留旧任务的重要性(参数级保护)实现。在 Agent 场景下两者必须同时使用:重放保留"具体行为样本"(某次成功工具调用的完整 trace),EWC 保留"参数对行为的重要性"。只用其中一个都会有盲区:只用 EWC 在行为漂移面前脆弱,只用重放在参数空间利用效率低(buffer 里的样本可能被网络权重集体覆盖)。
八、讨论:与 LoRA 路由、MoE 专家分裂、Experience Replay 的协同
把视角抬一层看,EWC/SI/Task Vector 这条线只是 Agent 持续学习的参数空间机制,它必须与另外三条互补机制协同:
(1) LoRA 路由——对一个大模型做全参数 fine-tune 计算上不可承受,但 LoRA(低秩适配)天然把"能力变更"约束在一个低秩子空间里——ΔW = A·B,A∈ℝ^{d×r}, B∈ℝ^{r×k}, r≪min(d,k)。LoRA 路由 + EWC/SI 的组合:把 EWC 的 Fisher 从全参数空间投影到 LoRA 子空间,只保护"重要参数在 LoRA 维度上的投影"。这在数学上是可行的(Fisher 的 restriction 仍然是半正定矩阵),而且工程上大幅降低 importance 计算成本——r=8 的 LoRA 只需计算 8·d 个 importance,而不是 d²。
(2) MoE 专家分裂——Mixture-of-Experts 把模型参数分成多个 expert E_1, ..., E_k,路由网络 g(·) 选择激活哪些 expert。MoE + 任务向量的组合:把每个 expert 当成"一个能力的载体",不同任务对应不同的 expert 子集激活。任务向量 τ_i 变成"打开新 expert、关闭旧 expert"的稀疏操作(top-k routing),而不是 dense 参数偏移。这种组合在 Agent 多能力管理上特别契合——"工具调用" expert、"对话风格" expert、"规划" expert、"元认知" expert 的拓扑结构可以独立演化。
(3) Experience Replay 的优先级调度——Agent 持续学习的重放 buffer 不是均匀采样,而是优先级采样:根据旧任务在当前 θ 上的 loss 排序,loss 大的优先重放。这个思想在 prioritized experience replay(Schaul et al., 2016)里就有,但 Agent 场景下的优先级应该是多维度的:(a) loss-based(哪些任务衰退最多);(b) coverage-based(哪些任务样本最少被采样);(c) user-impact-based(哪些任务的用户投诉最多)。三种 priority 加权得到最终的 replay 概率。
但这些协同也带来新的张力:
- LoRA 路由 vs 任务向量:LoRA 把变更限制在低秩子空间,任务向量在 dense 子空间上操作——两者的"重要性度量"不在同一个基底上,做 EWC 时必须做 basis change 否则保护错位。
- MoE 专家分裂 vs EWC:MoE 的 expert 选择是离散的(top-k routing),EWC 的 Fisher 是连续的——把 Fisher 投影到 expert 维度需要离散化近似("expert 被激活的概率 × 该 expert 参数的 Fisher"),会引入 quantization 误差。
- Replay vs 隐私:Agent 训练数据可能含用户隐私对话,replay buffer 必须做脱敏 + 差分隐私 + 保留期管理——这与持续学习的"保留旧任务样本"目标直接冲突,Agent 工程师必须在隐私保护与能力保留之间做 explicit 的工程权衡。
九、给研究者与 Agent 工程师的十条规则
最后给十条可立即落地的规则:
规则一:在开始任何 Agent 持续学习之前,先把"能力"分解成至少 4 个独立的子任务,每个子任务有自己的数据集 D_i 和 anchor 参数 θ*_i。
规则二:优先选择 SI + MAS 的组合——SI 处理"有监督训练任务"的重要性累积,MAS 处理"无监督 / 用户反馈日志"的重要性估计,两者互补。
规则三:任务向量应该作为部署流水线的一等公民,每次 fine-tune 后自动生成、签名、存储、版本化。
规则四:Online EWC 的累积折扣因子 γ 不应该超过 0.95——γ 接近 1 会让早期任务的 Fisher 持续主导,γ 太低会让最近任务覆盖旧任务保护。
规则五:每个 Agent 训练项目都必须有至少 3 个 anchor validation task,持续监控 L_i(θ) 偏差,超过 5% 自动报警 + rollback。
规则六:重放 buffer 大小应该在 总训练样本的 5-15%——太小保护不足,太大会挤占新任务样本导致 underfit。
规则七:参数正则化与重放必须同时使用,单一方法都有不可修复的盲区。
规则八:LoRA + EWC 组合时,Fisher 计算必须投影到 LoRA 子空间,否则 importance 度量错位。
规则九:MoE expert 数应该与"能力数"对齐(不是与"任务数"对齐)——一个 expert 对应一种能力,多个任务共享同一个 expert。
规则十:所有持续学习方法都有一个共同的盲区——任务分布的极端长尾。当某些任务样本极少(< 100 个),任何基于 Fisher/Importance 的方法都会因为估计噪声而失效。Agent 工程师必须为这些长尾任务保留人工规则 / fallback handler,而不是完全依赖持续学习。
这十条规则不是终点——它们是 Agent 持续学习工程化的起点。当一个 Agent 能够维持 12 个月以上的稳定运营、每两周新增一项能力而不丢失旧能力时,持续学习的工程化才算真正完成。
参考文献
- McCloskey, M., & Cohen, N. J. (1989). Catastrophic interference in connectionist networks: The sequential learning problem. Psychology of Learning and Motivation, 24, 109-165.
- Kirkpatrick, J., et al. (2017). Overcoming catastrophic forgetting in neural networks. PNAS, 114(13), 3521-3526.
- Zenke, F., Poole, B., & Ganguli, S. (2017). Continual learning through synaptic intelligence. ICML, 3987-3995.
- Aljundi, R., et al. (2018). Memory aware synapses: Learning what (not) to forget. ECCV, 139-154.
- Schwarz, J., et al. (2018). Progress & compress: A scalable framework for continual learning. ICML.
- Ilharco, G., et al. (2023). Editing models with task arithmetic. ICLR.
- Ilharco, G., et al. (2023). TIES-Merging: Resolving interference when merging models. NeurIPS.
- Yu, L., et al. (2024). Language models as super users: A framework for continual learning based on task vectors. arXiv:2404.00716.
- Schaul, T., et al. (2016). Prioritized experience replay. ICLR.
- Hinton, G., Vinyals, O., & Dean, J. (2015). Distilling the knowledge in a neural network. NeurIPS Deep Learning Workshop.
- Li, Z., & Hoiem, D. (2017). Learning without forgetting. IEEE TPAMI, 40(12), 2935-2947.
- Lopez-Paz, D., & Ranzato, M. (2017). Gradient episodic memory for continual learning. NeurIPS.
- Aljundi, R., et al. (2019). Online continual learning with maximal interfered retrieval. NeurIPS.
- Wang, L., et al. (2024). Towards continual learning in large language models: A comprehensive survey. arXiv:2402.01364.
一句话摘要:Agent 持续学习的灾难性遗忘不是单一算法的失败,而是"参数级 inertia"与"行为级保留"两条保护线的同时缺位;EWC/SI/MAS 保护参数、Task Arithmetic/TIES/DARE-TIES 保护行为方向、Experience Replay 保护具体样本——只有把这三条机制按能力分解 + LoRA/MoE 协同 + 自动化遗忘探测组合起来,Agent 才能在 12 个月以上的运营中维持稳定的能力曲线。