【CVPR2022】无需示例的类增量学习的自我维持表示扩展

论文地址:

https://arxiv.org/abs/2203.06359

论文摘要:

无示例的类增量学习是指在无法保存旧类样本时,同时识别新旧类。这是一项具有挑战性的任务,因为表示优化和特征保留只能在新类的监督下实现。

为了解决这一问题,作者提出了一种新的自维持表示扩展方案,该方案包括一个融合主分支扩展和侧分支更新的结构重组策略,以及一个主分支蒸馏方案来转移不变知识。

此外,作者还提出了一种原型选择机制,通过选择性地将新样本加入到蒸馏过程中,来增强新旧样本之间的区别。在三个基准上进行的大量实验显示了显著的增量性能,分别比最先进的方法多出3%、3%和6%。

论文介绍:

大多数现有的方法假设一定数量的(例如,2000)的示例可以存储在内存中,但是往往由于用户隐私或设备的限制,这在实践中通常难以满足。

为此,本文关注的是无需保存旧类样本的增量学习,但是直接迁移现有的方法带来的问题是,由于缺乏旧类样本,新类样本所参与的蒸馏是唯一能够帮助保持旧类表示的蒸馏。

然而,对于新类样本,提供与样本相同的完整的旧类分布是不切实际的,因此在蒸馏过程中难以有效地促进知识的转移,这会导致在旧阶段学习到的旧类的代表性特征随着与新类的相关性逐渐减少而逐渐丢失。

另一方面,基于结构的方法的思想是保留旧模型进行推理,并扩展新模型在每个新阶段进行训练。虽然这种策略完全保持了旧类的性能,但在训练过程中,这种方法的网络参数会随着任务数目线性增加。此外,虽然可以使用大量的数据来学习新类之间的鉴别特征,但也很容易与旧分布中的相似特征相混淆。

在这里插入图片描述
例如本文选取的Baseline(SSIL,CVPR2021)只能提高分类器的最优边界的选择,而不能从本质上提高特征表示中对新旧类的识别能力。如上图所示,与初始阶段相比,用标准CIL方法得到的旧类的表示更为混乱,因为由于缺乏有效的监督,它们可能会逐渐与相似的类重叠。而且新类可能直接与旧类的集群重叠,导致后续优化过程的严重混乱。

为了解决这个问题,作者提出了一种自我维持的表示扩展方案来学习结构循环表示,在促进优化的同时,在每个阶段结束时整合整体结构,以促进优化。

在这里插入图片描述

如图所示,旧类的保存反映在结构和特征两个方面。首先,作者采用动态结构重组(DSR)策略,通过在主分支保持旧类知识,在侧分支融合更新,在稳定保留旧类空间的同时,同时保留结构空间。其次,在可扩展结构的基础上,作者采用主分支蒸馏(MBD),通过对齐旧类上的不变分布知识,来保持新网络对旧特征的区分。

具体地说,作者在旧特征提取器的每个块中插入一个残余适配器,将旧表示映射到一个高维嵌入空间,迫使优化流只通过与旧类无关的扩展分支。经过优化后,作者采用结构重参数化技术,融合新旧特征,并将其无损地映射回初始空间。此外,为了减少新增量类和原始类之间的混淆,作者在蒸馏过程中添加了一个原型选择机制(PSM)。

其中归一化余弦距离首先被用来度量新类表示和旧类原型之间的相似性。然后使用类似于旧类的样本进行蒸馏,使用保留旧类统计信息的软标签来维护旧知识,而那些与旧类不同的样本则用于新类的训练。该机制提高了正向转移的性能,并在一定程度上减轻了联合优化的不足。

主要贡献总结如下:

  • 提出了一种非范例增量学习的自维持表示扩展方案,其中通过动态结构重组策略实现循环扩展优化,从而得到结构不变表示。
  • 提出了一种原型选择机制,结合保留的不变知识和输入的新监督,以减少相似类之间的特征混淆。
  • 在CIFAR-100、Tiny-ImageNet和ImageNet-Subset等基准测试上进行了大量的实验,结果表明该方法优于目前的先进水平。

基本定义:

无示例增量学习定义如下:

假设 X , Y , Z X,Y,Z X,Y,Z 分别是训练集、标签集和测试集,我们的任务是从连续的 n n n 个阶段(任务)的数据流 X 1 , X 2 , … , X n X^1,X^2,\dots,X^n X1,X2,,Xn 中训练模型,并且所有增量类别集合都是不相交的,即 Y i ∩ Y j = ∅ , i ≠ j Y^i\cap Y^j=\empty,i\neq j YiYj=,i=j

假设当前任务的 X i X^i Xi 有足够的样本,但是之前旧类的样本是不可获得的。

精度是在测试集 Z i = Y 1 ∪ Y 2 ⋯ ∪ Y i Z^i=Y^1\cup Y^2\cdots\cup Y^i Zi=Y1Y2Yi 测得的。

具体实现:

icarl 首先提出了一种在CIL设置中解耦表示和分类器学习的实用策略,它的三个主要组成部分是使用知识蒸馏和示例回放的表示学习、优先级样本选择和通过平衡校准进行分类。

Incremental Representation Learning:

由于旧类示例不能在 NECIL 设置中保存,表示学习将略有不同,主要是在交叉熵损失和蒸馏损失方面。在第一阶段,由特征提取器 f e 1 f^1_{e} fe1 和分类器 g c 1 g_c^1 gc1 组成的标准分类模型 f θ 1 f^1_{\theta} fθ1 在完全监督下进行优化,即 X 1 X^1 X1 Y 1 Y^1 Y1。在增量阶段( n > 1 n>1 n>1),当前模型的输入仅为 X n X^n Xn 的图像 Q Q Q,而没有旧样本。

利用一个基本的特征提取器,如由 θ e n θ_e^n θen 参数化的VGG或ResNet来学习相应的表示:

r q n = f e n ( Q ; θ e n ) r_{q}^{n}=f_{e}^{n}\left(Q ; \theta_{e}^{n}\right) rqn=fen(Q;θen)

然后,为了学习新的类之间的鉴别特征,在来自 Y n Y^n Yn 的类标签 y q n y^n_q yqn 的监督下,对所得到的表示进行优化。作者采用全连接层作为分类器 g c n g_c^n gcn,将表示法映射到标签空间:

s q n = g c n ( r q n ; θ c n ) , L c e = F c e ( s q n , y q n ) s_{q}^{n}=g_{c}^{n}\left(r_{q}^{n} ; \theta_{c}^{n}\right), L_{c e}=F_{c e}\left(s_{q}^{n}, y_{q}^{n}\right) sqn=gcn(rqn;θcn),Lce=Fce(sqn,yqn)

其中 F c e F_{ce} Fce 表示标准的交叉熵损失。

最后,为了保持用旧类学习到的有用信息,我们使用知识蒸馏来衡量所获得的表示与先前模型 f e n − 1 f^{n-1}_{e} fen1 之间的相似性:

r q n − 1 = f e n − 1 ( Q ; θ e n − 1 ) , L k d = F k d ( r q n , r q n − 1 ) r_{q}^{n-1}=f_{e}^{n-1}\left(Q ; \theta_{e}^{n-1}\right), L_{k d}=F_{k d}\left(r_{q}^{n}, r_{q}^{n-1}\right) rqn1=fen1(Q;θen1),Lkd=Fkd(rqn,rqn1)

其中 F k d F_{kd} Fkd 表示欧氏距离。

Incremental Classifier Calibration:

克服CIL中旧示例和新样本之间不平衡的一种常见方法是利用平衡子集进行微调。由于NECIL中没有示例,我们在每个类的深度特征空间中记住一个原型(与PASS一致)。

与PASS通过高斯噪声增强原型不同,作者选择将样本(即 U p B Up_B UpB)原型过采样到批量大小(即 B B B),从而实现分类器的校准,这是长尾识别中采用的最简单的方法。

p B = U p B (  Prototype  ) , L proto  = F c e ( p B , y B ) p_{B}=U p_{B}(\text { Prototype }), L_{\text {proto }}=F_{c e}\left(p_{B}, y_{B}\right) pB=UpB( Prototype ),Lproto =Fce(pB,yB)

y B y_B yB 是初始原型的过采样标签集。当前模型的最终损失是它们的加权和:

L = L c e + λ L k d + γ L proto  L=L_{c e}+\lambda L_{k d}+\gamma L_{\text {proto }} L=Lce+λLkd+γLproto 

λ \lambda λ γ \gamma γ 是权重系数,作者默认它们设为 10 10 10

Optimization:

与以往对分类器的影响不同,本文试图对表示进行分析。在CIL中,交叉熵损失可以分为两部分:

L c e = F c e ( s q n , y q n ) + F c e ( s e n , y e n ) L_{c e}=F_{c e}\left(s_{q}^{n}, y_{q}^{n}\right)+F_{c e}\left(s_{e}^{n}, y_{e}^{n}\right) Lce=Fce(sqn,yqn)+Fce(sen,yen)

s e n s^n_e sen 表示已保存的示例,其数量远低于 s q n s^n_q sqn。虽然这种不平衡会使优化过程偏向于对新类更有鉴别性的特征,但添加蒸馏损失可以缓解这个问题:

L k d = F k d ( r q n , r q n − 1 ) + F k d ( r e n , r e n − 1 ) L_{k d}=F_{k d}\left(r_{q}^{n}, r_{q}^{n-1}\right)+F_{k d}\left(r_{e}^{n}, r_{e}^{n-1}\right) Lkd=Fkd(rqn,rqn1)+Fkd(ren,ren1)

r e n r^n_e ren 代表了示例的特征表示。该损失将维护对新旧类很重要的特性。

但是,请注意,在上述NECIL设置中没有涉及任何示例,这意味着对新旧类表示的联合优化完全分解为只与增量类相关的特征优化。

上述问题反映在第一部分是交叉熵损失将只关注能够促进新类识别的特性,而在第二部分,它将专注于维护与新类相关的特征,这都加速的遗忘旧类的代表特征。

假设蒸馏部分在初始阶段的遗忘率( F r Fr Fr)为 α \alpha α,而蒸馏损失是基于前一阶段的总体表示,因此误差将随着该阶段呈指数级累积,即 F r n ≥ α n − 1 Fr_n\ge\alpha_n−1 Frnαn1

因此,有必要从表征层面上纠正这个错误。

在这里插入图片描述

Dynamic Structure Reorganization:

为了保留旧类的表现并保证新类的无偏训练,作者提出了一种动态结构重组(Dynamic Structure Reorganization)策略。一般来说,如上图所示,作者首先采用结构扩展,将侧支逐块添加到当前模型中,以进行新类的优化。具体地说,作者在前一个阶段的固定特征提取器的每个卷积块中插入一个残差适配器。优化后的流只通过适配器传播,更新最明显的位置,同时保持旧的特征:

f e n ( Q ; θ e n ) = F transform  ( f e n − 1 ( Q ; θ e n − 1 ) ) = f e n − 1 ( Q ; θ ^ e n − 1 ⊕ Δ θ e n ) \begin{aligned} f_{e}^{n}\left(Q ; \theta_{e}^{n}\right)=F_{\text {transform }} &\left(f_{e}^{n-1}\left(Q ; \theta_{e}^{n-1}\right)\right) \\ &=f_{e}^{n-1}\left(Q ; \hat{\theta}_{e}^{n-1} \oplus \Delta \theta_{e}^{n}\right) \end{aligned} fen(Q;θen)=Ftransform (fen1(Q;θen1))=fen1(Q;θ^en1Δθen)

其中 ^ \hat{} ^ 表示固定参数, ⊕ \oplus 表示结构扩展操作。

训练结束后,我们使用结构重参数化将侧分支信息无损地集成到主分支中,确保在每个阶段结束时网络参数的数量不会增加。

具体来说,通过零填充操作和线性变换,将剩余结构中的参数与原始卷积核和 BatchNorm 的参数进行融合,最后去掉适配器,保持网络结构不变,以便下次更新:

f e n − 1 ( Q ; θ ^ e n − 1 . . ⊕ Δ θ e n ) = f e n ( Q ; θ e n ′ ⊕ 0 ) = f e n ( Q ; θ e n ′ ) \begin{aligned} f_{e}^{n-1}(Q ; \hat{\theta}_{e}^{n-1}.&.\oplus \Delta \theta_{e}^{n}) \\ &=f_{e}^{n}(Q ; \theta_{e}^{n \prime} \oplus 0)=f_{e}^{n}(Q ; \theta_{e}^{n \prime}) \end{aligned} fen1(Q;θ^en1..Δθen)=fen(Q;θen0)=fen(Q;θen)

Prototype Selection:

新的特征是基于旧的结构来学习的,而旧的类特征则与主分支蒸馏法保持协调。为了减少蒸馏部分的特征混淆,作者采用了一种基于可扩展嵌入空间的原型选择机制。

一般来说,基于新样本的表示之间的相似性和旧的原型,不同的样品参与残余适配器的更新学习新特性,和类似的样品参与蒸馏保留旧的鉴别特性保持在之前在前面的主要分支阶段。具体来说,在将所有新样本映射到学习到的嵌入空间后,我们计算它们与所有原型之间的归一化余弦分数 S i Si Si

S i = Cosine ⁡ ( N ( r q n ) , N o r (  Prototype  ) ) S i=\operatorname{Cosine}\left(N\left(r_{q}^{n}\right), N o r(\text { Prototype })\right) Si=Cosine(N(rqn),Nor( Prototype ))

N o r N o r Nor 表示归一化操作。然后设置一个阈值,如果大于阈值 σ \sigma σ,则在其蒸馏损失( M a s k k d Mask_{kd} Maskkd)的相应位置添加一个掩码,如果小于阈值,则在其交叉熵损失( M a s k c e Mask_{ce} Maskce)的相应部分添加一个掩码。最后,将原型平衡损失作为新阶段的最终优化函数:

L = Mas ⁡ k c e ( L c e ) + λ M a s k k d ( L k d ) + γ L proto  L=\operatorname{Mas} k_{c e}\left(L_{c e}\right)+\lambda M a s k_{k d}\left(L_{k d}\right)+\gamma L_{\text {proto }} L=Maskce(Lce)+λMaskkd(Lkd)+γLproto 

实验结果:

Dataset and Settings:

作者在三个数据集CIFAR-100、TinyImageNet和ImageNet-Subset上进行了综合实验。

模型使用ResNet-18作为骨干网络,使用Adam优化器,其中初始学习率设置为0.001,衰减率设置为0.0005,该模型在100个epoch后停止训练,批处理大小设置为128。

评估指标采用了平均增量精度和平均遗忘度,并在三次不同的运行中评估了我们的性能。平均增量精度计算为所有增量阶段(包括第一阶段)的平均精度,它公平地比较了不同方法的总体增量性能。平均遗忘是被计算为在整个增量过程中对不同任务的平均遗忘,它直接衡量了不同方法抵抗灾难性遗忘的能力。

Ablation Study:

为了证明该方法的有效性,作者在CIFAR-100上进行了多次消融实验。

该的方案的性能主要归因于两个突出的组成部分:动态结构重组策略(DSR)和主分支蒸馏(MBD)。

为了阐明DSR的功能,作者用结构不变表示代替动态表示,这是大多数CIL方法所采用的。为了阐明MBD的功能,作者将蒸馏过程替换为与连续优化的表示相交互的蒸馏过程。

在这里插入图片描述

Comparison with SOTA:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BIT可达鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值