持续学习
前面介绍过的深度学习模型在图像识别、NLP 和视频分析等领域获得了巨大的成功。但是,当面对分布差异很大的序列任务学习,深度学习会出现灾难性遗忘,即在学习时对之前学到的知识迅速破坏的现象。这是训练模型时无法接受的。
神经科学的角度
人类的大脑是一个持续学习的系统,人类等高级动物也天生具备终生学习的能力。这种能力可以使我们用旧任务的知识来帮助新知识的学习,并将新任务知识整合进现有的知识体系。
生物学和神经科学的研究发现,生物的知识学习系统中存在稳定性和可塑性的平衡。稳定性体现于对已学知识的保持,可塑性体现于对新知识的学习。
受此启发,学术界提出了持续学习的概念,其研究的主要目标为,对于一个持续到来的任务流,如何在学习新任务的同时:
- 保持已学知识
- 迁移已有知识,加速新任务的学习
这里的任务流保证了当前任务的数据在后续任务中不可以被模型访问,这就基本解决了灾难性遗忘的问题。 例如,迁移学习在经典机器学习和深度学习中关注流式序列任务学习中所有任务的平均表现,迁移学习中希望在所有学过的任务中平均最好,而在多任务学习中则串行地学习多类型任务。
场景设定
广义的持续学习任务之间完全不同,现阶段很难展开研究。因此,学术界通常研究以下场景的持续学习:
- 任务增量学习:不同时刻到来的数据分属于不同的任务,可以获得当前任务的所有数据。测试推理时,任务的编号可知。
- 类别增量学习:不同时刻到来的数据属于同一类型任务的不同类别,随着训练的进行,类别的数量逐渐增加。测试推理时,任务的编号不可知。
- 域增量学习:不同时刻到来的数据分属于不同的任务,但类别空间完全相同,只是数据的域发生了变化。前后两个任务的数据不满足独立同分布。
一般来说,对于
常用数据集
类别数据集:MNIST、CIFAR-10 类别数据集:CIFAR-100、mini-ImageNet 类别数据集:Tiny-ImageNet
对于
显然,可以得到平均精度为
(Backward Transfer)
主要可以刻画遗忘的程度,即在学习新任务时,对之前任务的性能提升。
(Forward Transfer)
主要可以刻画迁移的程度,即在学习新任务时,之前的知识对新任务的性能提升。
持续学习方法
基于回放的方法
这一类方法主要是将学习过任务的一小部分通过某种方法“保存”起来,然后在之后的学习中回放以用于训练。
- 采样回放方法:学习完每个任务后保存小一部分当前任务的原始样本在固定大小的内存空间里。选择要保存的原始样本时,应当选择有辨别性和代表性的样本。代表模型有
等。辨别性和代表性
- 辨别性:靠近分类边界的样本,不确定性高。通过对样本施加不同的转换,可以得到多个扰动样本,然后计算模型对多个扰动样本的输出的方差来衡量样本的不确定性。
- 代表性:靠近分布中心的样本更加具有代表性。
- 生成回放方法:生成回放方法不保存原始样本,而是训练一个能够生成旧类样本的生成对抗网络,可以用于在后续学习过程中随时生成旧类样本。代表模型有
和 等。 - 伪样本回放方法:固定模型参数,把输入的随机噪声作为可学习参数,将随机噪声优化为伪样本。这一做法和数据蒸馏有异曲同工之妙。代表的模型有
等。
基于约束的方法
这一类方法通过在学习的同时为未来的变化施加约束,来防止"灾难性遗忘"。
- 参数约束方法:限制对旧任务性能影响较大的参数的更新。通常在学习的过程中计算参数的重要性。代表的模型有
等。 - 梯度约束方法:通过旧任务的信息,直接对参数的梯度进行矫正。
的思路是限制参数在旧任务的“近似零空间”进行更新。 - 数据约束方法:通过知识蒸馏,让模型的输出尽可能和旧模型的输出一致。
的思路是对于新任务,先记录蒸馏过的旧模型对新任务数据的预测 ,然后将新模型对新任务数据的预测和 的差别作为损失的一部分,然后再在此基础上来训练新模型。
基于结构的方法
- 参数隔离方法:限制模型的大小,在学习时利用剪枝技术,将一些节点剪掉,后续学习中只能修改前面剪掉了的节点,保证了每轮学习的参数基本是隔离的。代表性的网络是
。 - 模型拓展方法:不限制模型的大小,为新任务开辟新的网络子结构,并且在学习新任务的时候固定已经学好的网络部分。