InfLoRA-Interference-Free Low-Rank Adaptation for Continual Learning

0. 摘要

持续学习要求模型能够顺序学习多个任务。在持续学习中,模型应具备保持其在旧任务上表现(稳定性)和不断适应新任务(可塑性)的能力。最近,参数高效微调(PEFT)方法在持续学习中越来越受欢迎,这种方法通过冻结预训练模型并注入少量可学习参数来适应下游任务。尽管现有的基于 PEFT 的持续学习方法在性能上优于未基于 PEFT 的方法,但大多数方法没有考虑如何消除新任务对旧任务的干扰,从而使模型难以在稳定性和可塑性之间进行良好的权衡。在本文中,我们提出了一种新的 PEFT 方法,称为无干扰低秩适应(InfLoRA),用于持续学习。InfLoRA 通过注入少量参数来重新参数化预训练的权重,并证明微调这些注入的参数相当于在子空间中微调预训练的权重。此外,InfLoRA 设计了这个子空间,以消除新任务对旧任务的干扰,实现了稳定性与可塑性之间的良好平衡。实验结果表明,InfLoRA 在多个数据集上优于现有的最先进的持续学习方法。

1. 引言

持续学习要求模型能够顺序地学习多个任务【33】。为了实现持续学习,模型应具备两个基本能力:保持其在旧任务上的表现(稳定性)和不断适应新任务的能力(可塑性)【33】。此外,持续学习中通常考虑两种不同的场景,包括任务增量场景【32】和类增量场景【41】。任务增量场景允许模型在推理过程中获得任务身份信息。相反,类增量场景不允许模型在推理过程中获得任务身份信息,这使得模型必须学习区分所有任务中的所有类别。

最近,参数高效微调(PEFT)方法【15,16,18】逐渐流行起来,这种方法通过冻结预训练模型并注入少量可学习参数来适应下游任务,特别是在类增量场景中。具体而言,基于 PEFT 的现有持续学习方法【21,43】使用一些流行的 PEFT 方法(如提示微调【25】或低秩适应(LoRA)【16】)将可学习参数注入到预训练模型中。随后,这些方法冻结预训练的权重,并在整个持续学习过程中对注入的参数进行顺序微调。

虽然基于 PEFT 的持续学习方法在性能上优于未基于 PEFT 的方法【44】,但大多数方法没有考虑如何消除新任务对旧任务的干扰,从而使模型难以在稳定性和可塑性之间进行良好的权衡。具体而言,当学习一个新任务时,现有基于 PEFT 的持续学习方法要么重用先前学习的参数来适应新任务【12,44】,要么首先随机扩展一些参数,然后再适应新任务【38,42,43】。在这个过程中,由于新旧任务之间共享参数,新任务对旧任务的干扰依然存在,这意味着在新任务上微调预训练模型可能会干扰模型在旧任务上的表现。因此,模型很难在稳定性和可塑性之间取得良好的平衡。

在本文中,我们提出了一种新的 PEFT 方法,称为无干扰低秩适应(InfLoRA),用于持续学习。本文的贡献如下:

  1. InfLoRA 通过注入少量参数来重新参数化预训练的权重,并证明微调这些注入的参数相当于在子空间中微调预训练的权重。
  2. InfLoRA 设计了这个子空间,以消除新任务对旧任务的干扰,实现了稳定性与可塑性之间的良好平衡。
  3. 实验结果表明,InfLoRA 在多个数据集上优于现有的最先进的持续学习方法。

2. 相关工作和预备知识

2.1 相关工作

参数高效微调(PEFT):PEFT 方法通过冻结预训练模型并注入少量可学习参数来适应下游任务。通过这种方式,PEFT 方法减少了全量微调方法的低效性,后者需要微调预训练模型的所有参数以学习下游任务。例如,Adapter【15】在 Transformers 的不同层中添加小模块,并且仅调整这些添加的模块以适应下游任务。提示微调【25】和前缀微调【27】在 Transformer 层的输入中插入一组可学习的 tokens,并且仅调整这些 tokens 以适应下游任务。低秩适应(LoRA)【16】通过低秩分支重新参数化预训练的权重,并且仅调整这些分支以适应下游任务。尽管这些方法调整的可学习参数比全量微调要少得多,但它们总是表现出与全量微调相当甚至更优的性能【11,16,31,45】。早期的 PEFT 方法主要关注自然语言处理(NLP)。最近,PEFT 方法也被提出用于计算机视觉(CV)。例如,视觉提示微调(VPT)【18】和 AdapterFormer【6】分别将提示微调和 Adapter 技术应用于 CV 任务。它们都表现出与全量微调相当的性能。

持续学习:早期的持续学习通常被认为是从头开始学习的背景下进行的。提出了三种类型的持续学习方法,包括基于正则化的方法【1,20,23,46】、基于记忆的方法【2,3,7,28,39】和基于扩展的方法【17,26,35】。基于正则化的方法采用惩罚损失(正则化)来防止旧任务的重要参数发生过多变化。基于记忆的方法维护一个记忆缓冲区,以存储有关旧任务的信息。基于扩展的方法动态扩展模型的结构以适应每个新任务。

最近,随着预训练模型的进展【9,10,13】,使用预训练模型进行持续学习逐渐流行起来。一些持续学习方法完全微调预训练模型【4,49】,这种方法被证明是低效的。其他方法在持续学习中探索了 PEFT 方法。例如,一些现有的持续学习方法【21,38,43,44】在持续学习中引入了提示微调,在类增量场景中取得了远高于以前从头学习的方法的性能。文献【12】中的方法在持续学习中引入了一个框架,该框架可以与许多现有的 PEFT 方法(如提示微调、LoRA 和 Adapter)结合。然而,所有这些方法都没有考虑如何消除新任务对旧任务的干扰,这抑制了模型在稳定性和可塑性之间进行良好权衡。

2.2 预备知识

我们首先介绍低秩适应(LoRA)【16】,这是与我们的方法相关的流行 PEFT 方法。接下来,我们给出持续学习的问题定义。

低秩适应 LoRA【16】是最流行的 PEFT 方法之一。它假设当模型在下游任务上进行全量微调时,参数的变化位于低秩空间中。具体而言,对于输入维度为 $d_I$ 和输出维度为 $d_O$ 的线性层,我们用 $W \in \mathbb{R}^{d_O \times d_I}$ 表示其权重。然后,LoRA 通过两个矩阵 $A \in \mathbb{R}^{d_O \times r}$ 和 $B \in \mathbb{R}^{r \times d_I}$ 扩展了预训练权重 $W$。通常,$r$ 远小于输入维度 $d_I$ 和输出维度 $d_O$,使得 $A$ 成为增维矩阵,$B$ 成为降维矩阵。最终,LoRA 修改了此线性层中的前向传播:$e = W h + A B h$。其中,$h$ 和 $e$ 分别表示此层的输入和输出。LoRA 将 $A$ 初始化为零,并使用高斯分布初始化 $B$。在学习下游任务的过程中,LoRA 冻结预训练的权重 $W$,仅微调参数 $A$ 和 $B$。

问题定义 在持续学习中,存在一系列具有不同分布的任务。我们将任务序列定义为 $D = {D_1, \dots, D_T}$,其中第 $t$ 个任务 $D_t = {(x_{i,t}, y_{i,t})}{i=1}^{n_t}$。这里,$x{i,t}$ 表示输入样本,$y_{i,t}$ 表示其标签。持续学习的目标是依次在这些任务上训练模型,并确保模型在所有任务上表现良好。

我们遵循现有的基于参数高效微调(PEFT)的持续学习方法 [43, 44],并假设模型是一个预训练的视觉 Transformer(ViT)[10]。具体来说,假设模型为 $h_\Phi(f_\Theta(\cdot))$,其中 $h_\Phi(\cdot)$ 是带有参数 $\Phi$ 的分类器,$f_\Theta(\cdot)$ 是带有预训练参数 $\Theta$ 的预训练 ViT 主干。与现有工作 [43] 类似,我们主要关注类增量场景,其中在推理过程中任务身份未知。此外,我们专注于无样本设置 [43, 51],其中无法获取历史数据进行复习。

3. Methodology

图 1(a) 展示了我们提出的 InfLoRA 在一个线性层中的架构。在学习第 $t$ 个新任务之前,InfLoRA 扩展了一个类似于 LoRA 的分支,该分支包括一个降维矩阵 $B_t \in \mathbb{R}^{r \times d_I}$ 和一个升维矩阵 $A_t \in \mathbb{R}^{d_O \times r}$。然后,该线性层的前向传播被修改为:
$$
e = Wh + \sum_{j=1}^t A_j B_j h = W_{t-1} h + A_t B_t h = W_t h \tag{1}
$$
这里,$W_t = W_{t-1} + A_t B_t = W + \sum_{i=1}^t A_i B_i$。与 LoRA 类似,我们的 InfLoRA 也将升维矩阵 $A_t$ 初始化为 0。然而,与 LoRA 使用高斯分布初始化降维矩阵 $B$ 不同,我们的 InfLoRA 在学习第 $t$ 个任务之前设计降维矩阵 $B_t$。

在学习第 $t$ 个任务的过程中,InfLoRA 微调 $A_t$ 以学习新任务,同时冻结预训练权重 $W$、所有旧分支以及矩阵 $B_t$。在学习第 $t$ 个任务之后,对于属于已学习任务的任何测试样本,模型使用 $W_t$ 和公式 (1) 来推断其标签。这种设计确保我们的方法与类增量场景兼容,其中在推理过程中任务身份未知。

在以下小节中,我们首先建立 InfLoRA 与微调预训练权重方法之间的关系。具体来说,我们证明微调参数 $A_t$ 等价于在由 $B_t$ 的行张成的子空间中微调预训练权重 $W$。需要注意的是,$B_t$ 是在学习第 $t$ 个任务之前设计的,因此该子空间是预先设计的。然后,基于这一关系,我们介绍 InfLoRA 如何设计该子空间以消除新任务对旧任务的干扰,并在稳定性和可塑性之间取得良好的平衡。

3.1. InfLoRA 与微调预训练权重的关系

当第 $t$ 个任务到达并且我们的方法扩展了一个新分支时,该层的前向传播可以表示为公式 (1)。此时,我们可以证明以下命题:

命题 1. 当使用公式 (1) 表示的前向传播学习第 $t$ 个任务时,微调 $A_t$ 等价于在子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 中微调预训练权重 $W$。这里,$b_{t,i}$ ($1 \leq i \leq r$) 表示 $B_t$ 的第 $i$ 个行向量。

证明. 当微调预训练权重 $W$ 以学习第 $t$ 个任务时,我们可以基于链式法则计算 $W$ 的梯度:
$$
\frac{\partial L}{\partial W} = \frac{\partial L}{\partial e} \frac{\partial e}{\partial W} = \frac{\partial L}{\partial e} h^T \tag{2}
$$
这里,$L$ 表示损失函数。此时,$W$ 的变化可以表示为 $\Delta W = -\alpha \frac{\partial L}{\partial W}$,其中 $\alpha$ 是学习率。然后,我们可以计算组合矩阵 $W_t = W + \sum_{j=1}^t A_j B_j$ 的变化:
$$
\Delta_W W_t = \left[ W + \Delta W + \sum_{j=1}^t A_j B_j \right] - \left( W + \sum_{j=1}^t A_j B_j \right) = \Delta W = -\alpha \frac{\partial L}{\partial e} h^T \tag{3}
$$
这里,我们使用 $\Delta_W W_t$ 表示由 $W$ 的变化引起的组合矩阵 $W_t$ 的变化。

类似地,当微调扩展权重 $A_t$ 时,我们可以基于链式法则计算 $A_t$ 的梯度:
$$
\frac{\partial L}{\partial A_t} = \frac{\partial L}{\partial e} \frac{\partial e}{\partial A_t} = \frac{\partial L}{\partial e} h^T B_t^T \tag{4}
$$
此时,$A_t$ 的变化可以表示为 $\Delta A_t = -\alpha \frac{\partial L}{\partial A_t}$。然后,我们可以计算组合矩阵 $W_t = W_{t-1} + A_t B_t$ 的变化:
$$
\Delta_{A_t} W_t = \left[ W_{t-1} + (A_t + \Delta A_t) B_t \right] - \left( W_{t-1} + A_t B_t \right) = \Delta A_t B_t = -\alpha \frac{\partial L}{\partial e} h^T B_t^T B_t = \Delta_W W_t B_t^T B_t \tag{5}
$$
这里,我们使用 $\Delta_{A_t} W_t$ 表示由 $A_t$ 的变化引起的组合矩阵 $W_t$ 的变化。公式 (5) 中的第四个等式成立是因为公式 (4),而第五个等式成立是因为公式 (2)。公式 (5) 表明 $\Delta_{A_t} W_t$ 等于 $\Delta_W W_t$ 乘以一个投影矩阵 $B_t^T B_t$。由于 $B_t^T B_t$ 将 $\Delta_W W_t$ 的每一行向量投影到子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$,因此命题 1 成立。

命题 1 表明,使用我们的 InfLoRA 训练模型等价于在由 $B_t$ 的行张成的子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 中直接微调预训练权重 $W$。因此,在学习第 $t$ 个任务之前,我们可以设计矩阵 $B_t$,使得在该子空间中学习第 $t$ 个任务不会干扰模型在旧任务上的表现。

3.2. 消除新任务对旧任务的干扰

我们首先介绍 InfLoRA 希望子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 具备的理想特性。通过这些特性,InfLoRA 可以消除新任务对旧任务的干扰,并在稳定性和可塑性之间取得良好的平衡。然后,我们介绍如何设计降维矩阵 $B_t$,使得子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 具备这些特性。

3.2.1 理想特性

首先,InfLoRA 希望子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 与所有旧任务的梯度正交。通过这种方式,根据命题 1,InfLoRA 的更新(可以表示为 $\Delta_{A_t} W_t$)也将与旧任务的梯度正交。需要注意的是,使新任务的更新与旧任务的梯度正交以消除新任务对旧任务的干扰的想法已经在许多现有的持续学习方法中提出 [30, 36]。然而,这些现有方法都是为从头开始的持续学习设计的,涉及更新模型的所有参数,这与 PEFT 的设置不兼容。相反,我们的方法是一种 PEFT 方法,仅微调 $A_t$ 中的参数。

除了消除新任务对旧任务的干扰外,我们的 InfLoRA 还进一步使子空间 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 位于新任务梯度所在的子空间中,以在稳定性和可塑性之间取得良好的平衡。具体来说,现有工作 [19] 表明,在微调过程中,预训练 ViT 的权重增量在权重秩方面表现出冗余性。因此,新任务的梯度位于一个低维子空间中。我们的方法使 $\text{span}{b_{t,1}, \dots, b_{t,r}}$ 不仅与旧任务的梯度正交,还位于新任务 $t$ 的梯度所在的子空间中。通过这种方式,我们的方法在消除新任务对旧任务的干扰的同时,使模型专注于新任务,从而在稳定性和可塑性之间取得良好的平衡。第 4.2 节验证了这两个特性的有效性。

3.2.2 设计降维矩阵

InfLoRA 首先近似新任务和旧任务的梯度空间。这里,我们使用 $N_t$ 表示 InfLoRA 近似的新任务的梯度空间。类似地,我们使用 $M_t$ 表示 InfLoRA 近似的先前 $t-1$ 个旧任务的梯度空间。我们还使用 $M_t^\perp$ 表示与 $M_t$ 正交的残差梯度空间。然后,为了满足第 3.2.1 节中描述的特性,InfLoRA 确保 $B_t$ 的每一行位于 $N_t \cap M_t^\perp$ 中。换句话说,InfLoRA 使 $\text{span}{b_{t,1}, \dots, b_{t,r}} \subseteq N_t \cap M_t^\perp$。

现有工作 [29, 36] 表明,线性层的梯度更新位于输入的张成空间中。有关此命题的详细解释,请参阅补充材料。因此,InfLoRA 使用新任务 $t$ 的输入矩阵来近似新任务的梯度空间。具体来说,InfLoRA 计算输入矩阵 $H_t = [h_{t,1}, \dots, h_{t,n}]$,其中 $H_t$ 的每一列表示第 $t$ 个任务的输入向量。然后,InfLoRA 将 $N_t$ 视为由矩阵 $H_t$ 的列张成的子空间。

然而,InfLoRA 不能使用旧任务的输入矩阵来近似旧任务的梯度空间,因为模型在学习新任务时无法获取来自旧任务的数据。相反,现有方法如梯度投影记忆(GPM)[36] 和双重梯度投影记忆(DualGPM)[29] 可以学习一个矩阵来保留旧任务的梯度信息。InfLoRA 结合了 DualGPM 来保留梯度信息。在 DualGPM 的帮助下,模型可以学习一个矩阵 $M_t \in \mathbb{R}^{d_I \times k_t}$ 或一个矩阵 $M_t^\perp \in \mathbb{R}^{d_I \times (d_I - k_t)}$。这里,$M_t$ 的列构成了 $M_t$ 的正交基,而 $M_t^\perp$ 的列构成了 $M_t^\perp$ 的正交基。$k_t$ 表示 $M_t$ 的维度。有关 DualGPM 如何维护正交基 $M_t$ 或 $M_t^\perp$ 的详细信息,请参阅补充材料或原始论文 [29]。

在近似新任务和旧任务的梯度空间后,InfLoRA 获取 $N_t$ 中位于 $M_t^\perp$ 中的部分。具体来说,当模型维护 $M_t$ 时,InfLoRA 执行以下操作:
$$
\hat{H}_t = H_t - M_t M_t^T H_t \tag{6}
$$
类似地,当模型维护 $M_t^\perp$ 时,InfLoRA 执行以下操作:
$$
\hat{H}_t = M_t^\perp (M_t^\perp)^T H_t \tag{7}
$$
需要注意的是,当 $t = 1$ 时,$M_t$ 是一个空空间,因此 $\hat{H}_t = H_t$。显然,$\hat{H}_t$ 的每一列都位于 $N_t \cap M_t^\perp$ 中。然而,由于 $\hat{H}_t^T \in \mathbb{R}^{n \times d_I}$ 和 $B_t \in \mathbb{R}^{r \times d_I}$ 具有不同的形状,InfLoRA 不能直接将 $B_t$ 定义为 $\hat{H}_t^T$。由于 $n \gg r$,InfLoRA 使用 $\hat{H}_t^T$ 的主成分来设置 $B_t$。具体来说,对 $\hat{H}_t^T$ 进行奇异值分解(SVD):
$$
\hat{H}_t^T = V_t \Sigma_t U_t \tag{8}
$$
然后,InfLoRA 通过以下方式设计 $B_t$:
$$
B_t = (U_t)_r \tag{9}
$$
这里,$(U_t)_r$ 表示 $U_t$ 中对应于前 $r$ 个奇异值的行。图 1(b) 展示了设计矩阵 $B_t$ 的流程。

需要注意的是,DualGPM 在任务数量增加时扩展子空间 $M_t$ 并减少子空间 $M_t^\perp$。由于 InfLoRA 将模型的更新约束在子空间 $N_t \cap M_t^\perp \subseteq M_t^\perp$ 中,因此随着任务数量的增加,学习新任务的空间会减少。然而,通过调整对旧任务梯度的近似误差,DualGPM 可以缓慢扩展 $M_t$ 并缓慢减少 $M_t^\perp$。因此,InfLoRA 的约束不会过度影响模型对新任务的学习。有关详细解释,请参阅补充材料。

3.3. InfLoRA 的完整流程

算法 1 概述了 InfLoRA 在持续学习中的完整流程。当第 $t$ 个新任务到达时,InfLoRA 首先通过公式 (9) 设计 $B_t$ 并扩展一个新分支。然后,InfLoRA 通过微调新扩展的分支来学习第 $t$ 个任务。请注意,基于现有方法 [12, 38] 的经验发现,我们采用局部交叉熵(CE)损失作为学习目标,因为它通常在基于 PEFT 的持续学习方法中表现优于全局 CE 损失。局部 CE 是约束在当前新任务类别上的 CE 损失,可以表示为:
$$
L(D_t) = \frac{1}{|D_t|} \sum_{(x, y) \in D_t} L_{\text{ce}}(\text{mask}(h_\Phi(f_\Theta(x))), y) \tag{9}
$$

这里,$\text{mask}(\cdot)$ 是一个过滤掉旧类别 logits 的函数,$L_{\text{ce}}$ 表示标准的交叉熵损失。在学习第 $t$ 个新任务后,InfLoRA 遵循 DualGPM 保留第 $t$ 个任务的梯度信息。

需要注意的是,一旦模型学习了第 $t$ 个任务,对应的分支将被冻结。由于扩展的分支是线性变换,我们可以将旧分支集成到预训练权重中,以减少扩展的参数。具体来说,在学习第一个任务后,InfLoRA 将第一个分支集成到预训练权重中,并获得权重 $W_1 = W + A_1 B_1$。在学习第 $t$ 个新任务之前($t > 1$),InfLoRA 维护权重 $W_{t-1}$。在学习第 $t$ 个任务后,InfLoRA 将第 $t$ 个分支集成到 $W_{t-1}$ 中,并获得 $W_t = W_{t-1} + A_t B_t$。通过这种方式,$A_t$ 和 $B_t$ 中的参数不需要在后续任务的学习中维护。因此,在整个学习过程中,InfLoRA 扩展的参数数量等于单个分支中的参数数量。由于单个分支包含 $(d_I + d_O)r$ 个参数,因此 InfLoRA 扩展的参数数量始终为 $(d_I + d_O)r$。

4. 实验

4.1. 实验设置

数据集与评估指标

与现有的基于 PEFT 的持续学习方法 [12, 44] 类似,我们使用 ImageNet-R [14]、CIFAR100 [24] 和 DomainNet [34] 来训练和评估模型。ImageNet-R 是通过对 ImageNet [8] 中的 200 个类别进行艺术处理生成的。该数据集被现有工作 [43] 引入持续学习,并已成为基于 PEFT 的持续学习方法的标准基准。CIFAR100 是现有持续学习工作中常用的数据集。DomainNet 包含 345 个类别,并被一些现有工作 [38, 42] 引入持续学习。遵循现有的持续学习工作 [38],我们将 ImageNet-R 划分为 5 个、10 个和 20 个任务,每个任务分别包含 40、20 和 10 个类别。我们将 CIFAR100 划分为 10 个任务,每个任务包含 10 个类别。我们将 DomainNet 划分为 5 个任务,每个任务包含 69 个类别。

遵循现有的持续学习方法 [12, 44],我们通过两个流行的指标评估模型的性能,包括最终准确率 $\text{ACC}_T$ 和平均准确率 $\text{ACC}T = \frac{1}{T} \sum{i=1}^T \text{ACC}i$,其中 $T$ 表示任务总数,$\text{ACC}i$ 定义为:
$$
\text{ACC}i = \frac{1}{i} \sum{j=1}^i a
{i,j} \tag{11}
$$
这里,$a
{i,j}$ 表示模型在学习第 $i$ 个任务后对第 $j$ 个任务的准确率。

基线方法

我们将我们的 InfLoRA 与最先进的基于 PEFT 的持续学习方法进行比较,包括学习提示(L2P)[44]、DualPrompt [43]、持续分解注意力提示(CODA-P)[38]、学习累积集成(LAE)[12]、持续低秩适应(C-LoRA)[37]。对于 LAE,我们使用 LoRA [16] 实现。遵循现有工作 [12, 38],我们在比较中还包含两种不进行持续学习的方法,即联合学习(joint)和顺序学习(sequential)。这里,joint 表示联合学习所有任务的方法,而 sequential 表示按顺序学习所有任务而不采取任何操作来克服模型遗忘的方法。joint 的准确率可以被视为准确率的上限,而 sequential 的准确率可以被视为准确率的下限。

架构与训练细节

我们遵循现有工作 [12, 43] 进行实验。具体来说,我们使用在 ImageNet 21K 上监督预训练的 ViT-B/16 主干 [10] 作为预训练模型。

对于所有方法,我们遵循现有工作 [12, 38, 44] 并使用 Adam [22] 优化器,其梯度及其平方的运行平均值($\beta_1 = 0.9$,$\beta_2 = 0.999$)。每个任务在 ImageNet-R 上训练 50 个 epoch,在 CIFAR100 上训练 20 个 epoch,在 DomainNet 上训练 5 个 epoch。所有实验的批量大小设置为 128。由于我们的 InfLoRA 与 LoRA 的架构相似,我们遵循现有工作 [12] 并将 InfLoRA 的架构插入到注意力模块的键和值中。此外,现有方法 DualPrompt [43] 将插入的块视为超参数,并搜索其提示的最佳位置。相反,我们将 InfLoRA 的架构插入到所有 Transformer 块中,以避免搜索。我们还实现了一个变体,该变体像现有方法 DualPrompt 和 CODA-P 一样插入底部 5 个 Transformer 块。我们称该变体为 InfLoRA-b5。

关于超参数 $r$,我们通过在验证数据集上进行网格搜索来确定其值。

4.2. 实验结果

准确率

表 1 展示了不同方法在 ImageNet-R 上不同任务数量下的结果。表 2 展示了不同方法在 CIFAR100 和 DomainNet 上的结果。我们可以发现,我们的方法 InfLoRA 和 InfLoRA-b5 优于现有的持续学习方法。

图 2 展示了不同持续学习方法在 ImageNet-R 和 CIFAR100 上准确率的变化。我们可以发现,我们的方法不仅在学习的最后阶段优于现有方法,而且在整个学习过程中都表现更好。这表明我们的 InfLoRA 消除了新任务对旧任务的干扰,因此我们的方法的准确率下降速度比其他方法慢。

扩展参数的分析

图 3 展示了不同方法在 ImageNet-R 和 CIFAR100 上扩展的参数数量和准确率。对于 L2P、DualPrompt 和 CODA-P,其扩展参数包括添加的提示及其对应的键。对于 LAE,其扩展参数是插入的 LoRA 模块和一个额外的副本。对于 C-LoRA,其扩展参数是插入的 LoRA 模块。对于我们的方法,扩展参数是 $B_t$ 和 $A_t$。有关计算不同方法扩展参数数量的详细信息,请参阅补充材料。我们可以发现,CODA-P 和 C-LoRA 扩展的参数数量远多于其他方法。此外,我们的方法 InfLoRA 和 InfLoRA-b5 扩展的参数数量与 L2P、DualPrompt 和 LAE 相当,但性能优于这些方法。

消融实验

我们进行实验以验证通过公式 (9) 设计降维矩阵 $B_t$ 的有效性。具体来说,我们探索了三种不同的变体来设计 $B_t$。第一种变体使用高斯分布随机设计 $B_t$。我们称该变体为“Random → $B_t$”。第二种变体丢弃公式 (6) 或 (7) 中的操作,并直接设置 $\hat{H}_t = H_t$。通过这种方式,该变体确保 $B_t$ 的每一行位于 $N_t$ 中,而忽略 $M_t^\perp$。我们称该变体为“$N_t$ → $B_t$”。第三种变体不计算输入矩阵,而是在应用公式 (6) 或 (7) 之前使用高斯分布初始化 $H_t$。通过这种方式,该变体确保 $B_t$ 的每一行位于 $M_t^\perp$ 中,而忽略 $N_t$。我们称该变体为“$M_t^\perp$ → $B_t$”。由于我们的方法同时关注 $M_t^\perp$ 和 $N_t$,因此我们使用“$N_t \cap M_t^\perp$ → $B_t$”来表示我们的方法。

表 3 展示了我们的方法及其变体的结果。我们可以发现,所有这些变体的表现都不如我们的方法。为了进一步展示不同变体的性能,我们在图 4 中展示了模型学习所有任务后不同任务的相对准确率。这里,相对准确率是不同变体的准确率减去我们的 InfLoRA 的准确率。需要注意的是,图 4 中的最后一个任务是新任务,而其他任务是旧任务。正如我们所看到的,“Random → $B_t$”和“$N_t$ → $B_t$”在新任务上优于“$M_t^\perp$ → $B_t$”,但在旧任务上的准确率远低于“$M_t^\perp$ → $B_t$”和我们的 InfLoRA。这意味着这两种变体未能消除新任务对旧任务的干扰,导致模型的稳定性较低。相反,“$M_t^\perp$ → $B_t$”在新任务上的表现最差。这意味着“$M_t^\perp$ → $B_t$”忽略了模型的可塑性。我们的方法在大多数任务上优于所有变体。这表明我们的方法能够消除新任务对旧任务的干扰,并在稳定性和可塑性之间取得更好的平衡。

预训练模型的变化

我们还遵循现有方法 [40],使用两种不同的自监督方法(包括 DINO [5] 和 iBOT [50])预训练的 ViT-B/16 进行实验。除了预训练模型的选择外,所有实验设置均与第 4.1 节中概述的细节保持一致。

表 4 展示了不同方法在使用各种自监督预训练模型时在 ImageNet-R 上的结果。将这些结果与表 1 中的结果进行比较,我们可以发现,所有使用自监督预训练模型的方法的性能均低于使用监督预训练模型的相应方法。然而,我们的方法仍然优于所有其他方法。

与分类器对齐结合

慢学习者与分类器对齐(SLCA)[48] 利用特征统计量对齐分类器,展示了优于未对齐分类器方法的性能。我们的 InfLoRA 可以与分类器对齐(CA)结合以获得更好的性能。具体来说,在学习第 $t$ 个任务并更新参数 $A_t$ 和 $B_t$ 以及损失函数 (10) 后,我们收集第 $t$ 个任务的特征 $F_t = {r_{i,t}}{i=1}^{n_t}$。这里,$r{i,t} = f(x_{i,t})$ 表示主干 $f_\Theta(\cdot)$ 提取的特征。然后,计算并保存每个类别特征的均值和协方差。之后,对于模型在持续学习过程中见过的每个类别 $c$,从高斯分布 $\mathcal{N}(\mu_c, \Sigma_c)$ 中采样 $S$ 个样本。这里,$\mu_c$ 和协方差 $\Sigma_c$ 分别表示类别 $c$ 的均值和协方差。最后,我们使用标准交叉熵和这些样本对齐分类器。有关该实验的详细信息,请参阅补充材料。

表 5 展示了我们的方法 InfLoRA+CA 优于 SLCA。需要注意的是,SLCA 微调模型的所有参数,而我们的方法 InfLoRA 仅微调 $A_t$ 中的参数。因此,我们的 InfLoRA+CA 比 SLCA 更加高效。

5. 结论

在本工作中,我们提出了一种新的方法,称为无干扰低秩适应(InfLoRA),用于持续学习。InfLoRA 注入少量参数以重新参数化预训练权重,并表明微调这些注入的参数等价于在子空间中微调预训练权重。此外,InfLoRA 设计该子空间以消除新任务对旧任务的干扰,从而在稳定性和可塑性之间取得良好的平衡。实验结果表明,InfLoRA 在多个数据集上优于现有的最先进的持续学习方法。

致谢

本工作得到了国家自然科学基金(No.62192783)、国家重点研发计划(No.2020YFA0713901)和中央高校基本科研业务费专项资金(No.020214380108)的支持。