增量学习(Incremental Learning)小综述

NewBeeNLP公众号原创出品       node

公众号专栏做者 @Maple小七     web

北京邮电大学·模式识别与智能系统面试


1. 增量学习的概念

1.1 什么是增量学习

人类有终身不断获取、调整和转移知识的能力,虽然在咱们的一辈子中,咱们确实倾向于逐渐忘记以前学习过的知识,但只有在极少的状况下,对新知识的学习会灾难性地影响已经学到的知识,这样的学习能力被称为增量学习的能力。算法

具体来说,「增量学习的能力就是可以不断地处理现实世界中连续的信息流,在吸取新知识的同时保留甚至整合、优化旧知识的能力。」c#

增量学习(Incremental Learning)已经有20多年的研究历史,但增量学习更多地起源于认知神经科学对记忆和遗忘机制的研究,所以很多论文的idea都启发于认知科学的发展成果,本文不会探讨增量学习的生物启发,关于面向生物学和认知科学的增量学习综述可见 Continual lifelong learning with neural networks: A review[1]微信

1.2 为何要增量学习

在机器学习领域,增量学习致力于解决模型训练的一个广泛缺陷:「灾难性遗忘(catastrophic forgetting)」 ,也就是说,通常的机器学习模型(尤为是基于反向传播的深度学习方法)在新任务上训练时,在旧任务上的表现一般会显著降低。网络

形成灾难性遗忘的一个主要缘由是「传统模型假设数据分布是固定或平稳的,训练样本是独立同分布的」,因此模型能够一遍又一遍地看到全部任务相同的数据,但当数据变为连续的数据流时,训练数据的分布就是非平稳的,模型从非平稳的数据分布中持续不断地获取知识时,新知识会干扰旧知识,从而致使模型性能的快速降低,甚至彻底覆盖或遗忘之前学习到的旧知识。app

为了克服灾难性遗忘,咱们但愿模型一方面必须表现出重新数据中整合新知识和提炼已有知识的能力(可塑性),另外一方面又必须防止新输入对已有知识的显著干扰(稳定性)。这两个互相冲突的需求构成了所谓的「稳定性-可塑性困境(stability-plasticity dilemma)」框架

解决灾难性遗忘最简单粗暴的方案就是使用全部已知的数据从新训练网络参数,以适应数据分布随时间的变化。尽管从头训练模型的确彻底解决了灾难性遗忘问题,但这种方法效率很是低,极大地阻碍了模型实时地学习新数据。而增量学习的主要目标就是在计算和存储资源有限的条件下,在稳定性-可塑性困境中寻找效用最大的平衡点。机器学习

1.3 增量学习的特色

增量学习和持续学习(Continual Learning)、终身学习(Lifelong Learning)的概念大体是等价的,它们都是在连续的数据流中训练模型,随着时间的推移,更多的数据逐渐可用,同时旧数据可能因为存储限制或隐私保护等缘由而逐渐不可用,而且学习任务的类型和数量没有预约义(例如分类任务中的类别数)。

但增量学习目前尚未一个特别清晰的定义,所以比较容易与在线学习,迁移学习和多任务学习等概念混淆,「尤为要注意增量学习和在线学习的区别,在线学习一般要求每一个样本只能使用一次,且数据全都来自于同一个任务,而增量学习是多任务的,但它容许在进入下一个任务以前屡次处理当前任务的数据」。上图表现了增量学习和其余学习范式的区别,通常来讲,增量学习有以下几个特色:

  • 学习新知识的同时可以保留之前学习到的大部分知识,也就是模型在旧任务和新任务上均能表现良好。
  • 计算能力与内存应该随着类别数的增长固定或者缓慢增加,最理想的状况是一旦完成某一任务的学习,该任务的观测样本便被所有丢弃。
  • 模型能够重新任务和新数据中持续学习新知识,当新任务在不一样时间出现,它都是可训练的。

因为增量学习问题的复杂性和挑战的多样性,人们一般只讨论特定设置下的增量学习。以一个图像分类模型为例,咱们但愿模型具备增量学习新的图像和新的类别的能力,但前者更多地与迁移学习有关,所以任务增量学习(Task-incremental Learning)和难度更高一点的类增量学习(Class-incremental Learning)是深度学习社区当前主要考虑的增量学习范式。

「本文主要讨论近几年关注度最高的类增量学习范式」,更普遍更详细的增量学习介绍可参考专著《Lifelong Machine Learning》[2]

2. 增量学习的实现方式

增量学习是一个接二连三的学习过程,在这个过程当中,咱们假设模型已经学习了前 个任务: ,当面对任务 和对应的数据 时,咱们但愿能够利用从旧任务中学习到的先验知识帮助 的学习,而后更新模型所学习到的知识。这个过程要求咱们在当前任务 中寻找参数 最小化下面的损失函数:

其中旧数据 是部分可见或彻底不可见的。

增量学习方法的种类有不少种划分方式,本文将其划分为如下三种范式:

  • 正则化(regularization)
  • 回放(replay)
  • 参数隔离(parameter isolation)

其中基于正则化和回放的增量学习范式受到的关注更多,也更接近增量学习的真实目标,参数隔离范式须要引入较多的参数和计算量,所以一般只能用于较简单的任务增量学习。关于其余划分方式和不一样类别的增量学习的优缺点对比可见A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks[3],下面仅介绍基于正则化和回放的增量学习的经典方法以及相关进展。

2.1 基于正则化的增量学习

基于正则化的增量学习的主要思想是「经过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖」,这类方法一般不须要用旧数据来让模型复习已学习的任务,所以是最优雅的一类增量学习方法。Learning without Forgetting (ECCV 2016)[4]提出的LwF算法是基于深度学习的增量学习的里程碑之做,在介绍LwF算法以前,咱们先了解一些最简单的增量学习方法。

上图展现了一个具备多头网络结构的模型学习新任务的不一样策略,其中(a)为已经训练好的基于CNN的原始模型, 表示不一样任务共享的CNN参数, 表示与原始任务相关的MLP参数,当加入一个新的分类任务时,咱们能够增长一个随机初始化的MLP参数 。基于 来学习 的方法包括以下几类:

  • 微调(Fine-tuning):微调没有旧任务参数和样本的指导,所以模型在旧任务上的表现几乎必定会变差,也就是发生灾难性遗忘。

  • 联合训练(Joint Training):联合训练至关于在全部已知数据上从新训练模型,效果最好,所以一般被认为是「增量学习的性能上界」,但训练成本过高。

  • 特征抽取(Feature Extraction):特征抽取只训练 ,共享参数 没有获得更新,虽然不影响模型在旧任务上的表现,但不能有效捕获新任务独有的特征表示,在新任务上的表现一般不如人意。

LwF算法是介于联合训练和微调训练之间的训练方式,LwF的特色是它不须要使用旧任务的数据也可以更新 。LwF算法的主要思想来自于knowledge distillation[5],也就是使新模型在新任务上的预测和旧模型在新任务上的预测相近。

具体来讲,LwF算法先获得旧模型在新任务上的预测值,在损失函数中引入新模型输出的蒸馏损失,而后用微调的方法在新任务上训练模型,从而避免新任务的训练过度调整旧模型的参数而致使新模型在旧任务上性能的降低。算法流程以下图所示,其中 用于权衡模型的稳定性和可塑性。

可是,这种方法的缺点是高度依赖于新旧任务之间的相关性,当任务差别太大时会出现任务混淆的现象(inter-task confusion),而且一个任务的训练时间会随着学习任务的数量线性增加,同时引入的正则项经常不能有效地约束模型在新任务上的优化过程。

很多研究者围绕着LwF算法的思想提出了不少改进策略,比较有名的包括Encoder Based Lifelong Learning (ICCV 2017)[6]提出的基于低维特征映射的EBLL算法,以及Overcoming catastrophic forgetting in neural networks (PNAS 2017)[7]提出的基于贝叶斯框架的EWC算法,EWC算法实际上对应了一个通用的「参数约束」方法,它引入了一个额外的和参数有关的正则损失:

该损失会根据不一样参数的重要性来鼓励新任务训练获得的新模型参数尽可能靠近旧模型参数。后续对EWC做出改进了论文也不少,好比Rotate your Networks: Better Weight Consolidation and Less Catastrophic Forgetting (ICPR 2018)[8]

归纳起来,基于正则化的增量学习方法经过引入额外损失的方式来修正梯度,保护模型学习到的旧知识,提供了一种缓解特定条件下的灾难性遗忘的方法。不过,虽然目前的深度学习模型都是过参数化的,但模型容量终究是有限的,咱们一般仍是须要在旧任务和新任务的性能表现上做出权衡。近几年,很多研究者也提出了各类类型的正则化手段,有兴趣的话能够参考下面的论文:

  • Learning without Memorizing (CVPR 2019) [9]
  • Learning a Unified Classifier Incrementally via Rebalancing (CVPR 2019) [10]
  • Class-incremental Learning via Deep Model Consolidation (WACV 2020) [11]

2.2 基于回放的增量学习

从字面意思上来看,基于回放的增量学习的基本思想就是"温故而知新",在训练新任务时,一部分具备表明性的旧数据会被保留并用于模型复习曾经学到的旧知识,所以「要保留旧任务的哪部分数据,以及如何利用旧数据与新数据一块儿训练模型」,就是这类方法须要考虑的主要问题。

iCaRL: Incremental Classifier and Representation Learning (CVPR 2017)[12]是最经典的基于回放的增量学习模型,iCaRL的思想实际上和LwF比较类似,它一样引入了蒸馏损失来更新模型参数,但又放松了彻底不能使用旧数据的限制,下面是iCaRL设计的损失函数:

LwF在训练新数据时彻底没用到旧数据,而iCaRL在训练新数据时为每一个旧任务保留了一部分有表明性的旧数据(iCaRL假设越靠近类别特征均值的样本越有表明性),所以iCaRL可以更好地记忆模型在旧任务上学习到的数据特征。

另外Experience Replay for Continual Learning (NIPS 2019)[13]指出这类模型能够动态调整旧数据的保留数量,从而避免了LwF算法随着任务数量的增大,计算成本线性增加的缺点。基于iCaRL算法的一些有影响力的改进算法包括End-to-End Incremental Learning (ECCV 2018)[14]和Large Scale Incremental Learning (CVPR 2019)[15],这些模型的损失函数均借鉴了知识蒸馏技术,从不一样的角度来缓解灾难性遗忘问题,不过灾难性遗忘的问题还远没有被满意地解决。

iCaRL的增量学习方法会更新旧任务的参数 ,所以极可能会致使模型对保留下来的旧数据产生过拟合,Gradient Episodic Memory for Continual Learning (NIPS 2017)[16]针对该问题提出了梯度片断记忆算法(GEM),GEM只更新新任务的参数而不干扰旧任务的参数,GEM以不等式约束的方式修正新任务的梯度更新方向,从而但愿模型在不增大旧任务的损失的同时尽可能最小化新任务的损失值。

GEM方向的后续改进还有Efficient Lifelong Learning with A-GEM (ICLR 2019)[17]和Gradient based sample selection for online continual learning (NIPS 2019)[18]

另外,也有一些工做将VAE和GAN的思想引入了增量学习,好比Variational Continual Learning (ICLR 2018)[19]指出了增量学习的贝叶斯性质,将在线变分推理和蒙特卡洛采样引入了增量学习,Continual Learning with Deep Generative Replay (NIPS 2017)[20]经过训练GAN来生成旧数据,从而避免了基于回放的方法潜在的数据隐私问题,这本质上至关于用额外的参数间接存储旧数据,可是生成模型自己还没达到很高的水平,这类方法的效果也不尽人意。

整体来讲,基于回放的增量学习的主要缺点是须要额外的计算资源和存储空间用于回忆旧知识,当任务种类不断增多时,要么训练成本会变高,要么表明样本的表明性会减弱,同时在实际生产环境中,这种方法还可能存在「数据隐私泄露」的问题。

3. 增量学习的应用

增量学习的优势是能够随时训练新数据,不须要保留大量训练数据,所以存储和计算开销都比较小,同时还可以有效避免用户的隐私泄露问题,这在「移动边缘计算的场景」下是很是有价值有意义的。「但目前的增量学习依旧是一个很开放的研究问题,很大程度上还处于理论探索阶段,在不少方面学界都没有达成统一的共识,很多论文给出的结论经常会相互冲突,所以增量学习尚未在细分领域中获得大规模的应用和落地。」

3.1 计算机视觉

大部分增量学习研究都是面向图像分类任务的,近几年也有很多论文将加强学习推广到了更复杂目标检测和语义分割任务上,下面列举了一些有表明性的工做。

图像分类

  • A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019) [21]
  • A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks [22]

目标检测

  • Incremental Few-Shot Object Detection (CVPR 2020) [23]
  • Incremental Learning of Object Detectors without Catastrophic Forgetting (ICCV 2017) [24]

语义分割

  • Modeling the Background for Incremental Learning in Semantic Segmentation (CVPR 2020) [25]
  • Incremental Learning Techniques for Semantic Segmentation (ICCV workshop 2019) [26]
  • Incremental Learning for Semantic Segmentation of Large-Scale Remote Sensing Data [27]

3.2 天然语言处理

目前增量学习的研究主要仍是面向计算机视觉,在天然语言处理领域尚未获得太多关注。一个主要缘由是目前天然语言处理社区的注意力主要集中在以BERT为表明的自监督表示学习上,在大规模预训练模型的推广下,增量学习的应用价值就不是太明显了。

  • LAMOL: LAnguage MOdeling for Lifelong Language Learning (ICRL 2020) [28]
  • Episodic Memory in Lifelong Language Learning (NIPS 2019) [29]
  • Continual Learning for Sentence Representations Using Conceptors (NAACL 2019) [30]
  • Neural Topic Modeling with Continual Lifelong Learning (ICML 2020) [31]
  • Incremental Natural Language Processing: Challenges, Strategies, and Evaluation (COLING 2018) [32]

3.3 机器人

机器人是增量学习自然的应用场景,由于机器人必须学会经过连续的观察来适应环境并与之互动,增量学习正好可以很好地刻画真实世界的环境,不过机器人领域自己有不少更重要的问题须要解决,所以增量学习的应用也不太多。

  • Continual Learning for Robotics: Definition, Framework, Learning Strategies, Opportunities and Challenges [33]
  • Efficient Adaptation for End-to-End Vision-Based Robotic Manipulation (ICML workshop 2020) [34]

4. 增量学习面临的问题和挑战

4.1 定量评估指标

增量学习的一些常见评估指标包括「准确率、记忆能力和迁移能力」等,其中记忆能力和迁移能力是衡量模型可塑性和稳定性的指标,但这些指标具体的公式定义倒是有争议的。虽然人们已经提出了各类各样的增量学习方法,可是在基准数据集的选取和评估算法有效性的指标上尚未达成普遍的共识。

其中一点是增量学习一般须要引入额外的超参数来平衡模型的稳定性和可塑性,这些超参数一般在验证集上被优化,「但这本质上违反了增量学习不能获取将来数据的因果律,从而会致使人们做出过于乐观的结论,在真实的生产环境中经常没法重现实验结果。」

针对超参数选取的问题,A continual learning survey: Defying forgetting in classification tasks (2020)[35]提出了一种通用的增量学习超参数搜索框架,并设计了一系列相对公平的指标来比较增量学习算法,汇报了一些SOTA增量学习算法的表现。

在此基础上,Class-incremental learning: survey and performance evaluation (2020)[36]在多个数据集上对最新的一些增量学习方法进行了综合对比,做者发如今基于正则化的增量学习中,最先提出的LwF算法的表现是至关稳健的,许多后续改进的方法在一些条件下反而不如LwF算法,另外基于数据约束的方法(LwF)实际上一般比基于参数约束的方法(EWC)表现得更好,然而目前人们的研究注意力是偏向后者的。下面是另一些讨论和提出增量学习评估指标和模型对比的论文,这里再也不一一介绍:

  • A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019) [37]
  • Don’t forget, there is more than forgetting: new metrics for Continual Learning (ICML workshop 2020) [38]
  • Towards robust evaluations of continual learning [39]

4.2 真正的增量学习

增量学习自己是一个很开放的概念,目前人们研究的基于深度学习的增量学习大多限制在「有监督分类、任务式增量和多头网络结构的框架」下,这种特定领域的训练方案一般不能直接应用于高度动态化和非结构化的真实环境中,Towards Robust Evaluations of Continual Learning[40]指出「多头设定下的增量学习隐藏了增量学习问题真正的难度」。另外,虽然目前人们主要研究的是有监督学习,但探索更接近真实环境的无监督增量学习,以及其余类型的增量方式也是很是有意义的。

目前的增量学习方法一般「隐式地要求任务的性质差别不能太大」,当任务的性质和难度差别太大时,大部分增量学习方法的性能都会严重降低,甚至低于简单的基线模型。另外,有很多研究代表「目前尚未任何一种增量学习方法在任何条件下都能表现良好」,大部分增量学习方法「对模型结构,数据性质、超参设定都比较敏感」,所以探索在全部任务设定中表现更稳健的增量学习方法也是颇有意义的。

一块儿交流

想和你一块儿学习进步!『NewBeeNLP』目前已经创建了多个不一样方向交流群(机器学习 / 深度学习 / 天然语言处理 / 搜索推荐 / 图网络 / 面试交流 /  等),名额有限,赶忙添加下方微信加入一块儿讨论交流吧!(注意必定要备注信息才能经过)

本文参考资料

[1]

Continual lifelong learning with neural networks: A review: https://arxiv.org/pdf/1802.07569.pdf

[2]

《Lifelong Machine Learning》: https://www.cs.uic.edu/~liub/lifelong-machine-learning-draft.pdf

[3]

A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks: https://arxiv.org/abs/2011.01844

[4]

Learning without Forgetting (ECCV 2016): https://arxiv.org/abs/1606.09282

[5]

knowledge distillation: https://arxiv.org/abs/1503.02531

[6]

Encoder Based Lifelong Learning (ICCV 2017): https://arxiv.org/abs/1704.01920

[7]

Overcoming catastrophic forgetting in neural networks (PNAS 2017): https://arxiv.org/abs/1612.00796

[8]

Rotate your Networks: Better Weight Consolidation and Less Catastrophic Forgetting (ICPR 2018): https://arxiv.org/abs/1802.02950

[9]

Learning without Memorizing (CVPR 2019): https://arxiv.org/abs/1811.08051

[10]

Learning a Unified Classifier Incrementally via Rebalancing (CVPR 2019): https://openaccess.thecvf.com/content_CVPR_2019/papers/Hou_Learning_a_Unified_Classifier_Incrementally_via_Rebalancing_CVPR_2019_paper.pdf

[11]

Class-incremental Learning via Deep Model Consolidation (WACV 2020): https://arxiv.org/abs/1903.07864

[12]

iCaRL: Incremental Classifier and Representation Learning (CVPR 2017): https://arxiv.org/abs/1611.07725

[13]

Experience Replay for Continual Learning (NIPS 2019): https://arxiv.org/abs/1811.11682

[14]

End-to-End Incremental Learning (ECCV 2018): https://arxiv.org/abs/1807.09536

[15]

Large Scale Incremental Learning (CVPR 2019): https://arxiv.org/abs/1905.13260

[16]

Gradient Episodic Memory for Continual Learning (NIPS 2017): https://arxiv.org/abs/1706.08840

[17]

Efficient Lifelong Learning with A-GEM (ICLR 2019): https://arxiv.org/abs/1812.00420

[18]

Gradient based sample selection for online continual learning (NIPS 2019): https://arxiv.org/abs/1903.08671

[19]

Variational Continual Learning (ICLR 2018): https://arxiv.org/abs/1710.10628

[20]

Continual Learning with Deep Generative Replay (NIPS 2017): https://arxiv.org/abs/1705.08690

[21]

A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019): https://arxiv.org/abs/1905.08101

[22]

A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks: https://arxiv.org/abs/2011.01844

[23]

Incremental Few-Shot Object Detection (CVPR 2020): https://arxiv.org/abs/2003.04668

[24]

Incremental Learning of Object Detectors without Catastrophic Forgetting (ICCV 2017): https://arxiv.org/abs/1708.06977

[25]

Modeling the Background for Incremental Learning in Semantic Segmentation (CVPR 2020): https://arxiv.org/abs/2002.00718

[26]

Incremental Learning Techniques for Semantic Segmentation (ICCV workshop 2019): https://arxiv.org/abs/1907.13372

[27]

Incremental Learning for Semantic Segmentation of Large-Scale Remote Sensing Data: https://arxiv.org/abs/1810.12448

[28]

LAMOL: LAnguage MOdeling for Lifelong Language Learning (ICRL 2020): https://arxiv.org/abs/1909.03329

[29]

Episodic Memory in Lifelong Language Learning (NIPS 2019): https://arxiv.org/abs/1906.01076

[30]

Continual Learning for Sentence Representations Using Conceptors (NAACL 2019): https://arxiv.org/abs/1904.09187

[31]

Neural Topic Modeling with Continual Lifelong Learning (ICML 2020): https://arxiv.org/abs/2006.10909

[32]

Incremental Natural Language Processing: Challenges, Strategies, and Evaluation (COLING 2018): https://arxiv.org/abs/1805.12518

[33]

Continual Learning for Robotics: Definition, Framework, Learning Strategies, Opportunities and Challenges: https://arxiv.org/abs/1907.00182

[34]

Efficient Adaptation for End-to-End Vision-Based Robotic Manipulation (ICML workshop 2020): https://openreview.net/forum?id=CVN5cZBFFFG

[35]

A continual learning survey: Defying forgetting in classification tasks (2020): https://arxiv.org/abs/1909.08383

[36]

Class-incremental learning: survey and performance evaluation (2020): https://arxiv.org/abs/2010.15277

[37]

A comprehensive, application-oriented study of catastrophic forgetting in DNNs (ICLR 2019): https://arxiv.org/pdf/1905.08101.pdf

[38]

Don’t forget, there is more than forgetting: new metrics for Continual Learning (ICML workshop 2020): https://marcpickett.com/cl2018/CL-2018_paper_5.pdf

[39]

Towards robust evaluations of continual learning: https://arxiv.org/abs/1805.09733

[40]

Towards Robust Evaluations of Continual Learning: https://arxiv.org/abs/1805.09733


- -




斯坦福大学——人工智能本科4年课程清单

2021-02-13

微软亚洲研究院周明 | 从语言智能到代码智能

2021-02-16

谈一谈算法工程师的落地能力

2021-02-17

跨界出圈 | 谈谈BERT跨模态预训练

2021-02-10



本文分享自微信公众号 - NewBeeNLP(NewBeeNLP)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索