持续学习
本页介绍持续学习(Continual Learning,又称 Lifelong Learning):让模型像人一样按顺序学习一系列任务、且不遗忘旧任务。它解决了深度学习最顽固的”灾难性遗忘”问题,是连接迁移学习与元学习、迈向长期可进化 AI 系统的关键技术。
前置概念速览(第一次接触 AI 的读者可先看这一段)
- 梯度下降(Gradient Descent):神经网络”学习”的本质。模型用一个损失函数(Loss Function) L 衡量”预测有多错”,然后沿损失下降最快的方向(即梯度 ∇L 的反方向)小步调整参数 :。其中 叫学习率(Learning Rate),是步长。一次反向传播(Backpropagation)就能算出所有参数的梯度。
- SGD(Stochastic Gradient Descent,随机梯度下降):每次只用一小批样本(mini-batch)估计梯度并更新一次,是训练深度网络的标准做法。后面所有”训练新任务”的循环,底层都是 SGD。
- 正则化(Regularization):在损失里加额外项来约束模型复杂度或参数变化幅度,例如权重衰减(L2 正则)、Dropout。EWC 本质也是一种正则化——约束”重要参数别乱动”。
持续学习就像一边工作一边考证的人:学了新技能(Python)不会忘了旧技能(开车)。但深度网络天然做不到——这叫”灾难性遗忘”:
- 灾难性遗忘 = 狗熊掰棒子:一个分类器学完猫狗分类后,接着学汽车飞机分类,猫狗的识别能力会迅速崩盘。因为新任务的梯度更新把为旧任务调好的权重全冲乱了。
- 稳定性-可塑性困境(Stability-Plasticity Dilemma):模型既要 可塑(快速学新任务),又要 稳定(不破坏旧知识)——这两个目标天然冲突。太稳定学不动新东西,太可塑旧知识全忘。
- 人脑的解法:大脑通过”巩固”(consolidation)——把学到的短期记忆重放到海马体、逐步固化到大脑皮层——既学了新东西,又不覆盖旧记忆。持续学习算法正是从这一机制汲取灵感。
直觉上理解:参数空间是有限的”书架”。新任务不断要往里放新书,若直接堆上去就会挤掉旧书——持续学习要做的是”加固重要的旧书架”,或者”另辟一块新空间”,让旧知识不被新知识挤出。
持续学习按任务边界是否清晰,分为三类设定:
- 任务增量(Task-Incremental):任务 ID 在推理时已知,只需在对应任务头上输出——最简单。
- 类别增量(Class-Incremental):推理时无任务 ID,模型要区分所有学过的类——中等难度。
- 域增量(Domain-Incremental):输入分布随时间漂移(如天气、光照),输出空间不变——相对友好。
形式化地,设任务序列为 ,对应数据分布 。持续学习的目标是学到一个模型 ,使得在任意时刻 ,对所有已见任务 都保持低损失,而不仅仅是对当前任务 损失低。这与标准”一次性训练”的根本区别在于:数据是流式到达的,旧任务数据要么不可得、要么只能保留极少部分。
持续学习算法分三大流派,对应三种防止遗忘的思路。
1. 回放法(Replay)
Section titled “1. 回放法(Replay)”最直接的做法——“不时翻一翻旧书”。维护一个小的旧任务样本缓冲区(memory buffer)B,训练新任务时混入旧样本一起训练。每步训练流程:
每步训练: 1. 从当前任务 D_t 采样一个 mini-batch (x_new, y_new) 2. 若缓冲区非空,从 B 采样 mini-batch (x_old, y_old) 3. 将新旧样本拼接:x = concat(x_new, x_old), y = concat(y_new, y_old) 4. 计算总损失 L = L_task(f_θ(x), y),做一次 SGD 更新形式化地,回放的总损失为:
其中 是新旧数据混合比例, 是单样本损失(如交叉熵)。 越大对旧任务保护越好,但新任务学得越慢——这正是稳定性-可塑性困境的数学体现。
代表方法:
- ER(Experience Replay,经验回放):最朴素版本,直接混入旧样本。实现极简、效果稳健,是工业首选。
- iCaRL(结合回放与类原型更新):每类保留一组”最具代表性”的样本(用 herding 算法挑选),分类时用样本特征均值作为类原型,按最近原型分类。
- DER / DER++(Dark Experience Replay):除了回放旧样本本身,还回放旧模型在这些样本上的 logit 输出(“暗经验”),用一个蒸馏损失约束新模型与旧模型输出一致。DER++ 至今是强 baseline。
名词解释:logit 是分类器最后一层 softmax 之前的原始输出值,反映各类的相对置信度。知识蒸馏(Knowledge Distillation) 则是让学生模型模仿老师模型的输出分布,详见下文。
当完全不能保存旧数据时(如医疗隐私法规),用 生成式回放(Generative Replay)——训练一个生成模型(GAN 或扩散模型)生成”伪旧样本”混入训练。详见生成对抗网络与扩散模型。
2. 正则化法(Regularization)
Section titled “2. 正则化法(Regularization)”“加固重要的旧书架”——为每个参数估计它对旧任务的重要性,新任务训练时对重要参数施加惩罚,禁止它们大幅改变。
2.1 EWC 的 Fisher 信息矩阵推导
Section titled “2.1 EWC 的 Fisher 信息矩阵推导”代表方法 EWC(Elastic Weight Consolidation,弹性权重巩固) 的核心思想来自贝叶斯推断。学完旧任务后,参数 在旧任务上的后验分布为 。新任务到来时,我们想找到在旧任务后验上”最可能”的参数——即最大化:
第二项 log p(θ | D_old) 就是旧任务给新参数加的”约束”。EWC 用正态分布近似它在最优点 附近的形状。根据拉普拉斯近似(Laplace Approximation),后验在对数似然二阶可导时近似为:
其中 F 是 Fisher 信息矩阵(Fisher Information Matrix),定义为对数似然对参数梯度的外积期望:
直观上,Fisher 矩阵的对角元 F_ii 衡量”参数 θ_i 变动一点点,旧任务的预测会变差多少”——越大越重要。取对数后,−log p(θ|D_old) 近似为一个二次惩罚项:
其中 F_ii 是参数 θ_i 对旧任务的 Fisher 信息(越大越重要),θ_i_old 是旧任务训练完后的参数值,λ 是正则强度超参。损失的第二项相当于一个”软锚”——越重要的参数被拉得越紧。
名词解释:
- Fisher 信息矩阵:统计学中衡量”参数变化对似然函数敏感度”的矩阵,对角线元素越大说明该参数越关键。EWC 只用对角元近似(忽略参数间相关性),计算量从 O(n²) 降到 O(n),是实用的工程妥协。
- 贝叶斯推断(Bayesian Inference):把参数本身视为随机变量、用后验分布 p(θ|D) 描述其不确定性。EWC 的”重要性约束”本质上是把旧任务的后验作为新任务的先验。
2.2 知识蒸馏式正则
Section titled “2.2 知识蒸馏式正则”LwF(Learning without Forgetting) 用知识蒸馏(Knowledge Distillation) 作为正则项。蒸馏本是 Hinton 提出的模型压缩技术:让”学生”模型模仿”老师”模型的输出分布,把老师的”暗知识”(各类间的相似度信息)传递给学生。在持续学习中,旧模型就是老师:
其中 z_old(x)、z_new(x) 分别是旧/新模型在输入 x 上的 logit,T 是温度(Temperature)(>1 使输出分布更平滑、暴露更多类间关系信息),KL 是 KL 散度(衡量两个分布差异)。LwF 总损失 = 新任务损失 + λ·L_KD,无需保存旧样本,只用旧模型对新数据的预测做软标签。
2.3 其他正则化方法
Section titled “2.3 其他正则化方法”- SI(Synaptic Intelligence):在训练过程中在线累积每个参数对损失下降的贡献(“path integral”),比 EWC 事后估计更准。
- MAS(Memory Aware Synapses):用输出的 L2 范数对参数的梯度估计重要性,不依赖标签(适合无标签场景)。
正则化法无需保存旧数据,但对长任务序列(数十个任务以上)效果有限——所有旧任务的约束会逐渐”挤死”新任务的学习空间。
3. 架构法(Architectural)
Section titled “3. 架构法(Architectural)”“专门开辟新空间”——为每个任务或每组参数分配专属子网络,旧任务用旧子网络、新任务用新子网络,互不干扰。
代表方法:
- PackNet(基于剪枝的参数隔离):先为任务 1 训练再剪枝出专属参数,剩余参数给任务 2。剪枝(Pruning)是把不重要的权重置零来压缩模型的技术,这里被”挪用”来做参数分配。
- HAT(Hard Attention to the Task):用注意力掩码动态分配每层参数给不同任务,掩码通过一个逐任务学习的注意力向量生成。
- Progressive Neural Networks(PNN):每来一个新任务就新增一列网络,旧列冻结、新列通过横向连接读取旧列特征。
名词解释:注意力掩码(Attention Mask) 是一个逐元素乘到特征图上的 0/1(或 0~1 连续)矩阵,决定哪些通道/位置参与计算。HAT 用它实现”这个参数属于任务 A、那个属于任务 B”。
架构法完全不遗忘,但网络规模随任务数线性增长,扩展性受限。在 LLM 时代,参数高效微调(PEFT) 给架构法注入了新生命——用 LoRA 等只追加极少量参数的”任务适配器”,规模不再爆炸。详见下文”2025 前沿”。
灾难性遗忘现象
Section titled “灾难性遗忘现象”三大流派对比
Section titled “三大流派对比”PyTorch:EWC 约束完整实现
Section titled “PyTorch:EWC 约束完整实现”import torchimport torch.nn as nnimport copy
def compute_fisher(model, data_loader, loss_fn, n_samples=None): """计算 Fisher 信息矩阵的对角近似。
对每个参数累积 (梯度)^2,近似该参数对旧任务的重要性。 n_samples: 若给定,只取前 n_samples 个 batch(大数据集下加速)。 """ model.eval() fisher = {n: torch.zeros_like(p) for n, p in model.named_parameters()} n = 0 for x, y in data_loader: model.zero_grad() loss = loss_fn(model(x), y) loss.backward() for name, p in model.named_parameters(): if p.grad is not None: fisher[name] += p.grad.data ** 2 n += 1 if n_samples is not None and n >= n_samples: break # 取平均,得到经验 Fisher for name in fisher: fisher[name] /= max(n, 1) return fisher
class EWCTrainer: """把 EWC 约束封装成一个可复用训练器。"""
def __init__(self, model, lam=400.0): self.model = model self.lam = lam self.fisher = None # 旧任务的 Fisher 信息 self.old_params = None # 旧任务结束后的参数快照
def _reg_loss(self): """EWC 正则项:重要参数偏离旧值越多,惩罚越大。""" if self.fisher is None: return 0.0 reg = 0.0 for name, p in self.model.named_parameters(): reg += (self.fisher[name] * (p - self.old_params[name]) ** 2).sum() return 0.5 * self.lam * reg
def after_task(self, data_loader, loss_fn): """一个任务训练结束后调用:冻结当前参数重要性。""" self.fisher = compute_fisher(self.model, data_loader, loss_fn) self.old_params = {n: p.detach().clone() for n, p in self.model.named_parameters()}
def train_step(self, x, y, loss_fn, optimizer): """带 EWC 约束的单步训练。""" self.model.train() optimizer.zero_grad() loss = loss_fn(self.model(x), y) + self._reg_loss() loss.backward() optimizer.step() return loss.item()
# ---- 使用示例 ----# model = MyModel()# loss_fn = nn.CrossEntropyLoss()# optimizer = torch.optim.SGD(model.parameters(), lr=0.01)# ewc = EWCTrainer(model, lam=400.0)## # 训练任务 1(无约束)# for x, y in task1_loader:# ewc.train_step(x, y, loss_fn, optimizer)# ewc.after_task(task1_loader, loss_fn) # 记录任务 1 的重要性## # 训练任务 2(自动加入 EWC 约束)# for x, y in task2_loader:# ewc.train_step(x, y, loss_fn, optimizer)# ewc.after_task(task2_loader, loss_fn) # 累积任务 2 的重要性Experience Replay 完整实现
Section titled “Experience Replay 完整实现”import randomimport torch
class ReservoirBuffer: """Reservoir Sampling 缓冲区:流式插入时保证每个样本被保留的概率相等。"""
def __init__(self, capacity): self.capacity = capacity self.data = [] self.seen = 0 # 已观察到的样本总数
def add(self, samples): """samples: list of (x, y) 元组。""" for x, y in samples: self.seen += 1 if len(self.data) < self.capacity: self.data.append((x, y)) else: # 以 capacity/seen 的概率随机替换一个旧样本 idx = random.randint(0, self.seen - 1) if idx < self.capacity: self.data[idx] = (x, y)
def sample(self, batch_size): """从缓冲区均匀采样一个 mini-batch。""" batch = random.sample(self.data, min(batch_size, len(self.data))) xs = torch.stack([b[0] for b in batch]) ys = torch.stack([b[1] for b in batch]) return xs, ys
def __len__(self): return len(self.data)
# ---- 训练循环 ----# buffer = ReservoirBuffer(capacity=2000)# alpha = 0.5 # 新旧样本各半## for x_new, y_new in new_task_loader: # 流式遍历新任务# if len(buffer) > 0:# x_old, y_old = buffer.sample(x_new.size(0))# x = torch.cat([x_new, x_old])# y = torch.cat([y_new, y_old])# else:# x, y = x_new, y_new# loss = loss_fn(model(x), y)# optimizer.zero_grad(); loss.backward(); optimizer.step()## # 把当前 batch 的样本(detach 后)加入缓冲区# buffer.add(list(zip(x_new.detach().cpu(),# y_new.detach().cpu())))知识蒸馏损失(DER++ 风格)
Section titled “知识蒸馏损失(DER++ 风格)”def der_plus_loss(model, old_model, x_new, y_new, x_buf, y_buf, logits_buf, alpha=0.5, beta=0.5): """DER++ 总损失 = 新任务损失 + α·旧样本重放损失 + β·logit 蒸馏损失。
x_buf, y_buf: 缓冲区样本与标签 logits_buf : 这些样本被加入缓冲区时旧模型的 logit("暗经验") alpha, beta : 两项的权重超参 """ # 1. 新任务 + 旧样本重放的分类损失 x = torch.cat([x_new, x_buf]) y = torch.cat([y_new, y_buf]) loss_cls = nn.functional.cross_entropy(model(x), y)
# 2. logit 蒸馏:让新模型在旧样本上的输出贴近旧模型当时的输出 with torch.no_grad(): old_logits = old_model(x_buf) mse = nn.MSELoss() loss_kd = mse(model(x_buf), logits_buf) # logits_buf 是历史快照
return loss_cls + alpha * loss_cls + beta * loss_kd- 能存数据就首选回放:只要合规允许保留少量旧样本(几十到几百张/类),Experience Replay 的效果与简洁性远胜其他方法。这是工业界最常用的做法。
- 正则化法适合短任务序列:EWC 在 2-5 个任务上效果不错,但 10+ 任务后旧约束累积过多,新任务几乎学不动。长序列务必配合回放或架构法。
- 缓冲区采样策略:ER 的效果取决于从缓冲区采样哪些样本。Reservoir sampling 实现简单且无偏;类平衡采样(class-balanced)对类别增量场景更友好;iCaRL 的 herding 选最具类代表性的样本。
- 评估要看所有任务:只看新任务精度没意义——持续学习的核心指标是 平均精度(所有任务平均)、遗忘量(旧任务精度最大下降幅度)、前向迁移(未来任务的初始精度)。学术界常用一个 T×T 精度矩阵 R:R[i,j] 是学完任务 j 后在任务 i 上的精度,从中可推出上述所有指标。
- 与预训练结合是当下主流:大预训练模型(如 CLIP、ViT)本身已有强大通用表示,在此基础上做持续学习,遗忘问题大幅缓解——因为新任务只是在通用表示上”微调最后一层”,大部分共享表示本就鲁棒。详见自监督学习与迁移学习。
- 超参选择:EWC 的 λ、回放的 α、蒸馏的温度 T 都对效果影响巨大。经验上 λ 在 100–10000 之间扫,α≈0.5,T=2 是常见起点。务必在验证集(包含旧任务样本)上调参。
2025 前沿:LLM 时代的持续学习
Section titled “2025 前沿:LLM 时代的持续学习”大语言模型(LLM)的崛起把持续学习推向了新阶段——让千亿参数模型持续吸收新知识而不重训,成为 2024–2025 年最受关注的方向。
1. LLM 的灾难性遗忘更隐蔽
Section titled “1. LLM 的灾难性遗忘更隐蔽”与传统分类模型不同,LLM 的遗忘不是”识别能力崩盘”,而是知识干扰:用新语料微调后,模型在新领域表现提升,但通用问答、数学、代码能力暗中下降——业界称为 对齐税(Alignment Tax) 或 能力退化(Capability Degradation)。这催生了大量”如何安全更新 LLM 知识”的研究。
2. 参数高效微调(PEFT)+ 持续学习
Section titled “2. 参数高效微调(PEFT)+ 持续学习”LoRA(Low-Rank Adaptation) 是当下最火的 PEFT 方法:不更新原始权重 W,而是学一个低秩增量 ΔW = B·A(A∈ℝ^(r×d),B∈ℝ^(d×r),秩 r≪d),只用极少参数(约原模型 0.1%)就能适配新任务。把它和持续学习结合,形成了架构法的新范式:
- O-LoRA(Orthogonal LoRA):为每个新任务分配一个独立的 LoRA 适配器,并通过正交约束让不同任务的适配器在参数空间中相互正交(即新任务的更新方向 ⊥ 旧任务的更新方向),从数学上保证不干扰旧知识。这比 PackNet 优雅得多——参数几乎不增长,却实现了任务隔离。
- InfLoRA:进一步用子空间正交让新适配器只在”对旧任务无害”的子空间内更新。
- LoRA 回放:每个任务一个 LoRA,推理时用路由器(router)自动选择或加权融合多个 LoRA。
名词解释:正交(Orthogonal) 指两个向量的内积为零、互相”垂直”。若两个任务的参数更新方向正交,它们在梯度下降中互不”踩踏”——这是 O-LoRA 防遗忘的数学根基。
3. 模型编辑(Model Editing)与知识更新
Section titled “3. 模型编辑(Model Editing)与知识更新”对于”把某个事实从旧的改成新的”这类精准知识更新(如”美国总统换人了”),全量微调既贵又容易引发连锁遗忘。模型编辑(Model Editing) 方法(ROME、MEMIT、Knowledge Editor)直接定位并修改 LLM 中存储该事实的少量权重,做到”外科手术式”的知识更新。MEMIT(Mass Editing Memory in a Transformer)能一次性编辑数千个事实而不显著影响其他能力,是 2023–2025 年知识更新的代表方法。
4. RAG:一种”外挂式”持续学习
Section titled “4. RAG:一种”外挂式”持续学习”检索增强生成(Retrieval-Augmented Generation,RAG) 把新知识存在外部向量数据库里,推理时实时检索——本质上绕过了”把知识塞进权重”的遗忘问题。2025 年的趋势是 RAG + 在线学习:模型本身通过持续学习缓慢吸收通用知识,易变的事实交给 RAG 实时更新。两者互补:RAG 解决”时效性”,持续学习解决”能力进化”。详见大语言模型。
5. 持续预训练(Continual Pretraining)
Section titled “5. 持续预训练(Continual Pretraining)”很多企业需要把开源 LLM(Llama、Qwen)在自己的领域语料上持续预训练——这本质上是一个超大规模的持续学习问题。2025 年的工程经验包括:数据混合(Data Mixing)(新领域语料里混入 10–30% 通用语料防止能力漂移)、学习率退火(LR Annealing)(新阶段用比预训练低一个数量级的学习率)、回放在 token 级别(保留旧语料的随机子集与新语料共训)。这些技巧把”持续学习”从研究概念变成了 LLM 工程的日常操作。
6. Agent 与长期记忆
Section titled “6. Agent 与长期记忆”2025 年 AI Agent 的兴起让持续学习有了新载体:Agent 在长期任务执行中不断积累经验(工具调用、用户偏好、失败案例),这些经验需要被”记住”并指导未来决策。结合情景记忆(Episodic Memory,存历史交互)、向量数据库(存知识) 与 持续微调(更新模型能力) 的”三层记忆架构”,正在成为 Agent 系统的标准设计。
- 推荐系统的用户兴趣漂移:用户的兴趣随时间变化(夏天买泳衣、冬天买羽绒服),推荐模型需要持续学习新兴趣又不能遗忘长期偏好。淘宝、抖音的推荐系统大量采用回放式持续学习。
- 自动驾驶的地理适应:感知模型在不同城市、不同季节上线后要适应当地道路与天气(雪天、沙漠),同时不能忘记已学会的场景。Tesla 的数据引擎就是一套大规模持续学习系统。
- 医疗影像的新疾病:新冠疫情爆发时,肺片诊断模型要快速学习 Covid 特征,又不能遗忘既有肺炎、肺结核的诊断能力——持续学习让模型增量学习新疾病而不退化。
- 工业质检的产品迭代:工厂每隔几周上新品种,质检模型要增量学习新缺陷类型。正则化法或回放法能在不停线重训的前提下扩展能力。
- 对话机器人的长期记忆:智能客服、陪伴 AI 需要在长期交互中记住用户偏好与新知识,又不能因新交互覆盖旧记忆——LLM 时代,这通过 RAG + 持续微调 + 模型编辑的组合来解决。
- LLM 的领域适配与知识保鲜:金融、法律、医疗等行业 LLM 需要定期吸收新法规、新案例、新药信息。持续预训练 + LoRA 适配器 + 事实编辑的组合,是 2025 年企业 LLM 运维的标准范式。
典型类库与工具
Section titled “典型类库与工具”| 类库 | 语言 | 说明 |
|---|---|---|
| Avalanche | Python | PyTorch 生态最完善的持续学习库,集成主流算法、基准与评测指标 |
| Mammoth | Python | 持续学习基准实现库,覆盖 ER/EWC/iCaRL/DER 等主流方法的统一实现 |
| ContinualAI Lab (CoLLie) | Python | 持续学习实验框架,提供任务流与多基准数据集 |
| Sequoia | Python | 持续学习研究平台,支持静态与在线设定下的任务序列实验 |
| PermutedMNIST / Split-CIFAR | 数据 | 持续学习经典基准:MNIST 的排列变体或 CIFAR-10/100 拆分多任务 |
| PEFT (HuggingFace) | Python | HuggingFace 的参数高效微调库,支持 LoRA/Adapter 等,是 LLM 持续学习的工程基础 |
| EasyEdit | Python | LLM 知识编辑工具包,集成 ROME/MEMIT 等模型编辑算法 |
| 术语 | 英文 | 解释 |
|---|---|---|
| 持续学习 | Continual Learning / Lifelong Learning | 按顺序学习一系列任务且不遗忘旧任务的学习范式 |
| 灾难性遗忘 | Catastrophic Forgetting | 学习新任务后旧任务能力急剧下降的现象 |
| 稳定性-可塑性困境 | Stability-Plasticity Dilemma | 保持旧知识稳定 vs 快速学习新知识的内在矛盾 |
| 任务增量 | Task-Incremental Learning | 推理时已知任务 ID 的最简单持续学习设定 |
| 类别增量 | Class-Incremental Learning | 推理时无任务 ID、要区分所有学过类别的设定 |
| 域增量 | Domain-Incremental Learning | 输入分布漂移、输出空间不变的持续学习设定 |
| 回放 | Replay / Rehearsal | 混入旧任务样本共同训练以防遗忘的方法 |
| Fisher 信息矩阵 | Fisher Information Matrix | 衡量参数变动对似然敏感度的矩阵,对角元近似参数重要性,EWC 用它构造正则化项 |
| 拉普拉斯近似 | Laplace Approximation | 用高斯分布近似后验分布的方法,EWC 借它把后验约束转化为二次惩罚项 |
| 知识蒸馏 | Knowledge Distillation | 让学生模型模仿老师模型输出分布的技术,LwF/DER 用它做正则化 |
| 温度 | Temperature (T) | 蒸馏中软化 softmax 输出的超参,T>1 暴露更多类间相似度信息 |
| 经验回放 | Experience Replay (ER) | 维护样本缓冲区,训练时混入旧样本的最简回放法 |
| logit | Logit | 分类器 softmax 之前的原始输出值,反映各类相对置信度 |
| 剪枝 | Pruning | 将不重要的权重置零以压缩模型的技术,PackNet 借它做参数隔离 |
| 注意力掩码 | Attention Mask | 逐元素乘到特征图上的门控矩阵,HAT 用它分配参数给不同任务 |
| 前向/后向迁移 | Forward / Backward Transfer | 未来任务的初始精度提升 / 旧任务精度的变化 |
| Reservoir Sampling | Reservoir Sampling | 流式数据下的均匀抽样算法,保证每个样本被保留的概率相等 |
| 对齐税 | Alignment Tax | LLM 微调(如 RLHF、领域适配)后通用能力下降的现象 |
| LoRA | Low-Rank Adaptation | 用低秩矩阵增量 ΔW=BA 近似权重更新的 PEFT 方法,参数量约原模型 0.1% |
| O-LoRA | Orthogonal LoRA | 为每任务分配正交 LoRA 适配器以实现任务隔离的持续学习方法 |
| 模型编辑 | Model Editing | 精准修改 LLM 中存储特定事实的少量权重的方法(ROME、MEMIT) |
| 检索增强生成 | Retrieval-Augmented Generation (RAG) | 推理时从外部知识库实时检索,绕过把知识塞进权重导致的遗忘 |
| 持续预训练 | Continual Pretraining | 在已有预训练模型上用新领域语料继续训练的大规模持续学习场景 |
| 情景记忆 | Episodic Memory | Agent 中存储历史交互与案例的记忆机制,持续学习的 Agent 载体 |
- EWC 开山作:Kirkpatrick et al., “Overcoming Catastrophic Forgetting in Neural Networks”, PNAS 2017. 提出基于 Fisher 信息的弹性权重巩固(EWC),持续学习领域最有影响力的论文之一。
- iCaRL:Rebuffi et al., “iCaRL: Incremental Classifier and Representation Learning”, CVPR 2017. 结合回放与类原型更新,类别增量学习的经典基线。
- DER & DER++:Buzzega et al., “Dark Experience for General Continual Learning”, NeurIPS 2020. 回放旧模型的 logit 输出(暗经验),简单且效果极强,至今是强 baseline。
- LwF:Li & Hoiem, “Learning without Forgetting”, ECCV 2016. 用知识蒸馏做正则化的代表,无需保存旧数据。
- 持续学习综述:De Lange et al., “A Continual Learning Survey: Defying Forgetting in Classification Tasks”, TPAMI 2021. 系统梳理三大流派、评测协议与基准,入门首选。
- 架构法:Rusu et al., “Progressive Neural Networks”, arXiv 2016. 提出每任务新增网络列、冻结旧列的架构法,完全无遗忘的代表工作。
- O-LoRA:Wang et al., “Bridging Task and Class Struggles in Continual Learning via Orthogonal Low-Rank Adaptation”, ICLR 2024. 把 LoRA 正交化用于持续学习,LLM 时代架构法的新标杆。
- MEMIT:Meng et al., “Mass-Editing Memory in a Transformer”, ICLR 2023. 一次编辑数千事实的模型编辑方法,LLM 知识更新代表作。
- LLM 持续学习综述:Wang et al., “A Comprehensive Survey of Continual Learning: Theory, Method and Application”, IEEE TPAMI 2024. 含 LLM 时代的持续学习专题章节。