引言
持续学习(Continual Learning),又称终身学习(Life-long Learning),是机器学习中一个重要且活跃的研究领域。它的核心目标是让智能系统能够在不断变化的环境中持续获取、积累和利用新知识,同时保持对已学知识的记忆。
与人类学习不同,深度神经网络在学习新任务时往往会快速且严重地遗忘之前学到的知识,这种现象被称为「灾难性遗忘」(Catastrophic Forgetting)。持续学习正是为了解决这一问题而诞生的研究领域。1
1. 灾难性遗忘
1.1 定义
灾难性遗忘是指人工神经网络在学习新信息时会快速且严重地遗忘之前学到的信息。这一概念最早由 McCloskey 和 Cohen 在 1989 年提出。2
┌─────────────────────────────────────────────────────────────┐
│ 灾难性遗忘现象示意图 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 任务A训练 ──→ 任务A性能: ████████████ 高 │
│ │ │
│ ↓ │
│ 任务B训练 ──→ 任务A性能: ██ 骤降 (灾难性遗忘!) │
│ │ │
│ ↓ │
│ 任务B性能: ████████████ 高 │
│ │
└─────────────────────────────────────────────────────────────┘
1.2 发生原因
当神经网络按顺序训练多个任务时,参数会被调整以优化新任务的损失函数。这个调整过程很可能将参数从早期任务的最佳值「推离」,从而损害旧任务的性能。
数学上,对于任务 的优化:
在任务 的优化中:
由于 ,直接优化新任务会破坏旧任务的性能。
1.3 遗忘 vs 干扰
| 类型 | 描述 | 区别 |
|---|---|---|
| 灾难性遗忘 | 完全丢失旧知识 | 参数被新知识覆盖 |
| 灾难性干扰 | 旧知识被新知识混淆 | 参数被部分修改 |
两者本质上是同一现象的不同描述,现在学界更倾向于使用「灾难性遗忘」这一术语。
2. 稳定-可塑性困境
持续学习的核心挑战是稳定-可塑性困境(Stability-Plasticity Dilemma)。3
| 特性 | 描述 | 过度的后果 |
|---|---|---|
| 稳定性 (Stability) | 保留已学到的知识,不被新学习破坏 | 可塑性不足,无法学习新知识 |
| 可塑性 (Plasticity) | 能够快速适应新情况和环境 | 稳定性不足,遗忘旧知识 |
2.1 迁移学习视角
| 指标 | 定义 | 理想值 |
|---|---|---|
| 正向迁移 (Forward Transfer) | 学习新任务时促进未来任务的学习 | 越大越好 |
| 反向迁移 (Backward Transfer) | 学习新任务时改善已学任务的性能 | 越大越好(正向迁移) |
理想的持续学习算法应该同时最大化正向和反向迁移。
3. 任务设置分类
van de Ven 等人在 2022 年提出了三种持续学习场景的分类框架。4
3.1 任务增量学习 (Task-Incremental Learning, Task-IL)
形式化定义:
- 测试时任务 ID 已知
- 可使用多头部输出层(每个任务独立输出头)
- 主要挑战:跨任务知识迁移
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 任务 A │ ──→ │ 任务 B │ ──→ │ 任务 C │
│ 输出头A │ │ 输出头B │ │ 输出头C │
└─────────┘ └─────────┘ └─────────┘
3.2 领域增量学习 (Domain-Incremental Learning, Domain-IL)
形式化定义:
- 测试时任务 ID 未知
- 输入分布变化但分类目标相同
- 典型场景:不同光照/天气下的图像分类
┌─────────────────────────────────────────────┐
│ 输入分布变化: 晴天 → 阴天 → 夜晚 → ... │
│ 分类目标不变: 猫、狗、鸟 │
└─────────────────────────────────────────────┘
3.3 类别增量学习 (Class-Incremental Learning, Class-IL)
形式化定义:
- 逐步增加可区分的类别数
- 测试时需要识别所有见过的类别
- 最具挑战性的场景
时间 T=1: 类别 {猫, 狗}
时间 T=2: 类别 {猫, 狗, 鸟} ← 新类别
时间 T=3: 类别 {猫, 狗, 鸟, 鱼} ← 新类别
核心问题:学习不在同一时间观察到的类别之间的区分边界。
3.4 三种设置的对比
| 设置 | 任务边界 | 输出结构 | 难度 |
|---|---|---|---|
| Task-IL | 明确 | 多头部 | ★★☆ |
| Domain-IL | 隐含 | 单头部 | ★★★ |
| Class-IL | 隐含 | 动态扩展 | ★★★ |
4. 评估指标
4.1 性能指标
平均准确率 (Average Accuracy)
训练完成后所有任务上的平均测试准确率:
其中 表示在学完所有 个任务后,任务 上的测试准确率。
遗忘率 (Forgetting Rate)
每个任务的最大性能下降:
- 表示任务 没有被遗忘
- 表示存在遗忘
平均遗忘率
4.2 迁移指标
| 指标 | 公式 | 含义 |
|---|---|---|
| Back Transfer (BT) | 学习新任务对旧任务的影响 | |
| Forward Transfer (FT) | 旧任务学习对新任务的影响 |
其中 是任务 从随机初始化开始的性能。
4.3 综合评估表
def evaluate_continual_learning(model, tasks, verbose=True):
"""
持续学习模型评估
Args:
model: 持续学习模型
tasks: 任务列表,每个任务包含 (train_data, test_data)
Returns:
metrics: 包含各项评估指标的字典
"""
n_tasks = len(tasks)
accuracy_matrix = np.zeros((n_tasks, n_tasks))
# 训练每个任务并记录性能
for t in range(n_tasks):
# 训练任务 t
model.train(tasks[t]['train_data'])
# 在所有任务上测试
for i in range(n_tasks):
accuracy_matrix[t, i] = model.evaluate(tasks[i]['test_data'])
# 计算平均准确率
avg_accuracy = np.mean(accuracy_matrix[-1, :])
# 计算遗忘率
forgetting = np.zeros(n_tasks)
for i in range(n_tasks):
best_acc = np.max(accuracy_matrix[:len(tasks), i])
final_acc = accuracy_matrix[len(tasks)-1, i]
forgetting[i] = best_acc - final_acc
metrics = {
'accuracy_matrix': accuracy_matrix,
'avg_accuracy': avg_accuracy,
'forgetting': forgetting,
'avg_forgetting': np.mean(forgetting)
}
return metrics5. 持续学习与其他学习范式
5.1 对比概览
| 范式 | 数据访问 | 目标 | 挑战 |
|---|---|---|---|
| 批量学习 | 一次性访问所有数据 | 单一最优解 | 优化效率 |
| 在线学习 | 数据流 | 快速适应 | 概念漂移 |
| 元学习 | 多任务采样 | 学会学习 | 跨任务泛化 |
| 持续学习 | 顺序任务 | 不遗忘 + 可迁移 | 稳定性-可塑性 |
5.2 与元学习的联系
元学习(Meta-Learning)和持续学习都关注跨任务泛化,但侧重点不同:
- 元学习:优化初始参数,使模型能快速适应新任务
- 持续学习:在保持旧任务性能的同时学习新任务
两者可以结合,如 Meta-Learning概述 中提到的 MAML 等方法。
6. 主要方法分类总览
持续学习方法可分为五大类:
| 方法类别 | 核心思想 | 代表算法 | 优点 | 缺点 |
|---|---|---|---|---|
| 正则化 | 限制参数变化保护旧知识 | EWC, SI, LwF | 无需额外存储 | 计算开销大 |
| 回放 | 存储旧样本复习 | ER, GEM, A-GEM | 效果好 | 存储开销、隐私问题 |
| 蒸馏 | 迁移旧模型知识 | LwF, RWalk | 保持表示 | 可能丢失细节 |
| 优化 | 控制梯度方向 | GradProj, PackNet | 理论基础强 | 需要精心设计 |
| 架构 | 分配独立参数 | PackNet, PNN | 理论上无遗忘 | 参数量增长 |
详细内容见后续章节:
7. 挑战与前沿问题
7.1 开放挑战
- 任务边界未知:如何处理没有明确任务边界的场景?
- 资源约束:如何在有限存储和计算下持续学习?
- 评估协议:如何公平比较不同方法?
- 真实场景:如何从实验室设置迁移到现实应用?
7.2 前沿方向
| 方向 | 描述 | 热门程度 |
|---|---|---|
| LLM持续学习 | 大语言模型的持续预训练和微调 | ★★★★★ |
| 持续强化学习 | 在动态环境中持续学习策略 | ★★★★☆ |
| 联邦持续学习 | 隐私保护下的多设备持续学习 | ★★★☆☆ |
| 持续学习理论 | 泛化界、收敛性等理论分析 | ★★★★☆ |
参考资料
相关阅读:
Footnotes
-
De Lange, M., et al. (2022). A continual learning survey: Defying forgetting in classification tasks. IEEE TPAMI. ↩
-
McCloskey, M., & Cohen, N. J. (1989). Catastrophic interference in connectionist networks. Psychology of Learning and Motivation. ↩
-
Grossberg, S. (1982). Processing of expected and unexpected events during conditioning and attention. Psychological Review. ↩
-
van de Ven, G. M., et al. (2022). Three types of incremental learning. Nature Machine Intelligence. ↩