Motivation
动机:
- 人类学习系统:人类能够通过不同任务之间的知识重用和改进,在学习新任务时很少或没有遗忘。
- 机器学习系统:当前的机器学习系统在面对新任务时常常需要从头开始训练模型,不能有效地重用以前的知识。同时,数据隐私和数据集成问题使得一体化训练变得困难。
Motivation (2)
进一步的动机:
- 持续学习一直是机器学习社区的长期关注点,但在很长一段时间里未得到足够重视。
- 随着深度神经网络的普及,终身学习逐渐受到关注,尤其是在人工通用智能(AGI)讨论的背景下,持续学习被认为是实现AGI特性的一种可行方法。
持续监督学习的背景:
在深度神经网络的背景下,持续学习被定义为一种能够从连续的信息流中学习的自适应过程,信息随着时间的推移逐步变得可用,任务的数量(如分类任务中的类别)没有预定义。
an adaptive process capable of learning from a continuous stream of information, with such information becoming progressively available over time and where the number of tasks to be learned (e.g., membership classes in a classification task) are not predefined.
Types of Continual Learning:
• Supervised
• Unsupervised
• Reinforcement
Definition
持续监督学习的定义:
- 给定一系列任务,每个任务都有对应的标注样本。持续监督学习的目标是在最小化经验风险的同时,为这些任务学习一个模型 f(X;θ)。
这里的经验风险指的是模型在当前任务上的误差。在持续学习中,模型需要通过逐步调整来优化每个任务的表现,而不会过度增加模型的复杂度或计算需求。
需求:
- 使用一个学习器处理所有任务,并按顺序更新学习器:这意味着在处理每个任务时,不是重新训练一个新模型,而是不断调整现有模型以适应新任务。
- 很少或不能访问之前任务的数据:这增加了持续学习的挑战,因为模型在学习新任务时不能依赖之前的任务数据来保持旧知识。
- 模型容量和计算需求的最小增加:为了让模型能够长期有效工作,保持其高效性和可扩展性,模型的容量和计算需求必须尽量保持较低水平。
- 保持塑性和稳定性:塑性指的是模型能够学习新任务的能力,而稳定性则指的是模型在学习新任务时不忘记之前任务的知识。
D(t) 是表示在时间 t 时刻的任务数据集。具体来说:
- X(t):这是在时间 t 时刻从任务 Tt 中得到的输入数据集。它可以包括多个样本,例如图像、文本或其他类型的数据,具体取决于任务的性质。
- Y(t):这是对应于输入数据 X(t) 的标签或输出。这些标签是监督学习中的目标变量,比如对于图像分类任务,标签可能是图片的类别。
所以,D(t)={X(t),Y(t)} 代表了在时间 t 时刻所观察到的任务数据的输入和对应的标签。
Catastrophic Forgetting
灾难性遗忘:
- 在持续学习过程中,学习新任务时可能会干扰或忘记之前任务的知识,这种现象被称为灾难性遗忘。
这是持续学习的一个主要挑战。当模型适应新任务时,可能会遗忘之前学到的内容,导致在旧任务上的表现下降。这需要通过特定的方法来加以缓解,例如通过知识回放或正则化方法。
Scenarios
持续监督学习的场景:
- 任务增量Task-incremental:任务给定时,测试样本是属于第一个还是第二个类别的任务?
假设模型已经学习了多个任务(比如任务 A、任务 B),在每个任务中,数据可能包含两个类别(例如:任务 A 包含“猫”和“狗”,任务 B 包含“汽车”和“自行车”)。在测试时,模型会明确知道测试样本属于哪个任务(比如属于任务 A),因此只需要判断样本属于任务 A 中的哪一个类别(比如是“猫”还是“狗”)。
- 域增量:任务未给定时,测试样本是属于第一个还是第二个类别?两个类别中区分
- 类别增量:任务未给定时,测试样本属于哪个类别?所有类别中区分
扩展解释: 这些场景描述了模型在不同情况下如何处理持续学习的问题。例如,在任务增量场景中,模型需要在已知任务的前提下区分类别,而在类别增量场景中,模型需要在不知道任务的情况下进行分类。
Metrics
持续监督学习的指标:
- 对于所有任务 i,它们在任务 T 上的表现如何?RT,i表示模型在任务 i 上的表现,使用模型在完成所有任务(即任务 T)之后的状态进行评估。
- 对于任务 T前的所有任务 i,它们在任务 T 之后的表现与之前任务上的表现之间的差异。
- 对于所有任务 i,从第二个任务开始,它们在之前时间步(i−1)的表现与如果该任务是单独学习时的表现之间的差异。
这些指标用于评估模型在持续学习中的表现,特别是如何在学习新任务时保持对旧任务的记忆。
持续监督学习的方法:
- 正则化方法:通过限制新任务中参数的变化来控制模型的学习。
- 回放方法:存储或生成之前任务的样本,在学习新任务时重放这些样本。
- 架构方法:为不同的任务分配不同的网络参数,可能通过增加网络来适应新任务。
- 混合方法:结合多种方法来提高持续学习的效果。
这些方法提供了不同的途径来应对持续学习中的挑战,尤其是如何避免灾难性遗忘。正则化方法通过限制参数变化来保持旧知识,回放方法通过重放旧样本来强化记忆,而架构方法则通过动态调整模型结构来适应新任务。
总结
What is continual learning?
Learn from a stream of data with changing data distribution,with goal of transferring knowledge between tasks →learn knowledge and adapt new task,meawhile retaining and use previous knowledge,prevent catastrophic forgetting (?)→weight
Main task is retain consistency of previous tasks,prevent forgot previous task
3 settings: class/ domain/task incremental learning
3 big method replay methods/regularization-based methods/parameter isolation methods
1.Replay methods :
Replay samples of old tasks when learning new tasks, to defy forgetting.复习法
rehearsal/ pseudo rehearsal /constrained
①Rehearsal
iCaRL(Incremental Classifier and Representation Learning) keep some old instances of each class incremental classifier and representation learning :save exemplar sampler for each class(representation课代表)
也就是对于每个类保留一些最经典最有代表性的例子
+
不需要频繁更新分类器的最后一层(在典型的深度学习分类模型中,softmax 分类器的最后一层权重是根据训练数据进行优化的。当模型学习新任务时,新的数据会更新这些权重,使其适应新的分类任务。然而,这种更新往往会破坏旧任务的权重设置,导致模型遗忘以前的知识。),避免对旧任务的破坏,也就是不依赖于更新最后一层的权重,而是使用示例样本的特征均值进行分类
即使新任务的学习导致表示变化,只要示例样本的特征均值保持一致,分类性能就不会显着下降。
优 keep robust,prevent catastrophic forgetting
缺 memory need,over-fitting
②pseudo rehearsal :Instead of storing old instances,
input random data(similar to old task)into network[generative model],to produce similar sample from last task
在伪复述中,系统不会存储之前任务的真实数据样本,而是生成与旧任务数据分布
相似的伪样本。
Generative network:GAN transformer
优 decreasing memory need,prevent over-fitting
缺 Substantial training cost,unpredictable accuracy,hard to generate model,
③constrained
GEM:gradient episodic memory We can’t re-train on stored instances from previous task,
otherwise we would overfit So, we constrain the performance on these instances instead!
约束性能:在训练新任务时,GEM通过计算当前任务的梯度,并与存储在记忆库中的过去任务实例的梯度进行比较。如果当前梯度可能导致过去任务实例的损失增加,GEM会调整这个梯度方向和大小,使其对过去任务实例的影响最小化。具体来说,GEM使用一种梯度投影方法来确保新任务的训练不会显著增加旧任务实例的损失
That’s mean loss function which contain the task gradient now must less than past→constrained
优 don’t need retrain,prevent catastrophic forgetting
缺 high cost when calculating,memory,influence new task study
共享生成器+任务特定分类器
2.regularization-based methods
Use a regularization term (loss + penalty)in the loss function to consolidate previous learning 正则项约束参数变化法
Prior-focused /Data-focused 前者主要依赖模型参数的先验知识,通过对模型参数施加约束,来保持对旧任务的记忆。后者策略则依赖于旧任务的数据,通过数据重放或生成来帮助模型巩固旧任务的知识。
LwF uses knowledge distillation to retain consistency of previous tasks→learn from teacher’s logits→Data-focused
什么是知识蒸馏?
训练教师模型:
首先训练一个大型的、性能良好的教师模型,使其在给定任务上达到较高的准确率。
生成logits:
用教师模型对训练数据进行推理,生成每个样本的 logits。这些 logits 包含了教师模型的输出分布。
训练学生模型:
用生成的 logits 和原始标签一起训练学生模型。学生模型的损失函数通常包括两部分:一部分是学生模型的输出与原始标签之间的标准损失(如交叉熵损失),另一部分是学生模型的输出与教师模型 logits 之间的损失(如Kullback-Leibler散度)。
也就是将一个复杂的大模型(称为“教师模型”)的知识压缩到一个较小的模型(称为“学生模型”)中。通过这种方式,学生模型可以在保留教师模型性能的同时,以更少的参数量和计算开销进行推断。
什么是logits?
教师模型的输出logits:
对于一张输入图像,教师模型的输出可能是[2.5, 1.0, 0.3],这表示模型对三个类别的置信度分别是2.5、1.0和0.3。
直接标签训练:
如果使用标签进行训练,学生模型只能知道该图像的真实类别是第一个类别(例如,标签为[1, 0, 0])。
通过logits进行训练:
学生模型在训练过程中,通过匹配教师模型的logits来进行学习。学生模型的目标是生成与教师模型相似的logits(例如,接近[2.5, 1.0, 0.3])。这不仅让学生模型知道该图像主要属于第一个类别,还让它了解该图像与其他类别的相似度,从而捕捉更丰富的特征。
Logit也可以称为软标签(Soft Targets):
在知识蒸馏中,教师模型不仅会给出标准的硬标签(如0或1,表示分类的结果),还会给出每个类别的概率分布。这些概率分布被称为软标签,包含了更多的关于类别之间关系的信息。
利用旧任务的软标签来保持旧知识。模型在训练新任务时不仅学习新任务的特征,还通过蒸馏损失保留了对旧任务的记忆,从而有效防止了灾难性遗忘。
优 prevent catastrophic forgetting by constrain parameter changing,dont need to store old memory,advantage of knowledge distillation(LwF 利用旧任务模型提供的丰富信息,帮助新任务模型更好地学习),Suitable for multi-task learning
缺 high cost when calculating,memory,influence new task study(限制类的策略都会有这个缺点),reley on old model,
Elastic weight consolidation find important parameter in previous task to prevent it change a lot→Prior-focused 限制重要参数的变化阻止模型忘记旧任务完成方法
Important parameter? Parameter gradients
优 prevent catastrophic forgetting,dont need to store old memory
缺 Issues? Inefficient with large number of task,soft penalty
3.architecture based approach
Use different sub-network prevent any forget(future task change previous weight)
为每个任务设计独立的子网络。每个任务都有自己独立的参数,这些参数在训练该任务时进行优化。
专用参数:每个子网络都有一组独立的模型参数,这些参数只用于特定任务,不会被其他任务共享或修改。
packNet:prune network weight then retain then freeze those task specific weight
冻结重要权重,去掉不重要权重
优 prevent catastrophic forgetting,高效利用模型的容量,适应新任务:不需要存储旧任务数据:
Issues:run out of weight & memory constrains 也就是需要记录很多参数
solution?
使用有效的编码方法来存储权重掩码。例如,可以使用 log_2(num_tasks)
位来存储每个模型参数的掩码,从而减少内存需求。
经验结果:在实验中(例如在 VGG-16 网络上),通过智能存储掩码方法,
内存需求只增加了约6%。
例子:任务编号编码:
任务1:00
任务2:01
任务3:10
任务4:11
参数掩码表示:
参数1被任务1和任务2使用,我们用任务编号表示:
00(任务1)
01(任务2)
编码组合:0001
参数2被任务3和任务4使用,我们用任务
编号表示:
10(任务3)
11(任务4)
编码组合:1011
而不是类似one-hot的编码存储
PackNet 是一个“固定网络”方法,它通过修剪和冻结权重在固定的网络结构中处理多个任务,不增加新的网络单元。
而一些动态架构方法比如PNN,通过动态扩展网络结构,为每个新任务分配专用的网络资源,避免任务之间的干扰。即每次遇到新任务时,通过向现有网络中添加新的网络单元(如新的神经元或新的层),来扩展网络的容量。这种扩展使得每个任务都有专门的网络部分来处理,从而避免新任务的学习影响到旧任务的性能