iCaRL: Incremental Classifier and Representation Learning
三大要求
- 可以对任何时间出现的任何例子进行训练
- 可以在任何时候为迄今观察到的类提供一个分类器
- 计算和内存需要保持在一定的范围内
iCaRL三大组成
- 用最接近平均例子这一规则进行分类
- 基于群的有限示例选择
- 利用知识蒸馏和原型演练进行表征学习
Method
Classification
依靠示例集合P进行分类,每个类都有一个示例集合P,其算法如下:
Train
采用增量学习策略,一次处理成批的类,每当有新数据就调用下图的更新算法:
ARchitecture
iCaRL使用的是卷积神经网络,使用sigmoid函数进行输出。
Nearest-Mean-of-Exemplars Classification
使用了最近平均示例的分类策略,为每个类计算一个原型向量,记为μ,μ是一个类所有示例的平均特征向量,根据μ对新类进行分类
Background
改变了神经网络的分类规则,由sigmoid函数分类改为上述的由最近平均示例进行分类,这种分类方式在类增是无需将所有权重进行更新,只需改变类原型,使分类器对特征变换具有鲁棒性。
Representation Learning
首先iCaRL构造了一个增强的训练集,该训练集由当前可用的训练实例和存储的示范组成,接下来,针对每个例子对当前的网络进行评估,并存储之前所有类别的网络输出结果(不包括新类别,因为网络还没有被训练过)。最后,通过最小化一个损失函数来更新网络参数。
Background
- 训练集被增强了。
- 损失增强了,包括了分类损失,以及蒸馏损失。
Exemplar Management
每个类的示例集中示范的个数是相等的,(或许可以不相等,改变各示例集所占权重,易混淆的类示例集占比例更大?)
示例集管理由两个程序负责
- 为新类选择示范。算法4:选择使得所有示例的平均特征向量最接近所有训练例子的平均特征向量的那个例子。
- 减少以前示范集的大小.算法5为了将示例的数量从任何m'减少到m,只需丢掉m+1到m,保留下1到m
Background
示例管理程序的设计有两个目标:初始示例集应该很好地接近类的平均向量,而且应该可以在算法运行期间在不违反这一特性的任何时候删除示例。
总的来说,iCaRL的示范选择和缩减步骤完全符合增量学习的设定:每个类别只需要一次选择步骤,即当它第一次被观察到并且其训练数据可用时。在以后的时间里,只需要调用还原步骤,它不需要访问任何早期的训练数据。
Related work
Learning with a Fixed Data Representation
设计一个分类器架构:
NCM(最近类均值)分类器架构,将每个类表示为一个原型向量,该原型向量是迄今为止观察到的该类别的所有样例的平均特征向量。
一个新的样例的分类方法是将原型与该样例的特征向量最相似的类别标签分配给它,而这个指标也可以从数据中学习。
在iCaRL中选择一个特别的子集进行NCM计算,这样可以保持一个较小的内存占用。
Representation Learning
在iCaRL中采用了复述的原则,为了更新学习表征的模型参数,我们不仅使用当前可用的类的训练数据,而且还使用早期类的示范。
在iCaRL中对不同时间点之间的神经网络进行蒸馏,防止信息随时间推移而发生恶化。
Experiment
Benchmark Protocol
对于一个给定的多类分类数据集,各类以固定的随机顺序排列。然后,每个方法在现有的训练数据上以类增量的方式进行训练。在每一批类别之后,在数据集的测试部分数据上对所产生的分类器进行评估,只考虑那些已经训练过的类别。评估的结果是每一批类的分类准确率的曲线。
通过两个数据对模型进行了评估:
- iCIFAR-100基准: 我们使用CIFAR-100数据,每次以2、5、10、20或50个类别的批次训练所有100个类别。评价指标是测试集上的标准多类准确性。由于数据集的规模可控,我们用不同的类顺序运行该基准十次,并报告结果的平均数和标准
- iILSVRC基准:我们使用ImageNet ILSVRC 2012数据集,有两种设置:只使用100个类的子集,以10个批次进行训练(iILSVRC-small)或使用所有1000个类,以100个批次处理(iILSVRC-full)。评估指标是数据集中价值部分的top-5准确率。
iCaRL Implementation
- 对于iCIFAR-100,使用theano训练一个32层的resnet。
- 对于iILSVRC,使用tensorflow训练一个18层的resnet
Results
将iCaRL与finetuning学习、LwFMC学习方法进行了比较,可以看出iCaRL明显的优于其他的方法。
通过显示不同学习方法生成的混淆矩阵。
iCaRL的混淆矩阵在所有类别上看起来都是同质的,无论是对角线条目(即正确的预测),还是非对角线条目(即错误)。这表明,iCaRL在学习过程中对早期或后期遇到的类没有内在的偏见。特别是,它不会受到灾难性遗忘的影响。
Differential Analysis
iCaRL通过三个方面有所不同:通过使用平均示例分类规则,在表征学习中使用示例,以及使用蒸馏损失。较之微调的训练更有优势。
通过对这三个方面分别缺失进行了一个对比实验。
hybrid1:与iCaRL相同方式学习表征,不使用平均示例分类器。
hybrid2:使用示例进行分类,不使用蒸馏损失
hybrid3:既不使用蒸馏损失,也不使用示范,在表征学习中使用示范
Conclusion
iCaRL,这是一种用于类增量学习的策略,它同时学习分类器和特征表示。1)一个对数据表示的变化具有鲁棒性的最近平均分类器,同时每个类只需要存储少量的样本;2)一个基于群(herding)的步骤,用于优先选择样本;3)一个表征学习步骤,使用样本与蒸馏相结合,以避免灾难性的遗忘。
其代码主要流程图: