【论文阅读笔记】iCaRL: Incremental Classifier and Representation Learning

发布时间 2023-04-11 20:09:15作者: 空口吃大蒜
Author: Alexander Kolesnikov
Key_words: nearest-mean-of-exemplar rule, prioritized exampler selection,representation learning
Create_time: September 11, 2021 3:06 PM
Edited_by: Huang Yujun
Publisher: CVPR 2017
Score /5: ⭐️⭐️
Status: Finished

iCaRL: Incremental Classifier and Representation Learning

1. 背景

本文提出的符合增量学习算法的三条基本属性(as class-incremental):

  • 能学习不同时间到达的新类别数据
  • 能够对所有现有的类别数据,训练出一个有效的多类分类器
  • 对计算存储资源的消耗有一个上限(时空复杂度有上界),或增长得比较慢

目前(2017年前)没有一种方法能够满足这三个条件

2. 本文提出的方法

为了满足上述提到的三个基本属性,本文提出的方法 iCaRL(Incremental Classifier and Representation Learning)的创新点主要有三个:

  • classification by a nearest-mean-of-exemplars rule
  • prioritized exemplar selection based on herding
  • representation learning using knowledge distillation and prototype rehearsal

下面介绍这三个模块的细节

2.1 增量分类器的学习模块(class-incremental classifier learning)

主要有几个要点:

  • 模型需要确保保存的采样数据量有个上限K。每增加新类的时候,会修改各个旧类别数据在存储容器中的占比
  • 模型结构。模型的特征提取器在增加新类的时候结构不改变,但会在分类器中动态的增加输出层的神经元个数。(即分类器只有一个,并非像LWF那样多头)
iCaRL (1)

2.2 样本最近-均值分类模块(nearest-mean-of-exemplars classification)

本文提出的模型会如何进行分类(推断or预测)呢?

首先,会计算当前已知所有各个类别数据的对应的平均特征向量。例如有一个类别a在样本容器中的数据量为n,那么类别a的平均特征向量为,所有a类样本特征向量求和除以n;

然后,计算需要推断数据的特征向量与各个类别平均特征向量的距离,以距离最小对应的类别为预测类别。

iCaRL (2)

2.3 表征学习模块(representation learning)

表征学习模块主要功能是更新特征提取器(即卷积层),需要使用到新类数据以及存储的旧类样本数据。它是怎么更新的呢?其步骤如下:

a) 对新类数据及存储的旧类数据进行数据增广

b) 将增广后的所有数据输入网络,得到数据在旧模型中的特征向量,并存储下来

c) 最后训练更新网络参数,最小化损失函数。对于新类数据而言,会通过训练使网络倾向于得到正确的新类别分类标签;对于旧类数据而言,将生成保存在上一步存储空间中的蒸馏损失

iCaRL (3)

此处有点像 fine-tune ,但不同之处在于本文的网络会输入新旧类数据,在新类数据训练使网络能够正确分类新类别的同时,也能够不丢失旧类的部分知识。

注意旧类容器中保存的旧类的照片数据,而非其特征向量,因为此时特征提取器参数在不断的更新

2.4 采样器管理(examplar management)

采样器需要思考该保存哪些旧样本的数据?(该存哪些,该丢掉哪些)每一类该保存多少?

iCaRL 的采样器对于每一类该保存多少数据的问题,按照平均来分配,即 每一类的容量m=容器总容量/当前已知类别个数。容器一般都会存储满(不多不少),各类别中的样本有存储优先次序。

对于该保存哪些数据的问题,iCaRL 的样本管理可以分为两部分:取样器 和 剔除器

取样器将计算同一个类别中(指在存储容器中的数据),当前样本特征向量与样本平均特征向量的距离(其实讲不太准确),对距离从小到大排序,将距离最小的前m个确定为需要存储的

iCaRL (4)

剔除器,将剔除前m个样本后面的数据

iCaRL (5)

本文实现的采样器实际上仅在当前类别第一次到达时,即作为新类时,会调用取样器,之后不会再调用。此后,仅会调用剔除器去根据类别允许容量剔除样本。

3. 实验结果

iCaRL (6)
iCaRL (7)
iCaRL (8)
iCaRL (9)

4. 个人思考

我觉得本文的核心创新点是引入了旧类数据采样回放的机制,使得网络中旧类的关键权重能够在一定程度上得以保留。

同时本文的方法缺点也是很明显的,即由于存储空间大小固定为K,其他类别能够存储数据的数量仅为 K/n 不能动态变化,因此当n趋向于一个很大的数时,每个类能够存储的回放样本数据将变得非常小,会严重影响模型的分类性能,因此只适用于已知新类上限的情况下。

缺陷:出现新类-旧类之间样本不均衡的问题,使得模型偏向于预测未知类别为新类

参考链接

https://zhuanlan.zhihu.com/p/337287727