batch CL每个task的数据可以训练任意个epoch,但是online CL每个任务的数据都是以流的形式逐渐出现的,只要积累了一小批训练样本,就可以进行学习
inter-task CF指的是学到后面的任务忘了前面的任务
intra-task CF指的是一个任务内,学到后面的batch忘掉了前面batch的知识
因为online CL每个样本只看到一次,所以只有OCL才会intra-task CF
提出两个命题:
交叉熵损失只学习判别性的和有偏见的特征来区分任务中的类别,其他可能在未来可能的任务中对分类有帮助的特征被忽略了,这导致在学习未来任务时出现CF,提出的基于MI的解决方案的目的是处理这个问题
解决该问题的一种方法是确保学习的特征表示 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) 包括足够的监督标签信息,那么特征空间中的清晰类边界将自然生成
然而 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) 的最大值
所以
在数据增量到达时更新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)在分类中起着至关重要的作用,因为它选择重要的特征进行分类。因此,我们允许它为过去的类调整其“视图”,而不是使其与过去的分类器完全一致(真会讲故事)
最右边从上到下,分别
首先复制每个输入图像 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,想增大新来的数据需要等待,一个简单的解决方案是复制原始数据以增加批量大小。但分子将多次出现在分母中,这可能导致模型崩溃,所以使用数据增强来制造伪样本
最后汇总成以下公式,在训练任务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 得到的表示(这不是正则和对比学习吗)
本文提出使用互信息(MI)作为理论框架来处理在线CL中的CF,这是以前没有做过的。所提出的MI公式不仅学习了更全面的特征,还保留了从先前任务中学习到的过去模型
自创一个新理论,讲故事,对比baseline,这故事水平令我大开眼界