Catastrophic Forgetting
了解如何防止神经网络中的灾难性遗忘。探索在训练你的 Ultralytics YOLO 模型时行之有效的缓解策略。
灾难性遗忘,通常被称为灾难性干扰,是机器学习中一个被广泛研究的现象,指人工神经网络在学习新任务时突然丢失之前学到的信息。当模型为了适应新数据集而进行顺序训练时,使用反向传播的优化算法会更新模型权重。这一过程往往会无意中覆盖掉早期任务所需的数学表征。因此,如果一个针对原始目的进行高度优化的AI系统在没有特定对策的情况下仅在新数据上进行训练,它在那些初始任务上的性能可能会出现严重下降。
Link to this section为什么会发生灾难性遗忘#
在深度学习中,模型的知识存储在相互连接的神经元组成的分布式网络中。在微调过程中,像Stochastic Gradient Descent这样的优化函数会调整这些连接以最小化新数据上的误差。如果新的训练数据集不包含原始类别的示例,优化过程会将权重向新数据分布偏移,从而有效地抹去旧分布的“记忆”。关于结构偏移的最新研究表明,这种内部崩溃从根本上限制了现代神经网络实现开箱即用的类人终身学习的能力。
Link to this section区分相关概念#
将灾难性遗忘与其他AI概念进行对比至关重要:
- 灾难性遗忘与模型崩溃: 遗忘是由于递增式学习新任务而发生的,而模型崩溃则是指当模型递归训练由其他AI模型生成的合成数据时,在同一任务上性能的逐渐衰退。
- 灾难性遗忘与持续学习: 持续学习旨在解决灾难性遗忘的总体研究方法。持续学习算法尝试使模型能够在不遗忘的情况下顺序获取新知识。
Link to this section现实世界中的示例#
灾难性遗忘在动态现实环境中运行的各种AI领域中构成了严峻挑战:
- 自动驾驶系统: 在自动驾驶汽车的感知流水线中,一个最初训练用于识别行人和标准交通标志的计算机视觉系统,可能会被微调以识别新的、特定区域的施工标志。如果没有防护措施,该系统可能会突然无法可靠地检测行人,从而造成严重的安全风险。
- 语言与认知AI: 当为特定领域任务(如医学诊断)定制大语言模型时,模型可能会忘记其对话对齐或通用推理技能。最近一项关于LLM的对比分析显示,在高度专业化的文本上进行标准微调往往会削弱先前的安全对齐,导致模型失去其主要的指令遵循能力。
Link to this section克服灾难性遗忘#
AI工程师利用多种策略来减轻这一问题并维持最佳的可塑性-稳定性困境:
- 数据集回放与合并: 最可靠的方法是将部分原始训练数据与新数据混合。Ultralytics Platform等工具可以简化合并数据集的管理和版本控制,确保在训练期间有效地回放原始类别。
- 弹性权重巩固 (EWC): 这种正则化技术限制了对旧任务至关重要的参数更新。通过识别并保留这些关键权重,模型减少了遗忘,正如关于克服网络遗忘的最新实验中所强调的那样。
- 参数高效微调 (PEFT): 像低秩适应 (LoRA)这样的方法会冻结核心预训练权重,并将小的、可训练的矩阵注入网络,从而防止基础知识被覆盖。
- 冻结层: 在较短的训练周期中,冻结主干和颈部层可以确保核心特征提取器保持完整。
- 无梯度优化: 新颖的框架最近证明,基于前向传播的方法也可以在梯度更新受限的环境中有效地减轻遗忘。
Link to this section视觉AI中的实现示例#
当调整Ultralytics YOLO以适应新的目标检测任务时,冻结层是一种有效且易于使用的方法。以下示例演示了如何在训练Ultralytics YOLO26模型处理新数据集时,通过冻结前10层来防止灾难性遗忘。
from ultralytics import YOLO
# Load a pretrained Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Train on a combined dataset while freezing core backbone layers
# The 'freeze=10' argument prevents catastrophic forgetting of foundational visual features
results = model.train(data="combined_dataset.yaml", epochs=20, freeze=10, lr0=0.001)
# Evaluate the model to ensure it retains performance on old and new tasks
metrics = model.val()





