1 介绍
年份:2021
期刊: 2021CPVR
Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853.
本文提出的SS-IL(Separated Softmax for Incremental Learning)算法,通过分离的softmax输出层和任务级知识蒸馏(TKD),解决了增量学习中的类别灾难性遗忘问题,其中关键步骤包括:1) 分离softmax(SS)层,它通过独立计算新旧类别的softmax概率,阻止了新旧类别间的梯度流动,从而减少了对旧类别输出概率的不平衡惩罚;2) 任务级知识蒸馏(TKD),它为每个任务独立计算软目标,避免了全局知识蒸馏(GKD)可能保留的预测偏差。本文算法属于基于知识蒸馏的算法,因为它特别强调了任务级知识蒸馏(TKD)在解决增量学习中的类别不平衡和灾难性遗忘问题中的作用。同时,它也涉及到基于架构的方法,因为提出了新的分离softmax输出层来调整模型架构。
2 创新点
- 分离Softmax(SS)层:
- 提出了一种新的分离Softmax输出层,该层能够独立处理新旧类别的输出分数,避免了在梯度更新过程中对旧类别的过度惩罚。
- 任务级知识蒸馏(TKD):
- 展示了任务级知识蒸馏(TKD)与分离Softmax层相结合可以有效解决增量学习中的类别不平衡问题,TKD通过为每个任务独立计算软目标,减少了旧模型中的预测偏差。
- 系统性分析:
- 对导致类别分数偏差的根本原因进行了系统性分析,指出了传统softmax概率计算是导致偏差的主要原因,并提出了相应的解决方案。
- 实验验证:
- 在多个大规模增量学习基准数据集上进行了广泛的实验验证,证明了SS-IL在不同增量学习场景下都能取得强于现有技术的准确性,且无需额外的后处理步骤。
- 鲁棒性:
- 证明了SS-IL在不同的实验条件下(如不同的增量任务数量和记忆库大小)都表现出了很好的鲁棒性,尤其是在记忆库大小减小时,模型的准确性下降幅度较小。
- 经验回放(ER)技术:
- 引入了经验回放(ER)技术来保持mini-batch中新旧类别的比例,进一步平衡了模型对新旧类别的更新,提高了模型的预测性能。
3 算法
3.1 算法原理
分离Softmax(SS)层
在增量学习中,我们考虑一个学习代理连续地从增量到达的训练数据批次中学习新类别,并旨在对所有已学习的类别进行良好预测。主要挑战是灾难性遗忘,对于基于示例记忆的CIL方法,通常认为遗忘是由于新旧类别之间的数据不平衡导致的分类分数偏差。为了分析这种偏差的根源,我们考虑了计算所有旧类和新类的输出分数的softmax概率可能是偏差的主要原因。因此,我们提出了分离Softmax(SS)输出层,它通过分别计算新旧类别的softmax概率,阻止了新旧类别间的梯度流动,从而减少了对旧类别输出概率的不平衡惩罚。
任务级知识蒸馏(TKD)
为了进一步解决偏差问题,我们使用了任务级知识蒸馏(TKD)。与全局知识蒸馏(GKD)不同,TKD为每个任务独立计算软目标,避免了GKD可能保留的预测偏差。TKD通过使用每个任务的单独softmax概率进行蒸馏,尝试保留任务级知识,而不保留可能存在于旧模型中的预测偏差。
经验回放(ER)技术
为了确保在mini-batch中保持新旧类别的比例,我们引入了经验回放(ER)技术。ER通过从旧类和新类中均匀地抽取样本,确保了在梯度下降步骤中对旧类别的更新不会被新类别的样本所主导。
损失函数
SS-IL的总体损失函数由两部分组成:分离Softmax交叉熵损失(LCE-SS)和任务级知识蒸馏损失(LTKD)。具体来说,对于增量任务t,损失函数为:
$ L_{SS-IL,t}((x, y), \theta) = L_{CE-SS,t}((x, y), \theta) + L_{TKD,t}(x, \theta) $
其中,$ L_{CE-SS,t} 是分离 S o f t m a x 交叉熵损失, 是分离Softmax交叉熵损失, 是分离Softmax交叉熵损失, L_{TKD,t} $是任务级知识蒸馏损失。
3.2 算法步骤
- 黄色区域:代表旧类别(Old Classes),即在之前任务中已经学习过的类别。
- 红色区域:代表新类别(New Classes),即当前任务中新出现的类别。
- 特征提取器(Feature Extractor):通常是深度卷积神经网络(CNN),用于从输入数据中提取特征。
- SS-Layer(分离Softmax层):这是SS-IL算法的核心部分,它包含两个独立的softmax输出层,一个用于旧类别,一个用于新类别。分离的softmax层使得模型在处理新旧类别时更加平衡,提高了模型对旧类别的保持能力。
- 初始化模型参数:
- 初始化深度神经网络(DNN)模型的参数$ \theta $。
- 增量任务学习:
- 对于每个增量任务$ t
:
a
.
∗
∗
经验回放(
E
R
)
∗
∗
:从
: a. **经验回放(ER)**:从
:a.∗∗经验回放(ER)∗∗:从 D_t
和
和
和 M
中抽取
m
i
n
i
−
b
a
t
c
h
,确保新旧类别的比例。
b
.
∗
∗
前向传播
∗
∗
:计算模型在当前
m
i
n
i
−
b
a
t
c
h
上的输出分数
中抽取mini-batch,确保新旧类别的比例。 b. **前向传播**:计算模型在当前mini-batch上的输出分数
中抽取mini−batch,确保新旧类别的比例。b.∗∗前向传播∗∗:计算模型在当前mini−batch上的输出分数 z_t(x, \theta_t) $。
c. 计算损失:- 分离Softmax交叉熵损失:$ L_{CE-SS,t}((x, y), \theta_t) = L_{CE,t-1}((x, y), \theta_t) \cdot 1{y \in P_t} + DKL(y_t | p_t(x, \theta_t)) \cdot 1{y \in N_t} ,其中 ,其中 ,其中 P_t 表示旧类别, 表示旧类别, 表示旧类别, N_t $表示新类别。
- 任务级知识蒸馏损失:$ L_{TKD,t}(x, \theta_t) = \sum_{s=1}^{t-1} DKL(p_s(x, \theta_{t-1}) | p_s(x, \theta_t)) 。 d . ∗ ∗ 反向传播与参数更新 ∗ ∗ :计算总损失 。 d. **反向传播与参数更新**:计算总损失 。d.∗∗反向传播与参数更新∗∗:计算总损失 L_{SS-IL,t}((x, y), \theta_t) = L_{CE-SS,t}((x, y), \theta_t) + L_{TKD,t}(x, \theta_t) ,并通过随机梯度下降( S G D )更新模型参数 ,并通过随机梯度下降(SGD)更新模型参数 ,并通过随机梯度下降(SGD)更新模型参数 \theta_t $。
- 对于每个增量任务$ t
:
a
.
∗
∗
经验回放(
E
R
)
∗
∗
:从
: a. **经验回放(ER)**:从
:a.∗∗经验回放(ER)∗∗:从 D_t
和
和
和 M
中抽取
m
i
n
i
−
b
a
t
c
h
,确保新旧类别的比例。
b
.
∗
∗
前向传播
∗
∗
:计算模型在当前
m
i
n
i
−
b
a
t
c
h
上的输出分数
中抽取mini-batch,确保新旧类别的比例。 b. **前向传播**:计算模型在当前mini-batch上的输出分数
中抽取mini−batch,确保新旧类别的比例。b.∗∗前向传播∗∗:计算模型在当前mini−batch上的输出分数 z_t(x, \theta_t) $。
- 测试与评估:
- 在所有增量任务学习完成后,使用最终模型参数$ \theta_T $对测试集进行预测和评估。
4 思考
(1)全局知识蒸馏和任务级知识蒸馏?
全局知识蒸馏(General Knowledge Distillation, GKD)和任务级知识蒸馏(Task-wise Knowledge Distillation, TKD)。LGKD将所有任务的知识合并在一起进行蒸馏,而LTKD则为每个任务独立进行蒸馏,这样做有助于减少不同任务间的干扰,特别是在处理增量学习中的类别不平衡和灾难性遗忘问题时。
LGKD (左图)
- 全局Softmax概率:LGKD使用全局的softmax概率$ p_{\tau}^{1:t-1}(x, \theta) 作为软目标( s o f t t a r g e t ),这个概率是结合了从任务 1 到任务 作为软目标(soft target),这个概率是结合了从任务1到任务 作为软目标(softtarget),这个概率是结合了从任务1到任务 t-1 $的所有类别输出分数计算得到的。
- KL散度:LGKD的损失函数基于Kullback-Leibler散度(KL散度),它衡量了模型当前参数$ \theta 下的概率分布 下的概率分布 下的概率分布 p_{\tau}^{1:t-1}(x, \theta) 和之前学习任务上的概率分布 和之前学习任务上的概率分布 和之前学习任务上的概率分布 p_{\tau}^{1:t-1}(x, \theta_{t-1}) $之间的差异。
- 目标:LGKD的目标是使当前模型的输出接近于之前所有任务学习到的全局概率分布,以此来保留之前任务的知识。
LTKD (右图)
- 任务级Softmax概率:与LGKD不同,LTKD为每个任务$ s 独立计算 s o f t m a x 概率 独立计算softmax概率 独立计算softmax概率 p_{\tau}^s(x, \theta) $,仅使用该任务自己的输出分数。
- KL散度:LTKD的损失函数也是基于KL散度,但是它分别计算当前模型参数$ \theta $下的概率分布和之前每个任务学习到的概率分布之间的差异。
- 目标:LTKD的目标是使当前模型的输出接近于每个任务自己的软目标,这样可以减少不同任务间的知识干扰,特别是在新任务学习时不会受到旧任务预测偏差的影响。