Formalizing the Generalization-Forgetting Trade-Off in Continual Learning 论文阅读+代码解析

论文地址点这里

一. 介绍

在持续学习中,通过逐步适应一个模型来学习顺序观察到的任务。其有两个主要的目标:保持长期的记忆和不断学习新的知识。而这也就是稳定-可塑性的困境,而持续学习也就是想方设法再这两个之间寻求一种平衡。
传统的CL方法要么最小化灾难性遗忘,要么提高快速泛化,而并没有进行同时的考虑。常见的可以分为三类:(1)动态的网络结构,(2)正则化方式,(3)记忆重放即情景再现方式。而解决泛化问题的有包括表示学习的方式(例如元学习)。
这些传统的CL方式仅仅只是最小化了一个损失函数,但没有明确地考虑他们再优化设置中的权衡。第一个将这个工作进行考虑的为meta-experience replay(MER)算法中,其中遗忘-泛化被提出作为一种梯度对齐的方式。但是在MER中,遗忘泛化的平衡是通过几个超参数来实现的。因此,出现了两个挑战,一是缺泛理论工具来研究一个平衡点的存在性和稳定性。二是缺泛系统的方法来取得这个平衡点。因此本篇论文就是针对此进行改进。
作者描述了一个框架,在这个框架中,首先将CL问题定义为一个顺序决策问题,并寻求最小化整个模型生命周期的成本函数总和。在任何时候,如果未来的任务不可用,成本函数的计算就变的非常棘手。为了解决这一问题,利用Bellman的最优性原则,对CL问题进行重新建模,以模拟之前任务的灾难性遗忘代价和新任务的泛化代价。之后根据此进行改善,提出了平衡持续学习算法(BCL)。

二. 问题定义

在本文中 R , N \mathbb{R,N} R,N表示实数域和正整数域。 ∥ . ∥ \parallel . \parallel .表示矩阵的泛数。总共有 [ 0 , K ] , K ∈ N [0,K],K\in \mathbb{N} [0,K],KN个任务。模型为 g ( . ) g(.) g(.),接受 θ k \theta_k θk参数对数据进行预测。一个任务(假设为第k个任务),表示为 Q k = { X k , l k } \mathcal{Q}_k = \{\mathcal{X_k,l_k}\} Qk={Xk,lk},其中l为对应的损失。参数序列的表示为 u k : K = { θ τ ∈ Ω θ , k ≤ τ ≤ K } u_{k:K}=\{\theta_{\tau}\in\Omega_{\theta},k\le\tau\le K\} uk:K={θτΩθ,kτK},其中, Ω θ \Omega_\theta Ωθ表示紧凑的集。*表示为最优值(例如 θ ∗ \theta^* θ)。
这里作者给了个图去描述持续学习:
1111
为了使持续学习具体化,这里定义了一个消耗(cost):由灾难性遗忘的cost和泛化的组合。这个cost在每一个任务k上都存在: J k ( θ k ) = γ k ℓ k + ∑ τ = 0 k − 1 γ τ ℓ τ J_k(\theta_k) = \gamma_k\ell_k+\sum^{k-1}_{\tau=0}\gamma_\tau \ell_\tau Jk(θk)=γkk+τ=0k1γττ。这里的 ℓ τ \ell_\tau τ被计算在在任务 Q τ \mathcal{Q}\tau Qτ,描述这个任务对该总和的贡献。为了去解决在第k个任务上此时的问题,我们需要去寻找 θ k \theta_k θk使得 J k ( θ k ) J_k(\theta_k) Jk(θk)最小。那么对于整个任务序列来说,我们需要使其最小。因此整个持续学习的优化问题就是累积cost: V k ( u k : K ) = ∑ τ = k K β τ J τ ( θ τ ) V_k(u_{k:K})=\sum^K_{\tau=k}\beta_\tau J_\tau(\theta_\tau) Vk(uk:K)=τ=kKβτJτ(θτ),使得其最小:
V k ( ∗ ) = min ⁡ u k : K V k ( u k : K ) (1) V^{(*)}_k=\min _{u_{k:K}}V_k(u_{k:K}) \tag{1} Vk()=uk:KminVk(uk:K)(1)
在这个公式中,有两个参数决定任务的贡献: γ τ \gamma_\tau γτ,过去没想任务的贡献。 β τ \beta_\tau βτ,未来任务的贡献。为了解决这个问题,(1)必须是连续可微的。然后作者通过证明证明出无法保证无限任务的场景下是可微的,同时也说一个具有无限内存的CL问题是np问题,CL不能在大量任务上提供完美的性能,而且任务必须有优先级。因此只是天真的减小这个损失是错误的,而且由于之前的数据不可见,无法评估之前处理过的任务。

三. 动态规划的持续学习

首先引入动态规划的表示(也就最优成本对于k的表现):
∇ k ( V k ( ∗ ) ) = − min ⁡ θ k ∈ Ω θ [ β k J k ( θ k ) + ( < ∇ θ k V k ( ∗ ) , Δ θ k > + < ∇ x k V k ( ∗ ) , Δ x k > ) ] (2) \nabla_k(V_k^{(*)})=-\min_{\theta_{k}\in\Omega_\theta}[\beta_k J_k(\theta_k)+(<\nabla_{\theta_k}V_k^{(*)},\Delta\theta_k>+<\nabla_{x_k}V_k^{(*)},\Delta x_k>)] \tag{2} k(Vk())=θkΩθmin[βkJk(θk)+(<θkVk(),Δθk>+<xkVk(),Δxk>)](2)
(2)的推导过程这里省略,有兴趣的可以去看原文。公式中 ∇ k ( V k ( ∗ ) ) \nabla_k(V_k^{(*)}) k(Vk())表示 V k ( ∗ ) V_k^{(*)} Vk()中所有的扰动。也就是说,当其等于0说明新任务k不会去影响我们当前的解决方式,换句话说,就是对之前任务的最优解对新任务也是最优解。因此扰动越小,模型对所有任务的性能就越好,从而目标变为:最小化所有扰动。在(2)中,这个扰动有三部分构成:成本的分布对于之前的任务加上任务k: J k ( θ k ) J_k(\theta_k) Jk(θk),参数的变化 < ∇ θ k V k ( ∗ ) , Δ θ k > <\nabla_{\theta_k}V_k^{(*)},\Delta\theta_k> <θkVk(),Δθk>,以及新任务引入(数据集)而导致最优成本的变化 < ∇ x k V k ( ∗ ) , Δ x k > <\nabla_{x_k}V_k^{(*)},\Delta x_k> <xkVk(),Δxk>
优化(2)可以任务是找到持续学习的解。我们用 H ( Δ x k , θ k ) = β k J k ( θ k ) + ( < ∇ θ k V k ( ∗ ) , Δ θ k > + < ∇ x k V k ( ∗ ) , Δ x k > ) H(\Delta x_k,\theta_k) = \beta_k J_k(\theta_k)+(<\nabla_{\theta_k}V_k^{(*)},\Delta\theta_k>+<\nabla_{x_k}V_k^{(*)},\Delta x_k>) H(Δxk,θk)=βkJk(θk)+(<θkVk(),Δθk>+<xkVk(),Δxk>)。也就是优化 H ( Δ x k , θ k ) H(\Delta x_k,\theta_k) H(Δxk,θk)指的是尽量减少新任务带来的干扰。
接下来,我们必须去平衡泛化和遗忘对于每一个任务k。当模型成功适应新任务时,它表现出泛化。泛化的程度取决于先前任务和新任务之间的差异。两个后续任务之间的差异越大,模型就必须越一般化。因此,最坏情况差异提示最大泛化。然而,较大的差异会增加遗忘,最坏情况下的差异会产生最大的遗忘。同时使(2)中的第三项值最大,可以得到最大的泛化性,因此 Δ x k \Delta x_k Δxk量化了后续任务中的变化。然而 Δ x k = x k + 1 − x k \Delta x_k=x_{k+1}-x_k Δxk=xk+1xk,我们不知道 x k + 1 x_{k+1} xk+1当在第k个任务时。因此使用更新 Δ x k \Delta x_k Δxk梯度上升来估计最坏情况下的差异。接下来,通过使用梯度下降迭代更新 θ k \theta_k θk来最小化最大泛化的遗忘。
接下来,去描述上面所说的问题。其中上标i表示第k个任务的迭代第i轮。
在这里插入图片描述
在(3)中,尝试去寻找一组 ( Δ x k ( ∗ ) , θ k ( ∗ ) ) (\Delta x_k^{(*)},\theta_k^{(*)}) (Δxk(),θk()),其中 Δ x k ( ∗ ) \Delta x_k^{(*)} Δxk()使H最大化,而 θ k ( ∗ ) \theta_k^{(*)} θk()使H最小化(这就是上文作者说的,两个player,寻找平衡点)。 ( Δ x k ( ∗ ) , θ k ( ∗ ) ) (\Delta x_k^{(*)},\theta_k^{(*)}) (Δxk(),θk())为我们的解,要满足下面这个条件:
H ( Δ x k ( ∗ ) , θ k ( i ) ) ≥ H ( Δ x k ( ∗ ) , θ k ( ∗ ) ) ≥ H ( Δ x k ( i ) , θ k ( ∗ ) ) (4) H(\Delta x_k^{(*)},\theta_k^{(i)})\ge H(\Delta x_k^{(*)},\theta_k^{(*)}) \ge H(\Delta x_k^{(i)},\theta_k^{(*)}) \tag{4} H(Δxk(),θk(i))H(Δxk(),θk())H(Δxk(i),θk())(4)

3.1 理论分析

现在目标是要怎么样去找到我们所要的点,来使得达到平衡。
在这里插入图片描述
上述这图简要描述了作者的思路。首先一开始固定住 θ \theta θ,构造出一个邻域 M k = θ k ( . ) ∈ Ω x } \mathcal{M}_k = \theta_k^{(.)}\in\Omega_x\} Mk=θk(.)Ωx},之后对 Δ x k ( i ) \Delta x_k^{(i)} Δxk(i),在这个区间里用梯度上升找到一个局部的最大值。接下来,锁定我们找到的 Δ x k ( . ) \Delta x_k^{(.)} Δxk(.)。根据梯度下降去更新。这里作者证明了在 N k = { Ω θ , Δ x k ( . ) } \mathcal{N}_k=\{\Omega_\theta,\Delta x_k^{(.)}\} Nk={Ωθ,Δxk(.)}这个区域内,H为最小值,同时此时收敛到了这个区域。最后在上述两个区域内,这里至少存在一个平衡点。

3.2 平衡的持续学习(BCN)

基于此,我们改 H ( Δ x k ( i ) , θ k ( i ) ) ≈ β k J k ( θ k ( i ) ) + ( J k ( θ k ( i + ζ ) ) − J k ( θ k ( i ) ) ) + ( J k + ζ ( θ k ( i ) ) − J k ( θ k ( i ) ) ) H(\Delta x_k^{(i)},\theta^{(i)}_k)\approx \beta_k J_k(\theta_k^{(i)})+(J_k(\theta_k^{(i+\zeta)}) - J_k(\theta_k^{(i)}) )+(J_{k+\zeta}(\theta_k^{(i)}) -J_k(\theta_{k}^{(i)}) ) H(Δxk(i),θk(i))βkJk(θk(i))+(Jk(θk(i+ζ))Jk(θk(i)))+(Jk+ζ(θk(i))Jk(θk(i)))。其中 J k + ζ J_{k+\zeta} Jk+ζ就是更新 player 1, θ k ( i + ζ ) \theta_k^{(i+\zeta)} θk(i+ζ)则是更新player2.
在这里插入图片描述
其中两个player用上述5进行选择和更新。具体的算法如下图所示:
在这里插入图片描述
其中 D N ( k ) \mathcal{D}_N(k) DN(k)表示是一个新的任务, D P ( k ) \mathcal{D}_P(k) DP(k)表示是从过去的任务进行采样的。对于每一个batch b N ∈ D N ( k ) b_N\in \mathcal{D}_N(k) bNDN(k),我们同时采样 b P ∈ D P ( k ) b_P \in \mathcal{D}_P(k) bPDP(k)。将他们联合起来构成 b P N ( k ) b_{PN}(k) bPN(k)。之后按照上述的思想进行更新即可。

四. 代码详解

这次代码作者没有给出自己的代码(或者我没有找到),我打算自己复现一下,具体的代码可能在明天更新。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值