增量学习主要应用于判别性任务。在这个场景中,分类任务是按顺序学习的。在序列的最后,判别模型应该能够记住所有的任务。从一个任务到下一个任务的简单的微调方法会导致灾难性遗忘,也就是说,无法在之前的任务上保持初始性能。之前提出的方法可以分为四种类型。
第一种方法,称为排练,是保留以前任务的样本。这些样本可以用不同的方式来克服遗忘。该方法不能用于以前任务的数据不可用的场景。此外,这种方法的可扩展也会受到质疑,因为存储样本所需的内存会随着任务的数量线性增长。
第二种方法采用正则化。正则化约束权重的更新,以保持之前任务中的知识,从而避免遗忘。弹性权重增强(EWC)已成为这类正则化的标准方法。它估计权重的重要性,并对正则化进行相应的调整。另一种众所周知的正则化方法是蒸馏,它将之前学到的知识转移到一个新的模型中。它使模型能够同时了解先前的任务和当前的任务。
第三种方法是使用动态架构来维护过去的知识并学习新的信息。实现这种方法的显著方法是渐进网络(PNN)、不遗忘学习(LWF)和PathNet。
第四种,也是最近的一种方法是生成重放,它使用生成模型从之前的任务中生成样本。这种方法也被称为伪排练。
增量学习方法通常是通过在每个任务结束时计算一个度量来评估的。能够保持最高性能的方法是最好的。在判别设置中,分类精度是最常用的度量指标。
损失函数
K是当前任务,
θ
^
i
k
\hat{θ}_i^{k}
θ^ik?是第k个任务训练结束后的网络参数。EWC利用二阶信息来选择重要的参数,在任务A的似然函数的性能曲面上优先沿着平坦的区域搜索任务B的参数。
SI与EWC关键的不同点只在于正则项的系数。其经过的路径上进行积分来衡量参数的重要性。
CWR
- 在第一个任务中,以标准方式对基础神经网络进行训练。
- 第一个任务完成后,除输出层的参数外,网络的所有参数都被冻结。对于输出层的参数,保留了两个副本:一个临时版本表示为tw, 另一个“合并”版本表示为cw。
- 训练由tw完成。在开始每项任务的训练之前,tw会被随机重新初始化。完成每项任务的训练后,对应于该任务类别的tw参数被复制到cw中。
- 对于测试,使用cw
CWR+ 与CWR相比,CWR+有两个不同之处。
- 首先,在每个任务之前,tw中的参数被设置为零,而不是随机(重新)初始化。
- 其次,在每项任务完成后,首先通过减去其平均值来标准化tw中的参数(在该点之前,所有类别均采用平均值,权重和偏差采用单独的平均值),然后将对应于该任务类别的标准化参数复制到cw中。
Memory-Efficient Incremental Learning Through ECCV20 特征蒸馏,余弦损失 训练自适应网络
Can we gain more from orthogonality regularizations in training deep networks NIPS18 特征层的正交损失
一些方法的代码地址 PASS:https://github.com/Impression2805/CVPR21_PASS EEC: https://github.com/aliayub7/EEC PCL: https://github.com/morning-dews/PCL CLIP zero-shot: https://github.com/openai/CLIP
|