CPrompt
0. 摘要
持续学习使模型能够自主适应不断变化的环境或数据流,而不会忘记旧知识。基于提示的方法建立在冻结的预训练模型上,以高效地学习任务特定的提示和分类器。现有的基于提示的方法在训练和测试之间存在不一致,限制了其有效性。本文揭示了两种类型的不一致性。测试预测是从所有分类器中得出的,而训练仅关注当前任务分类器,缺乏整体对齐,导致分类器不一致。提示不一致表明测试期间选择的提示可能不对应于训练期间与此任务相关的提示。本文提出了一种新的基于提示的方法,称为一致提示(CPrompt),以实现更对齐的训练和测试。具体来说,所有现有的分类器都参与提示训练,从而实现分类器一致性学习。此外,提出提示一致性学习以增强预测的鲁棒性并提高提示选择的准确性。我们的一致提示方法超越了其他基于提示的方法,并在多个持续学习基准上实现了最先进的性能。详细分析表明,改进来自于更一致的训练和测试。我们的代码可在 https://github.com/Zhanxin-Gao/CPrompt (opens new window) 获取。
1. 引言
持续学习旨在使深度模型具备持续获取新知识的能力,例如学习识别新的对象类别,同时处理旧知识的灾难性遗忘。基于重放的方法通过存储在内存缓冲区中的少量先前任务的样本并在训练期间与新任务数据一起回放,来缓解遗忘问题。然而,由于数据隐私或内存限制等约束,先前任务的样本可能不可用。因此,无重放的持续学习方法引起了广泛关注。
基于提示的模型在无重放的持续学习中表现出色。这些模型基于在大规模数据集上预训练的冻结骨干网络,通过仅训练少量参数(即提示和全连接分类器)来高效适应新任务。然而,现有方法的训练和测试缺乏一致性,因为提示和分类器仅在当前任务内进行优化。如图 1 所示,本文讨论了两种类型的不一致性。首先,分类器不一致表明测试预测是从所有分类器而非仅从训练的分类器中得出的。其次,提示不一致指的是训练和测试期间提示的不匹配。现有的基于提示的方法未能识别或处理这些不一致问题,导致性能欠佳。
为了使提示和分类器的训练与测试对齐,我们提出了一种新的训练方法,称为一致提示(CPrompt),它超越了现有的基于提示的方法。CPrompt 包含两个模块:分类器一致性学习(CCL)和提示一致性学习(PCL)。具体来说,CCL 通过将当前任务提示训练暴露给所有已见过的分类器来解决分类器不一致问题。另一方面,PCL 用于处理提示不一致问题。当前任务的分类器通过从池中随机选择的提示进行训练,使分类器能够更好地适应不同的提示,从而实现更鲁棒的预测。此外,提出了一种多键机制来提高 PCL 中提示选择的准确性。图 2 展示了现有基于提示的方法与我们的一致提示方法的对比。我们在四个具有挑战性的持续学习基准数据集上评估了所提出的方法,并提供了详细的分析,以展示 CPrompt 的优越性能主要来自于其一致的训练和测试。本文的贡献总结为以下三点:
- 本文首次识别并讨论了基于提示的无重放持续学习方法在训练和测试之间的不一致问题,并提出了一种新的一致提示(CPrompt)以实现更好的一致性。
- 为了在测试时保持分类器一致性,提示应在训练期间暴露给所有已见过的分类器,如 CPrompt 中的分类器一致性学习(CCL)所提出的那样。
- 我们在 CPrompt 中提出了提示一致性学习(PCL),其具有两个互补的目的。为了实现更鲁棒的测试预测,当前分类器应在不同的提示下进行训练。为了更精确地选择提示,利用了多键机制。
2. 相关工作
2.1 持续学习
持续学习方法旨在减少在适应新知识时对旧知识的灾难性遗忘。基于不同的视角,提出了三种类型的管道。基于正则化的方法旨在防止对重要属性进行显著更改,以保护先前学到的知识免受过度干扰。作为一种流行的正则化方法,知识蒸馏被广泛用于将先前模型(作为教师)中保留的知识转移到当前学生模型中。参数隔离方法冻结特定参数,同时分配其余参数用于后续任务或扩展网络以学习新知识。这种方法直观,并且在扩展足够数量的参数时可以产生有希望的结果。然而,这些技术通常会导致模型复杂性增加,带来维护挑战。重放是持续学习中的一种流行策略,允许模型部分访问先前的样本。这些方法可以有效缓解对先前知识的遗忘。然而,它们需要额外的内存和计算开销,并且还引发了数据隐私问题。上述范式高度互补,可以结合使用以增强持续学习性能。
2.2 持续学习中的基于提示的方法
提示是自然语言处理(NLP)中的一种基本技术。它作为一种迁移方法或为下游任务提供特定指令。最近的基于提示的持续学习方法通过将任务特定知识编码到提示中来处理无重放的设置。这使得网络能够通过查询适当的提示来高效检索先前信息,并消除了对重放缓冲区的需求。L2P 提出学习一个提示池,并使用查询 - 键机制来选择提示。然而,由于整个提示池始终是可训练的,提示池中先前知识的遗忘是不可避免的。与跨任务使用相同的提示池不同,DualPrompt 提出了两个互补的池,G-Prompt 和 E-Prompt,分别用于编码任务不变和任务特定的知识。CODAPrompt引入了一种基于分解注意力的提示方法,并根据不同的任务扩展提示组件。
为了处理持续学习中分类器的扩展,ESN提出了一种基于提示的方法,采用能量自归一化。这是通过添加一个自注意力块来实现的,该块为任务内数据生成一致且高置信度的分数。
现有的基于提示的方法在阐明新优化的提示与先前学习的提示之间的关系方面存在困难。这导致训练过程中不同提示或组件之间的干扰。此外,这些提示与输入图像或整体分类器并未完全对齐,导致训练 - 测试不一致。为了解决这些挑战,我们提出了一致提示作为增强持续学习效果的一种解决方案。
3. 一致提示
3.1 先决条件
持续学习设置:持续学习旨在从由
基于提示的方法:预训练的视觉变换器(ViT)包含一个嵌入层
3.2 分类器一致性学习
基于提示的方法通常在测试时使用所有任务分类器进行推理。然而,不同的分类器是在相应的任务中学习的。它们的行为之间的一致性无法保证。提出的分类器一致性学习(CCL)旨在通过将当前任务提示训练暴露给所有已见过的分类器来处理这一问题,这是直接且有效的。为了实现准确的预测,我们需要确保每个输入在所有已见过的分类器中对其对应类别的响应最高。然而,我们观察到,没有正则化的分类器自然偏向于先前部分,导致旧任务分类器的 logit 值高于当前任务的 logit 值。因此,提出了一种新的正则化损失,以鼓励旧任务分类器的最大 logit 值低于当前类别的 logit 值一个预定义的余量。此正则化应用于当前任务提示,以减轻偏差并实现模型训练。假设预训练网络为
其中
提出的平滑正则化基于先前任务的熵。对于第
其中
当先前任务分类器的最大 logit 值
分类器一致性学习的损失
其中

3.3 提示一致性学习
基于提示的持续学习的另一个显著问题是模型在推理时选择正确提示的不确定性。因此,提出的提示一致性学习(PCL)旨在建立更鲁棒的提示 - 分类器关系,确保即使使用错误的提示也能正确输出。在训练期间,从当前提示池中随机选择一个任务特定的提示
其中
相应的损失计算如下:
其中
值得注意的是,当前任务特定的提示
其中
多键机制用于提示选择:为了更准确地选择提示并增强持续学习性能,提出了一种新的多键机制。查询特征从预训练网络中提取,其(对应于[class]
标记的特征向量)可以表示为:
从同一类别的预训练网络中提取的查询特征往往相似,而在同一任务中不同类别的查询特征可能表现出多样性。因此,像之前的基于提示的方法那样,依赖单个键来表示每个任务是不够的。提出的多键机制在提示中使用多个键来映射每个任务,从而更精确地表示每个任务中的各种类别,如图 3 所示。具体来说,任务中的每个类别被分配一个唯一的键,结果键的数量与类别数量相同。然后使用余弦相似度来测量查询与其对应键之间的差异:
其中
其中
其中
最后,提出的 CPrompt 的整体学习目标为:
4. 实验
4.1 实验细节
数据集和协议:为了全面比较不同的持续学习方法,我们在四个基准数据集上进行了广泛的实验。遵循类增量设置,所有测试样本都没有任务身份。
- StanfordCars 是一个细粒度汽车数据集,包含 196 个类别和 16,185 张图像。其中有 8,144 张训练图像,其余用于测试。所有类别被随机分为 10 任务(每任务 20 类)和 20 任务(每任务 10 类)的持续学习设置,分别称为 Split StanfordCars。由于图像风格独特且细粒度类别难以区分,这对持续学习方法具有挑战性。
- ImageNet-R 包含 30,000 张图像,覆盖 200 个 ImageNet 类别。每个类别的图像表现出多种风格,包括艺术、卡通、Deviant-Art、涂鸦和来自原始 ImageNet 数据集的困难样本。由于各种风格与预训练数据显著不同,这一基准具有挑战性。持续学习基准 Split ImageNet-R 包括 10 任务(每任务 20 类)和 20 任务(每任务 10 类)设置。
- DomainNet是一个跨领域数据集,包含来自 6 个不同领域的 345 个常见对象,包括 Clipart、Real、Sketch、Infograph、Painting 和 Quickdraw。由于不同类别的图像数量差异较大,我们选择了图像数量最多的 200 个类别。其持续学习设置包括 10 任务(每任务 10 类)。不同类别被随机分配到不同任务中。此外,每个任务包含来自多个领域的图像,而不是像现有拆分那样仅来自单一领域。
- CIFAR-100包含 60,000 张 32 × 32 的彩色图像,涵盖 100 个类别。每个类别有 500 张训练图像和 100 张测试图像。它被广泛用作持续学习基准,包含 10 任务(每任务 10 类)。
评估指标:分类模型的持续学习性能主要通过两个指标进行评估:学习完最后一个任务后所有类别的平均准确率(记为 Last-acc)和所有已学习任务的平均增量准确率(记为 Avg-acc)。平均遗忘率(记为 FF)提供了关于任务性能下降的额外上下文。我们更关注 Last-acc 和 Avg-acc,因为它们是更全面的指标。
实现细节:我们的模型训练使用 SGD 优化器,动量为 0.9,初始学习率为 0.01。初始学习率逐渐减少至零,遵循余弦退火调度器。小批量大小为 16。实践中,不同损失的平衡超参数均固定为 1,未进行调整。公式 (4) 中的超参数
竞争对手:我们专注于将我们的模型与最先进的基于提示的方法进行比较,即 L2P、DualPrompt、ESN和 CODAprompt。为了公平比较,我们还在我们的实验设置下复现了它们的最佳结果。上限(UB)性能是通过联合微调所有任务数据的提示和分类器实现的。
4.2 主要结果
在 Split StanfordCars 基准上,我们的 Consistent Prompting (CPrompt) 与最先进的竞争对手的比较如表 1 所示。Split StanfordCars 基准对持续学习方法具有挑战性,因为其结果远低于联合学习的上限,并且存在不可忽视的遗忘问题。然而,提出的 CPrompt 在其竞争对手中表现最佳。具体来说,CPrompt 显著超越了最先进的 CODAprompt,在 10 任务设置下分别实现了 4.53% 和 3.53% 的更高 Last-acc 和 Avg-acc。随着任务数量的增加,这种改进更加明显。在 20 任务设置下,CPrompt 的 Last-acc 和 Avg-acc 分别比 CODAprompt 高出 6.22% 和 4.96%。

我们的 CPrompt 和最先进的方法在 Split ImageNet-R 上也进行了比较,如表 2 所示。在 10 任务设置下,我们的方法仍然优于 CODAprompt,在 Last-acc 和 Avg-acc 上分别实现了约 1.60% 的改进。在更具挑战性的 20 任务设置下,CPrompt 也实现了 2.54% 的更高 Last-acc 和 3.33% 的更高 Avg-acc,与上述趋势类似。

表 3 和表 4 分别展示了 Split CIFAR-100 和 Split DomainNet 在 10 任务持续学习中的结果。提出的 CPrompt 在两种基准的所有标准上均一致优于其他基于提示的方法。此外,CPrompt 的改进是显著的,与所有竞争对手相比,Last-acc 和 Avg-acc 大多提高了 1% 以上。

图 4 展示了不同方法在持续学习过程中的详细比较,展示了我们方法的优越性。CPrompt 的曲线始终高于其竞争对手的曲线,跨越不同任务。通常,随着任务变得更加复杂且涉及更多类别,这些性能差距往往会扩大。这一发现表明,CPrompt 比其最先进的竞争对手更能抵抗灾难性遗忘。

4.3 消融研究
提出的 CPrompt 包含两个主要组件:分类器一致性学习(CCL)和包含多键机制(MK)的提示一致性学习(PCL)。通过消融实验评估了每个组件的有效性,实验在两个大规模持续学习基准 Split StanfordCars 和 Split ImageNet-R 上进行。结果如表 5 所示。我们完整的 CPrompt(包含所有三个组件)的性能显著优于原始骨干网络(第一行结果)。例如,在 Split StanfordCars 10 任务设置下,CPrompt 的 Last-acc 和 Avg-acc 分别比骨干网络高出 4.81% 和 3.71%。此外,单独包含每个组件通常可以在两个标准上带来超过 1% 的显著改进。因此,每个提出组件的有效性得到了证明。最后,结合 CCL 和 PCL(无 MK)可以改善每个单独组件的性能。这种组合显然将所有设置的性能提升到第二高。这表明这两个组件服务于不同的目的并相互补充。

4.4 详细分析
分类器一致性学习(CCL)的详细分析:在训练阶段,CCL 旨在规范所有分类器的行为,以实现训练和测试之间更好的一致性。为了展示仅由一致分类器带来的优势,在测试期间为每个输入提供相应的提示。表 6 展示了使用和不使用 CCL 训练的 CPrompt 之间的比较。我们的完整方法(带有 CCL)显著优于不包含 CCL 的 CPrompt,Last-acc 和 Avg-acc 分别提高了 3.36% 和 3.17%。此外,CCL 可以应用于其他基于提示的持续学习方法,并为它们带来显著改进。例如,DualPrompt 的 Last-acc 提高了 4.52%,如表 7 所示。更多关于 CODAprompt 和 L2P 与我们方法结合的结果见补充材料。


提示一致性学习(PCL)的详细分析:为了展示 PCL 带来的鲁棒预测优势,开发了一种新的实验流程。在测试期间,我们始终选择初始任务的提示,该提示与任何后续任务都不对应。使用此提示,我们计算从第二个任务到最后一个任务的模型性能,然后取平均值。此设置展示了模型在处理不匹配提示时的鲁棒性,而现有方法在此方面可能存在困难。表 8 展示了使用和不使用 PCL 训练的 CPrompt 之间的比较。我们完整的使用 PCL 训练的 CPrompt 显著优于其对应版本,Last-acc 和 Avg-acc 分别提高了 10.92% 和 7.54%。这清楚地表明了 PCL 在提出的 CPrompt 中的必要性。此外,将 PCL 与 DualPrompt 方法结合也带来了显著改进,如表 9 所示。

多键机制(MK)的详细分析:提出的多键机制为每个任务提示分配多个键,以处理不同类别的固有多样性。与每个任务提示使用单键(OK)映射相比,这种方法在任务特定提示选择上的准确率提高了 20% 以上,从而改善了持续学习性能,如表 10 所示。准确提示选择的重要性还可以通过任务增量学习(TIL)设置下的上限性能来证明。在 TIL 中,由于提供了任务身份,可以始终选择适当的输入提示(100% Task-acc)。因此,其性能明显优于 CIL 对应版本。

辅助分类器

5. 结论
本文首次揭示了现有基于提示的持续学习方法在训练和测试之间的不一致问题,并进行了深入讨论。我们提出了一种新方法,即一致提示(CPrompt),以解决这一重要问题。我们的 CPrompt 包含两个互补的组件:分类器一致性学习(CCL)和提示一致性学习(PCL)。CCL 通过在所有分类器上进行训练来解决分类器不一致问题,而 PCL 则通过增强预测鲁棒性和提示选择准确性来缓解提示不一致问题。通过其最先进的性能,我们证明了所提出方法的有效性。我们还进行了广泛的分析,以展示基于提示方法中训练 - 测试一致性的重要性。
局限性:多键机制用于提高测试期间的提示选择准确性。如表 10 所示,其提示选择准确性提高了 20% 以上。然而,其准确率仍然相对较低,即不到 40%。进一步提高提示选择准确性可以显著提升持续学习性能,如 TIL 的优越性能所示。我们将在这一方向上进一步改进提出的一致提示方法。