阅读时间:2023-10-22
1 介绍
在连续学习中,智能体通过利用先前的经验从一系列任务中学习,并将知识传递给未来的任务。为了成功执行先前的任务,学习者需要记住如何执行它们。一种使学习者具备这种能力的方法是通过存储一个小的记忆,称为情节记忆,该记忆存储了来自先前任务的一些示例,并在训练未来任务时重播这些示例。作者通过实证分析了在每个训练样本仅出现一次的连续学习设置中,小型情节记忆的有效性。他们发现一种称为经验重播(ER)的简单基准方法,它在当前任务的示例和存储在情节记忆中的示例上进行训练,明显优于用于连续学习的现有最先进方法,无论是否使用情节记忆。此外,对过去任务的小型记忆进行重复训练不会损害泛化性能,反而会提高泛化性能。
2 创新点
引入了一个小型的情节性记忆,通过将之前的任务的示例存储在这个记忆中,并在训练后续任务时重新播放这些示例,从而解决了连续学习中的灾难性遗忘问题。
3 算法
存储一个称为情节记忆的小型记忆,它存储了来自之前任务的几个示例,并在训练未来任务时重放这些示例。
存储的来自之前任务的几个示例可以通过两种方式进行:
- 经验回放-蓄水池采样(Reservoir Sampling): 这种方法在整个数据流中随机选择一些数据点来存储在记忆中。通过这种方法,可以保持对之前任务的一些样本进行回放,以供未来任务的训练使用。经验表明,水塘采样在记忆容量较大时效果最好。
- 环形缓冲区(Ring Buffer): 这种方法为每个任务分配了一组FIFO(First-In-First-Out)缓冲区,每个类别有一个缓冲区。缓冲区的大小是预先设定的,它保留了每个类别最近的若干观察样本。与水塘采样不同,环形缓冲区不会在训练过程中更改来自早期任务的样本,这可能导致更强的过拟合。然而,在训练的早期阶段,由于每个类别的缓冲区大小保持不变,存储器不能充分利用。然而,这种简单的抽样策略保证了记忆中所有类别的平等表示,这在记忆很小时特别重要。
4 实验分析和结果
四个常用的基准数据集。Permuted MNIST 、Split CIFAR 、Split miniImageNet、Split CUB。
采用的模型有FINETUN、EWC、A-GEM、MER
- FINETUNE是一种模型,它在没有任何正则化和情节记忆的情况下进行持续训练,并且使用上一个任务的参数初始化新任务的参数。
- EWC是一种基于正则化的方法,通过限制对于过去任务性能至关重要的参数的学习来避免灾难性遗忘。
- A-GEM是一种使用情节记忆作为优化约束的模型。
- MER是一种利用情节记忆并使用近似当前任务梯度和先前任务梯度点积的损失来避免遗忘的模型。
根据实验结果,当任务之间相关度较小时,即旋转角度差小于20度时,即使没有记忆,通过在T2上的训练也可以改善对T1的泛化性能。然而,当在D2和M1上进行训练时,无论两个任务之间的相关性如何,T1的泛化性能都优于FINETUNE方法,即仅使用D2进行训练。
实验还比较了不同的记忆更新策略,其中经验表明对于小型情节性记忆,基于样本均衡的采样方法效果最好,而对于更大的记忆,基于蓄水池采样(Reservoir Sampling)的方法效果最好。此外,综合使用蓄水池采样和基于环形缓冲区的方法可以在记忆中保留充足的样本的同时实现良好的随机性。
5 待研究问题
什么样的最佳输入最能减轻预期遗忘,并寻找在记忆完全填满时从记忆中删除样本的最佳策略。
6 代码
https://github.com/firehose-dataset/congrad?utm_source=catalyzex.com