Continual Learning/Lifelong Learning/Incremental Learning

一、浅谈持续学习

持续学习(Continual Learning)又叫终身学习(Lifelong Learning)又叫增量学习(Incremental Learning)。增量学习是可取的,因为它允许通过消除新数据到达时从头再训练的需要来有效地使用资源;通过防止或限制所需存储的数据量来减少内存使用,在施加隐私限制时也很重要;学习更接近于人类的学习。近年来,深度神经网络的增量学习出现了爆炸式增长。最初的工作侧重于任务增量学习,在每个学习阶段处理一个任务。最近,我们看到了向类增量学习的转变,即学习者必须在一个学习阶段时区分之前任务中看到的所有类,而不依赖于当前任务。
Continual Learning/Lifelong Learning/Incremental Learning_第1张图片

二、动机与来源

动机:现代机器学习擅长于从固定的数据集和固定的环境中训练强大的模型,往往超过了人类水平的能力。然而一般的机器学习算法很难在动态的环境中连续自适应的学习,因此,研究者们提出了持续学习算法,来解决该问题。
起源:人类和动物都有能力在其一生中不断地获得、微调和转移知识和技能,所以持续学习模拟了人类大脑的学习思考方式和过程,能够从一个非平稳的世界中的顺序经验中逐步学习。

三、定义

朴素定义:持续学习就是随着时间的推移,不断地处理现实世界中连续的信息流(这些信息逐渐可用),在学习新知识的同时,还保留甚至整合优化旧知识的能力。
精确理解:终身学习系统被定义为能够从连续的信息流中学习的自适应算法,随着时间的推移,这些信息被逐渐可用,并且需要学习的任务数量没有预定义(可以是无限的),重要的是,对新信息的调节应该在没有灾难性遗忘或干扰的情况下发生。
通俗理解:一个模型学习随着时间推移不断增加的序列任务。
(注:持续学习里所说的任务的定义是非常模糊的,并不像语音识别,机器翻译那样划分任务界限那么大,训练一张图像可以作为一个任务,接下来训练另外一张图像可以作为另一个任务,就是在数据流到达的每个时间戳里面的数据集,所以“task”也可以理解为’session’,‘phase’,‘stage’)
Continual Learning/Lifelong Learning/Incremental Learning_第2张图片

四、目标

1.解决灾难性遗忘(干扰)问题
灾难性遗忘就是在学习一个新任务时,会明显降低以前任务上的表现。用新类直接优化网络会抹去前类的知识,导致不可可逆的性能退化。
Continual Learning/Lifelong Learning/Incremental Learning_第3张图片

2.处理可塑性—稳定性困境
可塑性:模型能够极大程度的将之前任务学习到的知识运用到未来任务的学习中,提高学习效率。
稳定性:模型能够保存之前学到的知识,防止新数据的输入明显干扰现有的知识。
所以为了整合新信息,系统必需具有多大的可塑性,为了避免灾难性遗忘,系统必需具有多大的稳定性,这就是可塑性与稳定性困境。

五、增量学习分类

Continual Learning/Lifelong Learning/Incremental Learning_第4张图片

1.任务增量学习

对于持续学习,任务增量学习(TIL)通常作为基本设置,即在训练和测试中都提供任务标识。TIL只需要在相应的任务空间中对实例进行分类,换句话说,任务增量学习事先告诉测试的类属于之前学习的时候划分的哪一个任务,只需要评估出当前测试的类属于给定任务中的哪一个类即可,它不需要跨任务的辨别能力。TIL比CIL更容易,这可以看作是CIL的一个特殊情况。

2.类增量学习

类增量学习(CIL)的特点是任务不可知推理,即在不提供任务标识的情况下进行测试,这对于分类任务来说更自然,但也更具挑战性。类增量学习(CIL)使学习者能够逐步整合新类的知识,并在所有可见的类中建立一个通用的整体分类器。

3.增量域学习

DIL专注于具有概念漂移或分布变化的场景,其中新任务包含来自不同域的实例,但具有相同的标签空间,换句话说,DIL指的是具有分布变化的数据流,其中新任务包含来自不同领域的相同类,例如,卡通和剪贴艺术。

六、持续学习方法

Continual Learning/Lifelong Learning/Incremental Learning_第5张图片

1.基于正则化的方法

向损失函数中加入正则化术语,当学习新数据的时候巩固以前的知识。局限性:新旧任务可能会在这些重要的参数上发生冲突。

权重正则化

当学习新数据的时候,使用模型参数的估计分布作为先验,对以前任务中重要参数的更改会受到惩罚。

数据正则化

这一类基于正则化的方法旨在防止激活漂移,并基于知识蒸馏(最初设计用于从更大的教师网络学习更紧凑的学生网络),在学习新任务时,使用该技术来保持先前数据的表示不会漂移太多。

典型方法:Elastic weight consolidation (EWC)

Continual Learning/Lifelong Learning/Incremental Learning_第6张图片
在这里插入图片描述
Continual Learning/Lifelong Learning/Incremental Learning_第7张图片

Elastic Weight Consolidation (EWC) 是一种用于连续学习(Continual Learning)的技术,旨在解决在已经学习的任务和新任务之间发生的知识遗忘问题。在连续学习中,模型需要学习多个任务,而每个任务都可能涉及不同的输入和输出。模型不受限的变动使得模型会遗忘旧任务上学习到的知识,这就是所谓的知识遗忘问题。

EWC 的主要思想是在训练过程中保留先前任务的知识,以便在学习新任务时能够重用。从新任务数据对模型的干扰的角度,让模型参数受限的变动,阻碍在旧任务上重要参数的变化。具体来说,EWC 使用一个惩罚项来限制新任务训练过程中的权重更新。这个惩罚项是基于先前任务的 Fisher 信息矩阵计算的,Fisher 信息矩阵是一个衡量模型对参数的灵敏度的矩阵。

在 EWC 中,模型首先学习一个任务,然后使用该任务的 Fisher 信息矩阵计算一个惩罚项。这个惩罚项被添加到后续任务的损失函数中,以限制新任务权重的更新,使其不会破坏先前任务的性能。这样,模型可以在连续学习中保留先前任务的知识。

下面是 EWC 的算法步骤:
对第一个任务进行训练,并计算 Fisher 信息矩阵;
对于后续的任务,使用前一个任务的 Fisher 信息矩阵计算惩罚项,然后将惩罚项添加到损失函数中;
对于每个任务,计算惩罚项的加权和,以平衡每个任务的重要性;
优化整个损失函数(包括惩罚项),以更新模型的权重。
EWC 能够在不增加额外存储或计算成本的情况下,很好地解决连续学习中的知识遗忘问题。

2.基于回放的方法

在模型学习新任务的同时加入一些原来任务的数据,让模型能够学习新任务的同时兼顾的考虑旧任务,显式地存储或隐式地生成一组样本作为旧数据的代表,然后与新数据交叉进行增量学习。回放:在未来重用这些示例作为额外的输入,或者使用它们来约束新的任务丢失。

这一工作以原始格式存储样本,或者使用生成模型生成伪样本。回放之前的任务样本,同时学习新任务以减轻遗忘。它们要么作为排练的模型输入重用,要么约束新任务损失的优化,以防止以前的任务干扰。
这一类方法理解起来很简单,当我们担心模型在学习新任务的时候忘了旧任务的时候,那么可以直接通过不断复习回顾的方式来解决。在模型学习新任务的同时加入一些原来任务的数据,让模型能够学习新任务的同时兼顾的考虑旧任务。不过,这样做有一个缺点,就是我们需要一直保存所有旧任务的数据,增加计算量个内存开销,并且同一个数据会出现多次重复学习的情况。
直接回放:将新的任务与存储样本的一个子集结合起来重新训练当前模型(例如:存储采样)。这些方法的性能是联合训练的上限。
生成回放:将随机输入输入到以前的模型,使用输出作为伪样本。也可以使用生成模型(利用以前训练好的模型的概率分布随机生成伪样本),但增加了训练的复杂性。

2.1 内存类型

内存类型有两种,一种是为所有任务固定一个最大的内存大小,那么在学习任务和类越来越多的时候,就需要移除一些样本,那么随着任务的增加,相应的类中可以用于排练的样本数也越来越少;第二种是允许内存持续增长,随着任务和类的增加线性增长,那么只需要添加当前任务中新样本的内存,这强制类在所有任务的排练期间具有稳定的表示,代价是内存的线性增加,这在某些应用程序中可能不适合。在这两种情况下,每个类的样本数量强制相同,以确保所有类的平等表示。

2.2 采样策略

选择样本添加到内存中最简单的方法是从可用数据中随机抽样(随机),这已经被证明是非常有效的,没有太多的计算成本。
iCaRL基于它们对应的特征空间表示(羊群)选择样本。提取所有样本的表示,并计算每个类的平均值。该方法迭代地为每个类选择样本。在每一步中,选择一个样本,当将其添加到其类的样本中时,得到的样本均值最接近真实类均值。
在RWalk中,提出了另外两种采样策略。第一个是计算softmax输出的熵,并选择更高熵的样本(熵)。类似地,第二种方法根据样本与决策边界(距离)的接近程度来选择样本,假设特征空间和决策边界不会发生太大变化。
对于这些抽样策略(随机除外),样本的选择顺序是按照重要性的递减顺序记录的。如果使用了一个固定的内存,并且必须释放一些内存来为新的范例腾出空间,那么重要性较低的范例将首先被移除。

2.3 任务平衡

当在新任务的训练中应用排练时,新类与前类相比的权重由在每一个训练步中两部分之间的损失以及来自两类任务的样本数量来权衡。

2.4 结合排练和数据正则化

几种方法利用Learning without Forgetting中的蒸馏损失结合样本处理激活漂移。然而,Beloudah和Popescu进行了重要的观察,即在使用样本选择时,这个蒸馏技术实际上会损害性能。然而在某些情况下,权重正则化和样本排练的组合可能是有益的此外,当结合使用双蒸馏的辅助未标记数据时,结果进一步改善。
最近对task-IL的研究表明,数据正则化(称为函数正则化)可以提供一种自然的方式来选择数据进行排练,方法是选择高斯过程的诱导点,用于在底层任务特定函数(网络输出)上近似后验信念。进一步探讨了这一方向,但这些方法对类增量的有用性仍有待确定。

2.5 经典方法

PASS(Prototype Augmentation and Self-Supervision for Incremental Learning)
Continual Learning/Lifelong Learning/Incremental Learning_第8张图片
基本流程:
1.为每个旧类记忆一个类原型
Continual Learning/Lifelong Learning/Incremental Learning_第9张图片
2.在新任务训练之前,这些类原型经过高斯噪声增强。高斯噪声也称为自噪声,是一种服从正态分布的随机噪声,在深度学习中,训练时往往会在输入数据中加入高斯噪声,以提高模型的鲁棒性和泛化能力。通过向输入数据添加噪声,模型被迫学习对输入中的微小变化具有鲁棒性的特征,这可以帮助它在新的、看不见的数据上表现得更好。采用原型增强来保持以前任务的决策边界。
在这里插入图片描述
3.对当前任务新的类进行自监督学习,来学习其他任务中更可一般化和可转移的特征,避免过拟合,提高模型的泛化能力,最终提升持续学习的性能。
4.当学习新的类时,特征提取器将会不断更新。为了缓解保存的旧原型与特征提取器之间的不匹配,采用众所周知的知识蒸馏(KD)对特征提取器进行正则化。具体来说,我们通过将当前模型提取的新数据与之前模型的特征进行匹配来约束特征提取器:
在这里插入图片描述
5.最后得到总损失函数
在这里插入图片描述

3.基于模型的方法

为每个任务提供了不同的模型参数或者网络结构,以防止可能的遗忘。

3.1 参数独立的方法

这种方法为每个任务提供了不同的模型参数,以防止任何可能的遗忘。当对模型架构大小没有约束时,可以为新任务增加新的分支,同时冻结以前的任务参数,或者为每个任务提供一个模型副本。或者,体系结构保持静态,为每个任务分配固定的部分。以前的任务部分在新的任务训练中被掩盖,或强加在参数级,或单元级。这些工作通常需要一个任务库,在预测过程中激活相应的掩码或任务分支。

3.2 动态网络结构的方法

深度神经网络被证明可以产生特定于任务的特征。例如,当训练数据集包含“汽车”时,模型倾向于描绘车轮和窗户。然而,如果该模型更新了包含“猫”的新类别,这些功能将会适应胡子和条纹。由于模型的容量有限,适应新特征会导致旧特征的覆盖,忘记。因此,利用提取的胡子和步伐特征对识别汽车是低效率的。为此,动态网络被设计为动态调整模型的表示能力,以适应不断变化的数据流。有几种方法可以扩展表征能力,我们将它们分为三个亚组,即神经元扩展、主干扩展和快速扩展。

3.3 经典方法

Packnet:
Continual Learning/Lifelong Learning/Incremental Learning_第10张图片
DER: Dynamically Expandable Representation for Class Incremental Learning
Continual Learning/Lifelong Learning/Incremental Learning_第11张图片
1.提出了动态可扩展特征表示和两阶段策略来逐步更好的权衡稳定性和可塑性。
2.提出了一个辅助损失来促进新添加的特征模块有效地学习新的类,并提出了一个模型修剪步骤来学习紧凑的特征。
训练流程:
1.每新来一个任务时,就固定原来的特征提取器器,训练一个新的特征提取器,然拼接作为一个总的特征提取网络。在每个增量任务到来时,我们固定了以前的特征表示,并使用新数据和内存旧数据训练的新特征提取器来扩展它,这就使得模型在保持旧任务知识的同时可以获得适用于新增量任务的新知识。
在这里插入图片描述
新的特征提取器尽可能的只用来提取新数据中新的特征。
2.在新的训练阶段通过扩展的特征提取器提取的超级特征输入到分类器做预测。
在这里插入图片描述
3.训练损失函数
Continual Learning/Lifelong Learning/Incremental Learning_第12张图片
4.在新的训练阶段,在新的特征提取器上设置辅助损失用于使得特征提取模块获得更加分散和具有判别性的特征。其中标签空间将旧的类别归为一类,与新的类别一起预测。然后总的损失可以更新为:
在这里插入图片描述
5.为了消除模型冗余并保持一个紧凑的表示,我们根据新数据的复杂性动态地扩展超特征,我们采用基于可微信道级掩模的方法对新的提取器Ft的滤波器进行修剪,其中掩模与表示共同学习。
在这里插入图片描述
其中fl是第l层的输入特征映射,经过一个通道级的掩膜操作,控制当前层的尺寸,得到一个修剪后的特征映射。

4.基于算法的方法

侧重于设计算法,以在以前的任务中维护模型的知识。

4.1 知识蒸馏

为了使旧模型能够帮助新模型,一种直观的方法是知识蒸馏(KD)。KD使知识从教师模型转移到学生模型,这样我们可以教新模式不要忘记。有几种方法可以建立蒸馏关系,我们将这些基于kd的方法分为三个分支,即logit蒸馏、特征蒸馏和关系蒸馏。
Continual Learning/Lifelong Learning/Incremental Learning_第13张图片

4.2偏差修正

偏差修正方法旨在解决任务近因偏差问题,这是指增量学习网络倾向于偏向最近学习任务中的类。这主要是因为,在训练结束时,网络已经看到了上一个任务中的许多类的样本,但没有(或者在排练的情况下很少)来自早期任务的样本。正如Hou等人所观察到的那样,这样做的一个直接后果是,新类的分类器范数比以前的更大,而且分类器偏向于最近的类。这种效果如图4所示,其中分类器的偏差和范数较低,使得网络不太可能选择任何前面的类。在本节中,我们将讨论解决这个问题的几种方法。
SS-IL 解释了权重漂移的原因,这是由新旧实例之间的不平衡现象造成的。由于新类实例的数量远远超过旧类实例,因此用交叉熵损失优化模型将增加新类的权重,减少旧类的权重。
模型校正方法旨在减少CIL模型中的有偏的归纳偏差,并使其与oracle模型对齐。
Continual Learning/Lifelong Learning/Incremental Learning_第14张图片

4.3 经典方法

BiC
解决在大型数据集上由于类别数过大而出现的新类和旧类之间类别不平衡的问题,随着类别的逐渐增加,会出现看起来相似的类别,类别的决策边界不易于区分。
在卷积神经网络中,其中分类层(全连接层)中,对新类有很强的偏向,因此,提出了在最后全连接层之后再添加一个偏差修正层(仅仅是一个含有两个参数的简单线性模型)。因为没有办法对全连接层进行重新训练,所以就对全连接层预测的结果进行后处理(做一个简单的仿射变换),对结果进行修正。
Continual Learning/Lifelong Learning/Incremental Learning_第15张图片
图中数据包括来自旧类的范例和来自新类的样本,被分为第一阶段的训练集和第二阶段的验证集。验证集有助于逼近特征空间中新旧类的真实分布,允许我们估计FC层的偏差。我们发现,偏差可以通过一个小的验证集有效地纠正。
偏置校正层应该简单,含有较少参数,因为验证集的尺寸较小。因此,我们使用一个线性模型(带有两个参数)来纠正偏差。这是通过在网络中添加一个偏置校正层来实现的(如上图所示)。我们保持通过全连接层旧类的输出,并应用一个线性模型来修正新类的输出的偏差,如下所示:
Continual Learning/Lifelong Learning/Incremental Learning_第16张图片
其中,α和β是新类上的偏差参数,而ok是第k个类的输出分数(logits)。请注意,偏差参数(α,β)由所有新类共享,允许我们用一个小的验证集来估计它们。当优化偏置参数时,卷积层和全连接层被冻结。利用分类损失(交叉熵和softmax)对偏差参数进行优化如下:
Continual Learning/Lifelong Learning/Incremental Learning_第17张图片
我们发现,这个简单的线性模型可以有效地纠正在完全连接的层中引入的偏差。

Continual Learning/Lifelong Learning/Incremental Learning_第18张图片
在本文中使用知识蒸馏进行增量学习的基线解决方案。这与图中的第一阶段相对应。对于n个旧类和m个新类的增量学习步骤,我们学习一个新的模型来对n+m个类进行分类,使用旧模型来分类旧n个类(如图所示)。新的模型是通过使用蒸馏损失和分类损失来学习的。
Continual Learning/Lifelong Learning/Incremental Learning_第19张图片
公式1为蒸馏损失,其中将新旧样本都通过一个旧模型计算出分类后的在旧的类别上的软标签,作为蒸馏损失中的软标签,然后再将这些样本通过新模型得到的预测与其做交叉熵损失作为蒸馏损失。
Continual Learning/Lifelong Learning/Incremental Learning_第20张图片
公式2仅为在新模型上做的交叉熵损失。
在这里插入图片描述

评估标准

1.Average Accuracy (ACC)
定义为对最后一个动作(即动作类T)进行训练后所有观察到的动作的平均识别精度:
Continual Learning/Lifelong Learning/Incremental Learning_第21张图片
2.Forgetting Measure (FM)
评估模型在不断训练到动作类t中有多少知识被遗忘。FM越低,模型就越不可能忘记之前学习到的行为。遗忘措施的表述为:
Continual Learning/Lifelong Learning/Incremental Learning_第22张图片
3.Learning Accuracy (LA)
在动作训练后立即评估模型在动作类上的识别性能,反映了模型学习当前新动作的能力。
Continual Learning/Lifelong Learning/Incremental Learning_第23张图片
参考文献:
【1】2022(review) TPAMI_Class-Incremental Learning-Survey and performance evaluation on image classification
【2】2022(review) TPAMI_A Continual Learning Survey-Defying Forgetting in Classification Tasks
【3】2023(review) A Comprehensive Survey of Continual Learning-Theory, Method and Application
【4】2021 ICCV_Else-Net-Elastic Semantic Network for Continual Action Recognition from skeleton data
【5】2023(review) Deep Class-Incremental Learning A Survey
【6】2017 PNAS Overcoming catastrophic forgetting in neural networks
【7】2021 CVPR DER: Dynamically Expandable Representation for Class Incremental Learning
【8】2021 CVPR Prototype Augmentation and Self-Supervision for Incremental Learning
【9】2019 CVPR Large Scale Incremental Learning

你可能感兴趣的:(深度学习,神经网络,人工智能)