PromptFusion
PromptFusion: Decoupling Stability and Plasticity for Continual Learning (opens new window)
0. 摘要
连续学习指的是从数据流中持续学习的能力。当前研究主要集中在缓解灾难性遗忘上,而大部分的成功都是以限制新任务的性能为代价的。这种权衡被称为稳定性 - 可塑性困境,对连续学习来说是一个更普遍和更具挑战性的问题。然而,这两个概念之间固有的冲突使得似乎不可能同时对它们两个都找到一个令人满意的解决方案。因此,我们提出一个问题:“是否可能将它们分成两个问题来独立征服?”为此,我们提出了一种基于提示调整的方法,称为 PromptFusion,以实现稳定性和可塑性的解耦。具体来说,PromptFusion 由一个精心设计的稳定器(Stabilizer)模块组成,负责处理灾难性遗忘,以及一个助推器(Booster)模块,同时学习新知识。在训练期间,PromptFusion 先将输入图像分别传递给两个模块。然后,得到的对数几率(logits)进一步通过一个可学习的权重参数融合。最后,对派生出的对数几率应用权重掩码以平衡旧类和新类。广泛的实验表明,我们的方法在流行的连续学习数据集上,无论是类增量还是域增量设置,都取得了有希望的结果。特别是在 Split-Imagenet-R 上,这是类增量学习中最富挑战性的数据集之一,我们的方法超过了最先进的基于提示的方法 L2P 和 DualPrompt 超过 10%。
1. 引言
尽管深度神经网络取得了巨大进步,它们通常以一种静态的监督方式进行训练,即所有训练数据一次性可用 [19, 13, 34]。相反,连续学习 [7, 12, 26] 研究了神经网络在更加现实的场景下的行为,即数据以连续和动态的方式到达。理想情况下,当面对新数据时,最先进的模型应该既稳定以防止以前任务的性能下降,又具有可塑性以学习新任务的足够信息 [43]。然而,在实践中很难甚至不可能保持这样的平衡,这种现象被称为稳定性 - 可塑性困境 [1, 29]。因此,大多数当前文献主要关注问题的一方面,即缓解灾难性遗忘的问题,但忽视了另一方面的未看到牺牲。一个典型的例子是基于正则化的方法,如 EWC[18]。在 EWC 中,为以前任务的重要参数保持不变,这不可避免地限制了学习新知识的能力。由于直接平衡这种权衡极其具有挑战性,我们反而从不同的视角来解决这个问题。具体来说,受到补充学习系统 [28, 20] 的启发,这是一种生物学理论,表明智能代理必须拥有两个学习系统,我们假设通过利用两个不同的架构独立解决稳定性和可塑性,可以以类似的方式解决困境。然而,额外架构的引入引起了计算上的担忧,因为它可能会严重复杂化优化过程。所以现在的问题变成了,是否有计算效率高的方式来实现这个想法?最近,提示调整 [24, 21, 42] 已成为以计算效率高的方式对下游任务进行微调模型的新兴趋势。由于提示调整只训练一组额外的小参数,并冻结预训练的主干,它为上述问题提供了一个潜在的解决方案。实际上,由于其强大的转移能力,提示调整已经在连续学习中被探索 [41, 40, 39]。第一个这样做的工作是训练一个提示池,然后为每个任务优化一个提示选择过程,并取得了显著的表现。因此,引入了各种后续方法。然而,如图 1 所示,它们的可塑性受到严重限制。
2. 相关工作
2.1. 连续学习
在连续学习中,原则是顺序地在多个任务上训练一个模型,而不会忘记以前学习的任务的知识,在训练新任务时,旧任务的数据不可用。文献中连续学习有三个基本设置,即任务增量 [7, 18, 33]、类增量 [9, 45] 和域增量 [10, 37] 设置。对于任务增量学习,输入样本的任务身份在测试时提供,因此被认为是最宽松的条件。相反,类增量和域增量学习在推理期间将所有样本视为相同,而不考虑任务身份的先验知识。这两者的区别在于,在类增量学习中,每个任务的数据通常来自相同的分布但属于不同的类别,而在域增量学习中,每个任务的数据属于不同的分布但具有相同的类别标签。多年来,许多努力致力于解决连续学习问题,这些方法主要可以分为三组:基于复习的方法 [4, 33, 25, 36, 14],其中使用记忆存储过去的示例;基于架构的方法 [9, 45, 15, 35, 38, 30, 27],其中网络为新任务扩展;基于正则化的方法 [18, 23, 2, 46, 8],其中以前任务的重要参数保持不变。然而,这些方法大多数主要关注灾难性遗忘的问题,而没有考虑新任务的学习性能。相反,在本文中,我们关注的是一个更普遍的连续学习问题,旨在解决稳定性 - 可塑性困境。
2.2. 提示学习
最近,NLP 领域的研究人员表明,通过在输入文本前添加指令,可以处理广泛的下游任务,即使只有很少甚至没有样本 [22, 24, 21]。这些指令文本被称为提示。因此,可以调整提示而不是整个网络的权重,以更高效地适应下游任务。提示学习在 NLP 中的成功也引起了视觉社区的注意,激励了许多相关方法的建立 [17, 11, 6, 16, 47]。例如,DAPL[11] 在无监督领域适应中应用提示学习,通过为每个源 - 目标域对训练一个提示。MPA[6] 通过两阶段对齐过程扩展了它,以适应多源场景。在连续学习的背景下,一系列基于提示的工作取得了巨大的成功。在 L2P[41] 和 DualPrompt[40] 中,训练了一个提示池,以便每个任务从中采样一组特定于任务的提示,使用键 - 值选择过程。然而,它们不能端到端地训练,因为键是局部优化的。此外,它们假设每个小批量数据都使用相同的一组提示,这在推理期间是有问题的,因为同一小批量中可能存在来自不同任务的数据。类似地,S-Prompt[39] 以类似的方式在 CoOp 的基础上提出,但它专门设计用于域增量学习。
3. 预备知识
由于我们使用 CoOp 和 VPT 这两种类型的提示学习方法来实例化 PromptFusion,我们首先简要回顾这两种方法,然后详细介绍它们如何在稳定器和助推器模块中被利用。
3.1 CoOp
CoOp[47] 是建立在 CLIP[32] 之上的大规模视觉 - 语言表示学习模型。它由图像编码器
在输入图像
3.2 VPT
与 CoOp 不同,CoOp 寻求两种模态之间的对齐,VPT 只依赖于视觉变换器(ViT),以纯视觉的方式利用提示学习 [16]。在 VPT 中,输入图像首先被划分为
3.3 提示调整用于连续学习
在当前研究中,我们关注类增量和域增量设置。形式上,给定
4. 先导研究
在本节中,我们进行先导研究,探索是否可以通过利用提出的稳定器和助推器模块来解耦稳定性和可塑性。为此,我们系统地分析了 CoOp 和 VPT 在连续学习设置下的性能。
4.1 解耦稳定性和可塑性
我们首先通过证明我们设计的 CoOp 适合稳定性,而 VPT 适合可塑性来开始分析。在图 2 中,展示了任务 T2、T4 和 T5 在 Split-Cifar100 数据集上的三个准确率曲线。很明显,CoOp 受到的遗忘影响要小得多,平均性能下降了 9.9%。相比之下,VPT 的平均下降达到了 23.0%,表明 VPT 的稳定性有限。此外,图 3 中绘制了任务 T1 的特征分布变化,使用了高斯核密度估计(KDE)。KDE 是一种流行的非参数方法,用于基于核作为权重估计概率密度函数。如图中所示,与 VPT 相比,CoOp 的分布变化要小得多,这与图 2 中的结果一致。图 4 另一方面描述了每个新学习任务的性能。虽然 VPT 的准确率一致地达到了大约 95%,但 CoOp 表现出明显的恶化模式。它们的性能差距在 T10 时达到了 24.8%,并且随着更多任务的跟进,可能会更糟。尽管这两个图的证据支持我们的假设,但仍然需要最后一个部分来完成整个画面。那就是,CoOp 和 VPT 之间的另一个主要区别是它们的主干网络。
4.2 提示或主干?
为了测试图 2 和图 4 中的模式是否真的来自不同设计的提示,我们进行了一个额外的实验,其中我们将 CoOp 的图像编码器的预训练权重应用于 VPT。图 5 中的结果显示,它们的性能大致相同,并且都表现出对可塑性的偏好而不是稳定性,因为最后一个任务 T10 的性能很高。此外,图 5 中另一个有趣的发现是,使用 CoOp 的主干实际上导致了更差的性能。这相当令人惊讶,因为 CoOp 的主干,CLIP[32],通常被认为比 Imagenet 预训练的 ViT 更强大。实际上,[40] 报告了当用更强的主干替换最先进的连续学习方法时,性能下降的趋势,这表明更强的网络并不一定导致更好的连续学习能力,因为主干是完全监督的方式训练的。同时,我们在不同类型的数据集上测试两个模块时发现,CoOp 在复杂的数据集上更先进,尤其是当存在大的类内变化时。另一方面,VPT 处理更简单的数据集更好。为了证明这一发现,图 6 中提供了 Split-Cifar100、Split-Imagenet-R 和 Core50 的 t-SNE 可视化。这里,Split-Cifar100 是一个相对简单的数据集,而 Split-Imagenet-R 和 Core50 包含了数据分布中的协变量偏移。如图 6 所示,CoOp 在 Imagenet-R 和 Core-50 上的特征比 VPT 更聚集,表明它对类内变化更鲁棒。或者,在 Cifar100 上,VPT 的特征更聚集。因此,通过融合两个模块,另一个潜在的好处是得到的模型可以适应不同数据集的变化特性。
5. PromptFusion
根据先导研究的结果,我们证实稳定性和可塑性可以使用提出的稳定器模块和助推器模块来解耦。基于这一观察,我们提出了我们的方法。PromptFusion 的伪代码和概述分别在算法 1 和图 7 中给出。形式上,将稳定器模型表示为
其中
其中
$\Theta := {\alpha, \beta, \lambda, P_{\text{stab}}, \tilde{P}{\text{stab}}, P{\text{boost}}}.
AT = \frac{1}{T} \sum_{i=1}^{T} RT,i. $$ 实现细节 我们对 CoOp 和 VPT 的图像编码器都采用 ViT-B-16 主干,并在整个训练阶段保持冻结。对于提示大小,CoOp 中的
CoOp 增强 如第 5 节所述,CoOp 通过在语言提示之外加入另一组图像提示进行了增强。我们在表 4 中报告了这种增强的有效性。如所示,Split-Cifar100 上的性能提高了 1.2%,仅增加了 0.02M 个额外参数。
表 4:增强 CoOp 的消融研究
方法 | Split-Cifar100 |
---|---|
无增强 | 86.2 |
有增强 | 87.4 |
为什么实例化 CoOp 和 VPT? 除了 CoOp 和 VPT 之间对稳定性和可塑性的不同偏好外,我们还经验性地发现这两种方法在更一般的意义上是互补的。这在图 9 中反映出来,其中两者的融合显著提高了整体性能。我们认为这是一个有意义的发现,可以推广到连续学习之外的更广泛的任务。
图 9:CoOp、VPT 和 PromptFusion 在 Split-Cifar100 数据集上的平均准确率
7. 结论
在本文中,我们介绍了一种双架构设计 PromptFusion,用于解决连续学习中的稳定性 - 可塑性困境。PromptFusion 是建立在 CoOp 实例化的稳定器模块和 VPT 实例化的助推器模块之上的,将稳定性和可塑性解耦为两个独立的问题。具体来说,对于给定的输入图像,PromptFusion 首先将其传递给两个模块,输出通过基于数据集的可学习权重参数进行融合。融合的输出进一步通过权重掩码平衡,以适应记忆缓冲区带来的类别不平衡。广泛的实验表明,我们的方法在类增量和域增量学习中都取得了最先进的结果。希望稳定性和可塑性的解耦理念能激发未来的工作。