一、简介
题目: Exploring Example Influence in Continual Learning
会议: NIPS 2022
任务: 数据/任务依次到来,新的数据/任务到来后旧的就不再可获取,要求模型在学习新数据/任务的同时不要忘记旧数据/任务。
Idea: 作者沿用了基于回放(Replay/Rehearsal)的增量学习(Incremental Learning, IL)策略,引入影响函数(Influence Function, IF)评估样本对模型稳定性(记忆旧知识的能力)和可塑性(学习新知识的能力)的影响,并据此更新模型和确定样本的去留(留下的样本会在更新模型时再次使用,即回放)。
Note: IL = Continual Learning。
如图,作者用IF衡量样本具有正面还是负面作用,并据IF更新模型和选取样本。
二、详情
1. 样本对稳定性和可塑性的影响
假设当前为第 t t t个任务,第 t t t个任务时模型在第 k k k个任务上的稳定性( S t k S^k_t Stk)和对第 t t t个任务的可塑性( P t P_t Pt),定义如下:
![](https://img-blog.csdnimg.cn/5b01778670c44ff4ba74cc20dda54272.png#pic_center)
其中, k < t k<t k<t, D k tst \mathcal{D}_k^{\text{tst}} Dktst表示第 k k k个任务的测试集, D t trn \mathcal{D}_t^{\text{trn}} Dttrn和 D t tst \mathcal{D}_t^{\text{tst}} Dttst表示第 t t t个任务的训练集和测试集, θ t − 1 \pmb\theta_{t-1} θt−1和 θ k \pmb\theta_{k} θk为第 t − 1 t-1 t−1个任务和第 k k k个任务时模型的参数。 P ( D 1 ∣ θ , D 2 ) P(\mathcal{D}_1|\pmb\theta,\mathcal{D}_2) P(D1∣θ,D2)表示已有参数为 θ \pmb\theta θ模型在数据集 D 2 \mathcal{D}_2 D2上训练后在数据集 D 1 \mathcal{D}_1 D1上的精度。 p ( D ∣ θ ) p(\mathcal{D}|\pmb\theta) p(D∣θ)则为参数为 θ \pmb\theta θ的模型在数据集 D \mathcal{D} D上的精度。
直白地说,稳定性就是模型更新前后在同一历史测试集上的精度下降程度,可塑性就是模型更新前后在当前测试集上的精度提升程度。
于是,在第 t t t个训练任务中,训练样本 x trn x^\text{trn} xtrn对于模型的稳定性和可塑性的影响被定义如下:
![](https://img-blog.csdnimg.cn/0b892b3c5e8547c49a3127a87a89d254.png#pic_center)
其中, D t trn / x trn \mathcal{D}_t^\text{trn}/x^\text{trn} Dttrn/xtrn是要从 D t trn \mathcal{D}_t^{\text{trn}} Dttrn中去掉一个样本 x trn x^\text{trn} xtrn。
直白地说,影响就是训练样本 x trn x^\text{trn} xtrn在被去掉前后模型性能的变化。
显然,将所有训练样本都进行一次影响判断是不切实际的,因为成本极高,于是这种对性能的影响被使用损失变化来近似:
![](https://img-blog.csdnimg.cn/6171bd448e5644de84530523d2679cc1.png#pic_center)
其中, ϵ \epsilon ϵ是对训练样本对加权扰动,更具体的近似过程在下一节介绍。
2. 影响函数
2.1 影响函数用于表达稳定性和可塑性
对于一个批次的训练数据 B \mathcal B B来说,模型参数更新是向着损失最小化的方向,即:
![](https://img-blog.csdnimg.cn/eab45efebde148d3b2f2d9b043a41c0b.png#pic_center)
用损失变化来表达影响便是IF,它给训练样本 x trn ∈ B x^\text{trn}\in\mathcal{B} xtrn∈B增加一个小的扰动 ϵ \epsilon ϵ:
![](https://img-blog.csdnimg.cn/3e63a5b33b3b4b1bb00f6c5c4e0dfa37.png#pic_center)
进一步地,对于 B \mathcal B B,则有:
![](https://img-blog.csdnimg.cn/0bb87b63d07c4c66880fe072e0f31502.png#pic_center)
其中, L \textbf{L} L和 E \textbf{E} E为损失向量和扰动向量。参数确定之后,就可以像上一节最后那样对损失求偏导得到近似的样本影响:
![](https://img-blog.csdnimg.cn/90487b9b0d5f4c5a9908c06014dc8700.png#pic_center)
如果 I ( D trn , x trn ) > 0 I(\mathcal D^\text{trn},x^\text{trn})>0 I(Dtrn,xtrn)>0,则样本 x trn x^\text{trn} xtrn对模型的影响是负面的,反正则是正面的。
但是,此处的Hessian矩阵 H = ∇ θ 2 ℓ ( B , θ ^ ) \textbf{H}=\nabla^2_{\pmb\theta}\ell(\mathcal B,\hat{\pmb\theta}) H=∇θ2ℓ(B,θ^)的逆计算起来相当复杂,于是作者提出MetaSP来解决该问题,详情见下一节。
2.2 使用MetaSP模拟影响函数
MetaSP有两个关键步骤:
(1) 伪更新:
![](https://img-blog.csdnimg.cn/ef9ec4db00d2466d89ff7b3c1ea96b3a.png#pic_center)
其中,
B
o
l
d
\mathcal B_{old}
Bold和
B
n
e
w
\mathcal B_{new}
Bnew为一个批次的新任务和旧任务的数据(因为作者采取的是回放策略,所以模型训练时之前保存下来的旧任务的数据也是可获取的)。
(2) 计算样本影响:
![](https://img-blog.csdnimg.cn/7525d7967e1043a7b616ce2dc580eda5.png#pic_center)
其中, V o l d \mathcal V_{old} Vold和 V n e w \mathcal V_{new} Vnew分别为从缓冲区预存的旧任务数据和当前可获取的新任务数据中采样所得。 I ( V o l d , B ) \textbf{I}(\mathcal V_{old},\mathcal B) I(Vold,B)和 I ( V n e w , B ) \textbf{I}(\mathcal V_{new},\mathcal B) I(Vnew,B)中的各元素即为样本对模型的稳定性和可塑性的影响,正值表示负面影响,反之为正面影响。
3. 使用影响函数进行增量学习
我们希望将稳定性和可塑性,即 I ( V o l d , B ) \textbf{I}(\mathcal V_{old},\mathcal B) I(Vold,B)和 I ( V n e w , B ) \textbf{I}(\mathcal V_{new},\mathcal B) I(Vnew,B),进行较好的权衡,这形成一个多目标优化问题:
![](https://img-blog.csdnimg.cn/975b4a9452f94b909d916144f03cee7b.png#pic_center)
受多重梯度下降算法启发,根据KKT条件,作者又将该问题转为一个最小范数问题:
![](https://img-blog.csdnimg.cn/39de43c8835d4822bc7baa88018ac00e.png#pic_center)
于是,有:
![](https://img-blog.csdnimg.cn/1cbf59201ad244ad8f874c4a02d5cbeb.png#pic_center)
最终,最优解集所形成的帕累托前沿可表示如下:
![](https://img-blog.csdnimg.cn/a2bef795414d4df0b0bdbf99e5fb6a6c.png#pic_center)
这便是最终经过权衡后的样本影响,它在下面两节均有使用。
3.1 模型更新
![](https://img-blog.csdnimg.cn/f95e89d3b66f474fbd8aa6c9605e798e.png#pic_center)
从第7-9行可以看到,学习新任务时,模型参数的更新过程不仅会考虑梯度,还会考虑样本对稳定性和可塑性的综合影响,以此提升性能。
3.2 样例选择
在第2行使用上面的算法3更新参数后,在第3行作者使用K-Means对新任务的训练数据进行聚类,聚类数量为
M
t
\frac{\mathcal M}{t}
tM,之后在第4行对各簇中样本在不同批次的影响
I
∗
(
x
)
I^*(x)
I∗(x)求期望
E
(
I
∗
(
x
)
)
\mathbb{E}(I^*(x))
E(I∗(x))并排序,然后在第5行对缓冲区
M
\mathcal M
M中的样本也进行同样的排序,这样每个簇和缓冲区中的样本都各自按照影响值做了排序,最后在第6-9行用各簇的第一名替换掉
M
\mathcal M
M中最后
M
t
\frac{\mathcal M}{t}
tM名。