FA
Memory-Efficient Incremental Learning Through Feature Adaptation
0. 摘要
我们提出了一种增量学习的方法,该方法保存了来自先前学习类别的训练图像的特征描述符,而非图像本身,这与大多数现有方法不同。通过保存低维的特征嵌入,可以显著减少内存占用。假设模型会随着新的类别逐步更新,每次仅有新数据可用。这需要在无法访问相应原始训练图像的情况下,将先前存储的特征向量适配到更新后的特征空间。特征适配是通过多层感知机(MLP)学习的,该模型以训练图像上原始网络与更新网络的输出特征对作为训练数据。实验验证表明,这种变换对先前类别的特征具有良好的泛化能力,并将特征映射到特征空间中的一个判别性子空间。因此,分类器可以在没有旧类别图像的情况下联合优化新旧类别的分类任务。实验结果表明,我们的方法在增量学习基准测试中达到了最先进的分类准确性,同时与保存图像的方法相比,内存占用降低了至少一个数量级。
1. 引言
深度神经网络在许多计算机视觉问题上表现出色,例如图像分类【15,22,37】和目标检测【14,31】。然而,大多数常见模型需要大量标注数据进行训练,并假设所有可能类别的数据在训练时可同时获取。
与此不同的是,类别增量学习【30】处理一种场景:训练数据是按顺序接收的,先前类别的数据会随着新类别数据的到来被丢弃。因此,所有类别不会一次性学习。理想情况下,模型应该能够在学习新类别的同时保留从先前类别中学到的知识。然而,这会引发一个重要问题,因为神经网络已知会快速遗忘过去学到的知识——这种现象被称为灾难性遗忘(catastrophic forgetting)【27】。最近的方法通过增加正则化项【20,23】鼓励网络保持与其先前状态相似,或者通过保存先前类别的一部分数据【30】来缓解神经网络的灾难性遗忘问题。
Rebuffi 等人【30】提出了一种成功增量学习系统的一个重要标准:“计算需求和内存占用应保持有界,或者至少随着已经见过的类别数量缓慢增长。”在我们的工作中,我们显著改进了增量学习系统的内存占用。我们提出保存一部分特征描述符而非图像的策略。这使得我们能够通过低维嵌入压缩来自先前类别的信息。例如,在使用 ResNet-18 进行 ImageNet 分类时,保存一个 512 维的特征向量所需的存储仅为 256×256×3 图像存储需求的约 1%(详见 5.3 节)。实验表明,与现有方法相比,我们的方法在增量学习基准测试中实现了更好的分类准确性,同时内存占用至少降低了一个数量级。
我们保存特征描述符而不是图像的策略面临一个严重潜在问题:随着模型对更多类别进行训练,特征提取器会发生变化,使得先前特征提取器生成的特征描述符变得不再适用。为了解决这一问题,我们提出了一种特征适配方法,可以学习两个特征空间之间的映射。如图 1 所示,我们的新方法可以学习特征空间的变化,并将保存的特征描述符适配到新特征空间。在所有图像特征位于相同特征空间后,我们可以训练一个特征分类器,对已见类别的特征进行正确分类。
本文贡献
本文的主要贡献如下:
- 我们提出了一种增量学习框架,其中保存的是先前特征描述符,而非先前图像。
- 我们提出了一种特征适配方法,用于在模型更新时将先前的特征描述符映射到其正确值。
- 我们在流行的类别增量学习基准测试上验证了我们的方法,并表明其在 ImageNet 上相较于其他最新方法实现了最优的准确性,同时显著降低了内存占用。
2. 相关工作
深度学习时代之前的增量学习文献包括增量训练的支持向量机【5】、随机森林【32】以及能够推广到新类别的度量学习方法【28】。本文的重点主要放在更近期的基于深度学习的方法上。这些方法的核心通常是“重放”(rehearsal)的概念,即在用新类别数据更新模型时,保存并重用先前类别数据【33】。
2.1 非重放方法
非重放方法不保存先前类别的任何数据。常见方法包括:
- 为新类别集增加网络容量【35,38】;
- 权重合并(Weight Consolidation),即识别对先前类别重要的权重,并减缓这些权重的学习速率【20】。
Chaudhry 等人【6】通过加入基于 KL 散度的正则化项改进了权重合并方法。Liu 等人【24】通过旋转网络的参数空间,展示了权重合并在旋转参数空间中更为有效。Aljundi 等人【1】无需标注数据,以无监督的方式计算每个参数的重要性。
Learning without Forgetting (LwF)【23】(将在第 3 节中详细讨论)通过在损失函数中加入知识蒸馏【16】项,缓解了灾难性遗忘。该蒸馏项鼓励新类别的网络输出接近原始网络输出。Learning without Memorizing【8】通过增加基于注意力图的蒸馏项扩展了 LwF 方法。Zhang 等人【45】指出,LwF 生成的模型通常对旧类别或新类别存在偏向性。他们为新类别训练一个单独的模型,并通过无标注辅助数据整合两个模型。Yu 等人【44】通过使用新类别质心估计特征表示漂移,更新了旧类别的质心以进行 NME 分类【30】。
2.2 基于重放的样本保存
Lopez-Paz 和 Ranzato【25】在梯度更新中加入约束,同时在学习新类别时将信息传递到先前类别。Rebuffi 等人提出的增量分类器与表示学习(iCARL)【30】保存了一部分图像(称为“样本”),并在更新新类别的网络时包含这些样本。样本选择通过一种高效算法“herding”实现【39】。研究表明,当使用均值类向量【28】而非网络的学习分类器进行分类时,分类准确性更高。iCARL 是文献中最有效的方法之一,将作为我们的主要基线。Castro 等人【4】通过端到端的方式学习网络和分类器,扩展了 iCARL 方法。类似地,Javed 和 Shafait【18】通过提出动态阈值移动算法,端到端学习分类器。最近的研究还包括通过纠正偏差和在损失函数中引入附加约束【2,17,41】扩展 iCARL。
2.3 基于生成图像的重放
这些方法使用生成模型(如 GANs【10】)生成伪造图像以模拟过去的数据,并在学习新类别时使用生成的图像更新网络【36,40】。He 等人【13】使用多个生成器增加容量,以适应新类别。然而,这些方法的主要缺点是它们通常仅适用于低分辨率图像的数据集,或者其成功依赖于将生成的图像与真实图像结合使用。
2.4 基于特征的方法
早期的基于特征生成的工作主要关注零样本学习【3,42】。Kemker 等人【19】使用双记忆系统,包括快速学习新类别的短期记忆和存储旧类别的长期记忆。他们在内存中存储特征向量的统计信息,例如均值向量和协方差矩阵。Xiang 等人【43】也存储特征向量的统计信息,并学习一个特征生成器生成旧类别的特征向量。这些方法的缺点在于它们依赖于预训练的网络。这与其他方法(如 LwF 和 iCARL)不同,后者从零开始学习网络。
本文提出了一种基于特征的重放方法。与现有基于特征的方法不同,我们不从类别统计中生成特征描述符,而是将保存的特征描述符适配到新的特征空间。我们的方法允许从头开始训练网络,不依赖预训练模型(如【19,43】)。与现有的重放方法相比,我们的方法通过保存特征而非图像显著降低了内存占用。
我们的方法受 Hariharan 和 Girshick 提出的特征生成器【12】启发。他们的方法通过学习类内特征变换作为少样本学习问题中的数据增强手段。我们的方法有所不同,我们在网络的两个不同增量状态下学习同一图像的特征对之间的变换函数。最后,尽管 Yu 等人【44】通过插值估计特征质心的变化,但我们的方法学习了适用于所有保存特征的通用变换函数。
3. 增量学习背景
本节介绍了增量学习任务,并总结了用于训练网络和应对灾难性遗忘的常见策略,包括知识蒸馏和旧数据的保存方法。
3.1 问题定义
我们给定一组图像 $X$ 和其对应的类别标签 $Y$,这些标签属于类别集合 $C$。这定义了数据集 $D = {(x, y) | x \in X, y \in Y}$。在类别增量学习中,我们希望将一个现有模型扩展为可以分类新类别的模型。假设有 $T$ 个任务,将 $C$ 划分为 $T$ 个互不重叠的子集 $C_1, C_2, \ldots, C_T$,其中 $C = C_1 \cup C_2 \cup \cdots \cup C_T$,并且对于 $i \neq j$,$C_i \cap C_j = \emptyset$。第 $t$ 个任务引入了一个新的类别子集 $C_t$,使用的数据集为 $D_t = {(x, y) | y \in C_t}$。我们将 $X^t = {x | (x, y) \in D_t}$ 和 $Y^t = {y | (x, y) \in D_t}$ 分别定义为任务 $t$ 中的训练图像和标签。目标是训练一个分类器,该分类器能够准确地分类新类别 $C_t$ 中的样本,同时仍能正确分类属于旧类别 $C_i (i < t)$ 的样本。
3.2 分类器
学习的分类器通常是一个卷积神经网络(CNN),记作 $f_{\theta,W}: X \to \mathbb{R}^K$,其中 $K$ 是类别的数量。可学习参数 $\theta$ 和 $W$ 对应网络的两个组件:特征提取器 $h_\theta: X \to \mathbb{R}^d$ 和网络分类器 $g_W: \mathbb{R}^d \to \mathbb{R}^K$。特征提取器 $h_\theta$ 将输入图像映射到 $d$ 维特征向量,分类器 $g_W$ 将特征向量映射到 $K$ 维向量以提供每个类别的分类分数。整体网络 $f_{\theta,W}$ 的映射可以表示为:
$$
f_{\theta,W}(x) := g_W(h_\theta(x)).
$$
通过某种损失函数(如交叉熵损失)来训练网络参数 $\theta$ 和 $W$。交叉熵损失定义为:
$$
L_\text{CE}(x, y) := -\sum_{k=1}^K y_k \log(\sigma(f_{\theta,W}(x))_k),
$$
其中 $y \in \mathbb{R}^K$ 是标签向量,$\sigma$ 是 softmax 或 sigmoid 函数。
在增量学习中,随着任务的增加,模型输出的类别数量不断增长。在任务 $t$ 中,类别总数为 $K_t = \sum_{i=1}^t |C_i|$。在任务 $t$ 中,模型需要分类比任务 $t-1$ 多出的 $|C_t|$ 个类别。网络 $f_{\theta,W}$ 只使用当前任务数据 $X^t$ 进行训练,但仍需要准确分类来自所有先前任务类别的样本。
3.3 知识蒸馏
增量学习中的主要挑战之一是灾难性遗忘【11,27】。在任务 $t$ 中,我们希望扩展先前模型的能力以分类新类别 $C_t$。我们初始化新模型 $f_\theta^t, W^t$ 为 $f_\theta^{t-1}, W^{t-1}$。在任务训练开始之前,冻结上一任务模型 $f_\theta^{t-1}, W^{t-1}$ 的副本作为参考。然而,我们只能访问当前任务数据 $X^t$,而无法访问先前任务的数据 $X^i (i < t)$。当通过交叉熵损失(公式 (2))对当前任务数据 $X^t$ 更新网络时,其先前任务的知识会因灾难性遗忘而迅速丧失。
Learning without Forgetting (LwF)【23】通过引入知识蒸馏损失【16】来缓解该问题。这种损失是一种改进的交叉熵损失,鼓励当前任务模型 $f_\theta^t, W^t$ 模仿先前任务模型 $f_\theta^{t-1}, W^{t-1}$ 的输出:
$$
L_\text{KD}(x) := -\sum_{k=1}^{K_{t-1}} \sigma(f_\theta^{t-1}, W^{t-1}(x))k \log(\sigma(f\theta^t, W^t(x))k),
$$
其中 $x \in X^t$。知识蒸馏损失项与分类损失(公式 (2))结合,构成整体损失函数:
$$
L(x, y) := L\text{CE}(x, y) + \lambda L_\text{KD}(x),
$$
其中 $\lambda$ 通常设为 1【30】。注意,在任务 $t$ 中,网络 $f_\theta^t, W^t$ 会不断更新,而网络 $f_\theta^{t-1}, W^{t-1}$ 保持冻结状态,并在任务 $t$ 结束后不会再保存。
3.4 旧类别数据的保存
一种常见的方法是保存一些旧类别的图像,并在训练新任务时使用它们【30】。在任务 $t$ 中,新类别数据为 $X^t$,旧类别数据为先前任务中看到的数据 $X^i (i < t)$。在每个任务 $t$ 结束后,从 $X^t$ 中创建一个新的样本集 $P^t$。样本集 $P^t$ 包含用于训练未来任务的图像子集。因此,在任务 $t$ 中的训练会使用图像 $X^t$ 和 $P^i (i < t)$。
对旧类别数据的训练可以有效缓解先前任务类别的灾难性遗忘。在 iCARL【30】中,样本选择算法“herding”被用于生成 $P^t$,以使选定的样本集能够很好地近似类别的均值向量。通过这种方法,可以对存储样本的内存需求进行有效限制。
4. 高效内存增量学习
我们的目标是保存紧凑的特征描述符(即 $v := h_\theta(x)$),而不是来自旧类别的图像。这使我们能够显著提高内存效率,或者在相同的内存限制下为每个类别存储更多的样本。 保存特征描述符的主要挑战在于,随着特征提取器$h_\theta$ 新数据上进行训练,特征描述符的特性可能随时间变化。这为新任务引入了问题:我们希望使用所有保存的特征描述符共同训练一个能够覆盖所有类别的特征分类器$g_{\tilde{W}}$,但由于$h_\theta$ 生变化,保存的特征描述符与新任务提取的特征描述符可能不兼容。此外,如果我们无法访问旧图像,就无法重新提取特征描述符。
为了解决这一问题,我们提出了一种特征适配方法,该方法通过特征适配网络$\phi_\psi$ 接更新特征描述符。每个任务的训练包括以下步骤:
- 使用分类和蒸馏损失训练主干卷积神经网络(CNN);
- 学习特征适配网络以适配存储的特征到当前任务的特征空间;
- 使用当前任务的特征和已适配的旧任务特征训练特征分类器。
特征分类器$g_{\tilde{W}}$ 于分类测试图像的特征。它独立于网络分类器$g_W$,后者用于训练网络。图 1 给出了我们方法的视觉概述,附录 A 中的算法 1 提供了完整步骤。

4.1 网络训练
这一部分描述了主干卷积神经网络$f_{\theta,W}$ 训练过程。我们的实现与第 3 节中的训练设置相同,但增加了两个额外组件:余弦归一化和特征蒸馏。
余弦归一化:在多个学习任务中提出过【23,26】,包括增量学习【17】。网络预测(公式 (1))基于余弦相似性,而非简单的点积。这等价于$\hat{W}^\top \hat{v}$,其中$\hat{W}$ 分类器参数$W$ 列方向$\ell_2$ 一化版本,$\hat{v}$ 特征向量$v$ $\ell_2$ 一化版本。
特征蒸馏:特征描述符上的附加蒸馏项。类似于公式 (3),在损失函数中增加一个约束,鼓励新特征提取器$h_\theta^t$ 仿旧特征提取器$h_\theta^{t-1}$ 输出:
$$
L_\text{FD}(x) := 1 - \cos(h_\theta^t(x), h_\theta^{t-1}(x)),
$$
其中$x \in X^t$,$h_\theta^{t-1}$ 上一任务冻结的特征提取器。特征蒸馏损失与其他损失项一起最小化,形成总损失函数:
$$
L(x, y) := L_\text{CE}(x, y) + \lambda L_\text{KD}(x) + \gamma L_\text{FD}(x),
$$
其中$\gamma$ 需要调节的超参数,其影响将在 5.4 节中讨论。
特征蒸馏已经被用于增量学习中,替代知识蒸馏损失【17】,但仅用于保存图像的特征向量。它也与注意力蒸馏【8】在理念上相似,后者对两个模型生成的注意力图增加约束。 余弦归一化和特征蒸馏提高了我们方法和基线的准确性。其实际影响将在 5 节中详细研究。
4.2 特征适配
概述 特征适配在每个任务的 CNN 训练完成后进行。以下我们首先描述针对前两个任务的特征适配过程,然后将其扩展到后续任务。
在任务$t = 1$ ,网络用属于类别$C_1$ 图像$X^1$ 行训练。训练完成后,我们提取特征描述符$V^1 = {h_\theta^1(x) | x \in X^1}$,其中$h_\theta^1(x)$ $f_{\theta,W}^1$ 特征提取器组件。我们将这些特征存储到内存$M^1 = V^1$ ,并根据内存需求减少存储的特征数量(这一过程将在本节稍后解释)。 在任务$t = 2$ ,我们获得属于新类别$C_2$ 图像$X^2$。网络$f_{\theta,W}^2$ $f_{\theta,W}^1$ 始化,并在训练期间固定$f_{\theta,W}^1$ 为参考(使用公式 (6) 中的损失)。训练完成后,我们提取新特征$V^2 = {h_\theta^2(x) | x \in X^2}$。
此时我们有两个特征集合:来自任务 1 的$M^1$ 来自任务 2 的$V^2$。需要注意的是,这两个集合的特征分别由不同的特征提取器$h_\theta^1$ $h_\theta^2$ 取,因此它们位于不同的特征空间中,互不兼容。因此,我们必须将$M^1$ 换到与$V^2$ 同的特征空间。为此,我们训练一个特征适配网络$\phi_\psi^{1 \to 2}$,将$M^1$ 射到与$V^2$ 同的空间(训练过程将在下文中描述)。
一旦特征适配网络训练完成,我们使用$\phi_\psi^{1 \to 2}$ $M^1$ 换到当前特征空间,并创建一个新的内存集$M^2 = V^2 \cup \phi_\psi^{1 \to 2}(M^1)$。最终的$M^2$ 含来自当前任务的新特征和来自前一个任务的适配特征,可用于训练判别特征分类器(详见第 4.3 节)。此时,$M^1$ $f_{\theta,W}^1$ 不再需要保存。 对于后续任务$t > 2$,我们遵循相同的过程。给定新任务的图像$X^t$ 类别$C_t$,我们完成训练后提取特征$V^t = {h_\theta^t(x) | x \in X^t}$,训练一个特征适配网络$\phi_\psi^{(t-1) \to t}$,并使用该网络生成内存集$M^t = V^t \cup \phi_\psi^{(t-1) \to t}(M^{t-1})$。最终,$M^t$ 含所有任务$i \leq t$ 类别的特征,全部转换到当前任务的特征空间。此时,$M^{t-1}$ $f_{\theta,W}^{t-1}$ 再需要保存。
特征适配网络的训练 在任务$t$ ,我们通过训练一个变换函数$\phi_\psi^{(t-1) \to t}: \mathbb{R}^d \to \mathbb{R}^d$,将先前的特征提取器$h_\theta^{t-1}$ 输出映射到当前特征提取器$h_\theta^t$ 输出。为此,我们使用当前任务数据$X^t$。 令$V’ = {(h_\theta^{t-1}(x), h_\theta^t(x)) | x \in X^t}$,其中$(v, v’) \in V’$。对于每个$x \in X^t$,$v$ 示其由$h_\theta^{t-1}$ 取的特征,$v’$ 示由$h_\theta^t$ 取的特征。通过学习$v$ $v’$ 间的映射,我们可以将内存中的特征$M^{t-1}$ 换到与$V^t$ 同的特征空间。 训练特征适配网络$\phi_\psi^{(t-1) \to t}$ 损失函数定义为【12】:
$$
L_\text{fa}(v, v’, y) := \alpha L_\text{sim}(v’, \phi_\psi(v)) + L_\text{cls}(g_W, \phi_\psi(v), y),
$$
其中$y$ 特征$v$ 应的类别标签。
- 第一项$L_\text{sim}(v’, \phi_\psi(v)) = 1 - \cos(v’, \phi_\psi(v))$ 励适配特征$\phi_\psi(v)$ 目标特征$v’$ 似。这与特征蒸馏损失(公式 (5))相同。
- 第二项$L_\text{cls}(g_W, \phi_\psi(v), y)$ 交叉熵损失,$g_W$ 固定的网络分类器。该项鼓励适配后的特征属于正确的类别$y$。
减少$M^t$ 大小 为了满足特定的内存需求,可以减少内存集中特征的数量。我们使用 herding 算法【30,39】选择与类别均值最接近的特征子集。在更新任务$t$ 的内存时,我们仅保留每个类别固定数量$L$ 特征。
4.3 特征分类器的训练
我们的目标是分类属于$K_t = \sum_{i=1}^t |C_i|$ 类别的测试图像,其中包括所有已学习任务的类别。正如第 3 节所述,学习到的网络$f_{\theta,W}^t$ 一个从图像到$K_t$ 别的映射,可用于对测试图像进行分类。然而,由于网络仅在当前任务的数据$X^t$ 训练,即使在训练过程中使用了蒸馏损失(公式 (5)),对先前任务的遗忘仍然不可避免,这导致模型的性能次优。
我们通过利用来自先前任务的适配特征描述符训练一个更准确的特征分类器来解决这个问题。
在任务$t$ 束时,我们使用内存$M^t$ 练一个新的特征分类器$g_{\tilde{W}}^t$,内存$M^t$ 含来自先前任务的适配特征描述符以及当前任务的新特征描述符。这与网络分类器$g_W^t$ 同,后者是网络$f_{\theta,W}^t$ 一部分。对于测试图像,我们提取其特征表示$h_\theta^t(x)$,并使用特征分类器$g_{\tilde{W}}^t$ 其进行分类。 在实际操作中,特征分类器$g_{\tilde{W}}^t$ 一个线性分类器,可以通过多种方式训练,例如线性支持向量机(SVM)或随机梯度下降(SGD)等。在我们的实验中,特征分类器$g_{\tilde{W}}^t$ 使用线性 SVM 进行训练。
5. 实验
我们描述了实验设置,然后在每个数据集上报告分类准确性的结果。此外,我们测量了特征适配方法的质量,这是独立于分类任务的性能指标。最后,我们详细研究了关键实现选择和参数的影响。
5.1 实验设置
数据集
我们在 CIFAR-100【21】、ImageNet-100 和 ImageNet-1000 上进行了实验。ImageNet-100【30】是 ImageNet-1000 数据集【34】的一个子集,包含从原始 1000 个类别中随机抽样的 100 个类别。我们的实验设置与 iCARL【30】一致。网络以类别增量的方式进行训练,每次仅考虑当前任务可用的数据。我们用 $M$ 表示每次任务中的类别数,总任务数用 $T$ 表示。在每个任务后,对所有已学习的类别进行分类。CIFAR-100 和 ImageNet-100 的每个实验都重复 5 次,每次使用随机的类别顺序,结果取 5 次运行的平均值。
评价指标
我们报告两个评价指标:
- 随任务增加的所有类别分类准确性曲线;
- 平均增量准确性(average incremental accuracy),即第一项曲线中的点的平均值。CIFAR-100 使用 Top-1 准确性,ImageNet 使用 Top-5 准确性。
基线方法
我们的主要基线是文献中扩展的两种方法:Learning Without Forgetting (LwF)【23】和 iCARL【30】。
- LwF 不保存先前任务的数据,通过分类和蒸馏损失(公式 (4))进行训练。我们使用 Rebuffi 等人【30】提出的多分类版本(LwF.MC)。
- iCARL 在先前任务中保存代表性训练图像作为样本集,并在更新网络时包含这些样本。我们在实现时将 iCARL 中每类样本数量 $P$ 固定,与原始方法不同(原始方法中总样本数固定,随类别数量变化调整每类样本数)。
我们还对 iCARL 和 LwF 进行了扩展,添加了余弦归一化和特征蒸馏损失(详见第 4.1 节),这些改进已被证明可以提高准确性。改进后的方法分别称为 $\gamma$-iCARL 和 $\gamma$-LwF,其中 $\gamma$ 是控制特征蒸馏(公式 (5))的参数。
实现细节
- 特征提取网络 $h_\theta$ 为 ResNet-32【15】(CIFAR-100)和 ResNet-18【15】(ImageNet-100 和 ImageNet-1000)。
- 特征分类器 $g_{\tilde{W}}$ 使用线性 SVM【7,29】。
- 特征适配网络 $\phi_\psi$ 是一个两层多层感知机(MLP),带有 ReLU 激活【9】,输入/输出维度为 $d$,隐藏层维度为 $16d$。
- 损失函数(公式 (4))中的知识蒸馏权重 $\lambda$ 设置为 1,因此激活函数 $\sigma$ 为 sigmoid。
其他超参数与 Rebuffi 等人【30】一致:
- 批大小为 128,权重衰减为 $1 \times 10^{-5}$,学习率为 2.0。
- CIFAR-100 的每个任务训练 70 个 epoch,在第 50 和 64 个 epoch 将学习率降低 5 倍;
- ImageNet 训练 60 个 epoch,在第 20、30、40 和 50 个 epoch 将学习率降低 5 倍。
5.2 内存占用的影响
我们的主要目标是改进增量学习框架的内存需求。我们首先在内存占用和平均增量准确性之间比较我们的方法与基线方法。内存占用是指为数据集的所有类别保存的数据(特征或图像)的大小。
图 2 显示了不同方法在 CIFAR-100、ImageNet-100 和 ImageNet-1000 上的内存占用与平均增量准确性的关系。对于 $\gamma$-iCARL,通过更改每个类别保存的图像数量 $P$ 来调整内存需求。对于我们的方法,通过更改每个类别保存的特征描述符数量 $L$ 调整内存需求。我们还展示了一种混合变体 Ours-hybrid,其中保存 $P$ 张图像和 $L$ 个特征描述符。在这种变体中,我们固定 $L = 100$(CIFAR-100)或 $L = 250$(ImageNet-100 和 ImageNet-1000),并调整 $P$ 以满足内存要求。
从图 2 可以看出,在 CIFAR-100 上,我们的方法依然可以实现较高的准确性,但内存节省相对有限。这是因为 CIFAR-100 图像分辨率较低(32×32×3,3.072 KB),而保存特征描述符($d = 64$ 个浮点数,占 0.256 KB)对内存的影响较小。然而,由于 CIFAR-100 计算复杂度较低,我们主要利用其进行超参数调优(详见第 5.4 节)。对于 ImageNet 数据集,我们的方法在内存节省方面优势更明显。ImageNet 图像分辨率为 256×256×3,存储单个图像需占用 192 KB,而存储一个 $d = 512$ 的特征描述符仅需 2 KB,仅为图像存储需求的约 1%。
即使忽略特征相较于图像的内存节省,我们的方法在大多数情况下仍然优于 $\gamma$-iCARL。对于 ImageNet-1000,当每个任务的类别数 $M \geq 100$ 时,我们的方法的准确性明显优于 $\gamma$-iCARL,同时内存需求减少至少一个数量级。
图 3 显示了 ImageNet-1000 上保存的特征数量(我们的方法)和图像数量($\gamma$-iCARL)对平均增量准确性的影响。即使仅从保存的数据点数量的角度出发,我们的方法在大多数情况下仍优于 $\gamma$-iCARL。
5.3 与现有方法的比较
表 1 显示了我们的方法与文献中现有方法在内存总占用和平均增量准确性方面的对比。图 4 展示了每个任务的分类准确性曲线。我们报告了在每类保存 $L = 250$ 个特征的情况下,我们方法的平均增量准确性。Ours-hybrid 是我们的混合变体,保存 $L = 250$ 个特征和 $P = 10$ 张图像,而基线和现有方法保存 $P = 20$ 张图像。可以明显看出,我们的方法是首个采用特征描述符保存并适配的工作,在内存使用显著减少的同时,分类准确性有所提高。
表 1:ImageNet-100 和 ImageNet-1000 的平均增量准确性和内存占用
| 方法 | ImageNet-100 内存(MB) | ImageNet-100 准确性 | ImageNet-1000 内存(MB) | ImageNet-1000 准确性 |
|---|---|---|---|---|
| 原始 LwF【23】†* | - | 0.642 | - | 0.566 |
| 原始 iCARL【30】†* | 375 | 0.836 | 3750 | 0.637 |
| EEIL【4】† | 375 | 0.904 | 3750 | 0.694 |
| 重平衡(Rebalancing)【17】 | 375 | 0.681 | 3750 | 0.643 |
| BiC(不校正)【41】† | 375 | 0.872 | 3750 | 0.776 |
| BiC【41】† | 375 | 0.906 | 3750 | 0.840 |
| $\gamma$-LwF | - | 0.891 | - | 0.804 |
| $\gamma$-iCARL | 375 | 0.914 | 3750 | 0.802 |
| Ours | 48.8 | 0.913 | 488.3 | 0.843 |
| Ours-hybrid | 236.3 | 0.927 | 2863.3 | 0.846 |
注释:
- † 表示结果来自原文。
- 表示数字从原文图表中估计得出。
从结果可以看出,与保存图像的方法相比,我们的方法(基于特征保存和适配)在内存占用方面显著降低,同时在准确性上与最先进的方法持平或更优。此外,Ours-hybrid 通过结合图像和特征保存进一步提升了准确性。
5.4 参数的影响
我们分析了方法中关键超参数的影响。本节所有实验均在 CIFAR-100 数据集上进行,其中 10% 的原始训练数据被保留作为验证集。
余弦分类器的影响
我们在基础网络(即 LwF.MC)上评估了余弦分类器的效果。当使用余弦分类器时,平均增量准确性为 48.7%,而不使用时为 45.2%。因此,我们在所有基线和方法中都包含了余弦分类器。
参数 $\alpha$ 的影响
参数 $\alpha$ 控制特征适配网络训练时,相似性项(公式 (7))与分类项的相对重要性。图 5 顶部 (a) 展示了不同 $\alpha$ 值下的准确性。重构约束(由 $\alpha$ 控制)需要一个较大的值。我们在实验中将 $\alpha$ 设置为 $10^2$。
隐藏层维度 $d’$ 的影响
我们评估了特征适配网络 $\phi_\psi$ 中隐藏层维度 $d’$ 的影响(图 5 顶部 (b))。将特征向量投影到更高维空间是有益的,验证集上的准确性在 $d’ = 1024$ 时达到最大值。在实验中,我们设置 $d’ = 16d$。
网络深度的影响
我们研究了特征适配网络 $\phi_\psi$ 中隐藏层数量的影响(图 5 顶部 (c))。准确性在隐藏层数量为 2 时达到峰值,此后开始下降,可能是由于网络的过拟合。在实验中,我们使用了 2 个隐藏层。
特征蒸馏的影响
我们对特征蒸馏(公式 (5))的超参数 $\gamma$ 进行了评估,分别在 $\gamma$-LwF 和我们的方法中测试(图 5 顶部 (d))。在实验中,我们将 $\gamma$ 设置为 0.05,并在所有基线和方法中包含特征蒸馏。
特征适配质量
我们通过测量适配特征与其真实值之间的平均相似性,评估特征适配过程的质量。给定图像 $x$,真实向量 $h_\theta^t(x)$ 表示如果在任务 $t$ 中仍然拥有图像 $x$ 时的特征表示,而适配特征为内存中的对应向量 $v$。特征适配质量通过内积计算:
$$
\omega = v^\top h_\theta^t(x)。
$$
这衡量了适配特征相对于真实特征的准确性。我们重复验证实验,测量所有特征的平均 $\omega$ 而非准确性(图 5 底部)。图中可以看出,大多数趋势是相关的,即更好的特征适配带来了更高的准确性。一个主要的例外是特征蒸馏(公式 (5))中 $\gamma$ 的行为:较大的 $\gamma$ 会提高 $\omega$,但会降低分类准确性。这是可以预期的,因为较大的 $\gamma$ 强迫网络在不同任务之间的特征提取器变化最小,从而使特征适配更成功,但特征表示的判别性降低。
平衡特征分类器的影响
Wu 等人【41】指出,基于类别不平衡的训练会导致对新类别的偏置。我们在附录 C 中研究了这一问题。实验表明,当使用平衡的类别样本数训练特征分类器 $g_{\tilde{W}}$ 时,准确性会有所提升。
6. 结论
我们提出了一种新颖的增量学习方法,该方法保存特征描述符而非图像。我们的方法引入了特征适配函数,该函数可以在模型更新新类别时准确地更新保存的特征描述符。通过对分类准确性和特征适配质量的全面评估,实验结果表明:在显著降低内存占用的同时,我们的方法能够实现最先进的分类准确性。
此外,我们的方法与现有工作【23,30】是正交的,可以结合使用以进一步提高准确性,同时保持低内存需求。



