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′之间的差异​

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

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

总结:

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

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

疑惑:

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

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

2016-ECCV-《Learning without Forgetting》论文阅读笔记相关推荐

  1. Learning without Forgetting 论文阅读和对应代码详解

    论文地址点这里 一. 介绍 基于终身学习思想,我们希望新任务可以分享旧任务的参数进行学习,同时不会出现灾难性遗忘.在这种场景下,需要开发一种简单有效的策略来解决各种分类任务.基于这种策略和单纯的想法, ...

  2. Dynamic Few-Shot Visual Learning without Forgetting||论文阅读

    元学习论文总结||小样本学习论文总结 2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017 ...

  3. 《Reducing Word Omission Errors in Neural Machine Translation:A Contrastive Learning Approach》论文阅读笔记

    Reducing Word Omission Errors in Neural Machine Translation:A Contrastive Learning Approach 基本信息 研究目 ...

  4. Learning Multiview 3D point Cloud Registration论文阅读笔记

    Learning multiview 3D point cloud registration Abstract 提出了一种全新的,端到端的,可学习的多视角三维点云配准算法. 多视角配准往往需要两个阶段 ...

  5. 论文阅读笔记:SCAN: Learning to Classify Images without Labels

    论文阅读笔记:SCAN: Learning to Classify Images without Labels 摘要 简介和相关工作 方法 表征学习 语义聚类损失 2.3 通过自标记进行微调 3 实验 ...

  6. 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning

    论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...

  7. 【论文阅读笔记】Learning To Detect Unseen Object Classes by Between-Class Attribute Transfer

    摘要: 本文主要研究训练和测试类别不相交时(即没有目标类别的训练示例)的对象分类问题.在此之前并没有对于毫无关联的训练集和测试集进行对象检测的工作,只是对训练集所包含的样本进行分类.实验表明,通过使用 ...

  8. 论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering,SENet,用于大规模子空间聚类的自表达网络

    论文阅读笔记(2):Learning a Self-Expressive Network for Subspace Clustering. SENet--用于大规模子空间聚类的自表达网络 前言 摘要 ...

  9. 论文阅读笔记(8):Structured Sparse Subspace Clustering: A Joint Affinity Learning and Subspace Clustering

    论文阅读笔记(8):Structured Sparse Subspace Clustering: A Joint Affinity Learning and Subspace Clustering F ...

  10. Capture, Learning, and Synthesisof 3D Speaking styles论文阅读笔记 VOCA

    Capture, Learning, and Synthesisof 3D Speaking Styles论文阅读笔记 摘要 制作了一个4D面部(3D mesh 序列 + 同步语音)数据集:29分钟, ...

最新文章

  1. getCacheDir() 和 getFilesDir() 的区别
  2. linux查看占用内存最多的程序
  3. 单例模式存在的问题——破坏单例模式,序列化和反射
  4. 基于PSO的运输优化算法的MATLAB仿真
  5. sql server中对xml进行操作
  6. MySQL索引覆盖扫描(覆盖索引)
  7. JavaEE概念简介
  8. vue路由传参的三种基本方式
  9. 穿越疫情,阿里云3000万补贴助力中小企业寒冬突围
  10. [032] 微信公众帐号开发教程第8篇-文本消息中使用网页超链接(转)
  11. 实战系列-Java中线程安全集合类(二)
  12. 贪心+优先队列 HDOJ 5360 Hiking
  13. Visual Studio 2017 15.9 Previews扩展C++调试功能
  14. 609. 在系统中查找重复文件
  15. 网易有道java面试题,网易有道研发类笔试题
  16. CAN控制器和收发器
  17. umts是移动还是联通_手机网络类型CDMA、GSM、WCDMA是什么意思?
  18. You have to remove (or rename) that container to be able to reuse that name.
  19. 【得物技术】机器学习在图形验证码识别上的应用
  20. 西班牙知名导演:电影产业应与NFT及社区做结合

热门文章

  1. speedoffice(Word)怎么将文字设置成倾斜的
  2. 多个空格的正则表达式
  3. 熬夜给女朋友搭建了一个网站~
  4. VS2017调试Qt源码
  5. VS 2017 生成类图
  6. python 语音合成
  7. 【endnote】利用endnote批量修改参考文献格式
  8. 《乐高EV3机器人搭建与编程》——1.6 小结
  9. Win10 启用照片查看器
  10. 不知道自己适合什么工作,对未来迷茫怎么办?