IL2M: Class Incremental Learning With Dual Memory
补充一下知识蒸馏
我们从Loss来看,首先这整个网络的Loss包括3个部分:
(1)T网络和真实标签之间的交叉熵
(2)S网络(即这里的A网络)和真实标签之间的交叉熵(上面的硬目标)
(3)知识蒸馏Loss:KL Loss(emmmm…一般情况下我们也可以把他称为交叉熵)言归正传,第三部分也就是T、S网络之间的交叉熵,也就是T网络传授给S网络暗知识(即软目标)
关于知识蒸馏在IL中的应用:
对损失函数进行修改,使其在分类函数的同时包含蒸馏组分被广泛使用[5,8,12,24]。这些方法的灵感来自于不遗忘的学习(LwF)[15],这是一个早期的尝试,利用知识蒸馏[11]作为灾难性遗忘的解药。蒸馏损失减少了初始网络和更新网络中过去类的激活之间的差异。LwF具有不需要旧任务内存的特殊性,这是IL的一个重要优势。但是,与利用有限内存的方法相比,LwF的性能较低。iCaRL[24]是该类中比较有影响的算法。它建立在LwF的分类和蒸馏损失的组合之上,并添加了有限内存和最接近样本均值(NEM)分类器。
文章的主要改进
首先,我们简化了当前基于微调的方法,该方法使用分类和蒸馏损失的组合来弥补过去数据的有限可用性。我们发现,当允许使用内存时,蒸馏术语实际上会影响性能。
然后,我们修改了通常的类IL内存组件。与现有的作品类似,第一个内存存储了过去类的范例图像。这里引入了第二个内存,以存储在最初学习时获得的过去的类统计数据。这里的直觉是,当类的所有数据都可用时,它们最好被建模,并且它们的初始统计数据在不同的增量状态下都是有用的。在推理过程中会出现对新学习的类的预测偏差,因为数据集对它们有利而不平衡。
挑战在于如何让新class和过去class的预测更具可比性。为了做到这一点,通过利用两个内存的内容来纠正过去的课程。在内存和推理复杂性方面,该方法的增加成本可以忽略不计。
灾难性遗忘
基于DNN的IL方法所面临的主要问题是灾难性的遗忘[18],即它们无法在不忘记之前学习过的知识的情况下整合新的数据。同时最小化计算、存储和时间需求是不可行的,现有的方法会在其中的一两个条件下做出妥协。
一系列的研究[1,17,27,29]假设深度架构可以在一定程度上增长,从而集成新的数据。在这个假设下,不需要对过去的记忆。
另一个研究趋势是,[5,8,12,24]假设DNN架构应该是固定的。他们通过增加蒸馏损失来调整DNN的微调过程,并使用过去的有限记忆来限制灾难性遗忘。
IL2M使用了一个固定的DNN体系结构和一个对过去的有限内存。(使用了第二种趋势)
模型架构
有限内存包括K = 4个过去类的图像样本,并在浅蓝色背景上表示。在添加新类以保持内存需求不变时,存储在内存中的类样例类的数量会减少。由于数据集越来越不平衡,IL训练过程越来越容易发生灾难性遗忘。第二个内存S用浅粉色表示,存储最初学习类时获得的统计信息。IL2M使这些类统计数据在不同的增量状态下可用,以纠正过去类的原始预测分数,以便使它们与新类的原始预测分数更具可比性。(最好以彩色观看。)
这三个子图的比较表明,当内存容量较低时,过去类和新类之间的分数差距越高。普通的微调会产生一种有利于新类的预测偏差。这种偏差主要是由于在IL类中出现的新类的不平衡。因此,来自过去类的大部分图像被预测为属于新类(关于错误类型的详细分析,请参见补充材料)。由于有界内存中适合的类数量的增加,每个子图中的间隙也倾向于从左到右增长。
(结合它对于类别增量问题的解释来读这个公式)为了抵消这种对于新类别的倾向,作者提出了公式(1),其中 P P P对应 C i C_i Ci学习到的初始状态, N N N对应当前增量状态, p ( C i ) p(C_i) p(Ci)对应 C i C_i Ci在状态 N N N的原始预测分数, μ P ( C i ) \mu^{P}(C_i) μP(Ci)和 μ N ( C i ) \mu^{N}(C_i) μN(Ci)对应 C i C_i Ci在从所有训练数据和当前样本集分别得到状态 P P P和 N N N的平均分类得分, μ ( M N ) \mu(M_N) μ(MN)和 μ ( M P ) \mu(M_P) μ(MP)分别代表由所有新训练数据的平均预测分数给出的状态 N N N和 P P P下的模型置信度。后面解释过,由于类作为新的类第一次在所有训练图像中被学习时是状态 P P P阶段,其平均预测得分 μ P ( C i ) \mu^{P}(C_i) μP(Ci)可能高于 μ N ( C i ) \mu^{N}(C_i) μN(Ci),因此与 p ( C i ) p(C_i) p(Ci)相比,这一项通常会增加 p r ( C i ) p^r(C_i) pr(Ci)。
只有当一个图像最初被预测为属于一个新的类时,校正才应用于过去的类预测。就有利于新类的不平衡驱动的错误而言,这种情况是风险最大的。否则,我们认为修正是不必要的,因为过去的类是直接预测的,并且对新的类没有预测偏差。