先记住这个答案
模型持续学习多个任务时会遗忘旧任务,根本在于所有任务共用同一套权重。反向传播按新任务损失调整参数时,那些对旧任务关键的方向也被移动。例如在A上收敛的权重,再在B上训练,更新根据B的梯度进行,若B对同一权重的梯度与A不一致,就会把A学到的决策边界推走。旧知识没有单独备份,只能以新参数的形态保存,所以发生灾难性遗忘。
- 共享权重被新任务梯度覆盖是主因
- 旧知识无独立存储,更新即覆盖
- 任务冲突越大遗忘越快
梯度下降如何覆盖旧知识
顺序训练任务A与B时,模型参数θ先拟合A达到极小点。切换到B后,每一次更新都按∂L_B/∂θ移动θ。只要B的梯度在θ处不为零,θ就会偏离A的最优点,即使B的样本中不包含A类别,更新方向也不受A错误约束。多次迭代后θ被推入适合B的区域,而A的决策边界被破坏。
更具体地,神经网络同一层权重同时编码A与B的特征。A中的某个滤波器可能被B当作无关特征而削弱,因为B的交叉熵损失对该滤波器的梯度为正。若任务A需要该滤波器响应强烈而B不需要,则更新会持续降低其增益。权重共享使这种冲突不可避免,容量越大冲突可能越分散。
学习率与批量梯度也会影响遗忘。大步长可能直接跨越A的极小点,导致更大偏移;小批量噪声使梯度估计有偏,可能加剧对旧任务参数的破坏。即使使用小学习率,若迭代次数足够多,θ依然会漂移。关键不是更新步长绝对值,而是B的损失函数在旧任务关键方向上的梯度分量持续存在,使得这些方向被反复调整。
从图像分类到文本分类的顺序微调
以预训练BERT为例:先在大规模通用语料上训练,然后在情感分类(任务A)上微调,假设评测准确率为92%。随后不再接触A数据,转而在新闻主题分类(任务B)上继续微调2000步。最终回到A的测试集,假设准确率降至71%(具体数值取决于数据与超参设置,任务差异越大降幅越明显,严重时甚至接近随机猜测)。
这个过程中,Adam优化器记录一阶和二阶动量。当A数据完全移除时,更新完全由B的梯度决定。B中的新闻主题词(如‘美国大选’)会调整注意力权重,而这些权重原先用于编码情感词与语境的关系。权重矩阵中与A相关的奇异向量被B对应的奇异向量替换,导致A样本的表示偏移。
若在B训练时每隔几步混入少量A数据,遗忘会放缓,但这属于回放技术,不在本题参数机制范围内。关键观察:遗忘源于每次更新都基于B损失,A的旧梯度不再出现,无法提供抵抗方向。工程上若不冻结底层分类器,BERT顶层分类器变化更快,而底层也会被B数据缓慢重排。
什么情况下遗忘不明显仍然会发生?
若任务A与B需要的底层特征高度重叠,例如先学猫狗分类再学狼狐分类,共享卷积层大都保留,遗忘只体现在分类头。此时旧任务准确率可能仅从98%降到96%。但若任务A是医学影像任务,B是自然语言情感任务,参数冲突大,旧任务性能可能雪崩。
另一种边界是只微调少量层。若冻结前面层只更新顶层,那么旧任务学到的底层通用特征被保留,遗忘主要来自顶层。但顶层如果本来就不共享,则新任务只能更新它自己的部分?实际上任务B仍会使用同一顶层,所以即便只更新少量参数,只要该参数被B利用,也会覆盖A利用它的方式。
无法避免的根本原因是更新公式不区分参数的重要性。即使学习率趋近于零,只要持续无限次更新也会漂移。一种静态缓解是为每个任务保留独立参数快照并在对应任务推理时切换使用,但这需额外存储与路由;正交投影等干预方法也需牺牲容量和计算。因此在资源受限的持续学习场景,遗忘不是训练技巧能根治的,需从数据或架构层面设计。
容易答错的地方
- 误以为保存旧模型就能防止遗忘
- 只保留旧模型参数不参与训练,新模型更新不会物理覆盖旧文件,但部署时只有一个模型。推理中新权重承担全部任务,旧知识已从新权重中消失,除非切换权重副本。
- 误以为小学习率可以消除灾难性遗忘
- 小学习率只是让每步变化小,但多步累积仍能覆盖。例如,假设在MNIST上先用0.01学习率训练任务A,再用0.001学习率训练任务B一万步,任务A的精度仍会大幅下降。
面试官还会怎么问?
为什么正则化损失能缓解遗忘?
EWC等加入对旧任务重要参数的惩罚,限制其偏离,但重要矩阵估计粗糙。它本质是降低覆盖速率,并非阻止所有迁移。容量过大时仍可能失败,且需存储旧任务统计量。
微调新任务时为什么先测试旧任务?
顺序训练中没有旧数据参与,旧任务测试集只用于评估不参与梯度。若测试结果稳定说明更新方向未破坏旧知识,但实践中经常发现测试时发现忘了,那时已无法回溯参数状态。
LoRA微调是否同样存在灾难性遗忘?
LoRA只更新低秩增量,原始预训练权重不变。若在LoRA上继续不同任务,同样会出现增量间的覆盖。解决之道是每个任务独立适配器,否则共享LoRA基座也会遗忘前一个任务。
参考资料
示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。