Grow, Assess, Compress: Adaptive Backbone Scaling for Memory-Efficient Class Incremental Learning

作者: Adrian Garcia-Castañeda, Jon Irureta, Jon Imaz, Aizea Lojo 年份: 2026 会议: ICML 分类: 模型增长

论文笔记:GRACE — Grow, Assess, Compress

元信息

项目内容
机构未明确
日期March 2026
项目主页暂未公开
对比基线DER, FOSTER, MEMO
链接arXiv / 代码即将开源

一句话总结

提出 GRACE(Grow-Assess-Compress)循环框架用于类增量学习(CIL),通过 Normalized Effective Rank 评估 backbone 容量利用率,条件性决定扩展或压缩,相比纯扩张方法最高节省 73% 参数,同时在公平内存预算下超越 SOTA 达 3.71pp。

核心贡献

容量感知饱和度评估(Assess Phase): 利用 eRank~(归一化 effective rank)衡量 backbone 特征空间利用率,自动判断是否真正需要扩展新 backbone

重要性感知学生初始化(Importance-Aware Init): 融合保存因子 PP 与偏差因子 BB,通过 γ\gamma-norm 幂均值加权合并 backbone,避免简单平均导致的性能损失

双层知识蒸馏压缩(Compress Phase): 同时在 logit 层(KL 蒸馏)和特征层(MSE 对齐)传递知识,消融实验证明两层缺一不可

问题背景

要解决的问题

类增量学习(Class Incremental Learning, CIL)中,扩张型方法(DER、FOSTER、MEMO)为每个新任务添加独立 backbone,导致参数量随任务数线性增长,在长序列场景下内存爆炸

现有方法的局限

固定容量方法(iCaRL、EWC):内存效率好但精度受限,遭受灾难性遗忘

扩张方法(DER):每任务无条件添加 backbone,参数量不可控

严格压缩方法(FOSTER):每次都压缩回单一 backbone,若容量不足则精度下降

缺少反馈机制来判断”是否真的需要扩展”

本文的动机

受”模型容量利用率”启发:如果已有 backbone 的特征空间未被充分利用(eRank 低),则无需添加新 backbone,直接压缩合并即可;只有在真正饱和时才扩展

方法详解

模型架构

GRACE 维护四类 backbone 组件,在任务序列中动态管理其状态:

ϕfixed0,ϕfixed1,\phi_{\text{fixed}}^0, \phi_{\text{fixed}}^1, \ldots:已完全冻结的 backbone,容量已饱和(历史扩展留下的)

ϕmerge\phi_{\text{merge}}:当前可合并的 backbone,已冻结但仍有剩余表示空间(单个)

ϕprov\phi_{\text{prov}}:当前任务新分配的可训练 provisional backbone

ϕst\phi_{\text{st}}:Compress 阶段生成的学生 backbone(临时存在)

每个任务的完整预测拼接所有 backbone 的输出:

fexp(x)=WT[ϕfixed0(x),ϕfixed1(x),,ϕmerge(x),ϕprov(x)]f_{\text{exp}}(x) = W^T[\phi_{\text{fixed}}^0(x), \phi_{\text{fixed}}^1(x), \ldots, \phi_{\text{merge}}(x), \phi_{\text{prov}}(x)]

核心模块

模块1: Grow — 架构扩展阶段

设计动机: 为新任务分配独立特征提取器,防止已有 backbone 被破坏(灾难性遗忘

具体实现:

  • 实例化新 backbone ϕprov\phi_{\text{prov}} 并仅训练该分支
  • 其余 backbone 全部冻结
  • 引入辅助分类器 fauxf_{\text{aux}},在 Yt+1|\mathcal{Y}_t| + 1 个类别上操作:当前任务所有类 + 统一旧类别(将所有历史任务类合并为一个虚拟类)
  • 辅助分类器的作用:迫使 ϕprov\phi_{\text{prov}} 学习区分当前任务类与”非当前任务”,保证跨任务可分性

模块2: Assess — 容量评估阶段

设计动机: 基于 Effective Rank(特征空间利用率)判断 ϕmerge\phi_{\text{merge}} 是否已被充分利用

具体实现:

  • ϕmerge\phi_{\text{merge}}D~t=DtE\tilde{\mathcal{D}}_t = \mathcal{D}_t \cup \mathcal{E}(当前任务数据 + 记忆池样本)提取特征矩阵 ZRD~t×dZ \in \mathbb{R}^{|\tilde{\mathcal{D}}_t| \times d}
  • 中心化 → SVD → 计算 eRank~
  • 与阈值 τt\tau_t 比较,决定走扩展路径还是压缩路径
  • 条件可塑性(Conditional Plasticity): 阈值衰减机制防止永远不扩展

模块3: Compress — 模型合并阶段

设计动机: 将 ϕmerge\phi_{\text{merge}}ϕprov\phi_{\text{prov}} 的知识合并到单个学生 backbone,控制参数增长

具体实现:

  • 重要性感知初始化:按 PPBB 加权平均两个 backbone 权重作为学生起始点
  • 扩展模型(包含 ϕmerge\phi_{\text{merge}}ϕprov\phi_{\text{prov}})作为教师
  • 双层蒸馏训练学生:logit-level KL 蒸馏 + feature-level MSE 对齐
  • 压缩后 ϕst\phi_{\text{st}} 成为新的 ϕmerge\phi_{\text{merge}}

扩展路径(当 eRank~ ≥ τt\tau_t):ϕmerge\phi_{\text{merge}} 晋升为 ϕfixed\phi_{\text{fixed}}ϕprov\phi_{\text{prov}} 晋升为新的 ϕmerge\phi_{\text{merge}},参数量增加

关键公式

公式1: 有效秩(eRank)计算

步骤:对特征矩阵 ZZ 中心化后 SVD,得奇异值 σ1,,σk\sigma_1, \ldots, \sigma_k,归一化为概率分布:

pi=σijσjp_i = \frac{\sigma_i}{\sum_j \sigma_j}

含义: 将奇异值归一化,视为各维度方向的”能量占比”

用 Shannon 熵计算 effective rank:

eRank=exp ⁣(i=1kpilnpi)\text{eRank} = \exp\!\left(-\sum_{i=1}^{k} p_i \ln p_i\right)

含义: 特征矩阵有效秩越高,说明各奇异方向利用越均匀,backbone 容量越饱和

符号说明:

  • σi\sigma_i: 特征矩阵 ZZ 的第 ii 个奇异值
  • pip_i: 归一化后的”能量占比”
  • kk: SVD 分解保留的奇异值数量

归一化为 [0,1][0, 1] 范围:

eRank~=eRankmin(D~t,d)\widetilde{\text{eRank}} = \frac{\text{eRank}}{\min(|\tilde{\mathcal{D}}_t|, d)}

含义: 除以理论最大值,得到相对利用率

符号说明:

  • D~t|\tilde{\mathcal{D}}_t|: 用于评估的样本数(当前任务 + 记忆池)
  • dd: 特征维度

公式2: 扩展模型预测

fexp(x)=WT[ϕfixed0(x),ϕfixed1(x),,ϕmerge(x),ϕprov(x)]f_{\text{exp}}(x) = W^T[\phi_{\text{fixed}}^0(x), \phi_{\text{fixed}}^1(x), \ldots, \phi_{\text{merge}}(x), \phi_{\text{prov}}(x)]

含义: 拼接所有 backbone 的特征,通过统一分类头预测

公式3: 辅助分类器预测

faux(x)=WauxTϕprov(x)f_{\text{aux}}(x) = W_{\text{aux}}^T \phi_{\text{prov}}(x)

含义: 仅使用当前 provisional backbone,在 Yt+1|\mathcal{Y}_t| + 1 个类别(当前类 + 统一旧类)上分类

公式4: Grow 阶段训练损失

Lexp=CE(fexp(x),y)+CE(faux(x),yaux)\mathcal{L}_{\text{exp}} = \ell_{\text{CE}}(f_{\text{exp}}(x), y) + \ell_{\text{CE}}(f_{\text{aux}}(x), y_{\text{aux}})

含义: 主分类损失 + 辅助跨任务可分性损失

符号说明:

  • yy: 真实标签(当前任务类)
  • yauxy_{\text{aux}}: 辅助标签(当前任务类 or 统一旧类别标签)

公式5: 容量阈值衰减机制

τt+1={ρτtif eRank~<τt(压缩)τ1if eRank~τt(扩展)\tau_{t+1} = \begin{cases} \rho \cdot \tau_t & \text{if } \widetilde{\text{eRank}} < \tau_t \quad (\text{压缩}) \\ \tau_1 & \text{if } \widetilde{\text{eRank}} \geq \tau_t \quad (\text{扩展}) \end{cases}

含义: 每次压缩后阈值乘以衰减因子 ρ(0,1]\rho \in (0, 1],连续压缩会降低标准,增加后续扩展可能性;若发生扩展则阈值重置为初始值 τ1\tau_1

符号说明:

  • τt\tau_t: 第 tt 个任务的饱和阈值
  • ρ\rho: 衰减率,ρ(0.9,0.98)\rho \in (0.9, 0.98)
  • τ1\tau_1: 初始阈值,τ1(0.5,0.8)\tau_1 \in (0.5, 0.8)

公式6: 压缩权重——保存因子 P

P=YmergeYmerge+YtP = \frac{|\mathcal{Y}_{\text{merge}}|}{|\mathcal{Y}_{\text{merge}}| + |\mathcal{Y}_t|}

含义: 已有 backbone 负责的类别数占总类别数的比例,衡量”旧知识的重要程度”

符号说明:

  • Ymerge|\mathcal{Y}_{\text{merge}}|: mergeable backbone 覆盖的类别数(历史类)
  • Yt|\mathcal{Y}_t|: 当前任务新增类别数

公式7: 压缩权重——偏差因子 B

B=nnewnnew+noldB = \frac{n_{\text{new}}}{n_{\text{new}} + n_{\text{old}}}

含义: 当前任务样本数占总样本数比例,衡量”新任务数据的学习压力”

符号说明:

  • nnewn_{\text{new}}: 当前任务的训练样本数
  • noldn_{\text{old}}: 记忆池中历史样本总数

公式8: 学生 backbone 合并权重

w=(Pγ+Bγ2)1/γw = \left(\frac{P^\gamma + B^\gamma}{2}\right)^{1/\gamma}

含义: 将保存因子 PP 和偏差因子 BB 通过 γ\gamma-norm 幂均值融合为最终合并权重 wwww 越大说明越偏向保留旧 backbone 的权重

符号说明:

  • γ\gamma: 控制两个因子的融合方式(γ\gamma \to \infty 取最大值,γ=1\gamma = 1 为算术平均,γ0\gamma \to 0 为几何平均)

公式9: 学生 backbone 权重初始化

ϕst=wϕmerge+(1w)ϕprov\phi_{\text{st}} = w \cdot \phi_{\text{merge}} + (1 - w) \cdot \phi_{\text{prov}}

含义: 以 ww 为权重插值合并两个 backbone 的参数,作为学生 backbone 的初始权重

公式10: Logit-Level 知识蒸馏损失

Lkd=T2KL ⁣(σ ⁣(zexpT)σ ⁣(zcomT))\mathcal{L}_{\text{kd}} = T^2 \cdot \text{KL}\!\left(\sigma\!\left(\frac{\mathbf{z}_{\text{exp}}}{T}\right) \,\Big\|\, \sigma\!\left(\frac{\mathbf{z}_{\text{com}}}{T}\right)\right)

含义: 用温度 TT 软化 logit,让学生模型(压缩后)的输出分布匹配教师模型(扩展模型)的输出分布

符号说明:

  • TT: 蒸馏温度
  • zexp\mathbf{z}_{\text{exp}}: 教师(扩展模型)的 logit
  • zcom\mathbf{z}_{\text{com}}: 学生(压缩模型)的 logit
  • σ()\sigma(\cdot): softmax

公式11: Feature-Level 特征对齐损失

Lfeat=MSE ⁣(WprojTϕst,  [ϕmerge,ϕprov])\mathcal{L}_{\text{feat}} = \ell_{\text{MSE}}\!\left(W_{\text{proj}}^T \phi_{\text{st}},\; [\phi_{\text{merge}}, \phi_{\text{prov}}]\right)

含义: 通过可学习投影层 WprojRd×2dW_{\text{proj}} \in \mathbb{R}^{d \times 2d} 将学生特征投影到拼接教师特征的空间,用 MSE 对齐

符号说明:

  • WprojW_{\text{proj}}: 可学习投影矩阵,将 dd 维特征映射到 2d2d
  • [ϕmerge,ϕprov][\phi_{\text{merge}}, \phi_{\text{prov}}]: 两个教师 backbone 特征的拼接

公式12: Compress 阶段总损失

Lcom=λ ⁣(αLkd+βLfeat)+(1λ)CE(fcom(x),y)\mathcal{L}_{\text{com}} = \lambda\!\left(\alpha \mathcal{L}_{\text{kd}} + \beta \mathcal{L}_{\text{feat}}\right) + (1 - \lambda)\,\ell_{\text{CE}}(f_{\text{com}}(x), y)

含义: 三项损失加权:logit 蒸馏 + 特征对齐 + 交叉熵分类损失,λ\lambda 控制蒸馏与分类损失的权衡

符号说明:

  • λ\lambda: 蒸馏损失整体权重
  • α,β\alpha, \beta: logit 蒸馏和特征蒸馏的相对权重
  • fcomf_{\text{com}}: 压缩后模型的预测

关键图表

Figure 1: GRACE 框架性能总览

Figure 1a: CIFAR-100 平均精度对比{:width 600}

Figure 1b: CIFAR-100 参数量对比{:width 600}

Figure 1c: Base 50 Inc 2 扩展动态{:width 600}

说明: 左上展示精度,右上展示参数量。GRACE 在保持 SOTA 精度的同时参数量远低于 DER/MEMO 等扩张方法。底部展示 Base 50 Inc 2 设定下各任务的扩展动态——GRACE 只在必要时扩展,不像 DER 每任务无条件扩展。

Figure 2: GRACE 框架整体概览

Figure 2: GRACE 整体架构{:width 700}

说明: 展示 GRACE 的三阶段循环流程:(1) Grow——为新任务实例化 ϕprov\phi_{\text{prov}},训练扩展模型;(2) Assess——计算 eRank~,决策扩展还是压缩;(3) Compress——知识蒸馏合并 ϕmerge\phi_{\text{merge}}ϕprov\phi_{\text{prov}}。颜色标注不同状态的 backbone(fixed / mergeable / provisional / student)。

Figure 3: Compress 阶段详解

Figure 3: 模型合并蒸馏{:width 600}

说明: 扩展模型(包含 ϕmerge\phi_{\text{merge}}ϕprov\phi_{\text{prov}})作为教师,压缩后的学生模型同时接受三路监督:logit-level KL 蒸馏、feature-level MSE 对齐、交叉熵分类损失。

Figure 4: 阈值与衰减超参数的影响

Figure 4a: 扩展动态(CIFAR-100 Base 0 Inc 10){:width 500}

Figure 4b: 精度变化(CIFAR-100 Base 0 Inc 10){:width 500}

说明: 不同 (τ1,ρ)(\tau_1, \rho) 配置下的扩展次数和精度。高 τ1\tau_1 更容易触发压缩,低 ρ\rho 使阈值衰减更快,两者共同控制模型的”生长倾向”。

Figure 5: 超参数敏感性分析

Figure 5a{:width 400}

Figure 5b{:width 400}

Figure 5c{:width 400}

Figure 5d{:width 400}

Figure 5e{:width 400}

说明: 在 CIFAR-100 多个 protocol 设定下对 τ1\tau_1ρ\rho 的网格搜索结果,标注了 Pareto 前沿点(精度与参数量的最优权衡)。

Table 1: CIFAR-100 主要结果(#P 单位:M)

方法B0-I5 #PB0-I5 LastB0-I5 AvgB0-I10 #PB0-I10 LastB0-I10 AvgB50-I2 #PB50-I2 LastB50-I2 AvgB50-I10 #PB50-I10 LastB50-I10 Avg
Finetune0.464.9417.390.468.8626.110.461.945.790.468.8822.51
Replay0.4637.2557.000.4640.0558.650.4640.1248.930.4642.1152.09
EWC0.464.9018.730.4612.4130.820.468.5018.370.4614.4129.32
iCaRL0.4645.3463.080.4648.6465.060.4643.4553.350.4651.9061.04
DER9.2056.8969.314.6060.4771.2311.9658.9566.092.7662.1768.68
FOSTER0.4647.7261.920.4654.1566.870.4650.8460.000.4658.5466.32
MEMO7.1453.9567.583.6256.8668.999.2553.3560.252.2257.7364.65
BEEF9.2045.3263.784.6056.8669.5911.9650.6262.292.7659.8666.83
DGR0.4648.6162.010.4653.3265.110.4640.9650.620.4655.0262.63
GRACE4.6057.3969.812.3060.8071.443.2258.0966.421.8462.5568.85

关键发现: GRACE 在 B50-I2(最长序列)中参数量仅 3.22M(vs DER 的 11.96M,减少 73%),且精度相当甚至更高。B0-I10 下 Last Acc 持平 DER(60.80 vs 60.47),参数量仅一半。

Table 2: ImageNet-100 主要结果(#P 单位:M)

方法B0-I5 #PB0-I5 LastB0-I5 AvgB0-I10 #PB0-I10 LastB0-I10 AvgB50-I10 #PB50-I10 LastB50-I10 Avg
Finetune11.174.6616.8211.179.2826.2811.179.5824.53
Replay11.1736.3455.6211.1742.6460.2611.1741.4651.86
EWC11.175.6018.8311.1710.8628.0611.1711.6826.35
iCaRL11.1744.4861.8611.1750.4667.2311.1753.9663.42
DER223.464.6273.66111.766.5675.6867.0273.3479.59
FOSTER11.1751.3863.0711.1760.7869.2211.1767.4074.22
MEMO170.656.0268.3886.7261.0472.0553.1460.1667.56
BEEF223.4111.765.6074.7167.02
DGR11.1748.6860.8711.1754.1863.1611.1765.1572.21
GRACE134.0464.8673.5278.1966.7676.0644.6873.5079.55

关键发现: GRACE 在 ImageNet-100 上全面持平或超越 DER(66.76 vs 66.56 on B0-I10 Last),参数量减少约 30-40%。B0-I5 因 ImageNet 特征复杂度高,GRACE 触发更多扩展,但仍少于 DER。

Table 3: Memory-Aligned 公平评估(CIFAR-100)

方法B0-I5 MB0-I5 LastB0-I5 AvgB0-I10 MB0-I10 LastB0-I10 Avg
Replay1346660.8373.66743156.3770.26
iCaRL1346661.4074.02743159.0871.41
DER200056.8969.31200060.4771.23
FOSTER1346663.2874.94743160.2672.56
MEMO477162.1472.96331261.5772.01
BEEF200045.3263.78200056.8669.59
DGR1346656.4965.76743157.3765.46
GRACE803565.1775.76501765.2874.63

关键发现: 在相同内存预算下(将参数内存与 exemplar 内存统一计算),GRACE 在 B0-I10 上以 65.28% Last Acc 超越所有方法,较次优 FOSTER 高 3.71pp(65.28 vs 60.26+)。

Table 4: 消融实验(CIFAR-100 Base 0 Inc 10)

方法Importance-Aware InitFeature KDLogit KDLastAvg
DER(基线)60.4771.23
GRACE38.4158.23
GRACE45.3660.03
GRACE54.1168.69
GRACE47.6461.68
GRACE58.9070.28
GRACE59.5471.17
GRACE(Full)60.8071.44

关键发现: Importance-Aware Init 贡献最大——仅有初始化(无蒸馏)时 Last Acc = 54.11%,而仅有 Logit KD 时只有 38.41%。三者协同效果最佳(60.80%),略超 DER 基线(60.47%)但参数减半

Table 5: Importance-Aware 初始化 vs 简单平均初始化(CIFAR-100)

方法B0-I5 LastB0-I5 AvgB0-I10 LastB0-I10 AvgB50-I2 LastB50-I2 AvgB50-I10 LastB50-I10 Avg
简单平均基线56.9969.5060.0270.6456.3865.5860.2967.58
Importance-Aware(Ours)57.3969.8160.8071.4458.0966.4262.5568.85
Δ+0.40+0.31+0.78+0.80+1.71+0.84+2.26+1.27

关键发现: 重要性感知初始化在长序列(B50-I2)上提升最显著(+1.71% Last),说明任务多时历史知识保护更重要。

实验

数据集

数据集规模特点用途
CIFAR-10050,000 训练 / 10,000 测试,100 类,32×32小分辨率,训练快主要基准,4 个 protocol
ImageNet-100ImageNet 的 100 类子集,224×224大分辨率,更接近实际场景扩展验证,3 个 protocol

Protocol 命名:Base BB Inc II 表示从 BB 个基础类开始,每次增量 II 个类(Base 0 = 所有类均匀划分)

实现细节

Backbone: ResNet32(CIFAR-100)、ResNet18(ImageNet-100)

框架: PyTorch + PyCIL toolbox

Exemplar buffer: 2,000 张图片,Herding 策略选取

数据增强: 随机裁剪、水平翻转、颜色抖动

超参数搜索: τ1[0.5,0.8]\tau_1 \in [0.5, 0.8]ρ[0.9,0.98]\rho \in [0.9, 0.98],网格搜索

硬件: NVIDIA L40S GPU(48GB)

代码: 即将开源,配套完整超参数配置

可视化结果

Figure 1 展示 GRACE 在长序列(B50-I2,约 25 个任务)中仅触发约 10 次扩展,其余任务均执行压缩,实现参数节省

Figure 5 的 Pareto 前沿分析表明,τ10.7\tau_1 \approx 0.7ρ0.95\rho \approx 0.95 附近通常可获得最佳精度-参数权衡

批判性思考

优点

无需人工决策增长时机:Effective Rank 提供了自动化的、有理论依据的容量评估标准,优于启发式规则

公平的内存对比:Memory-Aligned 评估框架将参数内存与 exemplar 内存统一,更真实反映方法价值

模块化设计:三个阶段相互独立,Importance-Aware Init 和双层蒸馏均可独立分析(Table 4 消融完整)

局限性

仅在 CNN(ResNet)上验证:未测试 ViT、Swin 等 Transformer 架构

仅在图像分类任务上测试:未验证检测、分割或 NLP 场景

超参数仍需网格搜索τ1\tau_1ρ\rho 的最优值依赖于任务序列长度,缺少自适应设置方案

压缩阶段信息损失未量化:仅比较最终精度,未分析压缩后遗忘了哪些具体知识

未与 function-preserving 方法结合:如 function-preserving(Grow, Don’t Overwrite)的结合潜力未探索

潜在改进方向

将 Effective Rank 评估扩展到 Transformer 的 attention head 或 FFN 层的容量评估

用自适应 τ1\tau_1 替代网格搜索(如基于历史任务的统计估计)

将 GRACE 框架扩展到检测等需要特征金字塔的任务

可复现性评估

  • 代码开源(即将,论文中承诺)
  • 预训练模型(未提及)
  • 训练细节完整(超参数范围明确)
  • 数据集可获取(CIFAR-100 / ImageNet-100 均公开)

关联笔记

基于

DER: Dynamically Expandable Representation,GRACE 基于其扩张范式,添加 Assess+Compress 阶段

FOSTER: Feature Boosting and Compression,提出严格压缩回单 backbone,GRACE 的条件性压缩是对其改进

PyCIL: 使用该 CIL 工具箱作为实验框架

对比

MEMO: Multi-level Memory Optimization,同为扩张型方法,GRACE 在相同精度下参数量更少

BEEF: 同为 backbone 扩展方法,缺少容量评估机制

方法相关

Effective Rank: GRACE 的核心评估指标,来自 Roy & Vetterli (2007)

知识蒸馏: Compress 阶段的核心机制

特征蒸馏: Feature-level 对齐损失

function-preserving: 模型增长的相关基础概念

硬件/数据相关

CIFAR-100: 主要基准数据集

ImageNet-100: 扩展验证数据集

ResNet: 使用的 backbone 架构

速查卡片

GRACE (2026, ICML)

  • 核心: Grow-Assess-Compress 循环框架,通过 Normalized Effective Rank 条件性决定是否压缩 backbone
  • 方法: eRank~ 评估容量利用率 → 低于阈值压缩,否则扩展;压缩时用 Importance-Aware Init + 双层 KD
  • 结果: CIFAR-100 最高节省 73% 参数,Memory-Aligned 评估超 SOTA +3.71pp
  • 代码: 即将开源

笔记创建时间: 2026-03-11