2016-ECCV-《Learning without Forgetting》论文阅读笔记

2016-ECCV-《Learning without Forgetting》

论文地址:Learning Without Forgetting | SpringerLink

代码地址:https://github.com/lizhitwo/LearningWithoutForgetting

摘要

1)在构建统⼀的视觉系统或逐步向系统添加新功能时,通常的假设是,所有任务的练数据始终是可用的。 2)然而,随着任务数量的增加,对此类数据的存储和重新训练变得不可行。这就出现了一个新的问题,当我们向卷积神经网络(CNN)添加新功能时,但现有功能的训练数据是不可用的。 3)我们提出了“无遗忘学习”方法,该方法仅使用新的任务数据来训练网络,同时保留原有的功能。 4)与常用的特征提取和微调适应技术相比,我们的方法表现良好,并且与使用我们假设不可用的原始任务数据的多任务学习表现类似。⼀个更令人惊讶的发现是,“不遗忘的学习”可能能够取代微调,成为提高新任务性能的标准做法。

挑战:通常的假设是,所有任务的训练数据总是可用的。但是,随着任务数量的增加,以前的数据不可用了(并不是所有任务的数据都是可用的)。

所以,作者提出了“Learning without forgetting无遗忘学习”。

1 Introduction

挑战:

  • 实际应用往往需要学习新功能。理想情况下,可以在共享旧任务参数的情况下,同时学习新任务,从而不会降低旧任务的性能或者不需要访问旧数据。
  • 但旧数据往往不可用。(遗留的旧数据可能是未记录的、专有的,或者只是太麻烦,从而无法在训练新任务时使用。)
  • 而且我们没有注意到现有工作有解决这个问题的。(虽然和transfer、multitask、lifelong learning相似,但是我们目前还没有看到有任何工作是可以基于调整共享参数 来为不断添加新预测任务的问题 提供解决方案,而不需要访问以前学习任务的训练数据。)

In this paper,我们展示了一个简单但有效的解决方案,用于卷积神经网络(CNN)分类器的各种图像分类问题。

  • 在我们的设置里,a CNN有:
    • 一组共享参数θs(例如,AlexNet架构的5个卷积层和2个全连接层)
    • 用于先前学习的任务的特定(task-specific)参数θo(例如,用于ImageNet分类的输出层和相应权重)
    • 用于新任务的随机初始化的特定(task-specific)参数θn(例如,场景分类器)

目前,有3种常见的方法(图1和图2)来学习θn,同时受益于先前学习的θs:

  • 特征提取(Feature Extraction)[6]:θo和θs保持不变,在训练θn时,将一个或多个层的输出作为新任务的特征。
  • 微调(Fine-tuning)[9]:θo不变,θs和θn对新任务进行了优化。低学习速率通常用于防止θs中的大漂移。原始网络可能会被复制,并针对每个新任务进行微调,以创建一组专门的网络。
  • 联合训练(Joint Training)[3]:所有参数θs、θo、θn都是联合优化的,例如从每个任务中交错采样。

是,这3种方法的每一个都有一个主要缺点。

  • 特征提取(Feature Extraction):在新任务上通常表现不佳,因为共享参数不能表示对新任务具有区别性的一些信息。
  • 微调(Fine-tuning):会降低先前学习任务的性能,因为共享参数会发生变化,而对原始任务特定的预测参数没有新的指导。
  • 联合训练(Joint Training):随着task的增加变得越来越麻烦。而且如果先前任务的数据不可用,则不可能进行联合训练。

我们提出了一个叫做Learning without Forgetting(LwF)的新策略。

  • 仅使用新任务的示例,我们既优化了新任务的高精度,又保留了对原始网络中现有任务的响应。
  • 显然,如果新网络在所有相关图像上产生完全相同的输出,则其精度与原始网络相同。在实践中,新任务的图像可能提供了原始任务域的不良采样。但是,我们的实验表明,保留这些示例的输出(哪些示例?描述的不清楚)仍然是保留旧任务性能的有效策略,并且还具有作为正则化器以改善新任务性能的意外好处。

我们的“不遗忘学习(Learning without Forgetting)“方法有几个优点:

  • 分类性能:不遗忘学习优于特征提取,更令人惊讶的是,在新任务上进行微调,大大优于在旧任务上使用微调参数θs。
  • 计算效率:训练时间比联合训练快,只比微调慢一点,测试时间比使用多个微调网络执行不同任务要快。
  • 部署简单:一旦学习了新任务,就不需要保留或重新应用训练数据,以保持适应网络的性能。

2 Related Work

多任务学习(multi-task learning)、迁移学习(transfer learning)、以及相关的方法,有很长的历史。

LwF(Learning without Forgetting)可以看作是蒸馏网络(Distillation Networks)[10]和微调(fine-tuning)[9]的结合。1)微调使用(在数据丰富问题上训练过的)现有网络的参数进行初始化,并通过优化新任务的参数,以低学习率来找到一个新的局部最小值。2)蒸馏方法的思想是在更简单的网络中学习参数,使得它产生与一个复杂集成网络相同的输出,无论是在原始的训练集上还是在一个大型未标记的数据集上。3)我们方法的不同之处在于我们使用相同的数据,来监督新任务的学习,并为旧任务提供无监督输出指导,从而解决一组在旧任务和新任务上都有效的参数。

我们总结了现有的迁移学习和多任务学习方法,并将它们和我们的方法进行了比较。

  • Feature Extraction:.......。特征提取不会改变以前的网络,并允许新任务从先前任务中学到的特征收益。但是,这些特征并非专门用于新任务,通常可以通过微调来改进。
  • Fine-tuning:.........。我们的方法提供了一种更直接的方法来保存对原始任务重要的表示,相对于微调,他提高了原始任务和新任务的性能。
  • Adding new nodes.......。这种方法的缺点是大大扩展了网络的参数量,如果没有足够的训练数据来学习新参数,则可能表现不佳。我们尝试扩展原始网络的全连接层,但发现扩展并不能改善我们的原始方法。

我们的方法还涉及在网络之间传递知识的方法。Hinton [10]等人提出了知识蒸馏(Knowledge Distillation)[10],即知识从大型网络或网络组件转移到较小的网络,以实现高效部署。较小的网络使用修改后的交叉熵损失进行训练,该损失鼓励原始网络和新网络的大小响应相似。.............这些方法旨在产生一个接近原始网络的不同结构的网络。而我们的目的是为原始网络结构(θs,θo)找到接近原始输出的新参数,同时为新任务调整共享参数θs。

  • 特征提取(Feature Extraction)和微调(Fine-tuning)是领域适应(Domain Adaptation)或迁移学习(Transfer Learning)的特殊情况。
  • 迁移学习(Transfer Learning):使用一个任务的知识来帮助另一个任务。域适应和迁移学习要求两个任务域至少存在未标记的数据。相反,我们感兴趣的是原始任务(即源域)的训练数据不可用的情况。
  • 多任务学习(Multitask learning)[3]:多任务学习与迁移学习的不同之处在于,它旨在通过结合所有任务的共同知识同时提高所有任务。多任务学习需要所有任务的数据,而我们的方法只需要新任务的数据。
  • 终身学习(Lifelong learning)[22]:侧重于灵活地添加新任务,同时在任务之间转移知识。
  • 永无止境的学习(Never End Learning)[14]:专注于建立多样化的知识经验。虽然这些方法与我们的工作主题相关,但它们没有提供一种在没有原始数据的情况下保持现有任务性能的方法。

3 LwF(Learning Without Forgetting)不遗忘学习

给定一个具有共享参数θs和特定于任务的参数θo的CNN,我们的目标是为新任务添加特定于任务的参数θn,并学习在新任务和旧任务上都能很好工作的参数,仅使用来自新任务的图像和标签(即不使用来自现有任务的数据)。网络结构如前面的图2.(e)所示。

  • 共享参数θs
  • 特定于旧任务的参数θo
  • 特定于新任务的参数θn

算法过程,如图3所示:

输入:

  • 对于旧任务,有已经训练得到的CNN的共享参数θs特定于旧任务的参数θo
  • 对于新任务,有新数据(Xn,Yn)

初始化:

  • 将新数据Xn在训练好的CNN网络上跑一遍,得到输出Yo
  • θn参数随机初始化。(θn为特定于新任务的输出层参数

训练过程:

  • 旧任务预测的结果:Yo′​=CNN(Xn​,θs′​,θo′​)
  • 新任务预测的结果:Yn′​=CNN(Xn​,θs′​,θn′​)
  • 定义损失函数:Loss=λ0​Lold​(Yo​,Yo′​)+Lnew​(Yn​,Yn′​)+R(θs​,θo​,θn​)

使用带有正则化的 SGD 训练网络

1) 首先固定 θs,θo 不变,然后使用新任务数据集训练 θn 直至收敛;

2) 然后再联合训练所有参数 θs,θo ,θn直至网络收敛。

损失函数:

  • Loss new:  对新任务,采用常规分类网络的交叉熵损失函数,Yn​与Yn′之间的差异​

https://i-blog.csdnimg.cn/blog_migrate/232ef68b51389d57b62fd302e331f114.png

  • Loss old: 对旧任务,采用蒸馏的交叉熵损失函数,Yo​与Yo′之间的差异​(这里作者对旧任务采用了蒸馏的方式

https://i-blog.csdnimg.cn/blog_migrate/50e66e29736fdbf8bb5e8a8d628ab56b.png

  • 最后整个 Loss 表达式来优化 θs,θo ,θn:(R为正则项)

总结:

LwF可以看作是蒸馏网络和微调的结合。

LwF的整个训练过程和联合训练(Joint Training)有点类似,但不同的是LwF 不需要旧任务的数据和标签,而是用KD蒸馏损失去平衡旧任务的性能,完成了不需要访问任何旧任务数据的增量训练。

疑惑:

训练过程那部分,不是很懂。

在初始化的时候,已经在旧网络上算出了Xn对应的Yo;在训练阶段,又在旧网络上对Xn进行预测算出了Yo′​。这个Yo′​和前面的Yo有什么不同?θs′ ​, θo′​ 和前面的θs,θo有什么不同? (意思是θs′​,θo′​是优化后的参数吗?)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39450145

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值