【深度学习】神经网络灾难性遗忘(Catastrophic Forgetting,CF)问题
文章目录
- 1. 什么是灾难性遗忘?
- 2. 为什么会存在灾难性遗忘?
- 2.1 网络权重的更新
- 2.2 没有有效的记忆机制
- 2.3 任务间数据分布差异
- 3. 目前解决方案
- 3.1 弹性权重保持(Elastic Weight Consolidation, EWC)
- 3.2 其他方法
1. 什么是灾难性遗忘?
灾难性遗忘(Catastrophic Forgetting)是指在神经网络,尤其是深度学习模型中,当模型在学习新的任务时,往往会遗忘之前学过的任务或知识。这种现象通常发生在连续学习过程中,即模型必须依次学习多个任务时。随着新任务的学习,模型会在不加保护的情况下丧失对旧任务的记忆或表现,导致旧任务的性能显著下降。
2. 为什么会存在灾难性遗忘?
灾难性遗忘的根源通常来自于以下几个方面:
2.1 网络权重的更新
- 深度神经网络在训练过程中,模型的权重会不断更新,以便最小化当前任务的损失函数。当学习新任务时,新的数据会影响网络中的权重,从而导致网络忘记先前学习的任务的信息。特别是在任务之间没有共享的知识结构时,新的训练数据可能会“覆盖”先前任务的知识。
2.2 没有有效的记忆机制
- 大多数神经网络模型没有一种内建的记忆机制来保留旧任务的知识。新的任务训练时,旧任务的信息往往会丢失,模型只能“记住”当前的任务。
2.3 任务间数据分布差异
- 在连续学习中,不同任务的数据可能有不同的分布(即数据的统计特性不同)。这种数据分布的差异会导致模型在学习新任务时必须调整其权重,而这些调整会破坏对先前任务的适应性。
3. 目前解决方案
3.1 弹性权重保持(Elastic Weight Consolidation, EWC)
该方法通过对模型的权重施加额外的正则化约束,使得在学习新任务时,网络会尽量保留对旧任务的重要权重。EWC通过计算权重对损失的敏感度,并对重要权重施加惩罚,从而避免模型在训练新任务时大幅度改变这些权重。
主要原理:
EWC 基于 费舍尔信息矩阵(Fisher Information Matrix)的概念来衡量每个网络权重对于当前任务的"重要性"。对于不同任务,EWC通过惩罚不重要的权重的变化,确保在学习新的任务时尽可能保留对旧任务的知识。
权重重要性度量:
假设我们已经训练了一个模型 θ ∗ \theta^* θ∗ 来完成一个任务, EWC目标是通过计算权重的重要性来确保我们不会在训练新的任务时过度修改这些权重。权重的重要性可以通过计算 费舍尔信息矩阵 来估计。费舍尔信息矩阵 F F F 是一个由模型输出的似然函数的二阶导数矩阵,它度量了模型预测对于不同权重的敏感度。一个权重的费舍尔信息越大,说明它对于当前任务的预测越重要。因此,EWC将惩罚那些在训练过程中改变了重要权重的操作。
正则化项:
EWC通过在损失函数中加入正则化项来实现对重要权重的约束。具体地,在原有损失函数的基础上,EWC增加了一项惩罚项:
L ( θ ) = L task ( θ ) + λ ∑ i F i 2 ( θ i − θ i ∗ ) 2 L(\theta) = L_{\text{task}}(\theta) + \lambda \sum_i \frac{F_i}{2} (\theta_i - \theta_i^*)^2 L(θ)=Ltask(θ)+λi∑2Fi(θi−θi∗)2
- L t a s k ( θ ) L_{task} (\theta) Ltask(θ) 是当前任务的损失函数
- θ i \theta_i θi 是模型中第 i i i 个权重
- θ i ∗ \theta_i^* θi∗ 是在旧任务中学习到的权重
- F i F_i Fi 是第 i i i 个权重的费舍尔信息值,衡量了该权重对旧任务的重要性
- λ \lambda λ 是超参数,用来控制正则化的强度
通过这个正则化项,EWC确保在训练新任务时,不会让模型的某些重要权重(即那些对于先前任务至关重要的权重)发生过大的变化。换句话说,EWC通过惩罚权重的变化来确保模型在学习新任务时不会忘记旧任务。
3.2 其他方法
- 迁移学习(Transfer Learning):利用旧任务的知识作为新任务的基础,在此基础上微调模型参数,从而减少对旧知识的干扰。在实际应用中,迁移学习可以通过冻结部分网络层来保护旧任务的知识。
- 元学习(Meta-learning):通过训练一个能够快速适应新任务的元模型,使得模型在面对新任务时不容易遗忘旧任务。元学习通过在元任务上进行训练,提升模型在多个任务间的泛化能力。
- 记忆增强网络(Memory-Augmented Networks):记忆增强网络(如神经图灵机、可微分神经计算机)通过引入外部记忆单元来保存重要的任务信息。这样,模型能够随时访问这些记忆来防止遗忘。
- 增量学习(Incremental Learning):增量学习方法是指在训练过程中,模型根据新的任务或数据逐步更新,而不会重新训练整个模型。这种方法能够有效减少灾难性遗忘,通过适当的增量更新策略保留旧任务的信息。
- 生成对抗网络(GAN)与自监督学习:一些研究提出通过生成对抗网络或自监督学习来保持旧任务的知识。这些方法通过生成任务相关的数据样本,帮助模型更好地记住已学的知识。
- 经验重放(Experience Replay):经验重放是一种通过保存一定量的历史数据,并在新任务训练时反复回顾旧任务的经验,从而减少灾难性遗忘的方法。这种方法在强化学习中使用得比较广泛,但也可以应用于神经网络的训练中。