Zhangzhe's Blog

The projection of my life.

0%

DER: Dynamically Expandable Representation for Class Incremental Learning

URL

https://arxiv.org/pdf/2103.16788.pdf

TL;DR

  • 本文提出一种 动态可扩展表征增量学习方法,目前是增量学习的 SOTA
  • 提出一种两阶段(表征学习阶段分类学习阶段)的增量学习方法,更好的平衡 stability-plasticity (稳定性与可塑性)

Algorithm

问题定义

  • Dt\mathcal{D}_t 表是第 t 次增量学习的数据集,Mt\mathcal{M}_t 表示第 t 次增量学习前的模型(已隐含前 t-1 次增量学习的所有数据),现可获得的所有数据 D~t=DtMt\tilde{\mathcal{D}}_t=\mathcal{D}_t\cup\mathcal{M}_t,用 D~t\tilde{\mathcal{D}}_t 去训练一个新的模型(表征器 + 分类器)

整体结构

der1.png

表征学习阶段

  • 目的:为 D~t\tilde{\mathcal{D}}_t 训练一个表征器(特征提取器)
  • 具体做法:冻结(eval 模式)已有的表征器;为新的增量数据训练一个表征器;两个表征器结果 concat 作为新的表征结果
  • u=Φt(x)=[Φt1(x),Ft(x)]u=\Phi_t(x)=[\Phi_{t-1}(x),\mathcal{F}_t(x)],其中,xDtx \in \mathcal{D}_tΦt1\Phi_{t-1} 表示已有的(前 t-1 次增量数据训练的)表征器,Ft\mathcal{F}_t 表示为第 t 次增量数据训练的表征器,二者结果 concat 即为新的表征结果 uu

分类器学习阶段

  • 由于新加入数据 Dt\mathcal{D}_t 后,特征 uu 的维度和数据分布都发生了变化,所以需要重新训练一个分类器
  • y^=argmaxPHtPHt(yx)=softmax(Ht(u))\hat{y} = argmax_{P_{\mathcal{H}_t}} P_{\mathcal{H}_t}(y|x)=softmax(\mathcal{H}_t(u)),其中 Ht\mathcal{H}_t 表示第 t 次增量学习训练的分类器

算法细节

Training Loss

  • LHt=1D~ti=1D~tlog(PHt(y=yixi))\mathcal{L}_{\mathcal{H}_t} = -\frac{1}{|\tilde{D}_t|}\sum_{i=1}^{|\tilde{D}_t|}log(P_{\mathcal{H}_t}(y=y_i|x_i)),根据新的表征 uu 训练
  • 辅助 loss:LHta=1D~ti=1D~tlog(PHta(y=yixi))\mathcal{L}_{\mathcal{H}_t^a} = -\frac{1}{|\tilde{D}_t|}\sum_{i=1}^{|\tilde{D}_t|}log(P_{\mathcal{H}_t^a}(y=y_i|x_i)),只训练新表征器 Ft\mathcal{F}_t
  • 二者加权相加即为可扩展表征损失函数: LER=LHt+λαLHta\mathcal{L}_{ER}=\mathcal{L}_{\mathcal{H}_t}+\lambda_{\alpha}\mathcal{L}_{\mathcal{H}_t^a}

动态扩展

  • 加入了 Channel-level Masks
  • 加入了稀疏正则化:Sparsity Loss
  • 可扩展表征损失函数加上稀疏正则化即为最终损失函数: LER=LHt+λαLHta+λsLS\mathcal{L}_{ER}=\mathcal{L}_{\mathcal{H}_t}+\lambda_{\alpha}\mathcal{L}_{\mathcal{H}_t^a}+\lambda_s\mathcal{L}_S

表现

der2.png

Thought

  • 正如题目所说,这种增量学习只适用于类别增量,不适用于数据增量,对于类别固定,数据为流式数据(例如:每日回流的数据)并不适用
  • 不适用于流式数据的原因是:这种方法随着增量次数变大,模型会变得越来越大,不适合流式数据这种频繁更新的数据