文章目录
前言
我将看过的增量学习论文建了一个github库,方便各位阅读地址,本文总结的论文位于Regularization文件夹
本文总结2019年ICCV论文《Continual Learning by Asymmetric Loss Approximation with Single-Side Overestimation》(下文简称ALASSO),这篇文献的出发点非常有趣,其利用一个二次函数模拟旧任务的损失函数,在学习第 T T T个任务时,损失函数由第 T T T个任务的损失函数以及模拟旧任务的损失函数两部分构成,从而抵抗灾难性遗忘。本论文针对task incremental任务,不是class incremental任务
本文公式较多,可能会对您在阅读上造成一丝不便,请各位见谅
motivation
设第 T T T个task,对应的损失函数记为 L T L_T LT,假设目前一共有 T T T个task, T T T个task的数据都可以使用,为了让模型具备这 T T T个task的功能,模型的损失函数为 l o s s = ∑ i = 1 T L i = L T + ∑ i = 1 T − 1 L i (式1.0) loss=\sum_{i=1}^T L_i=L_T+\sum_{i=1}^{T-1}L_i\tag{式1.0} loss=i=1∑TLi=LT+i=1∑T−1Li(式1.0)
因为式1.0假设所有数据都可以使用,所以式1.0不会造成遗忘。
在增量的setting中,由于学习task T时,task 1~T-1的数据已经无法使用,所以式1.0的
∑
i
=
1
T
−
1
L
i
\sum_{i=1}^{T-1}L_i
∑i=1T−1Li部分将无法计算,我们只能使用
T
−
1
T-1
T−1时刻的模型,
T
−
1
T-1
T−1时刻的模型,只有参数是可以使用的,那我们能不能让式1.0与参数扯上关系呢?我们将式1.0进行更改,变为
L
T
+
∑
i
=
1
T
−
1
L
i
=
L
T
+
∑
i
=
1
T
−
1
(
L
i
f
i
n
i
s
h
+
L
i
c
h
a
n
g
e
(
θ
)
)
=
L
T
+
∑
i
=
1
T
−
1
L
i
f
i
n
i
s
h
+
∑
i
=
1
T
−
1
L
i
c
h
a
n
g
e
(
θ
)
(式1.1)
\begin{aligned} L_T+\sum_{i=1}^{T-1}L_i&=L_T+\sum_{i=1}^{T-1}(L^{finish}_i+L_i^{change}(\theta))\\&=L_T+\sum_{i=1}^{T-1}L^{finish}_i+\sum_{i=1}^{T-1}L_i^{change}(\theta)\tag{式1.1} \end{aligned}
LT+i=1∑T−1Li=LT+i=1∑T−1(Lifinish+Lichange(θ))=LT+i=1∑T−1Lifinish+i=1∑T−1Lichange(θ)(式1.1)
L
i
f
i
n
i
s
h
L^{finish}_i
Lifinish表示学习完task i后,task i对应的loss值,设此时对应的参数为
θ
^
i
\hat\theta_i
θ^i,
L
i
c
h
a
n
g
e
L_i^{change}
Lichange表示对于task i而言,参数由
θ
^
i
\hat\theta_i
θ^i变为
θ
\theta
θ,loss值产生的变化,由于
L
i
f
i
n
i
s
h
L^{finish}_i
Lifinish是固定的,所以在增量的setting下,优化目标变为
L
T
+
∑
i
=
1
T
−
1
L
i
c
h
a
n
g
e
(
θ
)
(式1.2)
L_T+\sum_{i=1}^{T-1}L_i^{change}(\theta)\tag{式1.2}
LT+i=1∑T−1Lichange(θ)(式1.2)
现在的问题变为 ∑ i = 1 T − 1 L i c h a n g e ( θ ) \sum_{i=1}^{T-1}L_i^{change}(\theta) ∑i=1T−1Lichange(θ)的形式是什么样的,我们将在method部分进行介绍。
假设
论文中并没有明说有哪些假设,本部分为我认为论文idea成立所需要的假设。
假设一:假设有三组参数
θ
1
、
θ
2
、
θ
3
\theta_1、\theta_2、\theta_3
θ1、θ2、θ3,训练后,变为
θ
1
n
、
θ
2
n
、
θ
3
n
\theta_1^n、\theta_2^n、\theta_3^n
θ1n、θ2n、θ3n,此时loss的变化为
Δ
L
(
θ
1
n
,
θ
2
n
,
θ
3
n
)
≈
Δ
L
(
θ
1
n
,
θ
2
,
θ
3
)
+
Δ
L
(
θ
1
,
θ
2
n
,
θ
3
)
+
Δ
L
(
θ
1
,
θ
2
,
θ
3
n
)
\Delta L(\theta_1^n,\theta_2^n,\theta_3^n)\approx \Delta L(\theta_1^n,\theta_2,\theta_3)+\Delta L(\theta_1,\theta_2^n,\theta_3)+\Delta L(\theta_1,\theta_2,\theta_3^n)
ΔL(θ1n,θ2n,θ3n)≈ΔL(θ1n,θ2,θ3)+ΔL(θ1,θ2n,θ3)+ΔL(θ1,θ2,θ3n)
假设二:设训练task n之前的参数为
θ
^
k
n
−
1
\hat \theta_k^{n-1}
θ^kn−1,训练完task n之后的参数为
θ
^
k
n
\hat \theta_k^{n}
θ^kn,参数从
θ
^
k
n
−
1
\hat \theta_k^{n-1}
θ^kn−1均匀变化为
θ
^
k
n
\hat \theta_k^{n}
θ^kn(实际训练是不太可能的),造成的损失函数变化值是已知的,如下图白色部分:
method
上图表示在学习完MNIST数据集的第一个task(即task 1)之后,参数
θ
^
k
\hat\theta_k
θ^k变化(其他参数fix)引起的task 1 loss值的变化,依据上图,作者假设
L
i
c
h
a
n
g
e
(
θ
)
L_i^{change}(\theta)
Lichange(θ)应该是一个不对称的二次函数。在正式介绍这个不对称的二次函数之前,我们首先介绍一下SI。
SI假设
L
i
c
h
a
n
g
e
(
θ
)
L_i^{change}(\theta)
Lichange(θ)是一个对称的二次函数,其损失函数构造如下:
L
n
(
θ
)
+
c
∑
k
Ω
k
n
−
1
(
θ
k
−
θ
^
k
n
−
1
)
2
(式2.0)
L^n(\theta)+c\sum_k\Omega_k^{n-1}(\theta_k-\hat\theta_k^{n-1})^2\tag{式2.0}
Ln(θ)+ck∑Ωkn−1(θk−θ^kn−1)2(式2.0)
Ω
k
n
=
w
k
n
(
θ
^
k
n
−
θ
^
k
n
−
1
)
2
+
Ω
k
n
−
1
w
k
n
=
L
n
(
θ
^
k
n
−
1
)
−
L
n
(
θ
^
k
n
)
(式2.1)
\begin{aligned} \Omega_{k}^n&=\frac{w_k^n}{(\hat\theta_k^n-\hat\theta_k^{n-1})^2}+\Omega_{k}^{n-1}\\ w_k^n&=L^n(\hat \theta_k^{n-1})-L^n(\hat \theta_k^n)\tag{式2.1} \end{aligned}
Ωknwkn=(θ^kn−θ^kn−1)2wkn+Ωkn−1=Ln(θ^kn−1)−Ln(θ^kn)(式2.1)
L
n
(
θ
)
L^n(\theta)
Ln(θ)表示参数为
θ
\theta
θ时,task
n
n
n的损失函数值,
w
k
n
w_k^n
wkn表示参数由
θ
^
k
n
−
1
\hat \theta_k^{n-1}
θ^kn−1变化为
θ
^
k
n
\hat \theta_k^n
θ^kn时,task
n
n
n损失函数的变化值,则
w
k
n
(
θ
^
k
n
−
θ
^
k
n
−
1
)
2
\frac{w_k^n}{(\hat\theta_k^n-\hat\theta_k^{n-1})^2}
(θ^kn−θ^kn−1)2wkn表示task
n
n
n损失函数的单位平方变化率,并假设损失函数的单位平方变化率是固定的,此时
w
k
n
(
θ
^
k
n
−
θ
^
k
n
−
1
)
2
(
θ
^
k
−
θ
^
k
n
)
2
\frac{w_k^n}{(\hat\theta_k^n-\hat\theta_k^{n-1})^2}(\hat\theta_k-\hat\theta_k^{n})^2
(θ^kn−θ^kn−1)2wkn(θ^k−θ^kn)2表示参数为
θ
^
k
\hat\theta_k
θ^k时,task
n
n
n损失函数的变化值。通过对式2.0进行变形,可以得知式2.0 focus了所有旧task,如下所示:
L
n
(
θ
)
+
c
∑
i
=
1
n
−
1
∑
k
w
k
i
(
θ
^
k
i
−
θ
^
k
i
−
1
)
2
(
θ
k
−
θ
^
k
n
−
1
)
2
L^n(\theta)+c\sum_{i=1}^{n-1}\sum_k\frac{w_k^i}{(\hat\theta_k^i-\hat\theta_k^{i-1})^2}(\theta_k-\hat\theta_k^{n-1})^2
Ln(θ)+ci=1∑n−1k∑(θ^ki−θ^ki−1)2wki(θk−θ^kn−1)2
值得注意的是,式2.1是针对单个参数计算的,我对其理解是除了第
k
k
k个参数以外,其他参数fix前提下,loss值的变化,而正常的训练会导致多个参数同时发生变化,这里利用了假设一
ALASSO是对SI的改进,其假设
L
i
c
h
a
n
g
e
(
θ
)
L_i^{change}(\theta)
Lichange(θ)是一个不对称的二次函数,其损失函数构造如下:
L
n
(
θ
)
+
c
∑
k
L
s
n
−
1
(
θ
k
)
L
s
n
−
1
(
θ
k
)
=
Ω
k
n
−
1
(
θ
k
−
θ
^
k
n
−
1
)
2
i
f
α
(
θ
k
)
>
0
L
s
n
−
1
(
θ
k
)
=
(
a
Ω
k
n
−
1
+
ϵ
)
(
θ
k
−
θ
^
k
n
−
1
)
2
i
f
α
(
θ
k
)
≤
0
α
(
θ
k
)
=
(
θ
k
−
θ
^
k
n
−
1
)
(
θ
^
k
n
−
1
−
θ
^
k
n
−
2
)
\begin{aligned} &L^n(\theta)+c\sum_kL^{n-1}_s(\theta_k)\\ L^{n-1}_s(\theta_k)&=\Omega_k^{n-1}(\theta_k-\hat \theta_k^{n-1})^2\ if\ \alpha(\theta_k)>0\\ L^{n-1}_s(\theta_k)&=(a\Omega_k^{n-1}+\epsilon)(\theta_k-\hat \theta_k^{n-1})^2\ if\ \alpha(\theta_k)\leq0\\ \alpha(\theta_k)&=(\theta_k-\hat \theta_k^{n-1})(\hat \theta_k^{n-1}-\hat \theta_k^{n-2}) \end{aligned}
Lsn−1(θk)Lsn−1(θk)α(θk)Ln(θ)+ck∑Lsn−1(θk)=Ωkn−1(θk−θ^kn−1)2 if α(θk)>0=(aΩkn−1+ϵ)(θk−θ^kn−1)2 if α(θk)≤0=(θk−θ^kn−1)(θ^kn−1−θ^kn−2)
a是一个超参数,一般大于1, α ( θ k ) \alpha(\theta_k) α(θk)为一个控制阀门,用于判断应该选择哪一个二次函数,其判断依据为,如果参数 θ k \theta_k θk位于 θ ^ k n − 1 \hat \theta_k^{n-1} θ^kn−1与 θ ^ k n − 2 \hat \theta_k^{n-2} θ^kn−2之间,依据假设二,loss值是已经观测过的,此时的 Ω k n − 1 \Omega_k^{n-1} Ωkn−1是可靠的,即单位平均变化率是可靠的,否则,由于loss值未观测到, Ω k n − 1 \Omega_k^{n-1} Ωkn−1是不可靠的,此时施加的惩罚会更大。
Ω k n = L n ( θ ^ k n ) − L n ( θ ^ k n − 1 ) ( θ ^ n k − θ ^ k n − 1 ) 2 + c L s n − 1 ( θ ^ k n − 1 ) − L s n − 1 ( θ ^ k n ) ( θ ^ n k − θ ^ k n − 1 ) 2 \Omega_k^n=\frac{L^n(\hat\theta_k^n)-L^n(\hat\theta^{n-1}_k)}{(\hat\theta^k_n-\hat\theta_k^{n-1})^2}+c\frac{L_s^{n-1}(\hat\theta_k^{n-1})-L_s^{n-1}(\hat\theta_k^n)}{(\hat\theta^k_n-\hat\theta_k^{n-1})^2} Ωkn=(θ^nk−θ^kn−1)2Ln(θ^kn)−Ln(θ^kn−1)+c(θ^nk−θ^kn−1)2Lsn−1(θ^kn−1)−Lsn−1(θ^kn)
第一项表示task n的单位平均变化率,第二项表示旧任务的单位平均变化率,由于
L
s
n
−
1
(
θ
^
k
n
−
1
)
=
0
L_s^{n-1}(\hat\theta_k^{n-1})=0
Lsn−1(θ^kn−1)=0(看上面关于
L
s
n
−
1
(
θ
^
k
n
−
1
)
L_s^{n-1}(\hat\theta_k^{n-1})
Lsn−1(θ^kn−1)计算的公式),则有
Ω
k
n
=
L
n
(
θ
^
k
n
)
−
L
n
(
θ
^
k
n
−
1
)
(
θ
^
n
k
−
θ
^
k
n
−
1
)
2
−
c
L
s
n
−
1
(
θ
^
k
n
)
(
θ
^
n
k
−
θ
^
k
n
−
1
)
2
\Omega_k^n=\frac{L^n(\hat\theta_k^n)-L^n(\hat\theta^{n-1}_k)}{(\hat\theta^k_n-\hat\theta_k^{n-1})^2}-c\frac{L_s^{n-1}(\hat\theta_k^n)}{(\hat\theta^k_n-\hat\theta_k^{n-1})^2}
Ωkn=(θ^nk−θ^kn−1)2Ln(θ^kn)−Ln(θ^kn−1)−c(θ^nk−θ^kn−1)2Lsn−1(θ^kn)
与SI相比,ALASSO旧任务的单位平方变化率不是固定的,而是随着参数的变化而动态变化的。
论文的Parameter Decoupling部分在此不做总结,感觉上作者这个做法非常奇怪,并且个人认为并不能解决作者提到的问题。
实验部分在此不做总结,有兴趣的同学可以浏览原论文