[论文翻译] Learning Without Forgetting

https://link.springer.com/chapter/10.1007/978-3-319-46493-0_37

Learning Without Forgetting

Abstract

当建立一个统一的视觉系统或逐渐为系统增加新能力时,通常的假设是所有任务的训练数据总是可用的。然而,随着任务数量的增加,对这些数据进行存储和再训练变得不可行。一个新的问题出现了,我们给卷积神经网络(CNN)增加了新的能力,但维持其现有能力的训练数据却不可用。我们提出了"无遗忘学习"方法,该方法只使用新的任务数据来训练网络,同时保留原有的能力。与常用的特征提取和微调技术相比,我们的方法表现良好,与假设原始任务数据不可用情形下的多任务学习表现相似。一个更令人惊讶的观察是,"无遗忘学习"可能会取代微调技术,成为提高新任务性能的标准做法。

I. Introduction

许多实际的视觉应用需要学习新的视觉能力,同时保持对现有能力的表现。例如,一个机器人被送到某人的家里时,可能有一套默认的物体识别能力,但需要添加新的特定地点的物体模型。或者在建筑安全方面,一个系统可以识别工人是否穿着安全背心或戴着安全帽,但监管人可能希望增加检测不适当的脚部用品的能力。理想情况下,新任务可以在分享旧任务的参数的同时学习,而不会降低旧任务的性能,也不需要接触到旧的训练数据。遗留的数据可能是没有记录的、专有的,或者只是过于繁琐,无法用于训练新任务。虽然在思想上与转移学习、多任务学习和终身学习相似,但我们还不知道有什么工作能提供一个解决方案,以解决在无法获得以前学习的任务的训练数据的情况下,基于适应共享参数不断增加新的预测任务的问题。

在本文中,我们用卷积神经网络(CNN)分类器在各种图像分类问题上展示了一个简单而有效的解决方案。在我们的设定中,CNN有一组共享参数 θ s \theta _s θs(例如,AlexNet架构的五个卷积层和两个全连接层),先前学习的任务的特定参数 θ o \theta _o θo(例如,ImageNet分类的输出层及相应的权重),以及新任务的随机初始化任务特定参数 θ n \theta n θn(例如,场景分类器)。把 θ o \theta _o θo θ n \theta _n θn看作是对由 θ s \theta _s θs参数化的特征进行操作的分类器是很有用的。目前,有三种常见的方法(见图1和图2)来学习 θ n \theta _n θn,在利用先前学习的 θ s \theta _s θs的情况下:
在这里插入图片描述
图1. 我们希望在现有的CNN视觉系统中增加新的预测任务,而不需要获取现有任务的训练数据。该表显示了我们的方法与常用方法相比的相对优势。

在这里插入图片描述
图2. 我们的方法(e)和我们与之比较的方法(b-d)。图中显示了训练中使用的图像和标签。不同任务的数据在联合训练中被交替使用。

  • Feature Extraction:固定 θ s \theta _s θs θ n \theta _n θn,一个或多个层的输出被用于训练新任务的特征 θ n \theta _n θn
  • Fine-tuning: θ s \theta _s θs θ n \theta _n θn针对新任务进行了优化,而 θ o \theta _o θo是固定的。通常使用低的学习率来防止 θ s \theta _s θs的大漂移。一种另外的可能是,复制原始网络,并为每个新任务进行微调,以创建一系列专门的网络。
  • Joint Training:所有的参数 θ s \theta _s θs, θ o \theta _o θo, θ n \theta _n θn都是联合优化的,例如通过每个任务的交错采样。

这些策略都有一个主要的缺点。特征提取通常在新任务上表现不佳,因为共享参数不能代表一些对新任务有辨别力的信息。微调会降低以前所学任务的性能,因为共享参数的变化没有对原来特定任务的预测参数提供新的指导。对每个任务进行重复和微调的结果是,随着新任务的增加,测试时间线性增加,而不是分享共享参数的计算。在训练中,随着学习的任务越来越多,联合训练变得越来越麻烦,如果以前学习的任务的训练数据不可用,则不可能进行联合训练。

我们提出了一个新的策略,称之为无遗忘学习(Learning without Forgetting, LwF)。只使用新任务的例子,我们既要优化新任务的高精确度,又要保留原始网络对现有任务的反应。显然,如果新网络在所有相关图像上产生完全相同的输出,它的准确性将与原始网络相同。在实践中,新任务的图像可能提供了原始任务领域的不良抽样,但我们的实验表明,在这些例子上保留输出仍然是一个有效的策略,以保持在旧任务上的性能,而且还有一个意想不到的好处,即作为一个正则器来提高新任务的性能。我们的无遗忘学习方法有几个优点:

  • Classification Performance:LwF在新任务上优于特征提取,更令人惊讶的是在新任务上优于微调,而在旧任务上大大优于使用微调。
  • Computational Efficiency:训练时间比联合训练快,只比微调稍慢,而测试时间比使用多个微调网络完成不同任务要快。
  • Simplicity in Deployment:一旦学会了一项任务,训练数据就不需要保留或重新使用以保持自适应网络的性能。

II. Related Work

多任务学习、转移学习及相关方法有很长的历史。简而言之,我们的无遗忘学习方法可以被看作是蒸馏网络和微调的结合。微调是用一个在相关的数据丰富的问题上训练出来的现有网络的参数进行初始化,并为一个新的任务优化参数以找到一个新的局部最小值,此时学习率很低。蒸馏网络的想法是在一个较简单的网络中学习参数,产生与更复杂的网络组合相同的输出,无论是在原始训练集还是在大量的未标记的数据集上。我们的方法不同,我们解决的是一组参数,在新旧任务中都能很好地使用相同的数据来监督新任务的学习,并在旧任务中提供无监督的输出指导。

现在我们总结一下现有的转移学习和多任务学习的方法,并将它们与我们的方法进行比较。

A. Feature Extraction

[6,17]使用一个预训练好的深度CNN来计算图像的特征。提取的特征是一个层(通常是最后一个隐藏层)或多个层对图像的激活。在这些特征上训练的分类器可以取得有竞争力的结果,有时甚至超过了人工设计的特征。进一步的研究显示了应该如何选择超参数,例如原始网络结构,以获得更好的性能。特征提取不会修改原始网络,并允许新任务从以前任务中学到的复杂特征中受益。然而,这些特征对于新任务来说并不专门,因此通常需要通过微调来改进。

B. Fine-tuning

[9]修改现有CNN的参数来训练一个新任务。输出层用随机初始化的权重对新任务进行扩展,并使用一个小的学习率来调整参数,从它们的原始值开始,使新任务的损失最小。使用适当的超参数进行训练,得到的模型往往优于特征提取或从随机初始化网络中学习。微调使共享参数 θ s \theta _s θs适应新的任务,使其更有辨别力,而低学习率是一种间接的机制,以保留在原始任务中学到的一些表征结构。我们的方法提供了一种更直接的方式来保留对原始任务来说很重要的表征,相对于微调而言,可以改善原始任务和新任务的表现。

C. Adding New Nodes

为每个网络层添加新结点,是在学习新的判别特征的同时保留原有网络参数的一种方式。例如,Terekhov等人提出了全连接神经网络的深块模态神经网络。原有网络的参数不受影响,新增加的节点与下面的层完全连接。这种方法的缺点是大幅扩大了网络中的参数数量,如果没有足够的训练数据来学习新的参数,那么微调和特征提取的表现都会不佳。我们尝试扩大原始网络的全连接层,但发现这种扩大并没有对我们的原始方法进行改进。

我们的工作也涉及到在网络之间转移知识的方法。Hinton等人提出了 “知识蒸馏”(Knowledge Distillation),即把知识从一个大型网络或一个网络组件转移到一个较小的网络中,以便有效地部署。较小的网络使用修改过的交叉熵损失(在第3章中进一步描述)进行训练,鼓励原始网络和新网络的反应相似。Romero等人在这项工作的基础上,通过对中间层的额外指导,转移到一个更深的网络。Chen等人提出了Net2Net方法,该方法可以立即生成一个更深、更宽的网络,在功能上与现有网络相当。这种技术可以快速初始化网络,以便更快地进行超参数探索。这些方法的目的是产生一个接近原始网络的不同结构的网络,而我们的目的是为原始网络结构找到新的参数 ( θ s , θ o ) (\theta _s, \theta _o) (θs,θo),以接近原始输出,同时为新任务调整共享参数 θ s \theta _s θs

特征提取和微调是领域自适应(当新旧任务相同时)或迁移学习(任务不同)的特殊情况。正如Pan等人所调查的那样,迁移学习使用一个任务的知识来帮助另一个任务。Long等人的深度适应网络与源任务和目标任务的深度表示的RKHS嵌入相匹配,以减少领域偏差。另一个类似的领域自适应方法是由Tzeng等人提出的,该方法鼓励共享的深层表征在不同的领域中是没有区别的。这种方法也使用了知识蒸馏,但其是为了帮助训练新的领域,而不是保留旧的任务。领域自适应和迁移学习要求两个任务领域至少都有未标记的数据。相比之下,我们关心对原始任务(即源域)的训练数据不可用的情况。

D. Multitask Learning

与迁移学习不同的是,它旨在通过结合所有任务的共同知识来同时改进所有的任务。每个任务为共享的或受约束的参数提供额外的训练数据,作为其他任务的一种正则化形式。对于神经网络,Caruana给出了多任务学习的详细研究。通常,网络的底层是共享的,而顶层是特定的任务。多任务学习需要所有任务的数据都存在,而我们的方法只需要新任务的数据。

随着时间的推移整合知识的方法,如终身学习和无止境学习,也是相关的。终身学习的重点是灵活地增加新的任务,同时在任务之间进行知识迁移。无止境学习侧重于建立多样化的知识和经验(例如,通过每天阅读网络)。虽然在主题上与我们的工作相关,但这些方法并没有提供一种在没有原始训练数据的情况下保留现有任务性能的方法。Ruvolo等人描述了一种在多任务系统中有效添加新任务的方法,在只使用新任务数据的同时对所有任务进行联合训练。然而,该方法假设所有分类器和回归模型的权重可以线性地分解为一组基数。与我们的方法相比,该算法只适用于工程特征的逻辑或线性回归,而且这些特征不能通过微调等方式成为特定任务。

III. Learning Without Forgetting

给定一个具有共享参数 θ s \theta _s θs和特定任务参数 θ o \theta _o θo的CNN(图2(a)),我们的目标是为一个新任务添加特定任务参数 θ n \theta _n θn,并学习在新旧任务上都能正常工作的参数,只使用新任务的图像和标签(即不使用现有任务的数据)。我们的算法见图3,网络结构见图2(e)。

在这里插入图片描述
图3. LwF的流程

首先,我们在每个新任务图像上记录原始网络对旧任务(由 θ s \theta _s θs θ o \theta _o θo定义)输出的响应。我们的实验涉及分类,所以响应是每个训练图像的标签概率集合。每个新类别的节点被添加到输出层,与下面的层完全连接,并随机初始化权重 θ n \theta _n θn。新参数的数量等于新类的数量乘以最后一个共享层的节点数量,通常是参数总数的很小的百分比。在我们的实验中(第4.B节),我们还比较了为新任务修改网络的其他方式。

接下来,我们使用随机梯度下降法对网络进行训练,以使所有任务的损失与正则项 R R R最小化。正则项 R R R对应的是0.0005的简单权重衰减。训练时,我们首先冻结 θ s \theta _s θs θ o \theta _o θo,训练 θ n \theta _n θn直到收敛。然后,我们联合训练所有的权重直到收敛。

为简单起见,我们以某个样本为例说明损失函数、输出和Ground Truth。在训练中,总的损失是对一个批次中所有图像的平均数。对于新的任务,损失鼓励预测值 y ^ n \hat{\mathbf{y}}_{n} y^n与GT y n \mathbf{y}_{n} yn一致。我们实验中的任务是多类分类,所以我们使用常见的multinomial logistic loss: L n e w ( y n , y ^ n ) = − y n ⋅ log ⁡ y ^ n \mathcal{L}_{n e w}\left(\mathbf{y}_{n}, \hat{\mathbf{y}}_{n}\right)=-\mathbf{y}_{n} \cdot \log \hat{\mathbf{y}}_{n} Lnew(yn,y^n)=ynlogy^n 其中, y ^ n \hat{\mathbf{y}}_{n} y^n是网络的softmax输出, y n \mathbf{y}_{n} yn是独热的GT向量。如果有多个新任务,或者如果任务是多标签分类,我们对每个标签进行真/假预测,并采取新任务与标签的损失之和。

对于每个原始任务,我们希望每个图像的输出概率接近于原始网络的输出记录。我们使用知识蒸馏损失,Hinton等人发现它能很好地鼓励一个网络的输出与另一个网络的输出相近。这是一个修改过的交叉熵损失,增加了较小概率的权重: L old  ( y o , y ^ o ) = − H ( y o ′ , y ^ o ′ ) = − ∑ i = 1 l y o ′ ( i ) log ⁡ y ^ o ′ ( i ) \mathcal{L}_{\text {old }}\left(\mathbf{y}_{o}, \hat{\mathbf{y}}_{o}\right)=-H\left(\mathbf{y}_{o}^{\prime}, \hat{\mathbf{y}}_{o}^{\prime}\right)=-\sum_{i=1}^{l} y_{o}^{\prime(i)} \log \hat{y}_{o}^{\prime(i)} Lold (yo,y^o)=H(yo,y^o)=i=1lyo(i)logy^o(i) 其中 l l l是标签的数量, y o ′ ( i ) y_{o}^{\prime(i)} yo(i) y ^ o ′ ( i ) \hat{y}_{o}^{\prime(i)} y^o(i)是记录的和当前的概率 y o ( i ) y_{o}^{(i)} yo(i) y ^ o ( i ) \hat{y}_{o}^{(i)} y^o(i)的修正版本。

如果有多个旧任务,或者一个旧任务是多标签分类,我们取每个旧任务和标签的损失之和。Hinton等人建议设置 T > 1 T>1 T>1,这样可以增加较小的logit值的权重,鼓励网络更好地编码类间的相似性。我们根据对一个持有的集合的网格搜索,使用 T = 2 T=2 T=2,这与作者的建议一致。在实验中,使用知识蒸馏损失导致的性能与其他合理损失相似。因此,约束原始任务的输出与原始网络相似是很重要的,但相似性的衡量标准并不是核心问题。

Implementation Details

我们使用MatConvNet来训练我们的网络,使用随机梯度下降法,动量为0.9,在全连接层中启用dropout。原始任务的数据规范化被用于新任务。resize遵循原始网络的实现,对于AlexNet来说是256×256,对于VGG来说,在保留长宽比的情况下,最短边缘是256像素。我们通过对调整后的图像进行随机的固定大小的裁剪,并在RGB值上增加方差来随机抖动训练数据,与AlexNet一样。这种数据增强也被应用于特征提取。

在训练网络时,我们遵循对现有网络进行微调的标准做法。我们使用比训练原始网络时小得多的学习率(0.1 ∼ 0.02倍),并在对一个保持不变的集合的准确性达到高峰后将其降低10倍。学习率的选择是为了在合理的epoch数下最大限度地提高新任务的性能。所比较的方法收敛的速度相似,所以我们对每种方法使用相同的epoch数(但对不同的任务对来说不一样)。对于每个场景,除了特征提取,所有的方法都使用相同的学习率,特征提取由于参数数量少,所以使用5倍的学习率。

对于特征提取baseline,我们将特征提取作为原始网络的最后一个隐藏层,用隐藏层中4096个节点的两层网络进行分类。对于联合训练,一个任务的输出节点的损失只适用于它自己的训练图像。在每个epoch中,每个任务都有相同数量的图像被子采样,以平衡它们的损失,我们将不同任务的batch交错进行梯度下降。

Efficiency Comparison

使用神经网络最昂贵的计算部分是通过共享参数 θ s \theta _s θs进行评估或反向传播,特别是卷积层。对于训练来说,特征提取是最快的,因为只有新的任务参数被调整。LwF比微调稍慢,因为它需要通过 θ o \theta _o θo对旧任务进行反向传播,但只需要通过 θ s \theta _s θs评估和反向传播一次。联合训练是最慢的,因为不同的图像被用于不同的任务,每个任务都需要通过共享参数进行单独的反向传播。

所有方法评估一幅测试图像所需的时间大致相同。然而,复制网络并对每个任务进行微调需要 m m m倍的时间来评估,其中 m m m是任务的总数。

IV. Experiments

我们的实验旨在评估无遗忘学习(LwF)是否是学习新任务的有效方法,同时保留旧任务的性能。我们与特征提取和微调的基线进行了比较,这两种方法是利用现有网络完成新任务的常用方法,而不需要原始任务的训练数据。特征提取保持了在原始任务上的确切性能。我们还与联合训练(有时称为多任务学习)进行比较,作为可能的性能的上限,因为联合训练使用了原始任务和新任务的图像和标签,而LwF只对新任务使用图像和标签。

我们在各种具有不同程度的任务间相似性的图像分类问题上进行实验。对于原始(“旧”)任务,我们考虑了ILSVRC 2012年ImageNet的子集和ILSVRC 2015的Places2挑战。ImageNet有1000个物体类别和超过1000000张训练图像。Places2有401个场景类别和超过8000000张训练图像。我们使用这些大型数据集也是因为我们假设我们从一个已训练的网络开始。对于新任务,我们考虑PASCAL VOC 2012图像分类(“VOC”),Caltech-UCSD Birds-200-2011细粒度分类(“CUB”),以及MIT室内场景分类(“Scenes”)。这些数据集的训练图像数量适中:VOC为5717张;CUB为5994张;Scenes为5360张。其中,VOC与ImageNet非常相似,因为其标签的子类别可以在ImageNet的类别中找到。MIT室内场景数据集又与Places2相似。CUB与两者都不相似,因为它只包括鸟类,并且需要捕捉图像的精细细节来进行有效预测。在一个实验中,我们使用MNIST作为新的任务,期望我们的方法表现不佳,因为手写的字符与ImageNet类别完全不相关。

我们主要使用AlexNet网络结构,因为它训练速度快,而且被社区研究得很透彻。我们也验证了在一组较小的实验中使用16层的VGGNet也能保持类似的结果。在ImageNet和Places2上预训练的原始网络是从公开的在线来源获得的。在Places2作者的建议下,我们在Places2训练集上对所提供的Places2原始网络进行了微调,因为它对图像重新缩放的方法很敏感,与报告的43%相比,性能略有提高(10次抖动的44%的最高验证准确率)。

我们报告了VOC的中心图像裁剪平均精度,以及所有其他任务的中心图像裁剪精度。我们报告了VOC、ImageNet和Places2的验证集以及CUB和Scenes数据集的测试集的准确性。由于前三者的测试性能不能频繁评估,我们只在一次实验中提供它们测试集的性能。

我们的实验研究了向网络中添加单个新任务或逐一添加多个任务。我们还研究了数据集大小和网络设计的影响。在消融研究中,我们研究了替代性的保留反应的损失,扩大网络结构的效用,以及用较低的学习率进行微调作为保留原始任务性能的方法。

A. Main Experiments
Single New Task Scenario

首先,我们比较了不同任务对和不同方法之间学习一个新任务的结果。表1(a)和(b)显示了我们的方法的性能,以及使用AlexNet与之相比的其他方法的相对性能。我们提出以下看法:

  • 在新任务上,除了ImageNet→MNIST,我们的方法一直优于微调和特征提取。比微调法的优势是出乎意料的,这表明在旧任务中保留输出是一个有效的正则器。这一发现促使人们用LwF取代微调,作为使网络适应新任务的标准方法。
  • 在旧任务上,我们的方法比微调的表现要好,但往往比特征提取的表现要差。通过改变共享参数 θ s \theta _s θs,微调在原始网络任务上的性能明显下降。通过联合调整 θ s \theta _s θs θ o \theta _o θo,在旧任务上产生与原始网络相似的输出,性能损失会大大减少。
  • 我们的方法与联合训练的表现相似。我们的方法在新任务上的表现往往略胜于联合训练,但在旧任务上的表现却不如联合训练,我们将此归因于两种方法中损失的不同平衡。总的来说,这两种方法的表现相似,这是一个积极的结果,因为我们的方法不需要获得旧任务的训练数据,而且训练速度更快。
  • 不相似的新任务会使旧任务的性能下降更多。例如,CUB是与Places2非常不同的任务,将网络适应于CUB会导致Places2的精度损失13.8%(4.7%+9.1%),LwF为4.7%,而联合训练为1.4%(4.7%-3.3%)。在这些情况下,学习新任务会导致共享参数相当大的漂移,这不能完全由LwF来解释,因为CUB和Places2图像的分布非常不同。即使是联合训练也会导致Places2→CUB的旧任务有更多的准确性损失,因为它不能找到一套对两个任务都很好的共享参数。正如预期的那样,我们的方法在ImageNet->MNIST的新任务上的表现并不优于微调,因为手写字符为旧任务提供了很差的间接监督,而且两种方法的旧任务准确率都大幅下降,不过微调的下降幅度更大。
  • 类似的观察结果也适用于VGG和AlexNet结构,只是联合训练在VGG上的表现始终优于其他网络结构(表1©),表明这些结果可能也适用于其他网络结构,尽管联合训练可能对具有更强表征能力的网络有更大的好处。

表1. 单一新任务情景下的性能。在所有的表格中,为了便于比较,报告了各种方法与LwF(我们的方法)的性能差异。对VOC报告了平均精度,对其他所有方法报告了精度。在新任务中,LwF的表现优于baseline,与联合训练的表现相当,联合训练使用了我们认为其他方法无法使用的旧任务训练数据。在旧任务中,我们的方法大大超过了微调,并取得了与联合训练相似的性能。MNIST任务是个例外,LwF的表现并不好。
在这里插入图片描述

Multiple New Task Scenario

其次,我们比较了不同的方法,当我们累计向系统添加新的任务时,模拟了新的物体或场景类别逐渐被添加到预测中的情景。我们试验在Places2上训练的AlexNet中逐渐增加VOC任务,在ImageNet上训练的AlexNet中增加Scene任务。这些任务对在原始任务和新任务之间有适中的差异。我们将新的任务类别根据其相似性分成三部分–VOC分为交通、动物和物体,Scenes分为大房间、中房间和小房间。场景中的图像被分割成这三个子集。由于VOC是一个多标签数据集,不可能将图像分成不同的类别,所以标签被分成每个任务,图像在所有任务中共享。

每增加一个新任务,都要重新计算所有其他任务 Y o Y_o Yo的响应,以模拟所有原始任务数据不可用的情况。因此,旧任务的 Y o Y_o Yo每次都会改变。对于特征提取器和联合训练,累积训练并不适用,所以我们只报告它们在最后阶段的表现,即所有的任务都被加入。图4显示了在两个数据集上的结果。我们的发现通常与单一新任务的情况一致。LwF在所有任务上都优于微调,在新任务上优于特征提取,除了在ImageNet → Scenes的旧任务上,总体上与联合训练的表现相似。

在这里插入图片描述
图4. 在预训练的网络中逐渐添加新任务时,每个任务的性能。不同的任务显示在不同的子图中。X轴标签表示每次添加到网络中的新任务。误差条显示了3次不同 θ n \theta _n θn随机初始化运行的±2标准差。标记水平抖动以利于可视化,但线图不抖动以利于比较。对于所有的任务,我们的方法随着时间的推移退化的速度比微调慢,并且优于特征提取。对于Places2 → VOC,我们的方法与联合训练的表现相当。

Influence of Dataset Size

我们检查新任务数据集的大小是否会影响我们相对于其他方法的性能。我们在Places2 AlexNet中加入了VOC,进行了这个实验。在训练网络时,我们对VOC数据集进行子抽样,分别为30%、10%和3%,并报告整个验证集的结果。请注意,对于联合训练,由于每个数据集的大小不同,相同数量的图像被子采样来训练两个任务(每个epoch重新采样),这意味着一次使用的Places2图像的数量较少。我们的结果显示在图5中。结果显示,除了随着例子数量的减少,我们的方法比旧任务的联合训练受到的影响更大之外,同样的观察也是成立的。在旧任务中,LwF和微调之间的差异以及在新任务中LwF和特征提取之间的差异随着数据的减少而增加。

在这里插入图片描述
图5. 在新任务训练集上子抽样的影响。X轴表示训练集大小的递减。图中显示了我们在不同的随机 θ n \theta _n θn初始化和数据集子抽样的实验中的三次运行。散点被水平抖动以利于可视化,但线图没有被抖动以利于比较。在旧任务中,LwF和微调之间的差异,以及在新任务中LwF和特征提取之间的差异随着数据的减少而增加。

B. Design Choices and Alternatives

表2. 我们的方法与各种替代设计选择的性能对比。在大多数情况下,与我们的方法相比,这些替代选择并没有提供一致的优势或劣势。
在这里插入图片描述
在这里插入图片描述
图6. 替代网络修改方法的说明。在(a)中,更多的全连接层是针对具体任务的,而不是共享的。在(b)中,多个旧任务的节点(未显示)以同样的方式连接。LwF也可以通过解冻所有节点和匹配旧任务的输出响应来应用于网络扩展。

Choice of Task-Specific Layers

有可能将更多的层视为特定任务的 θ o \theta _o θo θ n \theta _n θn,而不是只将输出节点视为特定任务。这可能为两个任务提供优势,因为后面的层往往更具有任务的特殊性。然而,这样做需要更多的存储空间,因为AlexNet的大部分参数都在前两个全连接层中。表2(a)显示了在三个任务对上的比较。我们的结果并没有表明拥有额外的特定任务层有任何优势。

Network Expansion

我们探索了另一种修改网络结构的方式,我们称之为"网络扩展",即在某些层中增加节点。这允许在早期的层中有额外的针对新任务的信息,同时仍然使用原始网络的信息。

图6(b)说明了这种方法。我们在前三层的每一层增加1024个节点。从上一层的所有节点到当前层的新节点的权重被初始化,与Net2Net通过复制节点扩展一层的方法相同。从上一层的新节点到当前层的原始节点的权重被初始化为零。新节点的顶层权重被随机地重新初始化。然后,我们要么冻结现有的权重,在新的任务上微调新的权重(“网络扩展”),要么像以前一样使用无遗忘学习进行训练(“网络扩展+LwF”)。

表2(b)显示了与我们原始方法的比较。网络扩展本身比特征提取表现得更好,但在新的任务上,两个变体的表现都不如LwF好。我们把对其他可能的网络扩展版本的探索(例如,要扩展的顶层数量,每层的新节点数量,参数初始化方法)作为未来的工作。

L2 Soft-Constrained Weights

也许LwF的一个明显的替代方案是使网络参数(而不是响应)接近于原始值。我们与将 1 2 λ c ∥ w − w 0 ∥ 2 \frac{1}{2} \lambda_{c}\left\|w-w_{0}\right\|^{2} 21λcww02添加到微调损失的baseline进行比较,其中 w w w w 0 w_0 w0是所有共享参数 θ s \theta _s θs的扁平化向量及其原始值。系数 λ \lambda λ对VOC设置为0.5,对其他新任务设置为0.05。

如表2(b)所示,我们的方法优于这个基线,它产生了一个介于特征提取(无参数变化)和微调(自由参数变化)之间的结果。我们认为,通过对输出进行正则化,我们的方法比对单个参数进行正则化更能保持旧的任务性能,因为许多小的参数变化可能会导致输出的巨大变化。

Choice of Response Preserving Loss

我们比较了使用 L 1 L1 L1 L 2 L2 L2、交叉熵损失和 T = 2 T=2 T=2的知识蒸馏损失来保持 y o ′ , y ^ o ′ \mathbf{y}_{o}^{\prime}, \hat{\mathbf{y}}_{o}^{\prime} yo,y^o相似。我们在Places2 AlexNet中加入VOC进行测试。表2©显示了我们的结果。结果表明任何损失都没有明显的整体优势或劣势,尽管L2在原始任务上表现不佳。

Effect of Lower Learning Rate of Shared Parameters

我们调查了简单地降低共享参数 θ s \theta _s θs的学习率是否能保持原来的任务表现。结果显示在表2(d)中。降低学习率并不能阻止微调显著降低原始任务性能,而且会降低新任务性能。这表明,仅仅降低共享层的学习率对于保留原始任务是不够的。

V. Discussion

我们解决的问题是,在无法获得原始任务的训练数据的情况下,使视觉系统适应一项新的任务,同时保留原始任务的性能。我们提出了卷积神经网络的"无遗忘学习法",它可以被看作是知识蒸馏和微调的混合体,学习对新任务有辨别力的参数,同时保留训练数据上的原始任务的输出。

这项工作对两种用途有影响。首先,如果我们想扩大现有网络的可能预测集,我们的方法与联合训练的表现相似,但训练速度更快,而且不需要访问以前任务的训练数据。第二,如果我们只关心新任务的性能,我们的方法一直优于目前的标准做法–微调。微调方法使用较低的学习率,希望参数能稳定在一个"好的"局部最小值,而不是离原始值太远。保留旧任务的输出是一种更直接和可解释的方式,以保留为以前的任务学到的重要共享结构。

我们看到了未来工作的几个方向。我们已经证明了LwF对图像分类的有效性,但我们希望在语义分割、检测和计算机视觉以外的问题上做进一步的实验。此外,我们还可以探索该方法的变体,例如保持一组未标记的图像,作为以前学习的任务的代表例子。从理论上讲,在保留来自不同分布的样本的输出的基础上约束旧的任务性能将是有趣的。更为普遍的是,需要有适合不同任务的在线学习的方法,特别是当类具有长尾分布时。

猜你喜欢

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