当前位置:网站首页>深度学习(增量学习)——(ICCV)Striking a Balance between Stability and Plasticity for Class-Incremental Learning
深度学习(增量学习)——(ICCV)Striking a Balance between Stability and Plasticity for Class-Incremental Learning
2022-07-28 05:22:00 【菜到怀疑人生】
前言
这篇文章发表于ICCV2021,是一篇结合自监督做增量学习的文章,该论文研究的问题为class Incremental
本文将总结论文提出的方法,并对实验部分做个简单分析,最后讲讲我对这篇文章的看法
Method
本文一共有三种方法,分别为SPB、SPB-I、SPB-M,本文将依次介绍三者
SPB
SPB就是UCIR的变种,当task T的训练数据到来时,作者利用特征提取器提取task T训练数据的embedding,对embedding进行normalization(应该是L2归一化),归一化后同一类的embedding取平均值得到class prototype,利用class prototype初始化分类器(单层FC层)的对应权重,举个例子,分类器(单层FC层)可以看成是一个矩阵 C ∗ D C*D C∗D的矩阵, D D D为特征提取器的输出维度, C C C为类别数,当新的 N N N个类别到来时,矩阵大小扩充为 ( C + N ) ∗ D (C+N)*D (C+N)∗D,多出的 N N N行就用上述方式进行初始化。
设特征提取器对第 i i i张图片的输出为 f ( x i ) f(x_i) f(xi),L2归一化后为 f ( x i ) ‾ \overline{f(x_i)} f(xi),分类器中第 c c c类对应的权重为 w c w_c wc(即上述例子中矩阵的第 c c c行),L2归一化为 w c ‾ \overline {w_c} wc,则分类器第 c c c类的输出为
P c ( x i ) = exp ( λ f ( x i ) ‾ T w c ‾ ) ∑ j exp ( λ f ( x i ) ‾ T w j ‾ ) ) (1.0) P_c(x_i)=\frac{\exp(\lambda \overline{f(x_i)}^T \ \overline{w_c})}{\sum_j \exp(\lambda \overline{f(x_i)}^T \ \overline{w_j}))}\tag{1.0} Pc(xi)=∑jexp(λf(xi)T wj))exp(λf(xi)T wc)(1.0)
其中 λ \lambda λ为超参数。该论文通过特征层面进行知识蒸馏,从而防止遗忘。针对图像 x i x_i xi,旧特征提取器的输出L2归一化后为 f o ( x i ) ‾ \overline{f^o(x_i)} fo(xi),新特征提取器的输出L2归一化后为 f n ( x i ) ‾ \overline{f^n(x_i)} fn(xi),则知识蒸馏loss为
L e m = ∣ ∣ f n ( x i ) ‾ − f o ( x i ) ‾ ∣ ∣ 2 (2.0) L_{em}=||\overline{f^n(x_i)}-\overline{f^o(x_i)}||^2\tag{2.0} Lem=∣∣fn(xi)−fo(xi)∣∣2(2.0)
设交叉熵损失函数为 L c e L_{ce} Lce,旧类别个数为 N o c N_{oc} Noc,新类别个数为 N n c N_{nc} Nnc,则SPB的总体loss为
L = N n c N o c L c e + N o c N n c L e m (3.0) L=\frac{N_{nc}}{N_{oc}}L_{ce}+\frac{N_{oc}}{N_{nc}}L_{em}\tag{3.0} L=NocNncLce+NncNocLem(3.0)
随着学习类别数的增多, L e m L_{em} Lem的权重会越来越大,从而防止遗忘。
SPB并没有提出什么新东西
SPB-I
SPB-I在SPB的基础上引入了自监督,通过自监督编码一些冗余特征,这些冗余特征可能可以用于构建新任务,SPB-I引入了两类自监督任务,一类是对比学习,一类是旋转预测,这两类任务其实都是在构建更为鲁棒的特征空间,并没有解决灾难性遗忘的问题。
对比学习
给定一张图像,作者对其施加 N N N次数据增强,数据增强前后的图像构成正例对,不同图像之间构成负例对,特征提取器的输出会经过一个双层FC层(记为 δ \delta δ),则对比学习loss为
L i n = ∑ i exp ( λ δ ( f ( x i ) ) ‾ T δ ( f ( x i ′ ) ) ‾ / T ) ∑ x j ∈ { x n g , x i ′ } exp ( λ δ ( f ( x j ) ) ‾ T δ ( f ( x i ) ) ‾ / T ) (4.0) L_{in}=\sum_{i}\frac{\exp(\lambda \overline{\delta(f(x_i))}^T \ \overline{\delta(f(x^{'}_i))}/T)}{\sum_{x_j \in{\{x^{ng},x'_i\}}} \exp(\lambda \overline{\delta(f(x_j))}^T \ \overline{\delta(f(x_i))}/T)}\tag{4.0} Lin=i∑∑xj∈{ xng,xi′}exp(λδ(f(xj))T δ(f(xi))/T)exp(λδ(f(xi))T δ(f(xi′))/T)(4.0)
x n g x^{ng} xng表示图像 x i x_i xi的负例集合, x i ′ x^{'}_i xi′是 x i x_i xi数据增强的结果。
旋转预测
一张图像经过一定旋转后,输入到特征提取器,特征提取器的输出(没有经过全局池化)经过两个residual BasicBlocks以及cosine classifier处理,图像旋转的角度一共有 { 0 。 、 9 0 。 、 18 0 。 、 27 0 。 } \{0^。、90^。、180^。、270^。\} { 0。、90。、180。、270。}四种,模型需要预测图像旋转的角度,即进行四分类。默认情况下,SPB-I使用该监督任务。
SPB-M
SPB-M是SPB的改版(不是SPB—I),图像在输入模型前会进行旋转,旋转角度共有 γ \gamma γ种,每种旋转角度都有对应的分类器,旋转90度和270度的分类器是不同的,意味着一共有 γ \gamma γ个分类器,这 γ \gamma γ个分类器分别进行分类预测,对应的损失函数为
L m p = 1 γ ∑ b = 1 γ L c e b (5.0) L_{mp}=\frac{1}{\gamma}\sum_{b=1}^\gamma L_{ce}^b\tag{5.0} Lmp=γ1b=1∑γLceb(5.0)
L e m L_{em} Lem为前文提到的知识蒸馏函数,总的损失函数为
L = N n c N o c L m p + N o c N n c L e m (6.0) L=\frac{N_{nc}}{N_{oc}}L_{mp}+\frac{N_{oc}}{N_{nc}}L_{em}\tag{6.0} L=NocNncLmp+NncNocLem(6.0)
实验
该论文基于data free,不会存储旧数据,与其他method在CIFAR100和imagenet-subset上的结果如下:
在初始阶段,论文提出的方法比所有的baseline都要高出4%~8%,一般而言,初始阶段有1%~2%的浮动是正常的,这篇文章的初始浮动这么大,足以说明实验存在问题,但貌似审稿人没有发现这个致命问题。
由于用到了额外的数据增强,模型的性能提升可能来源于数据增强,作者也注意到了这点,因此做了如下消融实验
依据第一大格,作者验证了单独使用自监督的数据增强并不能提升模型性能,证明了性能提升主要来源于自监督
思考
本文的实验部分存在一些问题,和《深度学习(增量学习)——ICCV2022:Contrastive Continual Learning》不同,这篇论文并没有实验指出自监督在增量学习中扮演的角色,有一股很浓的A+B论文的味道,这不是很合本人的胃口,但总体上的确显示出自监督有助于构建更为鲁棒的特征空间。
边栏推荐
- Pytorch deep learning single card training and multi card training
- Two methods of covering duplicate records in tables in MySQL
- XShell突然间无法连接虚拟机
- 微信小程序开发语言一般有哪些?
- 【5】 Redis master-slave synchronization and redis sentinel (sentinel)
- Single line function, aggregate function after class exercise
- Spark中的Structured Streaming
- Distributed cluster architecture scenario optimization solution: session sharing problem
- 1: Why should databases be divided into databases and tables
- 微信小程序开发制作注意这几个重点方面
猜你喜欢

小程序开发

使用神经网络实现对天气的预测

【7】 Consistency between redis cache and database data

微信小程序开发制作注意这几个重点方面

小程序开发系统有哪些优点?为什么要选择它?

微信上的小程序店铺怎么做?

On July 7, the national wind 24 solar terms "Xiaoshu" came!! Attachment.. cooperation.. completion.. advance.. report

分布式集群架构场景化解决方案:集群时钟同步问题

Micro service architecture cognition and service governance Eureka

2: Why read write separation
随机推荐
Regular verification rules of wechat applet mobile number
微信小程序开发制作注意这几个重点方面
Distributed lock redis implementation
【4】 Redis persistence (RDB and AOF)
小程序商城制作一个需要多少钱?一般包括哪些费用?
How to use Bert
【5】 Redis master-slave synchronization and redis sentinel (sentinel)
强化学习——不完全观测问题、MCTS
Ssh/scp breakpoint resume Rsync
word2vec+回归模型实现分类任务
面试官:让你设计一套图片加载框架,你会怎么设计?
【一】redis简介
字节Android岗4轮面试,收到 50k*18 Offer,裁员风口下成功破局
Sqlalchemy usage related
Svn incoming content cannot be updated, and submission error: svn: e155015: aborting commit: XXX remains in conflict
Kotlin语言现在怎么不火了?你怎么看?
On how digital collections and entities can empower each other
小程序开发如何提高效率?
svn incoming内容无法更新下来,且提交报错:svn: E155015: Aborting commit: XXX remains in conflict
分布式集群架构场景优化解决方案:Session共享问题