核心思想
本文提出一种用于解决小样本类别增量学习(few-shot class-incremental learning, FSCIL)的算法(TOPIC)。首先解释一下什么是小样本类别增量学习,模型首先在一个大规模的基础数据集上进行训练,然后会不断增加新的数据集,且数据集中的类别与基础数据集中的不同,样本数量也较少,在学习新的样本过程中,还不能忘记之前学习过的样本。这一过程面临两个难题:灾难性遗忘和新的数据产生过拟合问题。为了解决这两个核心难题,本文利用神经气体网络(neural gas network,NG),通过网络的拓扑结构来反映样本的特征向量之间的关系,一方面通过稳定NG在上一个阶段学习到的子图来保留之前的知识,另一方面通过增强学习到的特征的区分能力来解决过拟合问题。
然后我们简要介绍一下NG网络的学习过程,NG网络与图神经网络非常类似,是由一个无向图模型构成的,每一个结点都带有一个质心向量用来描述结点在特征空间中的位置,而边的集合就储存了相邻节点之间的关系,如果结点和结点之间是拓扑邻接的,则,否则为0。每个边还带有一个年龄参数,其初始化为0。给定一个输入,那么他就会根据距离分配给最近的结点。
为了满足FSCIL问题的需要,本文对NG网络做了一些改进。首先每个结点处除了带有质心向量之外,还带有三个参数,分别为:是一个的对角矩阵,用于储存每一维度的方差,表示结点对应的图像,表示结点对应的类别标签。在基础数据集上训练时,给定一个输入,分别计算其与每个结点之间的距离,并储存在中,然后将距离按照由小到大升序排序得到,并按照下式对所有节点的质心向量进行更新
式中表示学习率,表示衰减函数。由上式可知与距离越远的结点,则受到的影响就越小。接下来更新所有与(与距离最近的结点)相连的边的参数
最后更新结点的其他参数,和会从中选择特征向量与最接近的图像和标签,会根据该特征向量估计得到(因为每次所有结点的都会更新,因此其他参数也会随之发生变化)。在增量学习的阶段,也就是在新的数据集上学习时,为每个新的类别都插入新的结点,然后按照上面的介绍更新结点和边的参数。
最后,我们介绍一下作者时如何解决前面提到的灾难性遗忘和新样本过拟合问题的。针对灾难性遗忘问题,本文通过增强拓扑结构稳定性的方式实现。给定一个NG网络,从中提取子图,该子图中的所有节点都来自于旧的数据集,在进行微调训练时,为了稳定避免遗忘旧的知识,本文通过约束新的向量观察值尽可能地靠近之前的质心向量,来减少结点在特征空间中的位置的变动。实现的方式,就是增加一个anchor loss(AL)损失项,计算过程如下
式中用表示参数更新的competitive Hebbian learning过程,我认为是不太合适的,根据上下文内容来看,应该是指的特征提取过程。
如上图(a)中所示的是未经更新的NG网络,如果按照原有方式进行更新,则如图(b)所示,结点位置变化较大,原有的拓扑结构被破坏;增加了AL惩罚项后,更新结果如图©所示,拓扑结构保持稳定,结点位置变化较小。
针对新样本过拟合的问题,本文通过增强学习特征的区分能力来解决。对于新的样本学习得到的特征向量,我们希望其对应结点的标签为,且距离,也就是新的特征向量与正确的类别结点距离越近越好,与其他类别结点的距离越远越好。为了实现这一目的作者增加了min-max loss(MML)损失项,计算过程如下
式中表示一个距离阈值,如果两个节点之间的距离超过他,则认为二者之间的距离足够远了,不需要额外的惩罚,否则则会有相应的惩罚。
如上图(d)中所示,新样本对应的特征向量原本应该属于结点,但由于其与结点更近,因此被误分配给结点;如图(e)所示,如果采用了MML损失后,将特征向量向结点靠拢,并且拉开结点与结点和之间的距离;经过更新后,特征向量正确的分配给了结点,且与之间的边由于年龄太大而取消了。
实现过程
损失函数
损失函数共包含三项:分类损失,AL损失和MML损失,计算过程如下
创新点
- 本文提出一种小样本类别增量学习(FSCIL)问题,其更加贴合实际应用情况但难度也更高
- 利用NG网络通过增加AL损失和MML损失项解决了FSCIL中的灾难性遗忘和新样本过拟合的问题
算法评价
本文首先是提出了一种更接近实际应用需求的且难度更高的小样本类别增量学习(FSCIL)问题,这类问题在实际场景中非常常见,因此解决该问题是非常有价值的。接着作者采用了NG网络来解决该问题,我之前并没有了解过NG网络的情况,现有的资料也比较少,但看起来与图神经网络非常类似,都是用结点表示类别,用距离表示相似程度,用边表示结点之间的邻接关系。最后作者通过引入两种惩罚项的方式解决了灾难性遗忘问题和新样本过拟合问题,相对于普通的增量式学习算法取得了更好的效果。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。