[论文阅读] Learning without Memorizing

论文地址:https://link.springer.com/chapter/10.1007/978-3-319-46493-0_37
代码:https://github.com/stony-hub/learning_without_memorizing
发表于:CVPR 19

Abstract

增量学习(IL)是一项重要的任务,旨在提高训练过的模型的能力,即模型可识别的类的数量。这项任务的关键问题是需要存储与现有类别相关的数据(如图像),同时指导分类器学习新的类别。然而,这是不切实际的,因为它在每一个递增的步骤中都会增加存储需求,这使得IL算法无法在内存有限的边缘设备上实施。因此,我们提出了一种新的方法,称为"无记忆学习(Learning without Memorizing, LwM)",以保留现有(基础)类的信息,而不存储它们的任何数据,同时使分类器逐步学习新类。在LwM中,我们提出了一种保存信息的惩罚:注意力蒸馏损失( L A D L_ AD LAD)。我们还证明了由于新的类被加入,对分类器注意力图的变化进行惩罚有助于保留基础类的信息。我们表明,在iILSVRC-small和iCIFAR-100数据集中,将 L A D L_ AD LAD加入到蒸馏损失中,这是一种现有的信息保留损失,在基础类和增量学习类的整体准确性方面,一直优于最先进的性能。

Method

本文的亮点在于不依赖示例集的同时也能取得不错的性能。不过需要注意的是,文中所称的超过SOTA只是超过了iCaRL这种基于示例集的baseline(当然,当时确实针对类增量学习的研究也不多)。关于动机,本文从注意力图的角度出发,指出随着新类的加入,旧类预测的注意力图会发生偏移,从而导致性能的下降:
在这里插入图片描述
而有意思的一点是,传统的蒸馏损失并不能捕捉到这一注意力图偏移的过程。为此,本文设计了一个注意力蒸馏损失来解决这一问题。

基本的类增量学习框架如下所示:
在这里插入图片描述
可以看到,本文不仅仅是使用了蒸馏损失,而是直接把知识蒸馏的框架给搬了过来(Teacher-Student Network)。那么为什么要把这玩意搬过来呢?既然我们是要去让注意力图不去变化,首先面对的第一个问题就是拿什么去作为ground truth来监督。在这里,显然ground truth就是上一轮类增量流程中网络生成的注意力图,我们只需要设计一个损失去约束前后两轮的注意力图相近即可。可以发现,这一过程是得去同时维护新旧两轮的两个网络的,为此就引入了知识蒸馏的设计。

至于具体的损失,其实就是一个改进的L1 Loss: L A D = ∑ j = 1 l ∥ Q t − 1 , j I n , b ∥ Q t − 1 I n , b ∥ 2 − Q t , j I n , b ∥ Q t I n , b ∥ 2 ∥ 1 L_{A D}=\sum_{j=1}^{l}\left\|\frac{Q_{t-1, j}^{I_{n}, b}}{\left\|Q_{t-1}^{I_{n}, b}\right\|_{2}}-\frac{Q_{t, j}^{I_{n}, b}}{\left\|Q_{t}^{I_{n}, b}\right\|_{2}}\right\|_{1} LAD=j=1lQt1In,b2Qt1,jIn,bQtIn,b2Qt,jIn,b1

猜你喜欢

转载自blog.csdn.net/qq_40714949/article/details/123692802