与建立在捕获静态数据分布的前提下的传统机器学习模型不同,持续学习的特点是从动态数据分布中学习。一个主要的挑战被称为灾难性遗忘,其中对新分布的适应通常会导致捕获旧分布的能力大大降低。这种困境是学习可塑性和记忆稳定性之间权衡的一个方面:前者的过度会干扰后者,反之亦然。除了简单地平衡这两个方面的“比例”之外,持续学习的理想解决方案还应该获得强大的通用性,以适应任务内部和任务之间的分布差异。
持续学习需要适应具有动态数据分布的增量任务。理想的解决方案应确保稳定性(红色箭头)和可塑性(绿色箭头)之间的适当权衡,以及对任务内(蓝色箭头)和任务间(橙色箭头)分布差异的充分概括性。为了实现持续学习的目标,针对机器学习的不同环节(数据、模型架构、特征表示、正则化、优化方法等等)已经有许多代表性的方法。
基本表述
典型场景
实例增量学习(IIL):所有训练样本都属于同一个任务并且分批到达。
领域增量学习(DIL):任务有相同的数据标签空间但输入分布不同,不需要任务标识。
任务增量学习(TIL):任务具有不相交的数据标签空间。训练和测试中都提供了任务标识。
类别增量学习(CIL):任务具有不相交的数据标签空间。任务标识仅在训练中提供。
无任务持续学习(TFCL):任务具有不相交的数据标签空间。训练或测试中均未提供任务标识。
在线持续学习(OCL):任务具有不相交的数据标签空间。每个任务的训练样本作为一次性数据流到达。
模糊边界持续学习(BBCL):任务边界是模糊的,其特点是不同但重叠的数据标签空间。
持续预训练(CPT):预训练数据按顺序到达。目标是改善下游任务的知识转移。
属于任务 t 的一批传入训练样本可以表示为 \mathcal{D}_{t,b} = \{\mathcal{X}_{t,b}, \mathcal{Y}_{t,b}\},其中 t∈ \mathcal{T} = \{1,···, k\} 是任务标识,b ∈ \mathcal{B}_t 是批次索引。我们通过其训练样本 \mathcal{D}_t 遵循分布 \mathbb{D}_t:=p(\mathcal{X}_t,\mathcal{Y}_t) 来定义“任务”(省略批量索引来表示整个训练集),并假设没有训练和测试之间的分布差异。上述典型场景的区别如下表所示。
如果没有指定,通常会假设每个任务都有足够数量的标记训练样本,即监督持续学习。根据每个 \mathcal{D}_t 中提供的 \mathcal{X}_t 和 \mathcal{Y}_t ,持续学习进一步扩展到零样本、少样本、半监督、开放世界(即识别未知类然后合并它们的标签)和无/自我监督场景。
评估指标
总体性能
平均精度 (AA)、平均增量精度 (AIA)
其中 a_{k,j} ∈ [0, 1] 表示第 k 个任务增量学习后在第 j 个任务的测试集上评估的分类精度 (j\le k)。计算 a_{k,j} 的输出空间由 \mathcal{Y}_j 或 \cup_{i=1}^k\mathcal{Y}_i 中的类组成,对应于多头评估(例如 TIL)或单头评估(例如 CIL)的使用。AA代表当前时刻的整体表现,AIA进一步反映历史表现。
记忆稳定性
遗忘测量(FM)、后向迁移(BWT)
FM 是通过计算其过去获得的最大性能与当前性能之间的差异得到的,第 k 个任务的 FM 是所有旧任务的平均遗忘;BWT 则学习第 k 个任务对所有旧任务的平均影响,遗忘通常反映为负的 BWT。
学习可塑性
不变性度量(IM)、前向迁移(FWT)
IM 被定义为模型学习新任务的能力,通过任务的联合训练性能和持续学习性能之间的差异来计算。其中 a^*_k 是针对第 k 个任务与 \cup_{j=1}^k\mathcal{D}_j 联合训练的随机初始化参考模型的分类精度;相比之下,FWT 评估所有旧任务对当前第 k 个任务的平均影响。其中 \tilde{a}_j 是使用 \mathcal{D}_j 为第 j 个任务训练的随机初始化参考模型的分类精度。
主要方法的理论基础
考虑持续学习的一般设置,参数为 θ ∈ \mathbb{R}^{|θ|} 的神经网络需要学习 k 个增量任务。假设每个任务的训练集和测试集遵循相同的分布 \mathbb{D}_t,t=1,\dots,k,其中训练集 Dt = \{\mathcal{X}_t,\mathcal{Y}_t\} = \{(x_{t,n}, y_{t,n})\}^{N_t}_{n=1} 包括 N_t 个数据标签对。目标是学习一个概率模型(假设条件独立):
该模型可以在表示为 D_{1:k} := \{D_1..., D_k\} 的所有任务上表现良好。判别模型的任务相关性能可以表示为:
持续学习的核心挑战通常源于学习的顺序性质:当从 \mathcal{D}_{k} 学习第 k 个任务时,旧的训练集 \{\mathcal{D}_1..., \mathcal{D}_{k-1}\} 是不可访问的。因此,以平衡的方式捕获新旧任务的分布是至关重要但很困难的,即确保适当的稳定性-可塑性权衡,其中过度的学习可塑性或记忆稳定性可能会在很大程度上相互损害。
重放方法
一个简单的想法是通过存储一些旧的训练样本或训练生成模型来近似和恢复旧的数据分布,即基于重放(replay-based)的方法。根据监督学习的学习理论,旧任务的性能可以通过重放更多接近其分布的旧训练样本来提高,但会导致潜在的隐私问题和资源开销的线性增加。生成模型的使用还受到巨大的额外资源开销以及其自身灾难性遗忘和表达能力的限制。
贝叶斯框架
另一种选择是通过在贝叶斯框架中通过持续学习来传播更新参数中的旧数据分布。这也是绝大部分相关方法的数学基础。
基于网络参数的先验 p(θ),观察第 k 个任务后的后验可以用贝叶斯规则计算:
其中第 k-1 个任务的后验 p(\theta|\mathcal{D}_{1:k-1}) 成为第 k 个任务的先验,从而能够计算新的后验 p(\theta|\mathcal{D}_{1:k})仅使用当前训练集 \mathcal{D}_{k}。然而,由于后验通常很棘手(除了非常特殊的情况),一个常见的选择是用 q_{k−1}(θ) ≈ p(θ|\mathcal{D}_{1:k−1}) 来近似它,同样对于 q_{k}(θ) ≈ p(θ|\mathcal{D}_{1:k})。有两种广泛使用的近似策略:
拉普拉斯近似
其思路是 p(\theta|\mathcal{D}_{1:k-1}) 近似为具有局部梯度信息的多元高斯函数。具体来说,我们可以用 \phi_{k-1} 参数化 q_{k−1}(θ) 并通过对p(θ|\mathcal{D}_{1:k−1}) 在 μ_{k−1} \in R^{|θ|} 周围进行二阶泰勒展开构造一个近似高斯后验 q_{k−1}(θ) := q(θ; \phi_{k−1}) = \mathcal{N} (θ; μ_{k−1}, Λ^{−1}_{k -1}) ,其中 Λ_{k -1} 表示精度矩阵, \phi_{k-1}=\{\mu_{k-1},Λ_{k -1}\} ,对于 q(θ; \phi_k)、μ_k和 Λ_k 也是如此。
以上过程具体推导过程可以参考:拉普拉斯近似方法 (Laplace Approximation) - 知乎 (zhihu.com)
当前第 k 个任务的后验众数(posterior mode,即后验概率密度最大点的参数值)可以计算为:
注意到精度矩阵(或称浓度矩阵)与协方差矩阵的关系:Λ=\Sigma^{-1},如此不难得出上述近似项中的第二项。于是可以通过 μ_{k-1} 和 Λ_{k-1} 迭代更新上式。同时由 Λ_{k} 也由 Λ_{k-1} 迭代更新:
近似的第一项为 \mathcal{D}_{k} 在 μ_k 处的负对数似然的 Hessian 矩阵,记为H(\mathcal{D}_k,\mu_k)。
在实践中,由于 R^{|θ| } 的维数很大, H(\mathcal{D}_k,\mu_k) 的计算效率通常较低,并且不能保证近似的 Λ_k 对于高斯假设是半正定的。为了克服这些问题,H(\mathcal{D}_k,\mu_k) 通常用 Fisher 信息矩阵(FIM)来近似:
为了便于计算,可以使用对角线近似或克罗内克因子近似进一步简化 FIM。式 (1) 是通过保存旧模型 μ_{k-1} 的冻结副本来正则化参数变化来实现的,即基于正则化的方法。以 EWC 为例,展示其损失函数:
式 (2) 和 (3) 的推导可以参考:https://zhuanlan.zhihu.com/p/228099600
果我们的目标是最小化损失函数(最大化似然),那么我们自然可以在所有可能由参数 \theta 实现的似然函数所构成的空间中进行移动。由于似然函数本身是一个概率分布,我们称这个空间为分布空间。因此,在这个分布空间,而不是参数空间中,采取最陡峭的下降方向,实际上对我们的优化更有意义。而在这个空间中我们最常使用 KL 散度衡量不同似然函数之间的距离。
注意这里的距离并不是严格定义下的距离,KL 散度并不满足对称性。
(3) 的导出主要利用了 FIM 和 KL 散度的关系:
所以 (3) 中第二项在原理上可以理解为是使用 FIM 改进梯度下降法得到的约束项。这里的 d 就是对应着(3)中 \theta-\mu_{k-1} 这一下降方向。将这一项放入最小化的目标函数中,等效于要求训练第 k 个任务时得到的参数对应的分布空间要尽可能地保持与第 k-1 个任务时的分布空间相同,即约等于最小化两者的 KL 散度。\lambda 控制正则化的强度。
而其中的
\text{diag}(\cdot) 是对每个 F_t 的对角线近似。这种对 FIM 的简化近似则主要是出于减少计算量考虑,具体细节等有空再另做研究吧……
变分推断
对于贝叶斯框架,另一种方法就是变分推断。有很多不同的方法可以做到这一点,其中一种代表性的方法是在当前第 k 个任务中最小化满足 p(θ|\mathcal{D}_{1:k}) ∈ \mathcal{Q} 的族 \mathcal{Q} 上的以下 KL 散度:
其中 Z_k 是 q_{k-1}(\theta)p(\mathcal{D}_k|\theta) 的归一化常数。实际上,上述最小化可以通过采用额外的蒙特卡洛近似,并将 q_{k}(θ) := q(θ; \phi_{k}) = \mathcal{N} (θ; μ_{k}, Λ^{−1}_{k }) 指定为多元高斯。这里使用 VCL 作为例子,它最小化以下目标(即最大化其负数):
其中 KL 散度可以以封闭形式计算并用作隐式正则化项。虽然 (2) 和 (4) 式采用类似的形式,如上一节也提到的,本质也都是要最小化两次学习得到的分布差异,但前者是一组确定性参数 θ 的局部近似(具体而言,EWC 保存了前一任务的 μ_{k-1} 和 Λ_{k-1} 用于迭代更新,虽然在原理上通过二阶泰勒展开推出的正则项等价于最小化 KL 散度,但实质是基于 FIM 对梯度下降的改进),而后者是通过对变分分布 q_k(θ) 进行采样来计算的(具体而言,VCL 保存了前一任务的部分数据点作为核心集用于传递变分信息,其实质就是直接最小化两次任务后验之间的 KL 散度作为正则项,其高斯后验的参数更新需要进行重参数化,而不像 EWC 中可以推导出迭代式)。这是由于两种近似策略之间的根本区别,在特定设置下两者性能略有不同。两者的区别以及变分下界的推导可参考:Tseran H, Khan M E, Harada T, et al. Natural variational continual learning[C]//Continual Learning Workshop@ NeurIPS. 2018, 2. 以及 理解 Variational Lower Bound | Fisher's Blog (bluefisher.github.io)(注意最大化下界等价于最小化该式)
梯度映射
本质上,重放方法或正则化对持续学习的约束最终反映在梯度方向上。因此,一些工作直接操纵基于梯度的优化过程。
具体来说,当任务 t 的一些旧训练样本 M_t 保存在内存缓冲区中时,鼓励新训练样本的梯度方向保持接近 M_t 的梯度方向。这被表述为 \langle\nabla_\theta\mathcal{L}_k(\theta;\mathcal{D}_k),\nabla_\theta\mathcal{L}_k(\theta;\mathcal{M}_t)\rangle\geq0, t\in\{1,2,3,\dots.k-1\},从而本质上强制旧任务的损失不增加。
也可以在不存储旧训练样本的情况下进行梯度投影。这里以 NCL 为例,它在在线拉普拉斯近似中用 μ_{k-1} 和 Λ_{k-1} 操纵梯度方向。如公式 (5) 所示,NCL 通过最小化以 \theta 为中心的半径为 r 的区域内的特定任务损失 \ell_k 来执行持续学习,其距离度量为 d(\theta,\theta+\delta)=\sqrt{\delta^{\top}Λ_{k-1}\delta/2},该度量通过精度矩阵 Λ_{k-1} 考虑了先验的曲率:
上述优化问题的解由 \delta^{*}\propto\Lambda_{k-1}^{-1}\nabla_{\theta}\ell_{k}(\hat{\theta})-(\theta-\hat{\mu_{k-1}}) 给出,从而得出以下学习率 λ 的更新规则:
架构设计
上述分析主要基于为所有增量任务寻找一个共享解决方案,而这种解决方案会受到任务间的严重干扰。相比之下,增量任务也可以以(部分)分离的方式学习,这就是第基于架构设计方法的主导思想。
这可以表述为构建一个参数为 θ = \cup _{t=1}^kθ^{(t)} 的持续学习模型,其中 θ^{(t)} = \{e^{(t)}, ψ\},e^{(t)} 是任务特定/自适应参数,ψ 是任务共享参数。在某些情况下,任务共享参数 ψ 被省略,其中任务特定参数 e^{(i)} 和 e^{(j)}\ (i<j) 可能重叠,以实现参数重用和知识转移。在学习第 j 个任务时,重叠部分 e^{(i)} ∩ e^{(j)} 被冻结以避免灾难性遗忘。然后,如果给定任务标识 \mathbb{I}_{\mathcal{D}t},每个任务都可以作为 p(\mathcal{D}_{t}|\theta^{(t)}) 而不是 p(\mathcal{D}_{t}|\theta) 执行,其中如果省略 ψ,任务之间的冲突将得到明确控制甚至避免:
然而,存在两个主要挑战。第一个是由于 θ^{(t)} 的渐进分配而导致的模型大小的可扩展性,这取决于 e^{(t)} 的稀疏性、 e^{(i)} ∩ e^{(j)}\ (i<j) 的可重用性以及 ψ 的可转移性。第二个是任务标识预测的准确性,表示为 p(\mathbb{I}_{\mathcal{D}t}=t|\mathcal{D}_{t},\theta)。除了TIL设置总是提供任务标识 \mathbb{I}_{\mathcal{D}t} 之外,其他场景通常需要模型根据输入数据确定使用哪个 θ^{(t)} ,如 (7) 中所示。这与分布外 (OOD) 检测密切相关,其中分布内数据的预测不确定性应较低,而 OOD 数据的预测不确定性应较高。更重要的是,由于任务标识预测的函数如式 (8) 所示(相当于分类任务)需要不断更新,同时也会遭受灾难性遗忘。为了解决这个问题,第 i 个任务的分布 p(\mathcal{D}_{t}|i,\theta) 可以通过合并重播来恢复:
一般而言,边际任务分布 p(i) ∝ N_i。