Abstract&Introduction&Related Work
- 研究任务
OCL - 已有方法和相关工作
- 面临挑战
为了学好新的任务,模型需要修改参数,这导致了CF - 创新思路
- 利用用互信息最大化,减少由交叉熵导致的特征bias,因为交叉熵只学习不同任务特征的区别,但是这些特征在其他任务中不一定有区别,这个方法鼓励每个任务的学习利用整体表征或任务训练数据的全部特征
- 鼓励保存之前学到的知识(吹的好)
- 提出了holistic representation
- 实验结论
batch CL每个task的数据可以训练任意个epoch,但是online CL每个任务的数据都是以流的形式逐渐出现的,只要积累了一小批训练样本,就可以进行学习
inter-task CF指的是学到后面的任务忘了前面的任务
intra-task CF指的是一个任务内,学到后面的batch忘掉了前面batch的知识
因为online CL每个样本只看到一次,所以只有OCL才会intra-task CF
Preliminaries
提出两个命题:
- 最小化CE并不意味着一个类/任务的所有可能的特征都在特征提取器中学习(白猫黑狗)
- 没有学到的特征可能会导致持续学习中的CF,我们可以假设只有一个特征子集是从任务1中学习的。但其中一些未被学习的特征可能是区分任务2的类别所必需的。为了学习这些特征,必须更新从任务1中学习的特征提取器,这就导致任务1中的类的CF。按照上面的例子,如果任务2是要学习识别鸡和猪,而它们有很多颜色。上述两个基于颜色的特征将是不够的。现有的特征提取器需要为任务2进行更新,这就导致了CF的出现
MI Maximization for Continual Learning
交叉熵损失只学习判别性的和有偏见的特征来区分任务中的类别,其他可能在未来可能的任务中对分类有帮助的特征被忽略了,这导致在学习未来任务时出现CF,提出的基于MI的解决方案的目的是处理这个问题
Maximization of MI between Input X X X and f θ ( X ) f_θ(X) fθ(X)
解决该问题的一种方法是确保学习的特征表示 f θ ( X ) f_{\theta}(X)\text{} fθ(X) 是整体的,即它尽可能保留输入 X X X 的特征,以减少特征偏差
建议最大化 X X X 和 f θ ( X ) f_{\theta}(X) fθ(X)之间的互信息 : I ( X ; f θ ( X ) ) \text{:}I(X;f_{\theta}(X)) :I(X;fθ(X)),因为互信息可以检测一般的,可能非线性的关系。我们使用额外的头部 Φ \Phi Φ(例如线性层)来计算 Φ ( f θ ( X ) ) \Phi(f_{\theta}(X)) Φ(fθ(X)) 并最大化 I ( X ; Φ ( f θ ( X ) ) ) I(X;\Phi(f_{\theta}(X))) I(X;Φ(fθ(X)))
Φ ( f θ ( x ) ) \mathop{\Phi}(f_{\theta}(x)) Φ(fθ(x)) 为表示学习创建了一个新的参数空间,其维数比 f θ ( x ) f_\theta(x) fθ(x) 小得多
由马尔可夫链 X → f θ ( X ) → Φ ( f θ ( X ) ) X\to f_\theta(X)\to\Phi(f_\theta(X)) X→fθ(X)→Φ(fθ(X)) 和数据处理不等式有:
I ( X ; f θ ( X ) ) ≥ I ( X ; Φ ( f θ ( X ) ) ) ( 1 ) I(X;f_\theta(X))\geq I(X;\Phi(f_\theta(X)))\quad\quad(1) I(X;fθ(X))≥I(X;Φ(fθ(X)))(1)
数据处理不等式:
所以我们直接优化的是
I
(
X
;
f
θ
(
X
)
)
I(X;f_{\theta}(X))\text{}
I(X;fθ(X)) 的下界
为了简化表示,我们使用 F ( X ) F{(X)} F(X) 表示 n o r m a l i z a t i o n ( Φ ( f θ ( X ) ) ) normalization(\Phi(f_{\theta}(X))) normalization(Φ(fθ(X))) ,将所有输入的表示投影到单位球面
在在线CL情景中,每次使用数据 X n e w ⋃ X b u f X^{n e w}\bigcup X^{b u f} Xnew⋃Xbuf 的迭代都应该最大化: I ( X n e w ⋃ X b u f ; F ( X n e w ⋃ X b u f ) ) ( 2 ) I(X^{new}\bigcup X^{buf};F(X^{new}\bigcup X^{buf}))\quad\quad(2) I(Xnew⋃Xbuf;F(Xnew⋃Xbuf))(2)
如果标签Y被考虑,这个优化还需要改变
F ( X ) F(X) F(X) 和标签 Y Y Y 之间 MI 的最大化
由于在监督学习环境中工作,因此最佳利用标签信息对模型性能至关重要,因为如果学习的表示
F
(
X
)
F(X)
F(X) 包括足够的监督标签信息,那么特征空间中的清晰类边界将自然生成
然而
M
I
I
(
F
(
X
)
;
Y
)
\mathop{\mathrm{MI}}I(F(X);Y)
MII(F(X);Y) 很难计算,因为它们具有非常不同的维度,在这里我们只对其进行分析,并使用分析来指导我们的训练策略和损失的设计来解决问题
重写 I ( F ( X ) ; Y ) I(F(X);Y) I(F(X);Y) 表示为:
I ( F ( X ) ; Y ) = H ( Y ) − H ( Y ∣ F ( X ) ) ( 3 ) I(F(X);Y)=H(Y)-H(Y|F(X))\quad\quad(3) I(F(X);Y)=H(Y)−H(Y∣F(X))(3)
H ( Y ) H(Y) H(Y) 是标签 Y Y Y 的熵,为了最大互信息,这个熵应该最大化,并且标签应该容易地从特征表示中识别(第二项,其在分类训练中自然最小化)
最大化 H ( Y ) H(Y) H(Y) 意味着变量 Y Y Y 应该是平衡的或遵循均匀分布,给出了 H ( Y ) H(Y) H(Y) 的最大值
所以
- 不应该直接优化公式2,这样会造成类别标签不平衡,因此使用 I ( X n e w ; F ( X n e w ) ) + I ( X b u f ; F ( X b u f ) ) I(X^{n e w};F(X^{n e w}))\mathop{+\mathop{I}}(X^{b u f};\mathop{F}(X^{b u f})) I(Xnew;F(Xnew))+I(Xbuf;F(Xbuf)) 作为等式2最大化输入和特征表示之间的MI的替代
- 我们应该只计算 X b u f X^{b u f} Xbuf 的交叉熵损失,并使用它来更新分类器,这是因为从无任务(即,未使用任务id)缓冲区随机采样的数据可以被视为来自所有所见类的近似均匀分布的样本,由于repaly缓冲区是增量更新的,所以 X b u f X^{b u f} Xbuf 包含来自新任务/当前任务的一些数据。从缓冲区中采样当前任务的数据也可以减轻任务间的CF
在数据增量到达时更新replay buffer
F ( X ) F(X) F(X) 和标签 Y Y Y 之间的MI也可以写作:
I ( F ( X ) ; Y ) = H ( F ( X ) ) − H ( F ( X ) ∣ Y ) (4) I(F(X);Y)=H(F(X))-H(F(X)|Y)\quad\text{(4)} I(F(X);Y)=H(F(X))−H(F(X)∣Y)(4)
从这个观点来看,从 F F F 中提取的特征应该在特征空间中均匀分布以最大化 H ( F ( X ) ) H(F(X)) H(F(X)) 为了最小化 H ( F ( X ) ∣ Y ) H(F(X)|Y) H(F(X)∣Y),我们应该使共享同一类的样本彼此接近。也就是说,理想的优化结果是来自同一类的样本应该彼此接近,而不同类的样本应当彼此远离(这不就是对比学习?)
现在和过去的互信息最大化
扯了一堆废话
在训练任务t的时候,当输入的x来自 X b u f X^{buf} Xbuf ,最小化 I ( F 1 : t − 1 ( x ) ; F ( x ) ) I(F^{1:t-1}(x);F(x)) I(F1:t−1(x);F(x))
不最大化 max θ , σ I ( σ 1 : t − 1 ( f θ 1 : t − 1 ( x ) ) ; σ ( f θ ( x ) ) ) \operatorname*{max}_{\theta,\sigma}I(\sigma^{1:t-1}(f_{\theta}^{1:t-1}(x));\sigma(f_{\theta}(x))) maxθ,σI(σ1:t−1(fθ1:t−1(x));σ(fθ(x))) 这个公式
因为模型应该允许先前类的一些概念漂移,因为它需要在先前类和当前类之间建立新的决策边界。分类器(logits)在分类中起着至关重要的作用,因为它选择重要的特征进行分类。因此,我们允许它为过去的类调整其“视图”,而不是使其与过去的分类器完全一致(真会讲故事)
OCM Model
最右边从上到下,分别
- 使模型能够学习类平衡分类器
- 帮助模型学习输入的整体或综合特征表示
- 以减少对先前类的学习模型的遗忘
首先复制每个输入图像 x x x,然后应用水平翻转、随机调整大小的裁剪和随机灰度操作来创建 x ′ x^′ x′:
max θ , Φ I ( X ; F ( X ) ) ≥ max θ , Φ I ( F ( X ) ; F ( X ′ ) ) (5) \max\limits_{\theta,\Phi}I(X;F(X))\geq\max\limits_{\theta,\Phi}I(F(X);F(X^{'}))\quad\text{(5)} θ,ΦmaxI(X;F(X))≥θ,ΦmaxI(F(X);F(X′))(5)
通过证明得到一个下界:
max δ , δ I ( F ( X ) ; F ( X ′ ) ) ≥ log B + InfoNCE ( { x i } i = 1 B ; g ) ( 6 ) InforCE ( { x i } i = 1 B ; g ) = 1 B ∑ i = 1 B log g ( x i , x i ′ ) ∑ j = 1 B g ( x i , x j ′ ) ( 7 ) \begin{array}{cc}\max_{\delta,\delta}I(F(X);F(X^{'}))\geq\log B+\operatorname{InfoNCE}(\{x_{i}\}_{i=1}^{B};g)&(6)\\ \\ \operatorname{InforCE}(\{x_{i}\}_{i=1}^{B};g)=\dfrac{1}{B}\sum_{i=1}^{B}\log\dfrac{g(x_{i},x_{i}^{'})}{\sum_{j=1}^{B}g(x_{i},x_{j}^{'})}&(7)\\ \end{array} maxδ,δI(F(X);F(X′))≥logB+InfoNCE({xi}i=1B;g)InforCE({xi}i=1B;g)=B1∑i=1Blog∑j=1Bg(xi,xj′)g(xi,xi′)(6)(7)
这里: g ( x i , x j ′ ) = e F ( x i ) T F ( x j ′ ) r g(x_{i},x_{j}^{'})=e^{\frac{F(x_{i})^{T}F(x_{j}^{'})}{r}} g(xi,xj′)=erF(xi)TF(xj′)
当 B → ∞ B\rightarrow\infty B→∞,就有 log B + I n f o N C E ( { x i } i = 1 B ; g ) → I ( F ( X ) ; F ( X ′ ) ) \log B+\mathrm{InfoNCE}(\{x_{i}\}_{i=1}^{B};g)\rightarrow I(F(X);F(X^{'})) logB+InfoNCE({xi}i=1B;g)→I(F(X);F(X′)) ,所以当B更大时,不等式就更紧了。
将监督标签引入InfoNCE,并将其重写为:
InfoNCE ( { x i , y x i } i = 1 B ; g ) = α InfoNCE ( { x i } i = 1 B ; g ) + β ∑ i = 1 B ∑ k ; y x k = y x i log g ( x i , x k ) g ( x i , x k ) ′ g ( x i ′ , x k ) ( ∑ j = 1 B g ( x i , x j ) + g ( x i , x j ′ ) + g ( x i ′ , x j ) ) 3 3 B ∑ s = 1 B 1 ( y x s = y x i ) ( 8 ) \operatorname{InfoNCE}(\{x_i,y_{x_i}\}_{i=1}^B;g)=\alpha\operatorname{InfoNCE}(\{x_i\}_{i=1}^B;g)+ \beta\sum\limits_{i=1}^B\frac{\sum\limits_{k;y_{x_k}=y_{x_i}}\log\frac{g(x_i,x_k)g(x_i,x_k)'g(x_i',x_k)}{(\sum\limits_{j=1}^B g(x_i,x_j)+g(x_i,x_j')+g(x_i',x_j))^3}}{3B\sum_{s=1}^B1(y_{x_s}=y_{x_i})}\quad(8) InfoNCE({xi,yxi}i=1B;g)=αInfoNCE({xi}i=1B;g)+βi=1∑B3B∑s=1B1(yxs=yxi)k;yxk=yxi∑log(j=1∑Bg(xi,xj)+g(xi,xj′)+g(xi′,xj))3g(xi,xk)g(xi,xk)′g(xi′,xk)(8)
用旋转来数据增强,这部分是cv的活
在online CL中,batch size往往很小,比如新来到的bs是10,但是buffer中采样的bs也是10,想增大新来的数据需要等待,一个简单的解决方案是复制原始数据以增加批量大小。但分子将多次出现在分母中,这可能导致模型崩溃,所以使用数据增强来制造伪样本
- 局部旋转
- 全局旋转
- 分配16个类:全局和局部旋转的每个组合都分配一个单独的新类c,16个旋转组合总共创建16个类
最后汇总成以下公式,在训练任务t时,对于包含
X
n
e
w
=
{
x
i
,
y
x
i
}
i
=
1
N
a
n
d
X
b
u
f
=
{
x
i
b
,
y
x
i
b
}
i
=
1
N
b
,
X^{n e w}=\{x_{i},y_{x_{i}}\}_{i=1}^{N}\mathrm{~and~}X^{b u f}=\{x_{i}^{b},y_{x_{i}^{b}}\}_{i=1}^{N_{b}},
Xnew={xi,yxi}i=1N and Xbuf={xib,yxib}i=1Nb,的新一批训练数据,我们使用InfoNCE损失作为MI的代理,并使用新的数据增强来扩大批量大小
完成任务训练后,复制训练后的模型,并将副本冻结为先前的模型
当新的一批数据增量到达时,为了保护学习的知识,目标的最后一项使用
X
b
u
f
.
X^{b u f}.
Xbuf. 最大化当前模型和冻结的先前模型之间的MI。它使从
X
b
u
f
.
X^{b u f}.
Xbuf. 中输入样本的当前模型
F
F
F 获得的表示接近于从同一类的输入样本的先前模型
F
1
:
t
−
1
F^{1:t-1}
F1:t−1 获得的表示,并推开从不同类的先前模型
F
1
:
t
−
1
F^{1:t-1}
F1:t−1 得到的表示(这不是正则和对比学习吗)
Experiments
把这两项加入到别人的baseline之后,得到了提升
Conclusions
本文提出使用互信息(MI)作为理论框架来处理在线CL中的CF,这是以前没有做过的。所提出的MI公式不仅学习了更全面的特征,还保留了从先前任务中学习到的过去模型
Remark
自创一个新理论,讲故事,对比baseline,这故事水平令我大开眼界