Browse this library

Chinese source article

2.1.1 · 正则化方法

正则化方法不存旧数据, 只在损失里增加约束: EWC, Online EWC, SI, MAS, RWalk 约束参数离旧值的距离, LwF 约束新数据上的输出不偏离旧模型; 公式、实验设置与跨论文对比共同解释它们在 Task-IL 和 Class-IL 中的差异.

View original Markdown ↗

正则化方法不保存旧数据, 而是在新任务的损失上加约束来限制遗忘: 约束参数的有 EWC, SI, MAS, RWalk, 约束输出的有 LwF. 公式和数字取自各方法的原论文, 以及 van de Ven & Tolias (2019), A-GEM, DER 论文中的对比实验.

1. 参数正则化与 EWC

两类约束. 设旧任务训练结束时参数为 θ∗\theta^*, 新任务损失为 Lnew(θ)\mathcal{L}_{\text{new}}(\theta). 参数正则化的通用形式是

L(θ)=Lnew(θ)+λ∑iΩi (θi−θi∗)2(1)\mathcal{L}(\theta) = \mathcal{L}_{\text{new}}(\theta) + \lambda \sum_i \Omega_i\,(\theta_i - \theta_i^*)^2 \tag{1}

Ωi≥0\Omega_i \ge 0 是第 ii 个参数的重要性, λ\lambda 控制整体强度. 若所有 Ωi\Omega_i 相同, 式 (1) 退化成以旧参数为中心的 L2 正则. 重要性大的参数被拉回旧值, 重要性小的参数可以自由移动去适应新任务. 函数正则化不对参数设锚点, 而是要求新模型在某些输入上的输出与旧模型接近. LwF 用新任务自己的输入计算旧模型输出, 再把它当作蒸馏目标. 两类约束的存储需求不同: 参数正则化要存一份参数快照和一份重要性向量, 函数正则化要存一份旧模型 (或者在新任务开始前一次性算好旧模型对新数据的输出). 两类方法都不存旧任务数据, 这是它们与第 2.2 篇回放方法的分界. 以下各节按提出时间介绍具体方法, 第 3 节把它们放进统一的对比实验.

EWC: 从后验到二次惩罚. Kirkpatrick et al. (2017) 从贝叶斯角度推导 EWC. 依次看到任务 A 的数据 DA\mathcal{D}_A 和任务 B 的数据 DB\mathcal{D}_B, 参数后验满足

log⁡p(θ∣D)=log⁡p(DB∣θ)+log⁡p(θ∣DA)−log⁡p(DB)(2)\log p(\theta \mid \mathcal{D}) = \log p(\mathcal{D}_B \mid \theta) + \log p(\theta \mid \mathcal{D}_A) - \log p(\mathcal{D}_B) \tag{2}

右边第一项是任务 B 的对数似然, 即负的任务 B 损失. 任务 A 的全部信息都在第二项 log⁡p(θ∣DA)\log p(\theta\mid\mathcal{D}_A) 里. 这个后验没有解析形式, EWC 用 Laplace 近似 (MacKay, 1992) 把它换成高斯分布: 均值取任务 A 训练结束时的参数 θA∗\theta_A^*, 精度矩阵取 Fisher 信息矩阵 FF 的对角. 代入式 (2), 得到 EWC 的损失

L(θ)=LB(θ)+∑iλ2Fi (θi−θA,i∗)2(3)\mathcal{L}(\theta) = \mathcal{L}_B(\theta) + \sum_i \frac{\lambda}{2} F_i\,(\theta_i - \theta_{A,i}^*)^2 \tag{3}

它是式 (1) 取 Ωi=Fi/2\Omega_i = F_i/2 的特例. Laplace 近似的步骤可以写出来. 在 θA∗\theta_A^* 处把 log⁡p(θ∣DA)\log p(\theta\mid\mathcal{D}_A) 展开到二阶:

log⁡p(θ∣DA)≈log⁡p(θA∗∣DA)+∇⊤(θ−θA∗)+12(θ−θA∗)⊤H (θ−θA∗)(3a)\log p(\theta\mid\mathcal{D}_A) \approx \log p(\theta_A^*\mid\mathcal{D}_A) + \nabla^\top(\theta-\theta_A^*) + \frac{1}{2}(\theta-\theta_A^*)^\top H\,(\theta-\theta_A^*) \tag{3a}

θA∗\theta_A^ 是后验的众数, 一阶项 ∇\nabla 为零; HH 是对数后验的 Hessian, 在众数处半负定. 去掉常数, 剩下的就是均值 θA∗\theta_A^, 精度矩阵 −H-H 的高斯分布的对数密度. 对数似然的 Hessian 取负号并对模型分布求期望, 等于 Fisher 信息矩阵, 这是用 FF 替换 −H-H 的依据. 再只保留对角, 就得到式 (3). 推导里有三处近似: 后验在 θA∗\theta_A^* 附近是高斯的, 期望 Hessian 能代表实际 Hessian, 参数之间相互独立. 第三处是 EWC 实现最粗的地方, 同一层的权重之间显然有相关. 论文给出的理由是 Fisher 在最小值附近等价于损失的二阶导数, 而且只用一阶导数就能计算, 对大模型也容易算. 对角近似把存储从参数量的平方降到参数量本身.

Fisher 信息与经验 Fisher. 对分类模型 pθ(y∣x)p_\theta(y\mid x), Fisher 信息矩阵的定义是

F=Ex∼D Ey∼pθ(y∣x)[∇θlog⁡pθ(y∣x) ∇θlog⁡pθ(y∣x)⊤](4)F = \mathbb{E}_{x\sim\mathcal{D}}\,\mathbb{E}_{y\sim p_\theta(y\mid x)}\left[\nabla_\theta \log p_\theta(y\mid x)\,\nabla_\theta \log p_\theta(y\mid x)^\top\right] \tag{4}

内层期望对模型自己的预测分布取. 实现里常见的替代做法是把 yy 换成训练集的真实标签:

F^=1N∑n=1N∇θlog⁡pθ(yn∣xn) ∇θlog⁡pθ(yn∣xn)⊤(5)\hat F = \frac{1}{N}\sum_{n=1}^{N} \nabla_\theta \log p_\theta(y_n\mid x_n)\,\nabla_\theta \log p_\theta(y_n\mid x_n)^\top \tag{5}

式 (5) 叫经验 Fisher (empirical Fisher). Chaudhry et al. (2018) 在 RWalk 论文里注明, 文中所说的 Fisher 都指经验 Fisher. Kunstner et al. (2019) 专门分析了两者的关系: 经验 Fisher 与 Fisher 不同, 一般不包含二阶信息; 存在让两者趋同的条件, 但这些条件在实践中不太可能满足; 用经验 Fisher 做预条件, 在远离最优点处会扭曲更新的尺度和方向. 因此, 用式 (5) 实现的 EWC, 其「按曲率加权」的解释要打折扣. 复现 EWC 时应写明用的是式 (4) (从模型分布采样标签, 或对全部类别按预测概率加权) 还是式 (5).

EWC 原论文实验. EWC 论文的监督学习实验用 Permuted MNIST, 结果以图给出, 没有表格.

  • 图 2A: 先学任务 A 再学任务 B. 普通 SGD 学会 B, 忘掉 A; 对所有参数施加同样强度的 L2 约束, A 保住了, B 学不进去; EWC 两者都保持较好. 这张图给出了第 1.1 篇所说「稳定性与可塑性两个方向的失败」的直接例子.
  • 图 2B: 任务数增加时, 带 dropout 的 SGD 表现越来越差; EWC 能处理较多任务, 错误率只有温和上升.
  • 图 2C: 比较两个任务 Fisher 的重叠程度. 置换范围越大 (26×26 对比 8×8), 靠近输入的层 Fisher 重叠越低; 靠近输出的层被不同任务重复使用.

强化学习实验在 Atari 上进行. 每次从 19 个游戏中选 10 个依次学习, Fisher 乘数 λ=400\lambda = 400, Fisher 用 100 个样本估计, 前 20M 帧之后才开始施加 EWC, 共 10 组游戏, 每组 4 个随机种子. EWC 显著优于普通 DQN, 但没有达到 10 个单独训练的 DQN 的水平. 论文的参数扰动实验显示, Fisher 对角低估了参数的不确定性. λ\lambda 与网络规模, 损失量纲, Fisher 的估计方式都有关, 换实验必须重新搜索.

多个任务: 惩罚项的合并与成本. 原始 EWC 学第 kk 个任务时, 对每个旧任务 j<kj<k 各保留一份 θj∗\theta_j^* 和 F(j)F^{(j)}, 损失里有 k−1k-1 个二次项, 存储随任务数线性增长. 有两种改法把它压缩成一份. Online EWC. van de Ven & Tolias (2019) 附录按 Huszár (2018) 和 Schwarz et al. (2018) 的形式实现: 只保留一份累积 Fisher 和最近一次的参数,

F~(k)=γ F~(k−1)+F(k)(6)\tilde F^{(k)} = \gamma\,\tilde F^{(k-1)} + F^{(k)} \tag{6}

惩罚项为 λ2∑iFi(k−1)(θi−θi∗(k−1))2\frac{\lambda}{2}\sum_i \tilde F_i^{(k-1)}(\theta_i - \theta_i^{*(k-1)})^2i(k−1)​(θi​−θi∗(k−1)​)2. γ≤1\gamma \le 1 让早期任务的权重逐渐衰减. 学到第 kk 个任务时只有一个二次项, 存储与任务数无关. EWC++. Chaudhry et al. (2018) 在训练过程中按 batch 更新 Fisher:

Fθt←αFθt+(1−α)Fθt−1(7)F_\theta^{t} \leftarrow \alpha F_\theta^{t} + (1-\alpha) F_\theta^{t-1} \tag{7}

右边第一个 FθtF_\theta^t 是当前 batch 算出的 Fisher, α∈[0,1]\alpha\in[0,1], 论文实验取 0.9. 任务结束时把当前的 Fisher 存下来, 用于下一个任务的正则. 这样省掉了 EWC 在任务结束后专门遍历一遍数据计算 Fisher 的开销, 而且同一时刻只需存两份 Fisher. 论文指出 EWC++ 与 Online EWC 是同期独立提出的. 合并成一份并没有损失效果. van de Ven & Tolias (2019) 的 Permuted MNIST 上, Online EWC 的 Task-IL 为 95.96%, 原始 EWC 为 94.74%; Class-IL 分别为 33.88% 和 25.04% (Table 5). Split MNIST 上两者相差不到 0.5 个百分点 (Table 4). 一个可能的原因是原始 EWC 的多个二次项各自以不同的旧参数为中心, 它们的和把参数拉向这些中心的加权平均, 这个点不一定对任何一个旧任务都好; Online EWC 只以最近一次的参数为中心, 而最近一次的参数已经在之前的正则下兼顾了更早的任务. 两种改法都需要任务边界: Online EWC 在边界处计算 F(k)F^{(k)} 并更新锚点, EWC++ 在边界处保存 Fisher 和锚点.

压成一份之后, 存储也不为零. Online EWC 需要一份参数快照和一份 Fisher 对角, 共两倍参数量; 原始 EWC 每多一个任务就多两倍参数量. 计算上, 原始 EWC 在每个任务结束后要多做一遍前向和反向来估计 Fisher. A-GEM 论文 Table 7 报告的训练时间里, Permuted MNIST 上 EWC 用时 403 秒, 普通 SGD 186 秒; Split CIFAR 上分别为 250 秒和 105 秒. 「不存旧样本」省下的是数据存储, 不是全部开销.

1.1. 二次惩罚下的最优点

式 (1) 的效果在新任务损失也是二次型时可以直接解出. 设新任务损失在参数 ii 方向上近似为 12ai(θi−bi)2\frac{1}{2}a_i(\theta_i - b_i)^2, 其中 bib_i 是新任务单独训练的最优值, aia_i 是新任务损失在该方向的曲率. 忽略参数之间的耦合, 每个参数的目标是

12ai(θi−bi)2+λ Ωi(θi−θi∗)2\frac{1}{2}a_i(\theta_i-b_i)^2 + \lambda\,\Omega_i(\theta_i-\theta_i^*)^2

对 θi\theta_i 求导并令其为零:

θinew=ai bi+2λΩi θi∗ai+2λΩi(3b)\theta_i^{\text{new}} = \frac{a_i\,b_i + 2\lambda\Omega_i\,\theta_i^*}{a_i + 2\lambda\Omega_i} \tag{3b}

结果是新旧两个最优值的加权平均, 权重分别是新任务的曲率 aia_i 和旧任务的重要性 2λΩi2\lambda\Omega_i. 由此可以读出三件事:

  • Ωi≫ai/λ\Omega_i \gg a_i/\lambda 时, θi\theta_i 几乎留在 θi∗\theta_i^*; Ωi≪ai/λ\Omega_i \ll a_i/\lambda 时, θi\theta_i 几乎走到 bib_i. 正则化方法的全部作用就是逐个参数决定站在哪一边.
  • 所有 Ωi\Omega_i 相同时 (L2 正则), 新任务曲率大的方向走得多, 曲率小的方向走得少, 与旧任务需要什么无关. EWC 图 2A 中 L2 学不会任务 B, 对应的是 λ\lambda 大到让所有方向都靠近 θ∗\theta^*.
  • 新旧最优值在某个参数上冲突 (bib_i 与 θi∗\theta_i^* 相距很远), 且该参数对两边都重要 (aia_i 和 Ωi\Omega_i 都大) 时, 式 (3b) 给出的折中点对两个任务都不好. 共享容量不够时, 正则化方法无法同时满足两个任务, 第 2.3 篇的参数隔离方法就是给不同任务分配不同参数来避开这种冲突.

SI, MAS, RWalk 与 LwF. SI: 沿优化路径累积重要性. Zenke et al. (2017) 的 Synaptic Intelligence 不在任务结束时估计曲率, 而是在训练过程中累积每个参数对损失下降的贡献. 第 1.1 篇式 (3) 给出过一阶展开: 参数从 θ[t−1]\theta[t-1] 走到 θ[t]\theta[t], 损失的变化约为 ∑igi (θi[t]−θi[t−1])\sum_i g_i,(\theta_i[t]-\theta_i[t-1]). SI 把每个参数的那一份单独累加. 按 van de Ven & Tolias (2019) 附录 A.2.3 的写法, 第 kk 个任务训练期间

ωi(k)=∑t−∂L∂θi∣t (θi[t]−θi[t−1])(8)\omega_i^{(k)} = \sum_{t} -\frac{\partial \mathcal{L}}{\partial \theta_i}\Big|_{t}\,\big(\theta_i[t] - \theta_i[t-1]\big) \tag{8}

求和遍历该任务的全部迭代. 损失下降越多, 且这部分下降由参数 ii 贡献得越多, ωi\omega_i 越大. 任务结束时, 把 ωi\omega_i 除以该参数在整个任务里的总位移的平方, 并在所有旧任务上累加:

Ωi=∑k′<kωi(k′)(Δi(k′))2+ξ(9)\Omega_i = \sum_{k' < k} \frac{\omega_i^{(k')}}{\big(\Delta_i^{(k')}\big)^2 + \xi} \tag{9}

Δi(k′)\Delta_i^{(k')} 是参数 ii 在任务 k′k' 开始和结束时的差值, ξ\xi 防止分母为零, van de Ven & Tolias 取 ξ=0.1\xi = 0.1. 惩罚项与式 (1) 相同, 系数记作 cc. 式 (8) 有一个求和恒等式. 如果步长足够小, 一阶展开在每一步都成立, 那么对所有参数求和得到

∑iωi(k)≈L(θ[start])−L(θ[end])(8a)\sum_i \omega_i^{(k)} \approx \mathcal{L}\big(\theta[\text{start}]\big) - \mathcal{L}\big(\theta[\text{end}]\big) \tag{8a}

即任务 kk 训练期间损失的总下降量. SI 把这个总量按参数拆开, 每个参数分到的份额就是它的 ωi\omega_i. 这是一个沿实际路径的积分, 与 Fisher 只看终点的局部曲率不同. 一个参数如果在训练早期贡献了大量损失下降, 后来停在平坦区域, Fisher 会给它很小的值, SI 仍然记得它的贡献. 除以 (Δi)2(\Delta_i)^2 的作用是归一化: 一个参数如果移动很远才换来一点损失下降, 它的重要性被压低; 移动很短就带来大量下降, 重要性被抬高. SI 的计算几乎是免费的, 梯度和参数更新量在训练中本来就有.

SI 有两个前提常被忽略. 第一, 式 (9) 要在任务结束时计算, 并在那时更新锚点 θ∗\theta^*, 所以它需要任务边界, 不能直接用于无边界的数据流. 第二, 式 (8) 的路径积分依赖优化器的实际轨迹; 换优化器或学习率, 同一个任务得到的重要性会不同.

MAS: 输出对参数的敏感度. Aljundi et al. (2018) 的 Memory Aware Synapses 换了一个问题: 不问「参数对损失有多重要」, 而问「参数对模型输出有多重要」. 设 F(x;θ)F(x;\theta) 是网络的输出向量, 对样本 xkx_k 定义

gij(xk)=∂ [ℓ22(F(xk;θ))]∂θij(10)g_{ij}(x_k) = \frac{\partial\,\big[\ell_2^2\big(F(x_k;\theta)\big)\big]}{\partial \theta_{ij}} \tag{10}

即输出平方 L2 范数对参数 θij\theta_{ij} 的梯度. 重要性取 NN 个样本上梯度幅度的平均:

Ωij=1N∑k=1N∥gij(xk)∥(11)\Omega_{ij} = \frac{1}{N}\sum_{k=1}^{N} \big\| g_{ij}(x_k) \big\| \tag{11}

学新任务 nn 时的损失为 L(θ)=Ln(θ)+λ∑i,jΩij(θij−θij∗)2\mathcal{L}(\theta) = \mathcal{L}n(\theta) + \lambda\sum{i,j}\Omega_{ij}(\theta_{ij}-\theta_{ij}^*)^2, 与式 (1) 同形. 式 (10) 只用输出, 不用标签, 所以 MAS 可以在无标签数据上估计重要性, 包括部署阶段遇到的数据. 它也不涉及似然或 Fisher. 论文还给出了局部版本: 只看每一层的输出, 重要性变成该层输入与输出激活的相关, 论文把它与 Hebbian 学习联系起来. 论文 Table 6 在 8 个视觉分类任务的序列上比较 (Flower, Scenes, Birds, Cars, Aircraft, Actions, Letters, SVHN), 学完全部任务后的平均准确率为:

方法 平均准确率 (%)
Finetune 32.67
IMM 43.41
LwF 49.49
SI 50.49
MAS 52.69

骨干是 ImageNet 预训练的 AlexNet, 每个任务训练 100 个 epoch. 论文写明每个任务有不共享的输出头, 推理阶段由一个 oracle 决定用哪个头, 属于 Task-IL 设定. 论文也说明没有调 λ\lambda, 理由是假设拿不到旧任务数据. 重要性方法之间的差距在两三个百分点内.

RWalk: 路径分数与 Fisher 的结合. Chaudhry et al. (2018) 的 RWalk 由三部分组成: EWC++ 的 KL 散度正则 (第 1.5 节), 沿优化路径累积的参数重要性, 以及保存少量旧样本. 第一部分从 KL 散度出发. 学第 kk 个任务时, 要求新的条件分布与上一阶段的接近:

L~k(θ)=Lk(θ)+λ DKL(pθk−1(y∣x) ∥ pθ(y∣x))(12)\tilde{\mathcal{L}}^k(\theta) = \mathcal{L}^k(\theta) + \lambda\, D_{\mathrm{KL}}\big(p_{\theta^{k-1}}(y\mid x)\,\|\,p_\theta(y\mid x)\big) \tag{12}

KL 散度的二阶近似是 12∑iFθik−1(θi−θik−1)2\frac{1}{2}\sum_i F_{\theta_i^{k-1}}(\theta_i-\theta_i^{k-1})^2. 对两个任务, 这与 EWC 的式 (3) 相同. 第二部分是路径重要性. 论文指出 Fisher 在最小值处用 Lk\mathcal{L}^k 的梯度计算, 当正则项较小时这些梯度接近零, 正则会失效. 他们仿照 SI 定义从迭代 t1t_1 到 t2t_2 的分数:

st1t2(θi)=∑t=t1t2ΔLtt+Δt(θi)12Fθit Δθi(t)2+ϵ(13)s_{t_1}^{t_2}(\theta_i) = \sum_{t=t_1}^{t_2} \frac{\Delta L_t^{t+\Delta t}(\theta_i)}{\frac{1}{2}F_{\theta_i}^{t}\,\Delta\theta_i(t)^2 + \epsilon} \tag{13}

分子是参数 ii 在一段步数内带来的损失下降 (一阶近似), 分母是这段位移在 KL 意义下的距离. 把分母换成欧氏距离, 式 (13) 就接近 SI. 负分数置零. 论文中 Δt\Delta t 在 MNIST 上取 10, CIFAR 上取 50. 两部分合并后的目标是

L~k(θ)=Lk(θ)+λ∑i(Fθik−1+st0tk−1(θi))(θi−θik−1)2(14)\tilde{\mathcal{L}}^k(\theta) = \mathcal{L}^k(\theta) + \lambda\sum_i \big(F_{\theta_i^{k-1}} + s_{t_0}^{t_{k-1}}(\theta_i)\big)(\theta_i - \theta_i^{k-1})^2 \tag{14}

分数随任务累积会让正则越来越僵硬. RWalk 在每个任务结束后把旧分数与新任务的分数取平均, 使久远任务的影响逐渐变小; 同时把 Fisher 和分数分别归一化到 [0,1][0,1], 让两者量级相当. 论文称这两项处理使 λ\lambda 对任务数不那么敏感. 空间复杂度是参数量的常数倍, 与任务数无关.

第三部分针对顽固性. 论文观察到 single-head 评测中, 只用当前任务数据训练时当前任务的准确率反而偏低, 因为模型没有办法区分当前类别与旧类别. 他们比较了均匀采样等几种样本选择策略, 每个任务保存不超过 5% 的数据. 这一部分已经属于回放, 说明作者也认为纯正则化在 single-head 设定下不够.

LwF: 约束旧模型的输出. Li & Hoiem (2016) 的 Learning without Forgetting 把网络分成共享参数 θs\theta_s, 旧任务输出头 θo\theta_o, 新任务输出头 θn\theta_n. 新任务开始前, 用旧网络对新任务的每张图片计算旧任务输出 YoY_o, 存下来作为蒸馏目标. 训练目标是

min⁡θs,θo,θn  λo Lold(Yo,Y^o)+Lnew(Yn,Y^n)+R(θs,θo,θn)(15)\min_{\theta_s,\theta_o,\theta_n}\; \lambda_o\,\mathcal{L}_{\text{old}}(Y_o, \hat Y_o) + \mathcal{L}_{\text{new}}(Y_n, \hat Y_n) + \mathcal{R}(\theta_s,\theta_o,\theta_n) \tag{15}

Y^o\hat Y_o 是当前网络在同一批图片上的旧任务输出, R\mathcal{R} 是权重衰减 (论文取 5×10−45\times10^{-4}). Lold\mathcal{L}_{\text{old}} 是知识蒸馏损失, 先用温度 TT 调整概率:

Lold=−∑iyo′(i)log⁡y^o′(i),yo′(i)=(yo(i))1/T∑j(yo(j))1/T(16)\mathcal{L}_{\text{old}} = -\sum_{i} y_o'^{(i)} \log \hat y_o'^{(i)}, \qquad y_o'^{(i)} = \frac{\big(y_o^{(i)}\big)^{1/T}}{\sum_j \big(y_o^{(j)}\big)^{1/T}} \tag{16}

论文取 T=2T = 2, λo=1\lambda_o = 1. 训练分两步: 先冻结 θs\theta_s 和 θo\theta_o, 只训练新输出头 θn\theta_n 直到收敛 (warm-up); 再联合优化全部参数. 热身之后新输出头已经接近收敛, 联合训练开始时新任务损失对共享参数的梯度较小. 论文的旧任务是 ImageNet 或 Places365, 新任务包括 VOC, CUB, Scenes, MNIST. 式 (15) 只在新任务的输入上约束旧任务输出. 如果新任务输入与旧任务输入相似, 这个约束近似保住了旧任务的决策函数; 如果两者无关, 约束只覆盖了旧任务从未见过的输入区域. 这解释了第 1.1 篇里的现象: Split MNIST 各任务都是手写数字, LwF 在 Domain-IL 上达到 71.50%, 是正则化方法中最好的; Permuted MNIST 的像素置换让各任务输入互不相关, LwF 的 Task-IL 只有 69.84%, 比不做处理的 81.79% 还低.

LwF 的思路后来被回放方法吸收. iCaRL 在样本记忆上做蒸馏, DER 直接在缓冲区里存旧模型的 logits, 蒸馏发生在旧任务的真实样本上, 不再受新任务输入分布的限制 (第 2.2 篇).

1.2. 对比实验与使用建议

三场景对比. van de Ven & Tolias (2019) 的 Split MNIST 结果 (Table 4, %):

方法 Task-IL Domain-IL Class-IL
None 87.19 59.21 19.90
EWC 98.64 63.95 20.01
Online EWC 99.12 64.32 19.96
SI 99.09 65.36 19.99
LwF 99.57 71.50 23.85
DGR+distill 99.61 96.83 91.79

Permuted MNIST (Table 5) 的 Domain-IL 列里, EWC 94.31%, Online EWC 94.42%, SI 95.33%, 接近联合训练的 97.59%; 同一数据的 Class-IL 列, 三者在 25% 到 34% 之间. 正则化方法在 Class-IL 上失效, 可以从式 (1) 看出原因. Class-IL 下所有类别共用输出层, 训练新任务时只有新类别的样本, 交叉熵持续压低旧类别的 logit. 式 (1) 只约束参数与旧值的距离. 旧类别 logit 的下降可以通过少量参数 (例如输出层的偏置和少数权重) 的变化实现, 惩罚项对这些变化的代价很小, 却足以让模型把所有测试样本判给新类别. 要让旧类别保持竞争力, 训练中需要出现旧类别的信号, 这正…11074 tokens truncated…造冲突. 参数重要性要估对方向, 函数约束要选对输入, 两者分别依赖几何和覆盖. 把旧查询从…742 tokens truncated…

参数重要性、Fisher 和路径分数都是代理量. 它们的价值由能否预测旧行为退化决定. 一个方法给出漂亮的重要性热图, 若扰动高重要参数与低重要参数造成相同旧损失, 解释没有通过干预. 正则化的合理目标是用有限统计量换取可接受的旧风险近似. 当旧分布复杂、任务冲突强或参数移动大, 统计量不足, 应增加回放、容量或外部验证. 继续增大 λ\lambda 只会把误差从遗忘移到顽固性.

从 参数与函数约束 进入后续路线时, 可以保留同一判断标准: 回放与记忆 用样本改善旧风险估计, 结构与路由 改变可更新子空间, 大模型持续训练 在强底座和低秩更新下重新分配稳定性成本. 方法名字会变, 证据仍然落在旧行为、新能力和资源三者上.

类别不平衡会进一步改变结论. 新阶段只含新类时, 交叉熵的每一步都给新类正梯度、给所有旧类负梯度; 参数正则限制权重移动, 没有恢复旧类正样本的频率. 即使表征几乎不变, 分类头偏置仍会累积. 测试时把旧头与新头分开评估, 再联合评估, 可以把表征遗忘与输出竞争分开.

标签噪声则会污染重要性. 经验 Fisher 用观测标签梯度外积, 难例和错标样本梯度大, 容易获得高重要性; SI 将促成噪声拟合的损失下降计入路径贡献; LwF继续保存教师对噪声形成的决策. 比较清洗前后的重要性排序、对高损失样本截断梯度, 能判断保护的是稳定知识还是训练残差.

优化器状态也是正则化没有直接约束的路径. 学完旧任务后保留 Adam 的一阶和二阶矩, 新任务初期步长会受旧梯度尺度影响; 清空状态又改变有效学习率, 可能产生瞬时遗忘. 公平实验应固定是否重置优化器, 并把它作为方法状态报告. 只保存参数与 Fisher, 无法复原同一训练动力学.

校准指标提供另一个窗口. EWC 可能保持 top-1 准确率, 同时让旧类概率整体下降; LwF可能保持旧类内部概率, 拼接新类后过度自信. 报告负对数似然、期望校准误差和新旧类置信分布, 能发现决策尚未翻转的早期退化. 校准集不能来自未来任务, 否则阈值选择泄漏后续类别.

任务规模不同时, 每个任务一份 Fisher 直接相加相当于给任务而非样本加权, 具体权重取决于实现中的求和或平均. 大任务与小任务是否同权是部署选择. 若 Fisher 对每个任务先取均值再相加, 一个 100 样本任务与一个 10 万样本任务贡献相当; 若按样本和累积, 大任务主导精度. 论文需说明归一化口径. 损失尺度也会影响重要性. 两个任务使用不同标签平滑、类别数或 token 长度, 梯度外积的量级不能直接比较. 语言模型按 token 求和与按序列平均会给 Fisher 不同尺度. 在合并重要性前统一损失归一化, 或用固定扰动下的真实损失增量校准, 才能让 λ\lambda 的意义稳定.

正则项还会与权重衰减重复作用. 权重衰减把参数拉向零, EWC 把参数拉向旧锚点, 两个力在锚点非零时方向不同. 把 AdamW 的衰减混进任务梯度, SI 路径积分的归因也会改变. 消融应分别关闭权重衰减和持续学习正则, 再匹配总参数移动量. 早停是容易忽略的强基线. 新任务训练步数减少, 参数走得更近, 遗忘自然下降, 同时新任务也可能没学完. 将方法与同等新任务准确率的早停基线比较, 能判断收益是否超过单纯少训练. 反过来, 固定 epoch 而正则化收敛更慢, 会夸大顽固性;还应比较收敛后的前沿.

旧任务评测频率本身会泄漏信息. 每若干步查看旧验证集并选择 checkpoint, 等于用旧数据指导训练, 已经不再是纯无回放正则化. 若实验允许这种选择, 应把验证样本和查询次数计入资源. 完全不访问旧数据时, 只能用当前损失、正则项或预定步数停止. 最终, 正则化方法提供的是一种压缩后的旧任务证据. 压缩足够时, 它以固定存储换来稳定性; 压缩遗漏输入支持、参数相关性、分类头竞争或任务价值时, 遗漏会在后续阶段被放大. 判断它是否合适, 要检查被压缩掉的信息是否正是当前数据流最需要保留的部分.

任务数量增长后, 固定强度的惩罚还会出现尺度问题. 若每个任务 Fisher 直接相加, 累计精度大致随任务数增长, 相同学习率下新任务越来越难改变参数. 这表现为后期任务准确率逐步下降, 即使任务之间没有比早期更强的冲突. 将累计精度归一化可缓解规模增长, 也会降低每个旧任务的平均保护. 在线 EWC 的衰减与归一化实际上在决定有限稳定性预算怎样分给不断增加的历史.

可用重复任务检查这种顽固性. 将同一个任务复制到序列后部, 数据分布与最优解完全相同, 合理方法应迅速恢复或保持性能. 若后部副本学习明显更慢, 原因不可能是任务冲突, 更可能是累计精度、学习率或优化器状态使有效更新幅度随时间持续缩小. 这个对照比只观察新任务下降更容易定位问题.

任务重要性也未必相同. 医疗安全约束可能需要长期保存, 临时界面偏好可以衰减. 给所有任务相同 λ\lambda 隐含等价值假设. 可以为任务设置权重 wkw_k, 令累计惩罚为 ∑kwkF(k)\sum_kw_kF^{(k)}, 但权重必须来自外部目标, 不能根据最终测试成绩事后挑选. 当价值随时间改变时, 权重更新本身属于持续决策的一部分.

概念漂移让“保护旧任务”出现方向冲突. 若同一输入的正确标签永久改变, 旧 Fisher恰好在需要改动的方向最大, EWC 会阻止正确适应. 可以保留多上下文模型, 由时间或环境变量选择; 若部署只关心当前概念, 则应衰减或删除旧证据. 这不是正则化强度调得不够好, 目标本身已经改变.

判断漂移是否永久需要未来信息. 在线系统只能根据近期证据估计. 过早删除旧精度, 周期性概念回来时会重新学习; 长期保留又降低当前适应. 因此, 正则化状态也需要分层: 长期稳定知识用慢衰减, 可能反转的环境规律用快衰减, 任务身份或时间上下文负责路由. 单一 Fisher 无法同时表达多种生命周期.

类数增加时, Fisher 估计的尺度还会改变. softmax 输出从十类扩到一百类, 模型概率更分散, 梯度外积和损失基线随类别数变化. 旧阶段与新阶段 Fisher 直接相加, 可能把量尺变化误当作参数重要性变化. 在共同保留集上校准扰动损失, 或按预测熵与样本数归一化, 能减少这种不可比性.

蒸馏也受类别集合影响. 教师只认识旧类, 对新类没有概率质量; 学生同时学习新类时, 分别归一化旧头与在全类别上归一化会产生不同梯度. 前者保持旧类内部关系, 留下新旧头尺度问题; 后者需要为教师的新类概率定义补充值. 实验必须说明蒸馏 softmax 覆盖哪些类别. 多标签任务又改变约束结构. 每个标签用独立 sigmoid, 新标签不会进入旧标签的共同分母, Class-IL 的 softmax 偏置减弱; 共享表征仍会遗忘, 正负样本不平衡也会影响阈值. 将单标签结论直接迁移到多标签设置, 容易把输出竞争与表征漂移混为一谈.

回归任务没有类别头, Fisher 与 SI仍可用, LwF约束连续输出. 输出尺度决定蒸馏损失: 一个量纲较大的目标会主导平方误差. 标准化目标或按观测噪声加权, 相当于选择函数空间度量. 若旧任务关注尾部误差, 均方蒸馏保持平均输出也可能漏掉关键区域. 参数共享的位置决定正则化的作用范围. 只对骨干施加 EWC、允许新头自由训练, 能保护表征并保持新类可塑性; 对全部参数同强度保护, 分类头扩展时会出现形状和尺度问题. 分层设置 λl\lambda_l 可以反映不同层的复用程度, 但也增加调参自由度. 用同一验证协议比较统一和分层强度, 才能判断复杂度是否必要.

在 Transformer 中, LayerNorm、嵌入、注意力和 MLP 的尺度与对称性不同. 逐参数 Fisher 将它们放在同一数值量尺上并不稳妥. 按层归一化重要性会防止某层因梯度尺度大而占据全部惩罚, 同时丢掉跨层绝对敏感度. 更可靠的检查是对每层施加等函数影响的扰动, 校准重要性与真实输出变化. 混合精度会影响小重要性值. FP16/BF16 存储 Fisher 时, 尾部值可能舍入或下溢; FP32 存储又增加巨大显存. 对重要性做对数压缩、分块缩放或只保存高值参数, 都引入新的近似. 报告数值类型和稀疏阈值, 否则同一公式在大模型上可能实现为不同方法.

稀疏保存重要性需要观察分布. 如果少数参数承载大部分质量, 保留 top-kk 有效; 如果重要性平坦, 阈值会随机删除大量同等方向. 仅报告保留比例不够, 还应给累计质量和扰动实验. 重要性高不等于参数不可替代, 冗余网络中多个低重要参数也可能共同实现关键功能.

参数对称性还影响跨 checkpoint 合并. 两个独立训练分支功能相近, 隐藏单元排列不同, 逐坐标 Fisher 无法直接对齐. 将一个分支的重要性用于另一个分支会保护错误参数. 所有正则化统计都绑定生成它的参数坐标, 除非先做模型对齐或从共同初始化保持路径连续. 这也是 EWC 适合顺序微调、难以直接用于任意模型合并的原因. 顺序训练保持同一参数身份, 局部统计至少有坐标连续性; 独立分支跨越不同盆地, 同一索引不再代表同一功能. 模型合并方法要处理置换、任务向量冲突和缩放, 不能只把两个 Fisher 相加.

训练批大小也改变 Fisher 与路径分数. 大 batch 梯度接近期望, 经验 Fisher若用 batch 平均梯度外积, 会把样本间相消后的结果平方, 不等于逐样本梯度外积平均. 正确估计需要 per-sample gradient 或模型标签采样. 用批梯度近似时, batch 越大, 相消越强, 重要性可能系统偏小. 设两个样本对某参数的梯度分别为 +1+1 与 −1-1. 逐样本外积平均为 (12+(−1)2)/2=1(1^2+(-1)^2)/2=1; 先平均梯度得到 0, 再做外积为 0. 前者说参数对单样本似然敏感, 后者说 batch 总损失一阶抵消. 两种量回答不同问题, 实现中不能混写为同一个经验 Fisher.

数据增强同样进入估计分布. 对同一图片随机裁剪十次计算 Fisher, 等于强调对增强变化稳定的方向; 只用原图则保护原始支持集. 若新任务训练使用强增强、旧 Fisher 用弱增强, 重要性与实际梯度分布错位. 估计协议应与要保护的部署分布对应. 统计检验方面, 旧任务准确率是配对数据. 同一测试样本在更新前后有四种结果: 都对、前错后对、前对后错、都错. 遗忘集中在“前对后错”格, McNemar 型配对分析比把两次准确率当独立比例更合适. 它还能显示净准确率不变时, 模型是否换了一批错误样本.

多任务汇总要区分宏平均与微平均. 宏平均让每个任务等权, 微平均让大测试集主导. 若早期任务样本少、后期任务样本多, 两种口径会给出不同遗忘趋势. 同时报告每任务曲线和汇总口径, 防止平均值掩盖小任务完全坍塌. 超参数比较应考虑选择方差. 在少量验证任务上从很宽的 λ\lambda 网格挑最好值, 选中结果包含正向噪声. 用独立序列复核或嵌套验证, 才能估计选择后的真实性能. 报告整个网格曲线还能看出方法是否只在狭窄区间有效.

若最优 λ\lambda 随任务顺序跨多个数量级变化, 固定方法缺少稳健性. 此时平均最优成绩会高估部署表现, 因为真实数据流不能提前知道冲突程度. 可以固定一个全局值、使用只依赖已见数据的自适应规则, 再与事后 oracle 值比较. 两者差距量化了超参数先知信息.

对每种重要性方法还应报告计算估计误差. 用不同 Fisher 样本子集、不同路径采样或不同 MAS 输入重复估计 Ω\Omega, 比较排名相关性和最终性能. 重要性本身若高度不稳定, 单次热图没有解释价值. 增加估计样本后排名稳定而性能不升, 瓶颈在近似结构而非采样噪声.

负结果需要保留训练是否收敛的信息. 正则化让有效条件数变差, 同样 epoch 下可能只是优化不足. 增加步数、调整学习率后若新任务恢复且旧任务仍保持, 原结果属于优化速度; 若收敛后仍位于折中点, 才是稳定—可塑性的目标冲突. 计算预算相同时与收敛比较回答不同问题, 两者都值得报告.

最终的选择可以落到三个问题. 旧输入能否保留或生成, 决定函数约束是否有可靠查询点; 任务之间是否共享参数方向, 决定局部二次近似能否找到低冲突路径; 更新是否必须永久保留, 决定累计精度应该增长、衰减还是分上下文保存. 这三个问题比“哪个正则化方法分数最高”更能迁移到新的模型和数据流.

还有一个经常被最终分数遮住的现象: 正则化可能推迟遗忘, 没有消除遗忘. 学完任务 B 时旧任务几乎不降, 继续学习 C、D 后旧锚点的局部近似逐渐失真, 性能才突然下降. 因此要画每个旧任务随全部后续阶段的轨迹, 观察遗忘速度和拐点. 只比较相邻两个任务, 会把延迟发生的失效写成成功.

反过来, 某些旧能力会在后续相关任务中恢复, BWT 因而变正. 这可能是真正的正迁移, 也可能只是分类头重新校准. 用旧任务损失、表征探针和样本级转移矩阵共同检查, 才能知道恢复发生在哪一层. 参数重新靠近旧锚点也不构成功能恢复的充分证据.

方法报告最好保留一份最小证据表: 每阶段当前与历史任务性能, 新旧梯度夹角, 参数移动量, 正则梯度占比, 重要性估计样本数, 额外状态字节数和总训练成本. 这些字段能把“保护得更好”拆成约束更准、更新更小、训练更久或资源更多, 让不同正则化路线在同一口径下比较.

正则化的上限由压缩决定. 一个对角向量、一组路径分数或一位教师模型都只保存旧学习过程的某个投影. 当投影与未来查询匹配时, 固定成本就能产生很高的保持收益; 当未来任务追问被投影丢掉的方向, 再精确地优化代理目标也不会恢复原信息. 这条边界解释了为什么回放、模块隔离和外部记忆会长期与正则化并存.

2. 参考文献

  1. Kirkpatrick, J., et al. (2017). Overcoming catastrophic forgetting in neural networks. PNAS.
  2. Kunstner, F., Hennig, P., & Balles, L. (2019). Limitations of the Empirical Fisher Approximation for Natural Gradient Descent. NeurIPS 2019.
  3. Schwarz, J., et al. (2018). Progress & Compress: A scalable framework for continual learning. ICML 2018.
  4. Chaudhry, A., Dokania, P. K., Ajanthan, T., & Torr, P. H. S. (2018). Riemannian Walk for Incremental Learning: Understanding Forgetting and Intransigence. ECCV 2018.
  5. Zenke, F., Poole, B., & Ganguli, S. (2017). Continual Learning Through Synaptic Intelligence. ICML 2017.
  6. Aljundi, R., Babiloni, F., Elhoseiny, M., Rohrbach, M., & Tuytelaars, T. (2018). Memory Aware Synapses: Learning what (not) to forget. ECCV 2018.
  7. Li, Z., & Hoiem, D. (2016). Learning without Forgetting. ECCV 2016 / TPAMI 2017.
  8. van de Ven, G. M., & Tolias, A. S. (2019). Three scenarios for continual learning. arXiv:1904.07734.
  9. Chaudhry, A., Ranzato, M., Rohrbach, M., & Elhoseiny, M. (2019). Efficient Lifelong Learning with A-GEM. ICLR 2019.
  10. Buzzega, P., Boschini, M., Porrello, A., Abati, D., & Calderara, S. (2020). Dark Experience for General Continual Learning: a Strong, Simple Baseline. NeurIPS 2020.
  11. De Lange, M., et al. (2022). A continual learning survey: Defying forgetting in classification tasks. IEEE TPAMI.
  12. Masana, M., et al. (2022). Class-incremental learning: survey and performance evaluation on image classification. IEEE TPAMI.