paper02
背景
1 | 现实世界的数据会不断出现新的类别,但模型在学习新类别时容易遗忘旧类别; |
贡献
1 | 由上述三个背景提出了,两个主要矛盾(EASE要解决的两个核心的主要问题): |
方法
图解:
1 | First Incremental Stage: |
公式:
1 | 问题定义与传统方法:1、2、3 |
(1)类增量学习的优化目标:
该公式为理论性问题的定义,表达的是理想的优化目标(CIL的目标);
argmin表示从H中选择一个最理想的模型(错误率最低的模型)
E:对所有的任务合并求期望
Ⅱ:指示函数,预测错误时取 1,否则取 0
该公式表示:在所有已学习任务的数据分布上,寻找一个使分类错误率最小的模型,即不断学习新类别的同时,仍能正确识别旧类别。
(2)基于 Prompt 的预训练模型增量学习:
针对Prompt-based CIL的思想的公式:
:预训练模型的特征提取器(输入图像,prompt),这里的prompt是指:一组可以通过训练更新的向量 :W:分类器权重,判断图像属于哪个类别 :通过损失函数衡量预测结果与真实标签之间的差距,差距越大损失越大交 叉 熵 损 失 :约束 Prompt 的选择或学习过程损 失
(3) 基于可扩展 Backbone 的增量学习:
冻结旧 Backbone,再新增一个 Backbone 学习当前任务;将新旧 Backbone 的特征拼接起来,同时使用当前任务数据和保存的旧样本来训练一个更大的统一分类器。
特征拼接:([\bar{\phi}{\mathrm{old}}(x),\phi{\mathrm{new}}(x)]),由旧 Backbone 与新 Backbone 的特征组成,旧 Backbone 的参数保持冻结。
分类器:(W_E\in\mathbb R^{2d\times |\mathcal Y^b|})。
该方法有两个缺点:1.参数量太大2.依赖旧样本
由此引出,EASE:不再增加参数量较大的Backbone,而是增加轻量的Adapter
(4)
MLP:ViT 的每个 Transformer Block 里,本来就有一个 MLP 模块。
主干网络保持不动,在 MLP 旁边增加一条很小的支路,这条支路就是 Adapter
1 | ┌──────── MLP ───────────┐ |
:降维(不希望增加太多参数),把高维特征压缩到一个很小的瓶颈空间,因此Adapter 经常被称为:bottleneck module,瓶颈模块。
:非线性激活,让 Adapter 不只是做简单的线性变换,而能够学习更复杂的任务特征。原来的 ViT 给一个通用特征,Adapter 再在这个通用特征上增加一点当前任务需要的修正。
所以 Adapter 不是把原来的特征完全推翻,而是增加一个残差项。
(5)
:预训练模型的特征提取 :线性分类 :分类损失,比较预测结果和真实标签y之间的差距
(6)
- 每一个 Adapter 都提取一次特征、然后把它们拼接
- 这里容易知道,可以低成本的拓展新的特征子空间,旧类别在新空间中的prototype怎么办
(7)
- 主要作用:把同一个类别的所有样本特征取平均,得到这个类别的 Prototype(类别原型)
:第 (i) 个类别,在 Adapter (A_b) 对应子空间中的类别原型 :图片 (x_j) 经过预训练 Backbone + Adapter (A_b) 后得到的特征 :(指示函数)只把属于类别 (i) 的样本挑出来- 最终得到:某个类别在特征空间中的“中心位置”
(8) 新旧类别的语义相似度计算:
计算旧类别 (i) 和新类别 (j) 在旧子空间里的余弦相似度
旧子空间:co-occurrence space,在这个空间里,旧类别和新类别的 Prototype 都能够得到
:旧类别在旧子空间里的 Prototype :新类别在旧子空间里的 Prototype :新类别在新子空间里的 Prototype :我们最终想估计的旧类别在新子空间里的 Prototype把相似度做 Softmax:$ \mathrm{Sim}{i,j} = \frac{ \exp(\mathrm{Sim}{i,j}) }{ \sum_j\exp(\mathrm{Sim}_{i,j}) } $把相似度转换成一组可以用于加权的权重
(9) 语义引导的旧类别原型补全:
- 用新类别在新子空间中的 Prototype,按照公式(8)得到的类别相似度进行加权组合,从而估计旧类别在新子空间中的 Prototype。
- 用公式8得到的关系,在新的Adapter重建特征
- 7:提取 Prototype–>8:计算类别关系–>9:补全 Prototype
(10)
- 公式(6)已经把测试图像的所有子空间特征拼接起来了
,现在 Prototype 也要对应地在所有子空间中都有表示,于是对于某个类别,就可以得到: ,然后拿它和: 做相似度比较。得到下方的公式11
(11)
- 同一个类别在不同子空间里分别和测试图像做匹配,然后把这些匹配分数加起来
(12)
- 某个类别应该最适合在它自己任务对应的 Adapter 中识别
:类别 (b) 所属任务自己的专属子空间得分 :其他子空间的得分仍然保留,但统一乘一个较小的系数 α
实验
EASE 在 7 个 CIL 基准数据集上整体取得了最优或具有竞争力的性能;相比 Prompt-based 方法,它在相近的参数开销下性能更高;相比传统 exemplar-based CIL 方法,它无需保存旧类别样本仍能取得较好结果。消融实验进一步表明,任务特定 Adapter、语义引导原型补全和子空间重加权三个模块均能有效提升性能;t-SNE 可视化和超参数实验也验证了任务特定子空间的有效性以及方法的稳定性。
论文自己也指出一个限制:虽然 Adapter 很轻量,只占 Backbone 参数量的一小部分,但随着任务越来越多,仍然需要不断保存新的 Adapter,因此模型大小还是会逐渐增长,未来可以考虑对 Adapter 进行压缩。