增量学习
Incremental Learning
1. 概述
1.1 什么是增量学习
人类有终身不断获取、调整和转移知识的能力,虽然在我们的一生中,我们确实倾向于逐渐忘记之前学习过的知识,但只有在极少的情况下,对新知识的学习会灾难性地影响已经学到的知识,这样的学习能力被称为增量学习的能力。
具体来讲,「增量学习的能力就是能够不断地处理现实世界中连续的信息流,在吸收新知识的同时保留甚至整合、优化旧知识的能力。」
增量学习(Incremental Learning)已经有 20 多年的研究历史,但增量学习更多地起源于认知神经科学对记忆和遗忘机制的研究,因此不少论文的 idea 都启发于认知科学的发展成果,本文不会探讨增量学习的生物启发,关于面向生物学和认知科学的增量学习综述可见 Continual lifelong learning with neural networks: A review (opens new window)。
1.2 为什么要增量学习
在机器学习领域,增量学习致力于解决模型训练的一个普遍缺陷:「灾难性遗忘(catastrophic forgetting)」 ,也就是说,一般的机器学习模型(尤其是基于反向传播的深度学习方法)在新任务上训练时,在旧任务上的表现通常会显著下降。
造成灾难性遗忘的一个主要原因是**「传统模型假设数据分布是固定或平稳的,训练样本是独立同分布的」**,所以模型可以一遍又一遍地看到所有任务相同的数据,但当数据变为连续的数据流时,训练数据的分布就是非平稳的,模型从非平稳的数据分布中持续不断地获取知识时,新知识会干扰旧知识,从而导致模型性能的快速下降,甚至完全覆盖或遗忘以前学习到的旧知识。
为了克服灾难性遗忘,我们希望模型一方面必须表现出从新数据中整合新知识和提炼已有知识的能力(可塑性),另一方面又必须防止新输入对已有知识的显著干扰(稳定性)。这两个互相冲突的需求构成了所谓的**「稳定性-可塑性困境(stability-plasticity dilemma)」**。
解决灾难性遗忘最简单粗暴的方案就是使用所有已知的数据重新训练网络参数,以适应数据分布随时间的变化。尽管从头训练模型的确完全解决了灾难性遗忘问题,但这种方法效率非常低,极大地阻碍了模型实时地学习新数据。而增量学习的主要目标就是在计算和存储资源有限的条件下,在稳定性-可塑性困境中寻找效用最大的平衡点。
1.3 增量学习的特点
增量学习和持续学习(Continual Learning)、终身学习(Lifelong Learning)的概念大致是等价的,它们都是在连续的数据流中训练模型,随着时间的推移,更多的数据逐渐可用,同时旧数据可能由于存储限制或隐私保护等原因而逐渐不可用,并且学习任务的类型和数量没有预定义(例如分类任务中的类别数)。
但增量学习目前还没有一个特别清晰的定义,因此比较容易与在线学习,迁移学习和多任务学习等概念混淆,「尤其要注意增量学习和在线学习的区别,在线学习通常要求每个样本只能使用一次,且数据全都来自于同一个任务,而增量学习是多任务的,但它允许在进入下一个任务之前多次处理当前任务的数据」。上图表现了增量学习和其他学习范式的区别,一般来说,增量学习有如下几个特点:
- 学习新知识的同时能够保留以前学习到的大部分知识,也就是模型在旧任务和新任务上均能表现良好。
- 计算能力与内存应该随着类别数的增加固定或者缓慢增长,最理想的情况是一旦完成某一任务的学习,该任务的观测样本便被全部丢弃。
- 模型可以从新任务和新数据中持续学习新知识,当新任务在不同时间出现,它都是可训练的。

由于增量学习问题的复杂性和挑战的多样性,人们通常只讨论特定设置下的增量学习。以一个图像分类模型为例,我们希望模型具有增量学习新的图像和新的类别的能力,但前者更多地与迁移学习有关,因此任务增量学习(Task-incremental Learning)和难度更高一点的类增量学习(Class-incremental Learning)是深度学习社区当前主要考虑的增量学习范式。
「本文主要讨论近几年关注度最高的类增量学习范式」,更广泛更详细的增量学习介绍可参考专著《Lifelong Machine Learning》 (opens new window)。
2. 增量学习的实现方式
增量学习是一个连续不断的学习过程,在这个过程中,我们假设模型已经学习了前
其中旧数据
增量学习方法的种类有很多种划分方式,本文将其划分为以下三种范式:
- 参数隔离(parameter isolation)
- 回放(replay)
- 正则化(regularization)
关于其他划分方式和不同类别的增量学习的优缺点对比可见A Comprehensive Study of Class Incremental Learning Algorithms for Visual Tasks (opens new window)
2.1 基于参数隔离的增量学习
2.2 基于回放的增量学习
从字面意思上来看,基于回放的增量学习的基本思想就是"温故而知新",在训练新任务时,一部分具有代表性的旧数据会被保留并用于模型复习曾经学到的旧知识,因此**「要保留旧任务的哪部分数据,以及如何利用旧数据与新数据一起训练模型」**,就是这类方法需要考虑的主要问题。
总体来说,基于回放的增量学习的主要缺点是需要额外的计算资源和存储空间用于回忆旧知识,当任务种类不断增多时,要么训练成本会变高,要么代表样本的代表性会减弱,同时在实际生产环境中,这种方法还可能存在**「数据隐私泄露」**的问题。
- iCaRL
2.3 基于正则化的增量学习
基于正则化的增量学习的主要思想是**「通过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖」**,这类方法通常不需要用旧数据来让模型复习已学习的任务,因此是最优雅的一类增量学习方法。
基于正则化的增量学习方法通过引入额外损失的方式来修正梯度,保护模型学习到的旧知识,提供了一种缓解特定条件下的灾难性遗忘的方法。不过,虽然目前的深度学习模型都是过参数化的,但模型容量终究是有限的,我们通常还是需要在旧任务和新任务的性能表现上作出权衡。
- LwF
2.4 基于混合的增量学习
2.5 增量学习模型评估
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]指出「多头设定下的增量学习隐藏了增量学习问题真正的难度」**。另外,虽然目前人们主要研究的是有监督学习,但探索更接近真实环境的无监督增量学习,以及其他类型的增量方式也是非常有意义的。
目前的增量学习方法通常**「隐式地要求任务的性质差异不能太大」,当任务的性质和难度差异太大时,大部分增量学习方法的性能都会严重下降,甚至低于简单的基线模型。另外,有不少研究表明「目前还没有任何一种增量学习方法在任何条件下都能表现良好」,大部分增量学习方法「对模型结构,数据性质、超参设定都比较敏感」**,因此探索在所有任务设定中表现更稳健的增量学习方法也是很有意义的。