我将看过的增量学习论文建了一个github库,方便各位阅读,地址
在大型数据集上,现有的增量学习方法的准确率都不高,归结于两个原因
论文发现类别不平衡会导致全连接层分类器出现分类偏好,由此在全连接层后引入一个偏置纠正层,来尽可能抵消偏好现象,该方法称为BiC算法,在ImageNet100与ImageNet1000上的表现惊人。
数据分为旧类别数据与新类别数据,旧类别数据远少于新类别数据,旧类别数据分为两部分 t r a i n o l d 、 v a l o l d train_{old}、val_{old} trainold、valold,新类别数据也分为两部分 t r a i n n e w 、 v a l n e w train_{new}、val_{new} trainnew、valnew
总体分为两个阶段
阶段一:使用 t r a i n o l d 、 t r a i n n e w train_{old}、train_{new} trainold、trainnew训练CNN模型
阶段二:使用 v a l o l d 、 v a l n e w val_{old}、val_{new} valold、valnew训练偏置纠正层
按国际惯例,这部分会介绍训练CNN模型的loss函数,还是一如既往的知识蒸馏loss,配方没变
首先是训练数据的整合,用 X n ^ \hat{X^n} Xn^表示 e x a m p l a r examplar examplar中的 n n n类旧类别数据集合, X m X^m Xm表示 m m m类新类别的数据集合
o n + m ( x ) o^{n+m}(x) on+m(x)与 o ^ n ( x ) \hat o^{n}(x) o^n(x)函数表示新旧模型的输出,按国际惯例,classification loss采用交叉熵,如下:
都是按照国际惯例使用的loss函数,在此不多做介绍,需注意,新类别数据的旧类别输出也会用于distillation loss的计算
最终的loss函数如下:
λ = n n + m = 1 1 + m n \lambda=\frac{n}{n+m}=\frac{1}{1+\frac{m}{n}} λ=n+mn=1+nm1,n表示旧类别数目,m表示新类别数目,随着增量学习步骤的增加(m固定,n增加), λ \lambda λ的值逐渐变大,模型越来越倾向于保留已有知识
增量学习中,类别不平衡问题明显,会使分类器偏向于数据多的类别
数据集:CIFAR-100
模型:使用上述loss训练的CNN模型
训练方式:利用examplar+20类新类别数据构成训练数据,实现增量学习
实验一
训练的模型准确率下降趋势明显,并且在最后一次增量学习后,从模型的混淆矩阵可以看出模型偏向于预测最后一次学习的20类,如下:
实验二
在实验一的基础上,冻结特征提取器,用旧类别(不是examplar)与新类别的所有数据训练模型,即对全连接层分类器进行训练,与实验一相比,准确率得到提升。
结论
本节实验的准确率结果如下图:
实验一的分类器使用类别不平衡的数据训练,实验二的分类器使用类别平衡的数据进行训练,实验一二模型的不同之处在于分类器。
实验一的模型出现分类偏好,实验二的模型准确率大幅提升,加之实验一的混淆矩阵,足以说明使用distillation loss训练的模型仍然会出现分类偏好,出现分类偏好的原因在于分类器
比较有趣的是,为什么实验二的模型准确率比不上“Train all layers using all data”的模型?也许是特征提取器的差异,即使用全部数据训练的特征提取器能提取更具有分类意义的特征
基于上述分析,为了矫正全连接层分类器的分类偏好,论文引入了偏置纠正层,其实就是一个线性回归层,该层的输出如下:
由于分类器偏向于新类别,即新类别的输出普遍比旧类别要大,因此,偏置纠正层主要对新类别分支输出进行矫正,所以对新类别分支引入了 α 、 β \alpha、\beta α、β两个可学习参数。
由于线性回归只有两个参数,训练速度快,并且最终效果不错,因此论文选用线性回归作为偏置矫正层
在阶段二,全连接层分类器以及特征提取器的参数被冻结,用 v a l o l d 、 v a l n e w val_{old}、val_{new} valold、valnew训练上述线性回归模型,按国际惯例,采用的loss函数为极大似然估计推出的交叉熵:
数据集:CIFAR-100、ImageNet-1000、Celeb-10000
baseline:EEIL、iCaRL、LwF
其他:运用了数据增强
在大型数据集上的实验
论文题目是Large Scale,因此论文主要关注BiC在大型数据集上的表现,在ImageNet-1000与Celeb-10000上的表现如下:
表现非常的亮眼,比baseline多出十多个百分点
不同规模数据集下的比较
可看出BiC更适合大规模数据集下的增量学习(点题)
在小规模数据集CIFAR100上的比较
在小规模数据集上的表现不尽人意,提升并不明显,但是仍然具有一定的竞争力,这也说明BiC更适合大规模数据集下的增量学习(点题)
论文首先比对了BiC各部分对于准确率提升的作用,在CIFAR100上的结果如下: