[论文翻译] iCaRL: Incremental Classifier and Representation Learning

iCaRL: Incremental Classifier and Representation Learning

Abstract

人工智能道路上的一个主要的开放性问题是开发渐进式学习系统,随着时间的推移从数据流中学习越来越多的概念。在这项工作中,我们介绍了一种新的训练策略,即iCaRL,它允许以这种类增量的方式进行学习:只有少数类的训练数据必须同时存在,而新的类可以逐步增加。iCaRL同时学习强分类器和数据表示法。这使它区别于早期的工作,这些工作从根本上受限于固定的数据表示,因此与深度学习架构不兼容。我们通过对CIFAR-100和ImageNet ILSVRC 2012数据的实验表明,iCaRL可以在很长一段时间内逐步学习许多类别,而其他策略很快就会失败。

I. Introduction

自然界的视觉系统本质上是增量的:新的视觉信息被不断地纳入,同时现有的知识被保留下来。例如,一个孩子在参观动物园时,会了解到许多新的动物,而不会忘记家里的宠物。相比之下,大多数人工物体识别系统只能在批量设置中进行训练,所有的物体类别都是事先知道的,它们的训练数据可以在同一时间以任意的顺序被访问。

随着计算机视觉领域向人工智能的发展,显然需要更灵活的策略来处理现实世界物体分类情况的大规模和动态特性。至少,一个视觉对象分类系统应该能够在有训练数据的情况下,逐步学习新的类别。我们称这种情况为类增量学习。

在这里插入图片描述
图1. 类增量学习:一个算法从出现新类的连续数据流中不断学习。在任何时候,学习者都能够对迄今为止观察到的所有类别进行多类分类。

从形式上看,我们要求一个算法具有以下三个特性,以符合类增量的要求:

  • 1)它应该可以从在不同时间出现的不同类的例子的数据流中进行训练(it should be trainable from a stream of data in which examples of different classes occur at different times)
  • 2)它应该在任何时候为迄今观察到的类提供一个有竞争力的多类分类器(it should at any time provide a competitive multi-class
    classifier for the classes observed so far)
  • 3)它的计算要求和内存占用应该保持在一定范围内,或者至少在目前看到的类的数量上增长非常缓慢(its computational requirements and memory footprint should remain bounded, or at least grow very slowly, with respect to the number of classes seen so far)

前两个标准表达了类增量学习的本质。第三条标准防止了一些琐碎的算法,如存储所有的训练实例,并在有新数据时重新训练一个普通的多类分类器。

有趣的是,尽管图像分类在过去几十年中取得了巨大的进步,但现在还没有一个令人满意的类增量学习算法。大多数现有技术违反了1)或2),因为它们只能处理固定数量的类和/或需要所有的训练数据在同一时间可用。直观地说,人们可以尝试通过从类增量的数据流中训练分类器来克服这个问题,例如使用随机梯度下降优化。然而,这将导致分类精度迅速恶化,这种效应在文献中被称为灾难性遗忘或灾难性干扰。为数不多的符合上述特性的现有技术主要限于有固定数据表示的情况。它们不能扩展到同时学习分类器和特征表征的深度架构,因此在分类精度方面不再具有竞争力。更多相关工作将在第3章讨论。

在这项工作中,我们提出了iCaRL(incremental classifier and representation learning),这是一种在类增量设置中同时学习分类器和特征表示的实用策略。基于对现有方法缺陷的仔细分析,我们引入了三个主要的组成部分,它们的结合使得iCaRL能够满足上述的所有标准。这三个组成部分是:

  • 用最接近平均的例子这一规则进行分类(classification by a nearest-mean-of-exemplars rule)
  • 基于群的优先示例选择(prioritized exemplar selection based on herding)
  • 利用知识蒸馏和原型演练进行表征学习(representation learning using knowledge distillation and prototype rehearsal)

我们在第2章中解释了这些步骤的细节,随后在第3章中把它们与以前的工作联系起来。在第4章中,我们报告了在CIFAR和ImageNet数据集上的实验,这些实验表明,iCaRL能够在很长一段时间内进行增量学习,而其他方法则很快失败。最后,我们在第5章中对剩余的局限性和未来的工作进行了讨论。

II. Method

在这一章中,我们描述了iCaRL的主要组成部分,并解释了它们的组合如何实现真正的类增量学习。第2.A节解释了底层架构,并对训练和分类步骤做了高层次的概述。然后,第2.B至2.D节提供了算法的细节,并解释了设计的选择。

A. Class-Incremental Classifier Learning

iCaRL同时从类增量形式的数据流中学习分类器和特征表示,即,有样本集 X 1 , X 2 . . . X^1, X^2... X1,X2...,其中集合 X y = { x 1 y , . . . , x n y y } X^y = \{x_1^y,...,x^y_{n_y}\} Xy={ x1y,...,xnyy}中的所有样本都属于类别 y ∈ N y \in \mathbb{N} yN

Classification

对于分类,iCaRL依靠的是一组示例的集合: P 1 , . . . , P t P_1,...,P_t P1,...,Pt,其从数据流中动态选择得到。到目前为止,每个观察到的类别都有一个这样的示例集,iCaRL确保示例图像的总数永远不会超过一个固定的参数K。算法1描述了平均示例分类器,该分类器用于将图像归入到目前为止观察到的类别集合中,详细解释见第2.B节。
在这里插入图片描述

Training

在训练中,iCaRL采用增量学习策略,一次处理成批的类。每当有新类的数据时,iCaRL就会调用一个更新程序(算法2,见第2.C和2.D节)。该程序根据新的观察数据(当前的训练数据)中的额外信息,调整iCaRL的内部知识(网络参数和示例)。这也是iCaRL学习新类别存在的方式。
在这里插入图片描述

Architecture

iCaRL使用的是卷积神经网络(CNN)。我们将该网络定义为一个可训练的特征提取器 φ : X → R d \varphi: \mathcal{X} \rightarrow \mathbb{R}^{d} φ:XRd,然后是一个单分类层,其输出节点的数量与目前观察到的类一样多。所有的特征向量都经过 L 2 − n o r m a l i z e L^2-normalize L2normalize 处理,对特征向量的任何操作结果,例如平均数,也都经过重新归一化处理,这里我们不再明确写出,以避免杂乱的符号。

我们用 Θ \Theta Θ表示网络的参数,其进一步分为固定数量的特征提取部分的参数和可变数量的权重向量,后者记为 w 1 , . . . , w t ∈ R d w_1,...,w_t \in \mathbb{R}^{d} w1,...,wtRd。对于任一类别 y ∈ { 1 , . . , t } y \in \{1, . . , t\} y{ 1,..,t} t t t表示到目前为止已经观察到的类的数量,记网络的输出为: g y ( x ) = 1 1 + exp ⁡ ( − a y ( x ) ) ( 1 ) g_{y}(x)=\frac{1}{1+\exp \left(-a_{y}(x)\right)} (1) gy(x)=1+exp(ay(x))1(1) 其中 a y ( x ) = w y ⊤ φ ( x ) a_{y}(x)=w_{y}^{\top} \varphi(x) ay(x)=wyφ(x) 请注意,尽管可以将这些输出解释为概率,但iCaRL只将网络用于表征学习,而不是用于实际的分类步骤。

Resource Usage

由于其增量性质,iCaRL不需要先验的信息,即哪些类会出现,有多少类会出现,而且理论上它可以无限期地运行。在运行期间的任何时候,它对内存的要求都是基于特征提取参数的大小、示例图像的存储以及与已观察到的类一样多的权重向量。这种知识使我们能够根据应用场景分配资源。如果知道类的数量的上限,我们可以简单地预先分配空间以存储尽可能多的权重向量,并使用所有剩余的可用内存来存储示例。如果没有上限,实际上会导致随着时间的推移增加权重向量的数量,并相应地减少示例集的大小。显然,每个要学习的类至少需要一个示范图像和权重向量,所以最终只能学习有限数量的类,除非我们允许在算法运行期间增加更多的资源。请注意,iCaRL可以在不重新训练的情况下处理资源的增加:它不会丢弃任何范例,除非它因物理内存限制而被迫这样做。

B. Nearest-Mean-of-Exemplars Classification

iCaRL使用了一种最近平均示例的分类策略。为了预测一个新图像 x x x的标签 y ∗ y^* y,它为迄今为止观察到的每个类别计算一个原型向量,记为 μ 1 , . . . , μ t {\mu _1},...,{\mu _t} μ1,...,μt,其中 μ y = 1 ∣ P y ∣ ∑ p ∈ P y φ ( p ) \mu_{y}=\frac{1}{\left|P_{y}\right|} \sum_{p \in P_{y}} \varphi(p) μy=Py1pPyφ(p)是一个类别 y y y的所有示范的平均特征向量。它还计算出应该被分类的图像的特征向量,并分配具有最相似原型的类别标签: y ∗ = argmin ⁡ y = 1 , … , t ∥ φ ( x ) − μ y ∥ ( 2 ) y^{*}=\underset{y=1, \ldots, t}{\operatorname{argmin}}\left\|\varphi(x)-\mu_{y}\right\| (2) y=y=1,,targminφ(x)μy(2)

Background

最近平均示例的分类规则克服了增量学习设置的两个主要问题,这可以通过与其他多类分类的可能性进行对比可以看出,如下所述。

神经网络的通常分类规则是 y ∗ = argmax ⁡ y = 1 , … , t g y ( x ) y^{*}=\operatorname{argmax}_{y=1, \ldots, t} g_{y}(x) y=argmaxy=1,,tgy(x),其中 g y ( x ) g_{y}(x) gy(x)是式(1)中定义的网络输出,也可以用softmax输出层替代。因为 argmax ⁡ y g y ( x ) = argmax ⁡ y w y ⊤ φ ( x ) \operatorname{argmax}_{y} g_{y}(x)=\operatorname{argmax}_{y} w_{y}^{\top} \varphi(x) argmaxygy(x)=argmaxywyφ(x),网络的预测规则相当于使用一个具有非线性特征图 φ \varphi φ和权重向量 w 1 , . . . , w t w_1,...,w_t w1,...,wt。在类增量设置中,权重向量 w y w_y wy与特征提取程序 φ \varphi φ脱钩是有问题的:每当 φ \varphi φ改变时,所有 w 1 , . . . , w t w_1,...,w_t w1,...,wt都必须更新。否则,网络输出就会发生不可控的变化,这可以看作是灾难性的遗忘。相比之下,最近平均示例分类规则(2)没有解耦权重向量。每当特征表征发生变化时,类原型就会自动改变,从而使分类器对特征表征的变化具有鲁棒性。

选择平均向量作为原型的灵感来自于最近类平均分类器(nearest-class-mean classifier),用于固定特征表示的增量学习。在类增量设置中,我们不能使用真正的类平均,因为在这种情况下所有的训练数据都必须被储存起来,以便在表征改变后重新计算。取而代之的是,我们使用灵活数量的示例均值,这些示例的选择方式可以很好地拟合真正的类均值。

请注意,由于我们使用的是归一化特征向量,等式(2)可以等效地写成 y ∗ = argmax ⁡ y μ y ⊤ φ ( x ) y^* = \operatorname{argmax}_{y} \mu_{y}^{\top} \varphi(x) y=argmaxyμyφ(x)。因此,我们也可以把分类步骤解释为用一个权重向量进行分类,但这个权重向量并不与数据表征相脱钩,而是与数据表征一致地变化。

C. Representation Learning

每当iCaRL对新的类 s , . . . , t s,...,t s,...,t获得新的数据 X s , . . , X t X^s, . . , X^t Xs,..,Xt,它就会更新其特征提取程序和示例集。算法3列出了渐进式改进特征表示的步骤。首先,iCaRL构建了一个增强的训练集,该训练集由当前可用的训练实例和存储的示范组成。接下来,针对每个例子对当前的网络进行评估,并存储之前所有类别的网络输出结果(不包括新类别,因为网络还没有被训练过)。最后,通过最小化一个损失函数来更新网络参数,该损失函数鼓励网络为新的类别输出正确的类别指标(分类损失),而对于旧的类别,则重现上一步骤中存储的分数(蒸馏损失)。
在这里插入图片描述

Background

表征学习步骤类似于普通的网络微调:从先前学习的网络权重开始,它使训练集上的损失函数最小化。因此,可以使用标准的端到端学习方法,如带有小批量的反向传播,也可以使用最近的改进方法,如dropout、adaptive stepsize selection或batch normalization,以及未来可能的改进。

对普通微调有两个修改,目的是防止或至少减轻灾难性遗忘。首先,训练集被增强了。它不仅包括新的训练实例,而且还包括存储的示范。这样就可以保证至少有一些关于以前所有类别的数据分布的信息进入到训练过程中。请注意,在这一步骤中,重要的是将样本以图像的形式存储,而不是存储在会随着时间推移而过时的特征表示中。第二,损失函数也被增强了。除了标准的分类损失,即鼓励改进特征表示,以便对新观察到的类别进行良好的分类,它还包含蒸馏损失,以确保在新的学习步骤中不会丢失之前学到的鉴别性信息。

D. Exemplar Management

每当iCaRL遇到新的类别时,它就会调整其示例集。在这个过程中,所有的类都被平等对待,也就是说,当到目前为止已经观察到了 t t t个类,而 K K K是可以存储的示范总数时,iCaRL将为每个类使用 m = K / t m=K/t m=K/t个示范(可四舍五入)。这样就可以确保 K K K个样本的可用内存预算总是被充分使用,而不会被超出。

有两个程序负责示范管理:一个是为新类选择示范,一个是减少以前类的示范集的大小。算法4描述了示范选择步骤。示范 p 1 , . . . , p m p_1,...,p_m p1,...,pm被反复选择和存储,直到达到目标数量 m m m。在迭代的每一步中,当前训练集的一个例子被添加到示范集中,即选择使得所有示例的平均特征向量最接近所有训练例子的平均特征向量的那个例子。因此,示例"集"实际上是一个优先级的列表。其元素的顺序很重要,列表中较早的示例更重要。算法5中规定了删除示例的程序。它特别简单:为了将示例的数量从任何 m ′ m' m减少到 m m m,我们要丢弃示例 p m + 1 , . . . , p m ′ p_{m+1},...,p_{m′} pm+1,...,pm,只保留示例 p 1 , . . . , p m p_1,...,p_m p1,...,pm
在这里插入图片描述

Background

示例管理程序的设计有两个目标:初始示例集应该很好地接近类的平均向量,而且应该可以在算法运行期间在不违反这一特性的任何时候删除示例。

后一特性是具有挑战性的,因为当移除程序被调用时,实际的类均值向量已经不能为算法所得到。因此,我们采用了一种与数据无关的移除策略,从最后开始以固定的顺序移除元素,并让示范集构建程序负责确保所需的近似属性在以后调用移除程序后也能得到满足。优先构造是这一条件的逻辑结果:它确保从第一个样本开始的任何样本子集的平均特征向量都是对整体平均向量的良好近似。同样的优先级结构也被用于群集法(herding),以从分布中创建一个有代表性的样本集。那里还表明,与随机子抽样等方法相比,迭代选择需要更少的样本来达到高的近似质量。与此相反,其他潜在的样本选择方法,是以其他目标设计的,不能保证对任何数量的原型提供良好的近似。

总的来说,iCaRL的示范选择和缩减步骤完全符合增量学习的设定:每个类别只需要一次选择步骤,即当它第一次被观察到并且其训练数据可用时。在以后的时间里,只需要调用还原步骤,它不需要访问任何早期的训练数据。

III. Related work

iCaRL建立在多个早期尝试解决类增量学习的见解上。在这一节中,我们描述了最重要的技术,一方面将其结构化为具有固定数据表征的学习技术,另一方面也将其结构化为学习数据表征的技术,包括经典的连接主义时代以及最近的深度学习方法。

A. Learning with a Fixed Data Representation

当数据表征是固定的,类增量学习的主要挑战是设计一个分类器架构,它可以在训练过程中的任何时候容纳新的类,而不需要访问到目前为止看到的所有训练数据。

Mensink等人观察到,最近类均值(Nearest Class Mean, NCM)分类器具有这种特性。NCM将每个类表示为一个原型向量,该原型向量是迄今为止观察到的该类别的所有样例的平均特征向量。这个向量可以从数据流中逐步计算出来,所以不需要存储所有的训练样例。一个新的样例的分类方法是将原型与该样例的特征向量最相似的类别标签分配给它,而这个指标也可以从数据中学习。尽管(或因为)它的简单性,NCM已经被证明在增量学习环境中比标准的参数化分类器工作得很好,也更稳健。

NCM的主要缺点是,它不能轻易地扩展到非线性数据表征应与分类器一起学习的情况,因为这使得类平均向量不能以增量方式计算。对于iCaRL,我们从NCM中采用了基于原型的分类思想。然而,我们使用的原型并不是所有例子的平均特征向量,而只是一个特别选择的子集,这使我们能够保持较小的内存占用,并通过不断的计算努力来执行所有必要的更新。

其他方法只是部分地满足了我们在第1章中介绍的类增量学习标准。Kuzborskij等人表明,只要分类器能从所有类别的至少少量数据中重新训练,在向现有的线性多类分类器添加新类别时,可以避免loss的劣化。Chen等人和Divvala等人介绍了从网络资源中自主检索图像并识别它们之间关系的系统,但他们并没有递增地学习对象分类器。Royer和Lampert使分类器适应时间变化的数据流,但他们的方法不能处理新出现的类,而Pentina等人表明,按顺序学习多个任务是有益的,但为了选择顺序,所有任务的数据必须同时可用。

Li和Wechsler、Scheirer等人以及Bendale和Boult瞄准了相关但不同的开集识别问题,其中测试实例可能来自其他类别,而不是迄今为止看到的训练实例。Polikar等人介绍了一种基于集合的方法,它可以处理越来越多的类,但需要所有类的训练数据重复出现。Lampert等人提出的zero-shot learning,可以对以前未见过的类的例子进行分类,但它不包括对这些类的训练步骤。

B. Representation Learning

最近,(深度)神经网络的成功在很大程度上可以归功于它们不仅能够学习分类器,而且能够学习合适的数据表征,至少在标准的批处理设置中是如此。在经典的神经网络文献中已经可以找到以增量方式学习数据表征的首次尝试。特别是在20世纪80年代末,McCloskey等人描述了灾难性遗忘的问题,即用新的数据训练神经网络会导致它覆盖(从而忘记)它在以前的数据中学到的东西。然而,这些经典的工作主要是在连接主义记忆网络的背景下进行的,而不是分类器,而且所使用的网络以今天的标准来看是小而浅的。一般来说,现有的算法和架构变化都无法防止灾难性的遗忘,例如见Moe-Helgesen等人对经典的调查和Goodfellow等人对现代架构的调查,除非在特定的环境下,如Kirkpatrick等人。

然而,早期连接主义作品的一个主要成就是,他们确定了如何解决灾难性遗忘的两个主要策略。1)通过冻结部分网络权重,同时增长网络,以保持学习能力;2)通过复述(rehearsal),即不仅用最近的数据,而且用较早的数据不断刺激网络。

最近关于神经网络增量学习的工作主要遵循冻结/增长策略,然而这需要随着时间的推移为网络分配越来越多的资源,因此违反了我们对类增量学习定义的原则。例如,Xiao等人学习了一个树状结构的模型,该模型随着观察到更多的类而递增。在多任务强化学习的背景下,Rusu等人提出通过横向扩展所有层来增长网络。

对于iCaRL,我们采用了复述的原则:为了更新学习表征的模型参数,我们不仅使用当前可用的类的训练数据,而且还使用早期类的示范,这些示范无论如何都是可用的,因为它们是基于原型的分类规则所需要的。此外,iCaRL还使用蒸馏法来防止网络中的信息随着时间的推移而过度恶化。Hinton等人最初提出蒸馏法是为了在不同的神经网络之间转移信息,而在iCaRL中,我们在不同的时间点之间在单个网络中使用蒸馏法。最近,Li和Hoiem以无遗忘学习(LwF)的名义提出了同样的原则,以逐步训练一个网络来学习多个任务,例如多个物体识别数据集。与类增量多类情况的主要区别在于预测步骤:多类学习者必须挑选一个能正确预测任何观察到的类的分类器。多任务(多数据集)学习者可以利用多个分类器,每个分类器只在其自身数据集的数据上进行评估。

IV. Experiments

在这一节中,我们提出了一个评估增量学习方法的协议,并将iCaRL的分类准确性与其他方法进行了比较(第4.A节)。我们还报告了进一步的实验,这些实验通过隔离单个组件的影响,阐明了iCaRL的工作机制(第4.B节)。

Benchmark Protocol

到目前为止,还没有商定的评价类增量学习方法的基准协议。因此,我们提出以下评估程序:对于一个给定的多类分类数据集,各类以固定的随机顺序排列。然后,每个方法在现有的训练数据上以类增量的方式进行训练。在每一批类别之后,在数据集的测试部分数据上对所产生的分类器进行评估,只考虑那些已经训练过的类别。请注意,即使测试数据被使用了不止一次,也不会发生过度拟合,因为测试结果不会透露给算法。评估的结果是每一批类之后的分类准确率的曲线。如果一个单一的数字比较好,我们报告这些准确性的平均值,称为平均增量准确性。

对于图像分类的任务,我们引入了上述协议的两个实例。1) iCIFAR-100基准:我们使用CIFAR-100数据,每次以2、5、10、20或50个类别的批次训练所有100个类别。评价指标是测试集上的标准多类准确性。由于数据集的规模可控,我们用不同的类顺序运行该基准十次,并报告结果的平均数和标准差。2) iILSVRC基准:我们使用ImageNet ILSVRC 2012数据集,有两种设置:只使用100个类的子集,以10个批次进行训练(iILSVRC-small)或使用所有1000个类,以100个批次处理(iILSVRC-full)。评估指标是数据集中价值部分的top-5准确率。

iCaRL Implementation

对于iCIFAR-100,我们依靠theano软件包并训练一个32层的ResNet,使iCaRL能够存储多达2000个示例。每个训练步骤包括70个epoch。学习率从2.0开始,在49和63个epoch(占所有epoch的7/10和9/10)后除以5。对于iILSVRC来说,最大的样本数是K=20000,我们使用tensorflow框架来训练一个18层的ResNet,每个类60 epoch。学习率从2.0开始,在20、30、40和50个epoch后除以5(所有epoch的1/3、1/2、2/3和5/6)。对于所有的方法,我们使用标准的反向传播来训练网络,mini batch大小为128,权重衰减参数为0.00001。我们的源代码和进一步的数据可在http://www.github.com/srebuffi/iCaRL找到。

A. Results

我们的主要实验集研究了不同方法在类增量条件下的分类准确性。除了iCaRL,我们还实现并测试了三种替代性的类增量方法。Finetuning学习一个普通的多类网络,没有采取任何措施来防止灾难性的遗忘。它也可以被解释为通过微调先前学习的多类分类网络,为新进入的类别学习一个多类分类器。固定表征法也是学习多类分类网络,但是以一种防止灾难性遗忘的方式。它在处理完第一批类后冻结了特征表示,在处理完相应的类后冻结了分类层的权重。对于后续批次的类,只训练新类的权重向量。最后,我们还比较了一个网络分类器,它试图通过在学习过程中使用蒸馏损失来防止灾难性遗忘,就像iCaRL那样,但它不使用示例集。对于分类,它使用网络输出值本身。这基本上是无遗忘学习的方法,但适用于多类分类,所以用LwF.MC来表示它。

结果如图2所示。我们可以看到,iCaRL明显优于其他方法,而且越是增量设置(即同时可以处理的类越少)越是如此。在其他方法中,基于蒸馏的网络训练(LwF.MC)总是第二好的,除了iILSVRC-full,在第一批100个类后固定表征法更好。微调总是取得最差的结果,证实了灾难性遗忘确实是类增量学习的一个主要问题。
在这里插入图片描述
图2. (a)在iCIFAR-100上,每批有2个(左上)、5个(中上)、10个(右上)、20个(左下)或50个(右下)类的多类准确性(10次重复的平均数和标准差)。(b)iILSVRC-small(上)和iILSVRC-full(下)的top-5精确度。在iCIFAR-100和iILSVRC上进行的类增量训练的实验结果:报告的是到某一时间点为止观察到的所有类的多类精度。除iILSVRC-full外,在对第一批数据进行训练后,固定数据表征法的表现比基于蒸馏的LwF.MC差。在不防止灾难性遗忘的情况下对网络进行微调(finetuning),取得了最差的结果。作为比较,用所有可用数据训练的同一网络取得了68.6%的多类准确率。

图3提供了对不同方法的行为的进一步了解。图3显示了iCIFAR-100上的100类分类器在使用一次10个类批次训练后的混淆矩阵(更大的版本可以在补充材料中找到)。我们可以看到非常有特点的模式:iCaRL的混淆矩阵在所有类别上看起来都是同质的,无论是对角线条目(即正确的预测),还是非对角线条目(即错误)。这表明,iCaRL在学习过程中对早期或后期遇到的类没有内在的偏见。特别是,它不会受到灾难性遗忘的影响。
在这里插入图片描述
图3. 不同方法在iCIFAR-100上的混淆矩阵(条目用log(1+x)转换以获得更好的可见性)。iCaRL的预测接近于均匀地分布在所有类别上,而LwF.MC倾向于更频繁地预测最近批次的类别。具有固定表征法的分类器偏向于来自第一批的类,而通过微调训练的网络则完全预测来自最后一批的类标签。

与此相反,其他类的混淆矩阵显示出不均匀的模式:基于蒸馏的训练(LwF.MC)在右边有更多的非零条目,也就是最近学习的类的混淆。更为极端的是微调的效果,所有预测的类标签都来自网络训练的最后一批类。经过微调的网络根本就忘记了早期类的存在。固定表征法显示了相反的模式:它更喜欢输出它所训练的第一批类(这些类是用来获得数据表征的)。iILSVRC的混淆矩阵显示了同样的模式,它们可以在补充材料中找到。

B. Differential Analysis

为了进一步了解iCaRL的工作机制,我们对iCIFAR-100进行了额外的实验,其中我们隔离了方法的方面:

首先,我们分析了为什么iCaRL比普通的基于微调的训练更有优势,它在三个方面有所不同:通过使用平均示例分类规则,在表征学习中使用示例,以及使用蒸馏损失。因此,我们创建了三种混合设置:第一种(hybrid1)以与iCaRL相同的方式学习表征,但直接使用网络的输出进行分类,而不是使用平均示例分类器。第二种(hybrid2)使用示例进行分类,但在训练过程中不使用蒸馏损失。第三种(hybrid3)既不使用蒸馏损失,也不使用示范进行分类,但在表征学习中使用示范。作为比较,我们还包括LwF.MC,它使用了蒸馏法,但完全没有使用示范。

表1.a将结果总结为增量训练所有步骤中分类准确率的平均值。我们可以看到,混合设置的结果大多介于iCaRL和LwF.MC之间,这表明iCaRL的所有新组件确实为其良好的性能做出了巨大贡献。特别是,iCaRL与hybrid1的比较表明,在较小的批次规模下,即在对表征进行更多更新的情况下,示例平均分类器尤其具有优势。比较iCaRL和hybrid2可以看到,对于非常小的类规模,与仅仅使用原型相比,蒸馏甚至会损害分类精度。对于较大的批次规模和较少的更新,使用蒸馏损失显然是有利的。最后,将hybrid3的结果与LwF.MC进行比较,可以清楚地看到示范在防止灾难性遗忘方面的有效性。
在这里插入图片描述
在第二组实验中,我们研究了使用示范均值作为分类原型,而不是使用最近类均值(NCM)规则,会损失多少准确性。对于后者,我们使用未经修改的iCaRL来学习表征,但我们用NCM对图像进行分类,在每次表征更新后,使用当前特征提取器重新计算类均值。请注意,这需要存储所有的训练数据,所以它不符合类增量方法的要求。表1.b中的结果显示,iCaRL和NCM之间只有微小的差异,这证实了iCaRL能够可靠地识别具有代表性的样本。

图4说明了不同内存预算的影响,将iCaRL与表1a的hybrid1分类器和表1b的NCM分类器进行了比较。两者都使用与iCaRL相同的数据表征,但在分类规则上有所不同。所有的方法都受益于更大的内存预算,表明iCaRL的表征学习步骤确实受益于更多的原型。如果有足够多的原型(这里至少有1000个),iCaRL的平均示范分类器的表现与NCM分类器相似,而通过网络输出进行分类则没有竞争力。
在这里插入图片描述
图4. 在iCIFAR-100上,每批有10个类,不同的内存预算K的平均增量精度

V. Conclusion

我们提出了iCaRL,这是一种用于类增量学习的策略,它同时学习分类器和特征表示。1)一个对数据表示的变化具有鲁棒性的最近平均分类器,同时每个类只需要存储少量的样本;2)一个基于群(herding)的步骤,用于优先选择样本;3)一个表征学习步骤,使用样本与蒸馏相结合,以避免灾难性的遗忘。在CIFAR-100和ImageNet ILSVRC 2012数据上的实验表明,iCaRL能够在很长一段时间内逐步学习,而其他方法则很快失败。

iCaRL的强大分类结果的主要原因是它对示范图像的使用。虽然直观地看,除了网络参数之外,能够依靠存储的示范可能是有益的,但我们还是发现了一个重要的观察结果,即这种效果在类增量的设置中是多么的明显。因此,我们假设,其他架构也应该能够从使用网络参数和样本的组合中受益,特别是考虑到成千上万的图像可以被存储(以压缩的形式),而内存需求与当前深度网络的规模相当。

尽管取得了可喜的成果,但类增量分类还远远没有得到解决。特别是,iCaRL的性能仍然低于系统在批量训练时取得的成绩,这种情况下所有类别的所有训练实例都同时可用。在未来的工作中,我们计划更详细地分析其中的原因,以缩小剩余的性能差距。我们还计划研究分类器不能以原始形式存储任何训练数据的相关情况,例如,出于隐私原因。

猜你喜欢

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