应对灾难性遗忘:EWC、SI 与记忆重放

FreeGuideOnline 最新 2026-06-23

应对灾难性遗忘:EWC、SI 与记忆重放

什么是灾难性遗忘?

在神经网络中,灾难性遗忘(Catastrophic Forgetting)指模型在学习新任务时,几乎完全忘记之前学过的任务的现象。这是持续学习(Continual Learning)面临的核心挑战。

  • 发生原因:神经网络的权重是所有任务共享的。当模型用新数据更新参数时,会覆盖掉支撑旧任务的那些权重配置,导致旧任务性能断崖式下跌。
  • 直观例子:先训练一个模型识别猫和狗,再让它学习识别鸟和鱼。训练完毕后,它可能再也分不清猫和狗了。
  • 理想目标:我们希望模型在学习新知识的同时,不要破坏旧知识,即实现稳定性-可塑性平衡

本教程将介绍三种主流的应对策略:弹性权重巩固(EWC)突触智能(SI)记忆重放

1. 弹性权重巩固 (Elastic Weight Consolidation, EWC)

核心思想

EWC 从贝叶斯持续学习的角度出发:旧任务的后验概率可以作为新任务学习的先验。它通过给每个参数施加一个“弹性”约束,限制重要参数不要偏离旧任务的最优值太远。

  • 所谓“重要性”,由**费舍尔信息矩阵(Fisher Information Matrix)**的对角线元素来度量。
  • 费舍尔信息越大,说明该参数对旧任务损失函数的曲率影响越大,改变它会严重损害旧任务性能,因此“弹性”更强。

算法流程

  1. 任务 A 训练完成后:计算每个参数 ( \theta_i ) 的费舍尔信息值 ( F_i )(通常用梯度平方的期望近似)。
  2. 新任务 B 训练时:在原损失函数 ( L_B(\theta) ) 上添加正则化项: [ L(\theta) = L_B(\theta) + \frac{\lambda}{2} \sum_i F_i (\theta_i - \theta_{A,i}^)^2 ] 其中,( \theta_A^ ) 是任务 A 的最优参数,( \lambda ) 控制正则化强度。
  3. 直觉:对于费舍尔信息大的参数,即使稍微移动也会被严重惩罚,网络只能利用那些“不重要”的参数来学习新任务,从而保护了旧知识。

优缺点与实践

  • 优点:无需存储任何旧数据,仅需保存费舍尔信息向量和旧参数,内存开销小。
  • 缺点:费舍尔信息的对角近似忽略了参数间的协方差;( \lambda ) 调节依赖经验;顺序处理多任务时,惩罚项会累积,可能导致模型能力饱和。
  • 改进Online EWC 将所有旧任务的费舍尔信息加权求和,用一个滑动累加项代替分别存储,适合更长的任务序列。

2. 突触智能 (Synaptic Intelligence, SI)

核心思想

SI 同样是一种正则化方法,但对参数重要性的定义与 EWC 不同。它不依赖于二阶导数,而是通过在线估计每个参数对总损失减少的贡献来确定其重要性。

  • 在每个任务的学习过程中,持续追踪参数更新轨迹和损失下降的关系。一个参数如果它的更新显著降低了当前任务的损失,那么它对当前任务就重要,后续任务中就应该保护该参数不大幅改变。

算法流程

  1. 为每个参数 ( \theta_i ) 初始化重要性 ( \omega_i = 0 ),并维护一个“运行卡尺” ( \text{run_sum}_i )。
  2. 在任务训练期间,每更新一步(一个 mini-batch)就计算:
    • 参数变化量 ( \Delta\theta_i )
    • 损失对参数的负梯度 ( -g_i )(代表该参数更新所带来的损失下降贡献)
    • 更新累加器:( \text{run_sum}_i \mathrel{+}= \Delta\theta_i \cdot (-g_i) )
  3. 任务结束时,将该任务的最终重要性设为 ( \omega_i = \frac{\text{run_sum}_i}{(\Delta\theta_i^{\text{total}})^2 + \epsilon} ),其中 ( \Delta\theta_i^{\text{total}} ) 是整个任务中参数的总变化量。
  4. 后续任务训练时,加入正则项: [ L(\theta) = L_{\text{new}}(\theta) + c \sum_i \omega_i (\theta_i - \theta_i^{\text{old}})^2 ] ( \theta_i^{\text{old}} ) 是上一个任务结束后的参数值,( c ) 为强度系数。

与 EWC 的对比

特性 EWC SI
重要性度量 费舍尔信息(二阶导数) 损失下降贡献(一阶在线估计)
计算开销 需额外计算梯度平方 / Hessian 对角 极低,与普通训练几乎相同
存储需求 存储费舍尔信息 + 旧参数 存储重要性 + 旧参数
理论假设 参数最优点附近为二次近似 沿真实学习轨迹衡量重要性

SI 的突出优势是实现特别简单,几乎不需要改动优化器,非常适合资源受限的在线学习场景。


3. 记忆重放 (Memory Replay)

核心思想

最直接缓解遗忘的方法:保留一部分旧任务的数据,在新任务训练时混合回放。模型在每一个训练批次中既看到新样本,也看到旧样本,相当于“伪联合训练”。

主要实现方式

a. 经验重放 (Experience Replay)

  • 策略:为每个旧任务保存一个有代表性的样本子集(例如 100 张图片)。
  • 训练:构建 mini-batch 时,一部分来自新任务,一部分从记忆缓存中随机抽取。
  • 样本选择:随机采样往往不够理想,更好的方法是选择类中心(herding)、边界样本预测不确定性高的样本,以最大化回放的信息量。

b. 生成重放 (Generative Replay)

  • 策略:训练一个生成模型(VAE 或 GAN)来学习旧数据的分布。
  • 训练:在新任务上训练时,用生成模型产生虚拟旧样本,与真实新样本混合。
  • 优势:不直接存储原始数据,有助于缓解隐私或存储限制的问题。
  • 挑战:生成模型本身可能遗忘,或生成质量不够高,需要联合训练生成器和求解器。

优缺点

  • 优点:效果非常强劲,通常接近在所有数据上联合训练的上限。
  • 缺点:必须维护记忆缓冲区,占用存储空间;对于敏感数据(如医疗记录)存在隐私风险;缓冲区大小固定时,需要设计淘汰策略。

方法比较与选择指南

方法 是否存储数据 额外计算量 存储量 性能表现 推荐场景
EWC 中等(计算费舍尔信息) 一阶矩向量 中等,适合清晰任务边界 无法留存数据,有明确任务序列
SI 极低 重要性向量 弱于 EWC,但比无约束强 极度轻量,设备算力有限
记忆重放 是(原始或生成) 低~中 样本缓存 最强,接近联合训练 允许少量数据缓存,追求高性能

组合使用

这三种方法不是互斥的,很多现代持续学习系统会同时采用:

  • 重放 + 正则化:在回放旧样本的同时,使用 EWC/SI 约束重要参数,两重保险。
  • 伪重放 + EWC:用生成模型回放,同时对 generators 自身也施加 EWC 防止遗忘如何生成旧数据。

实际应用注意事项

  1. 任务标识:EWC 和 SI 都需要在任务切换时明确分界。对于无明确任务边界的流式数据,需在线检测分布变化或使用变体方法(如 Online EWC)。
  2. 超参数调节:正则化系数 ( \lambda ) 或 ( c ) 对效果影响很大,一般通过在新任务训练期间监控旧任务的验证集(如果可访问少量旧数据)来选择。
  3. 记忆管理:若使用重放,缓冲区充满后需淘汰旧样本。可结合不确定性、代表性等指标进行智能淘汰。
  4. 评估指标:单纯看最终任务精度不够,应报告平均遗忘率向后迁移以及整体精度

总结

灾难性遗忘根植于神经网络参数共享的本质。三种主流应对方法分别从不同角度入手:

  • EWC 利用费舍尔信息矩阵对重要权重施加强约束;
  • SI 通过全程追踪参数贡献实现轻量级重要性估计;
  • 记忆重放 直接保存或生成旧数据,维持多元经验分布。

选择何种方法取决于实际约束:能否存取旧数据、计算和存储预算、任务是否具有清晰边界。理解这些方法的原理和取舍,能帮助你在智能系统设计中更好地实现终身学习能力。