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

由于增量学习问题的复杂性和挑战的多样性,人们通常只讨论特定设置下的增量学习。以一个图像分类模型为例,我们希望模型具有增量学习新的图像和新的类别的能力,但前者更多地与迁移学习有关,因此任务增量学习(Task-incremental Learning)和难度更高一点的类增量学习(Class-incremental Learning)是深度学习社区当前主要考虑的增量学习范式。
增量学习模型评估
增量学习是一个连续不断的学习过程,在这个过程中,我们假设模型已经学习了前
其中旧数据
增量学习工作中一般通过绘制增量准确率曲线(incremental accuracy curve)和遗忘率曲线(incremental forgetting curve)来评估性能的优劣。其中涉及到的两个主要指标便是准确率(accuracy
)和遗忘率(forgetfulness
)。
- Accuracy: 准确率衡量的是所有学习任务的测试准确性。
简单的解释下,上述公式表示的是在第
个增量阶段,当前模型在所有已见类别上的分类准确率 。而不同阶段的增量准确率常常以增量准确率曲线展示。
- Forgetfulness: 遗忘率衡量的是学习增量任务时平均性能下降程度。
上述公式我们可以简单的理解为模型在学习完当前任务之后在先前任务上的分类准确率。
模型最终评估

数据集划分
以 cifar100 task_num=10 为例
插入表格
Task0 | Task1 | Task2 | |||
---|---|---|---|---|---|
训练集(类别) | [0,1,2,3,4,5,6,7,8,9] | [10,11,12,13,14,15,16,17,18,19] | [20,22,22,23,24,25,26,27,28,29] | …… | |
测试集(类别) | [0,1,2,3,4,5,6,7,8,9] | [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] | [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,22,23,24,25,26,27,28,29] | …… | |
…… |
增量学习的应用
增量学习的优点是可以随时训练新数据,不需要保留大量训练数据,因此存储和计算开销都比较小,同时还能够有效避免用户的隐私泄露问题,这在移动边缘计算的场景下是非常有价值有意义的。但目前的增量学习依旧是一个很开放的研究问题,很大程度上还处于理论探索阶段,在很多方面学界都没有达成统一的共识,不少论文给出的结论常常会相互冲突,因此增量学习还没有在细分领域中得到大规模的应用和落地。
计算机视觉
大部分增量学习研究都是面向图像分类任务的,近几年也有不少论文将增强学习推广到了更复杂目标检测和语义分割任务上,下面列举了一些有代表性的工作。
图像分类
- 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]
自然语言处理
目前增量学习的研究主要还是面向计算机视觉,在自然语言处理领域还没有得到太多关注。一个主要原因是目前自然语言处理社区的注意力主要集中在以 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]
机器人
机器人是增量学习天然的应用场景,因为机器人必须学会通过连续的观察来适应环境并与之互动,增量学习正好能够很好地刻画真实世界的环境,不过机器人领域本身有很多更重要的问题需要解决,因此增量学习的应用也不太多。
- 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]
增量学习面临的问题和挑战
定量评估指标
增量学习的一些常见评估指标包括**「准确率、记忆能力和迁移能力」**等,其中记忆能力和迁移能力是衡量模型可塑性和稳定性的指标,但这些指标具体的公式定义却是有争议的。虽然人们已经提出了各种各样的增量学习方法,但是在基准数据集的选取和评估算法有效性的指标上还没有达成广泛的共识。
其中一点是增量学习通常需要引入额外的超参数来平衡模型的稳定性和可塑性,这些超参数通常在验证集上被优化,「但这本质上违反了增量学习不能获取未来数据的因果律,从而会导致人们作出过于乐观的结论,在真实的生产环境中常常无法重现实验结果。」
针对超参数选取的问题,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]
真正的增量学习
增量学习本身是一个很开放的概念,目前人们研究的基于深度学习的增量学习大多限制在**「有监督分类、任务式增量和多头网络结构的框架」下,这种特定领域的训练方案通常不能直接应用于高度动态化和非结构化的真实环境中,Towards Robust Evaluations of Continual Learning[40]指出「多头设定下的增量学习隐藏了增量学习问题真正的难度」**。另外,虽然目前人们主要研究的是有监督学习,但探索更接近真实环境的无监督增量学习,以及其他类型的增量方式也是非常有意义的。
目前的增量学习方法通常**「隐式地要求任务的性质差异不能太大」,当任务的性质和难度差异太大时,大部分增量学习方法的性能都会严重下降,甚至低于简单的基线模型。另外,有不少研究表明「目前还没有任何一种增量学习方法在任何条件下都能表现良好」,大部分增量学习方法「对模型结构,数据性质、超参设定都比较敏感」**,因此探索在所有任务设定中表现更稳健的增量学习方法也是很有意义的。
半监督
基于半监督范式的增量学习可以通过伪监督的形式利用部分标记数据。然而,伪标签的质量部分仍然取决于标记数据的数量和质量。为此,这些模型仍然需要提供大量标签才能正常工作,因此并没有从根本上解决问题。
不能理解的小伙伴可以思考下,伪标签是怎么得到的?还不是得训练出一个基础模型出来,这个模型训练得不好打出来的伪标签只会让模型表现得更糟糕。
此外,伪标签自带的噪声问题也会随着时间逐渐累计,尤其是对于长增量学习序列的任务来说更是致命的。一种潜在的补救措施是从伪标签转向伪梯度,但是梯度估计也可能随时间推移而发生改变。既然如此,是否存在一种没有任何形式的伪监督的情况下能够直接通过输入统计更新规范化参数的方法呢?让我们后面揭晓。
小样本
小样本学习主要涉及到在增量训练前和增量训练期间均会利用到标签信息。其中,预训练部分的标签复杂度特别高,毕竟它前期仍然需要用到大量的元数据样本,这对于医学成像或视觉异常检测等这类数据匮乏的领域来说,严重限制了它们的作用。
此外,小样本学习范式在增量学习过程中通过冻结主干网络的权重以防止过拟合新晋少量样本的现象。虽然效果很好,但这种做法并不自然,因为人类是具备非常强大的泛化性能,可以利用极少的样本进行学习,例如看过一次的东西大部分人就能够记住这是件什么物品。
自监督
当自监督用于预训练或辅助训练时,自监督增量学习器的标签复杂性与普通增量学习器相当。使用自监督作为唯一的监督信号是在训练期间完全省略标签的关键。然而,单纯的自监督增量学习需要一个单独的标记线性探测阶段用于准确的评估模型迭代的效果,从而限制了它们的适用性。
此外,增量学习的自监督范式完全依赖于基于对比学习的方法来提取监督信号,例如 MoCo 等方法。然而,随着基于掩码重建的 MAE 方法的提出,表明了基于重建的目标显然是优于基于对比学习所得到的的目标,这不失为一个新的探索方向。
展望
通过对以上几种增量学习方法的分析,我们可以进一步总结出更具备现实意义的一些可研究方向。
Mixed-Supervised Learning
混合监督学习在非增量学习是挺常见的一种形式,例如 ECCV 2020 中就出现过一篇《When does self-supervision improve few-shot learning?》的文章,作者便结合了自监督和小样本学习。

另外,也有半监督+小样本结合的监督形式,发表在 NeurIPS 2019 上的 《Learning to Self-Train for Semi-Supervised Few-Shot Classification》。因此,我们是否可以将这种思路借鉴到增量学习任务当中去呢?

Incremental Dense Learning
上面我们所列举的大多数例子均是围绕图像分类任务展开的。然而,对于语义分割这种密集型的预测任务而言,如何解决标签问题是一个棘手的问题,毕竟为图像中的每一个像素都赋予一个新的语义类别是个非常痛苦的工作,还真是谁行谁上。这里首先进行尝试的工作可能是 ICCV 2019 上的 《Recall: Replay-based continual learning in semantic segmentation》,作者通过为旧类重新创建不再可用的数据并概述背景类的内容修复方案来解决这些问题。

一种潜在的解决方案可以考虑引入弱监督的方式对增量目标进行分割,例如发表在 CVPR 2022 上的这篇文章《Incremental learning in semantic segmentation from image labels》便涉及到了。然而,与常规的分割模型相对,这种方式目前的性能还非常有限,大家可以看看如何去提升它。

Incremental Active Learning
在主动学习中,学习代理会选择最有影响力的示例,由人类专家进行注释。这显着降低了标记成本,因为只需一小部分示例足以训练一个好的模型。这方面的代表工作有《Towards robust and reproducible active learning using neural networks》,发表在 CVPR 2022 上。
神奇的是,主动学习在增量学习中几乎没有任何应用,你敢相信吗?然而,这种方法可以帮助选择一小撮范例来辅助半监督或小样本监督范式的增量学习,无论是从预训练还是增量训练的角度,值得一试。
Incremental Object Discovery
对于人类而言,我们几乎可以在不需要任何监督的前提下,展示出惊人的发现前所未见物体的能力,几乎不费吹灰之力便能够对新对象进行分组。然而,现有的增量学习方法普遍没有发现新对象的能力,几乎所有对象都需要被标记,哪怕是 few-shot.
然而,我们知道,这其实并不现实,毕竟真实世界每天都会出现千奇百怪的新生物体。为此,严格意义上来说,增量学习不仅需要具备从有限的标记样本中进行监督学习,还要有挖掘新对象的能力。因此,未来的一个终极研究目标必定是朝着类人方向迈进的,让我们拭目以待!
总结
增量学习的目标是在动态和开放的环境中,使模型能够在保留已有知识的基础上,不断学习新的类别知识。可以说,如果没有积累所学知识并基于已有的知识来逐步学习更多知识的能力,该系统并不能称之为一个真正意义上的智能系统。
通过对本文的阅读理解,相信大家已经对增量学习有了一定的认识。总的来说,本文主要向大家介绍了三种对标签高效的增量学习方法,包括半监督、小样本和自监督。其次,我们着重分析了现有方法的局限性以及给出了一些建议性的意见。最后,为了让各位小伙伴能够实现完整的闭环,我们还额外提供了必要的增量学习框架和一些最新的论文资料供大家进一步实践和学习。在可预知的未来,我们也不难猜测,增量学习必将更多的向下游任务涌入,包括但不仅限于增量目标检测、增量语义分割以及增量视频分析等。