RAPF
0. 摘要
类增量学习是一个具有挑战性的问题,其目标是训练一个能够随着时间的推移分类越来越多类数据的模型。随着视觉语言预训练模型(如 CLIP)的发展,这些模型展示了良好的泛化能力,使其在完全冻结参数的情况下在类增量学习中表现出色。然而,通过简单地微调模型来进一步适应下游任务会导致严重的遗忘。大多数现有的预训练模型工作假设当模型获取新知识时,旧类别的遗忘是均匀的。在本文中,我们提出了一种名为自适应表示调整和参数融合(RAPF)的方法。在训练新数据时,我们测量新类别对旧类别的影响,并使用文本特征调整表示。训练完成后,我们采用分解的参数融合来进一步减轻适配器模块微调期间的遗忘。在多个常规基准测试上的实验表明,我们的方法实现了最先进的结果。我们的代码可在 https://github.com/linlany/RAPF 获取。
关键词:类增量学习·视觉语言模型
1. 引言
现实世界在不断变化,这要求模型在保留旧知识的同时适应新知识。如果不更新,模型可能会过时,随着时间的推移性能会下降 [10]。隐私和存储限制可能会限制对旧数据的访问,导致数据分布严重不平衡。当模型更新时,这种不平衡会使模型偏向当前数据,并遗忘先前获得的知识,这种现象被称为灾难性遗忘 [19]。因此,持续学习的挑战在于平衡可塑性和稳定性 [26],使模型能够学习新知识而不遗忘旧知识,并能够在不同任务中重用和扩展经验知识。
类增量学习作为持续学习的一个具有挑战性的方面,近年来受到越来越多的关注。它涉及从数据流中学习,随着时间的推移添加新类别。为了应对这种情况,提出了三种主要方法:基于正则化的方法、基于重放的方法和基于参数隔离的方法 [4]。这些方法旨在通过向损失函数添加正则化项、重放旧数据样本或为每个类别分配专用参数来保留先前的知识。然而,大多数这些方法依赖于从头开始训练的模型,这可能不是增量学习的最佳选择。因此,一个重要的研究方向是通过将各种方法应用于大规模数据集上的预训练模型来减少遗忘。
大规模数据集上的预训练模型在下游任务中展示了显著的泛化能力和对灾难性遗忘的鲁棒性 [18,28,43,46]。此外,视觉语言预训练模型(CLIP) [30] 在持续学习 [38] 和下游任务 [8,41,54] 中展示了强大的零样本能力。利用预训练模型出色的特征提取能力,每个增量步骤只需更新少量参数,减少了遗忘的风险。相比之下,从头开始训练的模型缺乏这一优势,可能会遭受严重的性能下降。因此,预训练模型在持续学习中取得了令人印象深刻的结果。使用预训练模型进行持续学习的主要策略有两种:微调模型 [48] 或在模型上持续扩展少量参数,例如基于提示的方法 [33,43–45] 或添加适配器 [52]。
微调模型可能会损害原始模型的特征提取能力,并导致灾难性遗忘,即使有正则化约束。扩展参数可能会减少对原始模型的干扰,但随着时间的推移会增加时间和空间成本。对于视觉语言预训练模型,语言编码器提供了丰富的有利于持续学习的信息。然而,大多数现有方法仅使用文本特征进行分类,没有充分挖掘其减少遗忘的潜力。
在本文中,我们提出了一种利用文本特征增强类增量学习中相邻类别分类能力的方法。该方法基于 CLIP 依赖固定文本特征进行分类的观察。文本特征决定了决策边界。当新类别到来时,新的决策边界可能会将部分旧类别样本划分为新类别。为了解决这个问题,我们需要增强相邻类别的分离度。通过使用文本特征,我们可以推断新旧类别之间的关系。我们通过计算新旧类别文本特征之间的距离来选择相邻类别的对。由于新类别有足够的数据进行学习,我们不需要修改其表示。相反,我们专注于调整受新类别影响的旧类别的表示,如图 1 所示。我们训练一个单一的线性层,以防止损害预训练模型的特征提取能力。

此外,我们提出了一种用于线性适配器层的分解参数融合方法,该方法不会随着任务的增加而增加参数数量。与直接计算参数平均值不同, 我们的融合策略更加细粒度,并考虑了任务之间的共享知识。为了平衡稳定性和可塑性,我们根据学习当前任务引起的参数变化,在增量任务前后合并参数。我们不需要在训练过程中添加额外的蒸馏损失来约束参数变化,从而降低了训练成本。
本文的主要贡献如下:
- 我们探索了一种通过使用类别名称的文本特征来减少 CLIP 模型遗忘的方法;
- 我们提出了一种简单但有效的分解参数融合方法,用于预训练模型的线性适配器层;
- 我们在多个数据集上实现了最先进的结果。
2. 相关工作
2.1 类增量学习(CIL)
根据主要策略的不同,增量学习方法可以分为三类 [4]。基于正则化的方法通过对模型参数或输出施加一些约束来抑制旧类别的遗忘。MAS [1] 和 EWC [15] 计算每个参数对旧任务的重要性,然后添加正则化项以避免灾难性遗忘。Coil [51] 使用基于最优传输的知识蒸馏在任务之间共享知识。方法 [6,20,49] 使用知识蒸馏损失作为正则化项。基于重放的方法通过保存旧类别的一些样本或特征(样本),然后在训练新类别时与新旧类别样本一起重放,来保留旧类别的记忆。一些研究探索如何减少样本的存储占用 [24],而另一些研究则在寻找更好的策略来选择将添加到样本中的样本 [22, 23, 36]。还有一些方法保存额外的模型和样本来辅助当前模型的训练 [2,31,32]。基于动态架构的方法动态调整模型结构以适应新类别的学习 [7,42,46,47]。
使用预训练模型的类增量学习主要有两种类型的方法。一种是微调模型本身的参数以调整特征表示。ZSCL [50] 利用大量外部数据对预训练模型进行蒸馏,以保持稳定的特征空间。Zhang 等 [48] 使用不同的学习率更新预训练的主干网络和分类器。另一种是保持预训练模型不变,并添加参数以调整特征表示。Liu 等 [21] 在预训练的 CLIP 模型中引入适配器以适应增量任务。PROOF [53] 为每个任务训练一个适配器,并使用跨模态注意力融合 CLIP 的语言和视觉信息。RanPac [27] 使用高维投影来分离特征。最近提出的基于提示的方法 [14, 33, 44, 45] 根据预训练模型输出的特征选择相应的提示添加到模型中,然后重新获取特征进行分类。其中,LGCL [14] 尝试引入语言指导。Ostapenko 等 [29] 在预训练模型上添加分类网络,并使用预训练的潜在特征空间进行重放。
无样本的类增量学习。由于隐私和内存限制,有时无法存储旧类别样本 [34]。一些现有的无样本工作使用高斯分布来建模数据并帮助分类 [12,37,48]。其他方法包括过采样原型 [56] 或增强原型以模拟重放样本 [25, 55]。一些最近的工作使用模型从旧任务中合成数据作为样本的替代 [3,9]。基于提示的方法使用冻结的主干和提示参数的相对隔离来避免使用样本 [14,33,44,45]。
3. 预备知识
类增量学习定义。类增量学习算法在每个任务
CLIP 适配器。将预训练的视觉语言模型适应下游任务的有效方法是引入一个小网络作为适配器 [8]。我们将 CLIP 主干网络的视觉特征提取器表示为
其中
特征生成。利用预训练主干网络学到的良好表示,我们可以使用高斯分布近似每个类别的特征分布 [48]。我们从图像嵌入
4. 方法
4.1 概述
如图 2 所示,我们的框架包括一个预训练的 CLIP 模型和一个线性适配器。图像特征通过图像编码器和适配器获得,而标签特征通过文本编码器获得。分类结果通过测量它们之间的相似性来确定。旧类别的特征通过从其各自的高斯分布中采样生成,并与新数据一起输入适配器以计算分类损失。同时,我们根据文本特征相似性选择相邻类别的对。对于这些对中的每个旧类别,我们从其高斯分布中采样更多数据并输入适配器,但仅计算分离损失。这样,我们可以调整受相似新类别影响的旧类别的特征表示,从而减少学习新类别引起的旧类别遗忘。在第

4.2 使用语言指导增强相邻类别分离
灾难性遗忘的一个表现是模型错误地将旧类别数据识别为新类别。当新类别与旧类别相似时,这种现象更为严重。这些类别属于相邻类别。它们通常在语言中具有相似的语义和外观,例如“金刚鹦鹉”和“鹦鹉”。模型在添加新类别时尤其难以区分它们。
通过使用 CLIP 文本编码器,我们可以测量类别名称之间的相似性,并利用它来指导适配器学习过程。为了选择最近的类别对,我们使用类别名称的归一化文本特征来计算新旧类别之间的距离:
其中
其中
其中
最终损失函数与交叉熵损失
4.3 使用分解参数融合增加稳定性
我们引入参数融合机制来保持线性适配器的稳定性,从而减少遗忘。
我们评估每个新参数的重要性。梯度表示基于新数据的参数更新方向,任务之间参数的差异是梯度的加权和。因此,变化较大的参数对于学习新知识更为重要。
为了获得作为参数融合细粒度权重的重要性矩阵,我们计算训练后参数与先前任务参数之间的差异,并通过最大值进行归一化:
其中
参数矩阵
我们将从分解中获得的
其中
5. 实验
5.1 实验设置
数据集。我们使用三个数据集进行实验:CIFAR100 [16]、ImageNet1K [5]、ImageNet100、ImageNet-R [13] 和 CUB200 [40]。CIFAR100 数据集包含 100 个类别。每个类别包含 600 张分辨率为 32×32 像素的彩色图像。其中,500 张图像分配给训练集,100 张图像分配给测试集。ImageNet1K 数据集包含 1000 个类别,ImageNet100 数据集是 ImageNet1K 数据集的子集,包含 100 个选定的类别。ImageNet-R 数据集是从 ImageNet 数据集派生的多样化图像类别集合。ImageNet-R 数据集包括各种风格的图像,如艺术、卡通、涂鸦、刺绣、视频游戏等。它们是 ImageNet 数据集中 200 个类别的不同表现形式。我们按照工作 [38,44] 将数据集划分为训练集和测试集。CUB200 [40] 数据集广泛用于细粒度视觉分类任务。它包含 11,788 张属于各种鸟类亚类的图像。
竞争方法。我们比较了以下 CIL 方法:L2P ++ [45]、DualPrompt [44]、CODA [33]、SLCA [48]、ADAM-Adapter [52] 和 PROOF [53]。Continual-CLIP [38] 指的是 CLIP 模型的零样本性能。PROOF [53] 是基于 CLIP 并使用样本的方法。为了确保比较的公平性,所有方法都使用相同的 OpenAI CLIP 预训练权重 [30]。三种方法 DualPrompt、L2P ++ 和 CODA 的结果是通过运行 CODA 方法的公开代码实现获得的。SLCA、ADAM-Adapter、PROOF 和 Continual-CLIP 方法的结果来自各自的公开代码。
评估指标。训练第
5.2 比较结果
表 1、表 2 和表 3 显示了我们的方法与现有方法在 CIFAR100、ImageNet100 和 ImageNet-R 三个数据集上的比较结果。我们的方法在大多数设置中显著优于各种竞争方法。在 ImageNet100 数据集上,我们的方法的最终精度比其他方法至少高出 1.58%。在 ImageNet-R 数据集的 base0 设置实验中,我们的方法的最终精度比其他方法至少高出 1.08%。这表明我们通过使用文本信息和参数融合在减少遗忘和保持模型稳定性方面具有良好的效果。与零样本的 Continual-CLIP 相比,我们的方法仅在模型结构中添加了一个可学习的线性层,但也取得了显著改进。这表明我们的方法不仅仅依赖于预训练模型的泛化能力来实现良好的性能。图 3 展示了不同数据集和设置下随着类别数量增加而平均精度下降的趋势。我们的方法可以显著减轻遗忘。


三种基于提示的方法在 base50 和 base100 设置中由于默认情况下每个任务使用相同数量的提示,导致提示使用严重不平衡。这使得模型的预测偏向于基类,难以注入新知识。L2P 和 DualPrompt 在 ImageNet-R 数据集上超过了在 ImageNet21k 上预训练的原始模型的性能。然而,CODA 在三个数据集上表现不佳,表明其方法可能与特定的预训练模型(如 ViT 在 Imagenet21k 上预训练)高度耦合。
SLCA 通过微调主干和分类器在初始任务上取得了更好的性能。因此,其在 base50 和 base100 设置中的实验结果相对较好。然而,微调主干引起的累积遗忘在长序列设置中更为明显。
ADAM 主要在初始任务上训练一个适配器模型,然后在后续任务中不再训练模型。因此,其性能取决于初始任务中数据的比例。由于模型在后续任务中未进行训练,它保持了模型的稳定性但未学习新知识。模型的低可塑性影响了其性能。由于 ImageNet-R 数据集中图像风格差异较大,该数据集要求模型学习更多知识以适应丰富的图像风格,因此该方法在该数据集上的表现不如统一风格的 CIFAR100 和 ImageNet100。
PROOF 专为 CLIP 设计,每个任务扩展适配器并使用跨模态注意力融合文本和图像信息。然而,它没有考虑相邻类别在 CLIP 分类中的影响。即使没有样本和扩展参数,我们的方法仍然具有优势。
我们还在大数据集 ImageNet1K 和细粒度数据集 CUB200 上评估了我们的方法。结果如表 4 所示。实验结果表明,我们的方法在大数据集上仍然具有优势。尤其是在 CUB200 这个更具挑战性的细粒度数据集上,与 CLIP 的零样本性能相比,我们的方法性能显著提升。

总的来说,我们的方法不会随着任务的增加而扩展模型,同时保持了新数据的学习并减轻了增量任务中的遗忘。更多结果见补充材料。
5.3 消融研究与其他分析
模块消融。表 5 展示了我们方法中不同组件的结果。Random 表示随机选择类别对,而不是使用文本特征的距离。在这种情况下,精度与基线非常接近,而使用完整模块的文本特征将精度比基线提高了 2.24%。这表明文本指导的类别选择是有效的。没有矩阵分解的参数融合方法与使用矩阵分解的完整参数融合方法的性能表明,细粒度重要性矩阵的参数融合方法是有效的,矩阵分解进一步增强了其效果。

训练成本分析。图 4 展示了我们的增量参数大小与其他方法在 ImageNet100 上的比较。使用相同的主干,冻结主干参数的更新成本远低于微调整个模型的方法,如 SLCA。在冻结主干并添加可学习参数的方法中,我们的方法添加的参数最少。尽管我们在纯视觉编码器方法中添加了文本编码器,但由于标签文本是固定的,我们只需在整个训练过程中计算一次标签的文本特征,且标签数量远低于数据量。因此,与处理大量图像和多次迭代的视觉编码器相比,文本编码器的成本可以忽略不计。对于分解参数融合,我们在每个任务训练后仅分解一次矩阵。与训练时间相比,这是可以忽略的。

相邻类别分类。如图 5 所示,我们的方法有效地纠正了将旧类别错误分类为新类别的情况。图 5c 显示,错误分类到新类别的样本数量减少,正确分类的样本数量增加,对其他类别的负面影响较小。表 6 展示了一些受影响类别的示例。


5.4 与传统方法的比较
传统方法虽然未使用预训练模型但使用了样本,也在类增量学习中取得了良好结果。在表 9 中,我们比较了使用 ImageNet21K 预训练的 VIT-B/16 进行初始化的传统方法。我们还使用相同的初始化评估了这些基线,但性能要差得多。即使没有样本,我们的方法相对于这些最先进的方法仍然具有显著优势。
6. 结论
在本文中,我们研究了使用预训练视觉语言模型进行增量学习的问题。我们发现,引入类别的文本特征来调整受新数据影响较大的类别表示,可以有效减轻遗忘。此外,带有参数融合策略的简单线性适配器可以高效地保持模型稳定性并减少遗忘。实验证明了我们方法的有效性。手动选择阈值是一个限制。未来的工作可以设计一种机制来动态调整阈值,以及一种更高效地融合参数的机制。文本和图像的相互影响也可以进一步探索。