摘要:
人类能够学习新任务而不会遗忘先前掌握的知识,然而神经网络却因新旧任务之间的灾难性遗忘而难以做到这一点。我们研究了一种类别增量学习的场景,即在推理时任务的身份是未知的。旧类别与新类别之间的不平衡通常会导致网络偏向于最新学习的类别。这种不平衡问题可以通过存储先前任务的样本(exemplars)或使用图像回放方法来解决。然而,后者仅适用于小型数据集,因为复杂数据集的图像生成是一个难题。
我们提出了一种基于生成式特征回放的解决方案,以解决不平衡问题,且无需存储任何样本。为此,我们将网络分为两部分:特征提取器和分类器。为了防止遗忘,我们在分类器中结合了生成式特征回放,并在特征提取器中采用了特征蒸馏。通过特征生成,我们的方法降低了生成式回放的复杂性,并缓解了不平衡问题。
我们的方法在计算上高效且可扩展至大规模数据集。实验证实,我们的方法在CIFAR-100和ImageNet上取得了最先进的结果,同时仅需基于样本的持续学习方法所需存储空间的一小部分。代码可在以下链接获取:https://github.com/xialeiliu/GFR-IL。
1 介绍
人类和动物能够在其一生中不断获取和更新知识。这种在吸收新知识的同时保留已学知识的能力被称为增量学习或持续学习。这种学习方式使得生物能够适应不断变化的环境,并在面对新任务时灵活运用过去的经验。然而,对于人工神经网络而言,实现类似的持续学习能力仍然是一个重大挑战,主要因为网络在学习新任务时往往会遗忘之前学到的知识,这种现象被称为灾难性遗忘。因此,研究如何使神经网络具备持续学习的能力,是人工智能领域的一个重要方向。
当前的深度神经网络在许多基准测试中取得了令人瞩目的性能,甚至在某些任务上(例如图像分类 [13])表现优于人类。然而,当这些网络被训练用于新任务时,由于新旧任务之间的灾难性遗忘问题 [31],它们几乎会完全遗忘之前学到的知识。这种现象严重限制了神经网络在实际应用中的持续学习能力,因为现实世界中的任务往往是动态变化的,需要模型能够不断适应新任务而不丢失对旧任务的记忆。因此,解决灾难性遗忘问题,使神经网络具备持续学习的能力,是当前人工智能研究的一个重要方向。
为了克服灾难性遗忘问题,研究者们从生物系统中汲取灵感,提出了多种方法。这些方法主要分为以下几类:
第一类方法使用正则化器,在训练新任务时限制网络的可塑性,从而使网络在旧任务上保持稳定 [1, 19, 23, 24, 56]。这类方法通过引入额外的约束条件,确保网络参数在更新时不会大幅偏离之前学习到的知识。
另一类方法则通过动态增加网络容量来适应新任务 [21, 44],通常结合任务相关的权重掩码 [28, 29] 或激活掩码 [45],以减少灾难性遗忘的可能性。这类方法允许网络在需要时扩展其结构,同时通过掩码机制隔离不同任务的学习过程,从而避免任务之间的干扰。
这些方法各有优势,但都旨在实现一个共同目标:使神经网络能够在学习新任务的同时,保留对旧任务的记忆,从而更好地模拟生物系统的持续学习能力。
第三类方法依赖于记忆回放,即在用当前任务的样本进行学习的同时,回放先前任务的样本。这些样本可以是真实的(称为“样本回放”或“复习”),例如在 [4, 25, 41] 中,通过存储少量旧任务的真实样本并在训练新任务时重新使用它们;也可以是合成的(称为“伪回放”),例如通过生成模型(如生成对抗网络 GANs)生成旧任务的样本 [43, 46, 49]。记忆回放方法通过重新接触旧任务的数据,帮助网络巩固对旧知识的记忆,从而缓解灾难性遗忘问题。
增量学习方法通常针对特定的测试场景进行评估和设计 [48]。任务增量学习考虑的是在推理时已知任务 ID 的情况 [25, 29, 45],即模型能够明确知道当前处理的任务属于哪一个类别。而类别增量学习则考虑更困难的场景,即在测试时任务 ID 未知 [14, 41, 50],这意味着模型需要在不明确任务身份的情况下,正确分类所有已学过的类别。类别增量学习的挑战性更大,因为它要求模型具备更强的泛化能力和记忆能力。
这些方法各有特点,但都旨在解决增量学习中的核心问题:如何在不断学习新任务的同时,避免遗忘旧任务的知识。
近年来,研究重点逐渐从任务增量学习转向类别增量学习。类别增量学习方法面临的主要额外挑战是如何平衡不同分类器头(classifier heads)的表现。不平衡问题的出现是因为在当前任务的训练过程中,来自先前任务的数据很少甚至没有,这会导致分类器偏向于最近学习的任务。
针对这一问题,研究者们提出了多种解决方案:
- iCaRL[41] 通过存储先前任务的固定数量的样本(exemplars),使这些样本在特征空间中近似各类别的均值,并使用最近均值分类器进行推理。
- Wu 等人 [50] 发现网络的最后一个全连接层对新类别存在强烈偏差,并通过基于样本的线性模型校正了这种偏差。
- Hou 等人 [14] 用基于余弦相似度的损失函数替代 softmax,并结合样本存储,解决了不平衡问题。
这些方法的共同点是都需要存储先前任务的样本。然而,在许多实际应用中——尤其是由于隐私问题或存储限制——无法存储任何先前任务的样本。因此,开发无需样本存储的类别增量学习方法成为了一个重要的研究方向。这类方法通常依赖于生成模型或其他机制来模拟旧任务的数据分布,从而在不直接存储样本的情况下实现知识保留。
唯一能够在不依赖样本存储的情况下成功解决不平衡问题的方法是生成式回放方法 [46, 49]。这些方法通过持续训练一个生成器来生成先前任务的样本,从而避免不平衡问题。因此,这些方法在类别增量学习中取得了优异的结果。然而,它们有一个主要的缺点:生成器需要准确地生成来自先前任务分布的图像。对于像 MNIST 和 CIFAR-10 这样的小型数据集,这是可行的;但对于类别更多、图像尺寸更大的数据集(如 CIFAR-100 和 ImageNet),这些方法的效果往往不尽如人意。
生成式回放方法的局限性主要在于生成高质量图像的难度,尤其是对于复杂的数据集。生成器需要精确地模拟旧任务的数据分布,而这在数据集规模较大时变得极具挑战性。因此,尽管生成式回放方法在理论上具有吸引力,但在实际应用中,尤其是在大规模数据集上,其性能仍然有限。这促使研究者们探索其他无需样本存储且更高效的方法,以解决类别增量学习中的不平衡问题。
在本文中,我们提出了一种基于生成式特征回放的新方法,以克服类别增量持续学习中的灾难性遗忘问题。我们的方法基于以下观察:当图像数量有限或类别数量较多时,图像生成是一个复杂的过程。因此,我们采用特征生成而非图像生成,因为特征生成比准确生成图像要容易得多。我们将网络分为两部分:特征提取器和分类器。为了防止整个网络的遗忘,我们在分类器中结合了生成式特征回放,并在特征提取器中采用了特征蒸馏。以下是我们的主要贡献:
- 设计了一种混合模型:我们提出了一种用于类别增量学习的混合模型,该模型在分类器层面结合了生成式特征回放,并在特征提取器中使用了特征蒸馏。
- 可视化和分析:我们基于**典型相关分析(CCA)**提供了网络遗忘方式和位置的可视化与分析,以提供更深入的洞察。
- 显著的性能提升:在 ImageNet 和 CIFAR-100 数据集上,我们的方法大幅超越了其他不依赖样本存储的方法。值得注意的是,在大多数评估设置中,我们的方法甚至优于使用样本存储的方法。此外,我们还展示了该方法在计算上的高效性以及对大规模数据集的可扩展性。
我们的方法通过生成式特征回放和特征蒸馏的结合,有效缓解了类别增量学习中的不平衡问题,同时避免了复杂图像生成的挑战。这一方法不仅提升了性能,还为解决持续学习中的灾难性遗忘问题提供了新的思路。
2 相关工作
2.1 持续学习
持续学习(Continual Learning)可以分为以下三大类(更多细节可参考综述 [7, 36]):
- 基于正则化的方法:
第一类技术基于正则化。这些方法通过估计每个网络参数的重要性,并对在任务切换时发生显著变化的参数进行惩罚。不同方法之间的区别在于惩罚的计算方式。例如:- EWC(Elastic Weight Consolidation)[19, 24] 使用费舍尔信息矩阵(Fisher Information Matrix, FIM)的对角线近似来加权网络参数。
- 在线计算重要性权重的方法 [56] 跟踪损失因特定参数变化而发生的变化,并在训练过程中累积这些信息。
- 类似的方法 [1] 则关注激活值的变化而非损失的变化,从而以无监督的方式学习参数的重要性。
- 还有一些方法 [15, 23] 不是直接正则化权重,而是利用当前任务的数据对齐预测结果。
持续学习中的方法可以分为以下三大类:
- 基于架构的方法
第二类方法通过修改网络的结构来防止灾难性遗忘,通常是为每个任务逻辑上或物理上扩展一个子网络。例如:
- Piggyback[28] 和 Packnet[29] 为每个任务学习一个单独的权重掩码。
- HAT[45] 和 Ternary Feature Masks[30] 则学习激活值的掩码,而不是针对每个参数。
- 基于复习的方法
第三类方法是基于复习的策略,通过重新接触旧任务的数据来防止遗忘。现有方法主要采用两种策略:
存储少量真实样本:
- iCaRL[41] 存储一部分真实数据(称为 exemplars)。随着类别数量的增加,存储的样本数量会减少,这不可避免地导致性能下降。
- 类似的方法 [25] 保留了先前任务的梯度,并通过改进版本 [5] 解决了一些效率问题。
- [14] 提出了两种损失函数:“少遗忘约束”和“类间分离”,前者最小化原始模型和新模型提取特征之间的余弦距离,后者利用存储的样本作为锚点分离旧类别和新类别。
- [50, 2] 引入了偏差校正层,以纠正全连接层的输出,解决新旧类别之间的数据不平衡问题。
- [38] 提出存储激活值用于回放,并在回放层以下的所有层中减缓学习速度。
生成机制生成样本:
- [46] 使用无条件 GAN 实现记忆回放,并通过辅助分类器确定生成样本的类别。
- [49] 改进了这一方法,使用类条件 GAN 生成合成数据。
- FearNet[17] 使用生成式自编码器进行记忆回放。
- [53] 生成中间特征,基于编码器的类别统计信息(均值和协方差矩阵)生成旧任务的合成数据。这种方法的主要局限性在于假设数据服从高斯分布,并且依赖于预训练模型。
这些方法各有优缺点,但都旨在解决持续学习中的核心挑战:如何在不断学习新任务的同时,保留对旧任务的记忆。基于架构的方法通过扩展网络或使用掩码来隔离任务,而基于复习的方法则通过重新接触旧数据来巩固知识。生成式方法虽然避免了存储真实样本的需求,但在复杂数据集上的生成质量仍然是一个挑战。
2.2 生成对抗网络(GANs)
生成对抗网络(GANs)[11] 能够生成基于对象类别 [12, 39]、文本 [42, 57]、另一张图像(图像翻译)[18, 58] 以及风格迁移 [10] 的逼真且清晰的图像。在持续学习的背景下,GANs 已成功用于记忆回放,通过生成先前任务的合成样本 [49]。以下我们将分析 GANs 的局限性,并探讨为什么在特征生成方面,GANs 比图像生成更具优势。
对抗性图像生成的局限性
尽管 GANs 最近在生成高分辨率图像 [3, 16] 方面取得了令人印象深刻的性能,但它们仍然面临一些常见问题:
- 稳定性问题:虽然有一些解决方案,但通常需要高昂的计算成本。
- 对大规模训练数据的依赖:生成高质量图像需要大量真实图像作为训练数据。
- 多样性和判别力不足:即使生成高分辨率图像,也不能保证它们能够捕捉足够多样的视觉概念并具备良好的判别能力 [6]。
- 小样本和零样本学习的挑战:在少样本或零样本学习场景中,训练 GANs 的样本数量非常有限甚至没有,这使得生成有用图像更加困难 [27]。
尽管最近的研究在高分辨率图像生成方面取得了一些进展,但这些生成的图像仍不足以支持下游任务(例如训练深度神经网络分类器)。
对抗性特征生成的优势
近年来,特征生成作为图像生成的替代方案出现,尤其是在少样本学习场景中表现出更优越的性能:
- [51] 提出了一种在生成器顶部添加分类器的 GAN 架构,以生成更适合分类任务的特征。
- [52] 进一步改进了这一方法,通过结合变分自编码器(VAE)和 GAN 的优势,构建了更强大的特征生成器。
在当前的研究中,我们将对抗性特征生成应用于持续学习框架中的记忆回放。正如 [51, 52] 所证明的,特征生成在零样本和少样本学习中的性能优于图像生成。特征生成不仅降低了生成过程的复杂性,还避免了高分辨率图像生成中的许多挑战,同时能够更有效地捕捉任务相关的判别信息。因此,在持续学习中,特征生成是一种更高效且可扩展的解决方案。
3 特征提取器和分类器的遗忘
3.1.类增量学习
分类模型与任务
我们考虑从数据集 D = { ( x i , y i ) } i = 1 N D = \{(x_i, y_i)\}_{i=1}^N D={(xi,yi)}i=1N 中学习的分类任务,其中:
- x i ∈ X x_i \in X xi∈X 是第 i i i 张图像,
- y i ∈ C y_i \in C yi∈C 是对应的标签(来自 K K K 个类别的词汇表),
- N N N 是数据集的大小。
分类器网络的形式为:
y ~ = M ( x ; θ , V ) = H ( F ( x ; θ ) ; V ) , \tilde{y} = M(x; \theta, V) = H(F(x; \theta); V), y~=M(x;θ,V)=H(F(x;θ);V),
其中:
- F ( x ; θ ) F(x; \theta) F(x;θ) 是特征提取器,由参数 θ \theta θ 参数化,
- H ( u ; V ) = A ( V u ) H(u; V) = A(Vu) H(u;V)=A(Vu) 是分类器,其中 V V V 是将特征提取器输出 u u u 投影到类别分数的矩阵(下文省略参数 θ \theta θ 和 V V V),
- A A A 是 softmax 函数,将分数归一化为类别概率。
在训练过程中,我们最小化真实标签与预测之间的交叉熵损失:
L C E ( D ) = − ∑ i = 1 N y i ⋅ log y ~ i , L_{CE}(D) = -\sum_{i=1}^N y_i \cdot \log \tilde{y}_i, LCE(D)=−i=1∑Nyi⋅logy~i,
其中 y i y_i yi 是类别标签 y i ∈ C y_i \in C yi∈C 的 one-hot 表示。
持续学习
我们考虑持续学习的设置,其中 T T T 个分类任务从对应的数据集 D 1 , … , D t , … , D T D_1, \dots, D_t, \dots, D_T D1,…,Dt,…,DT 中独立且顺序地学习。具体来说:
-
任务序列:
每个任务 t t t 对应一个数据集 D t = { ( x i , y i ) } i = 1 N t D_t = \{(x_i, y_i)\}_{i=1}^{N_t} Dt={(xi,yi)}i=1Nt,其中 x i x_i xi 是图像, y i y_i yi 是标签, N t N_t Nt 是任务 t t t 的样本数量。
任务按顺序 t = 1 , 2 , … , T t = 1, 2, \dots, T t=1,2,…,T 依次学习。 -
独立学习:
每个任务 t t t 的学习过程是独立的,即模型在学习任务 t t t 时,只能访问当前任务的数据 D t D_t Dt,而不能访问之前任务的数据 D 1 , … , D t − 1 D_1, \dots, D_{t-1} D1,…,Dt−1。 -
持续学习目标:
模型的目标是在学习新任务 t t t 的同时,保留对之前任务 1 , … , t − 1 1, \dots, t-1 1,…,t−1 的知识,从而避免灾难性遗忘。
在学习任务 t t t 后,得到的模型 M t M_t Mt 由特征提取器 F t F_t