《Learning without Forgetting》
一、介绍
这篇文章的论文版本发表于ECCV2016,会议版本发表于TPAMI2017,本文是针对会议版本进行展开。
本文关注的问题是我们现在有一个训练好的网络,现在遇到了一些新的类别和样本,如何在不接触原有类别的数据的情况下,训练出一个新的网络,它在旧的类别和新的类别上都能有比较好的性能。这个问题其实也被称为“增量学习”(incremental learning)。
二、 相关方法
本文阐述了解决该类问题的几种方法:
(记、和分别为特征提取层、旧任务的分类器参数和新任务的分类器参数, 旧任务指刚开始网络接触到的数据任务,新任务指后来遇到的数据任务)
Feature Extraction:固定和,只训练
Fine-tuning:固定,训练和
Fine-tuning FC:固定,训练和,但是不是训练的所有参数,只训练的部分参数,如最后的FC层
Duplicating and fine- tuning:利用新任务的数据训练和,相当于旧任务和新任务有两个独立的子网络
Joint Training:训练、和
相关方法的可视化说明:
相关方法的属性对比:
三、本文方法
对于一个新模型来说,新模型包含了两个分类器和,本文通过知识蒸馏的方法让新数据在新模型的响应尽可能地保留旧模型的响应,具体是说:
首先,对于一张新数据的输入图片,提取其在旧模型上最后一层的响应,即对于每一类上的置信度(注意:因为旧模型只涉及到旧数据的类别,该置信度只包含旧数据类别)
然后,新的模型包含了两个分类器和,本文定义了两个loss
, 其中分别表示输入图片的gt和模型的预测置信度
,其中分别表示在旧的标签类别上,输入图片在旧模型和新模型的输出置信度,l表示旧标签类别的数量
第一个loss的作用是使新模型能适应新的数据,第二个loss的作用是使新模型能保留旧模型上的一些信息。在训练过程中,整个网络的所有参数、和都会更新。