结合知识蒸馏的增量学习方法总结
结合知识蒸馏的增量学习方法总结
知识蒸馏(Knowledge Distillation)最初是由Hinton在其论文《Distilling the Knowledge in a Neural Network》中首次提出的,并广泛应用于其他领域
采用教师网络(Teacher network具有较高复杂度但具备较强的推理能力)来指导学生网络(相对简单的Student networks)进行训练的过程,则可实现有效的知识迁移(KT)。其具体原理及发展历史不在本节讨论范围内。
增量学习的概念是指通过不断接收新的样本数据来实现对新知识的学习与积累,并能够有效保存大部分之前已掌握的知识内容。这种方法类似于人类自幼时期就开始接触并吸收各种知识内容,在这一过程中既能获取新的信息与技能又能够巩固原有的认知基础。
期望的增量学习系统应该有这样四个特点:
- 能够获取新信息中的关键知识;
- 能够避免访问已经用于训练分类器的原始数据;
- 具有存储已经学习到的知识的能力;
- 系统能够有效地处理包含未知类别的新数据。
然而,在机器学习和深度学习领域中存在一个严重的挑战:这些神经网络只能适应当前的数据分布模式。当应用于新的数据集时,它们容易导致灾难性遗忘的现象发生:即在学习新知识的同时会忘记旧的知识。
综上所述,本文归纳了四篇在增量学习中应用知识蒸馏思想的代表性论文,并且这些研究在该领域具有重要意义。
1.《Learning without Forgetting》(ECCV 2016)
论文地址:https://arxiv.org/pdf/1606.09282.pdf
详细解读:https://zhuanlan.zhihu.com/p/51587674
本文认为深度学习在增量学习领域取得了一个具有里程碑意义的进展。其重要性不可小觑。
不需要旧的数据
本文提出并探讨了增量学习中几种典型的方法:基于现有旧任务构建的原始模型;通过微调使模型适应新任务;仅用于特征提取;以及联合优化使其性能达到最佳状态的同时尽量减少计算资源消耗。
在本论文中所提出的LwF 方法(e)可被视为一种将蒸馏过程中的知识提取技术和优化途径之一相结合的技术方案。
LwF采用仅利用新数据集来实现新任务的监督学习,并对旧任务实施非监督学习以获得新的网络参数。
训练过程:
- 现有一个在old数据上训练得到的模型M,
- 输入新数据,得到的输出是旧模型M对新数据的旧类别输出Yo,
- 用新数据微调M得到M’(M’包括所有类的输出),loss函数分为下面三部分:
- 现在M’对新数据的旧类别输出Yo’与Yo之间的蒸馏loss,
- M’对新数据的新类别输出Yn’与ground truth Yn之间的交叉墒,
- 正则化。
2. 《iCaRL: Incremental Classifier and Representation Learning》(CVPR 2017)
相较于LWF的不同之处
利用一部分旧数据,构建exemplar。
特征表示与分类器两大部分是独立设置的。在特征表示部分保持不变的情况下,负责配置的是分类器部分。
训练过程:
通过特征提取器φ(⋅),我们对新旧数据进行处理时(其中旧数据仅选取一部分),随后计算各自子集的平均特征向量
基于Nearest-Mean-of-Examplars算法计算现有与新增的数据预测结果
在上面得到的预测值代入如下loss函数进行优化,最终得到模型
在每一次增量学习的过程中进行exemplar的更新(去除一部分旧样本并补充新增样本以确保其规模维持一致,并使各类样本数量均衡)
该方法所使用的损失函数与其对比方法相似地包含两种不同的损失类型:蒸馏损失和分类损失。值得注意的是由于存在历史数据 历史数据对应的是历史模型预测结果与当前预测结果之间的蒸馏损失项 而新的训练阶段仅使用分类损失作为优化目标。
3.《End-to-End Incremental Learning》(ECCV 2018)
论文地址:http://openaccess.thecvf.com/content_ECCV_2018/papers/Francisco_M._Castro_End-to-End_Incremental_Learning_ECCV_2018_paper.pdf
基于部分旧数据 :与iCaRL相同的exemplars。
特征提取器与分类器同时学习的过程是:基于旧类别数据运用知识蒸馏损失进行训练,在新类别上采用交叉熵损失进行训练,并且可以在端到端框架下同时训练特征提取器和分类器。
在构建过程中 ,引入了具有平衡性的微调阶段。通过使用herding selection算法从新类别样本中选取一定数量的数据 ,使选取的数量与现有old exemplars的数量保持一致 ,从而达到各分类任务之间的均衡分布 。在此基础上 ,通过小学习率对模型施加微调 ,有效缓解了模型在新增分类任务中出现的知识遗忘问题。
训练过程:
- 将大数量的新数据与少量的旧数据(exemplar)结合使用,并用于训练神经网络模型。
- 优化所有神经网络参数以最小化损失函数。
- 在微调阶段中采用herding selection算法从新类别样本中选择部分样本构成与old exemplars数量相当的数据集以达到类别平衡,并在此基础上在较小的学习率下对模型进行微调。
- old exemplars的更新
实验数据集 :iCIFAR-100、ImageNet ILSVRC 2012
4.《Large Scale Incremental Learning》(CVPR 2019)
论文地址:
http://openaccess.thecvf.com/content_CVPR_2019/papers/Wu_Large_Scale_Incremental_Learning_CVPR_2019_paper.pdf
主要是针对大数据集提出BiC模型,通过引入一个偏置修正层来很好地解决数据偏好问题。
文章中发现,增量学习中,FC 层对新数据有很大的偏向,出现分类偏好。所以,在 FC 层后引入一个偏置纠正层,进行 Bias 的纠正:
训练过程:
- 数据集划分:将新增数据与原有数据分别划分为训练集和验证集。
- 采用混合型的训练策略进行模型优化,“类似于大多数增量学习方法”。具体而言,“结合使用知识蒸馏损失函数与交叉熵损失函数来进行CNN模型的优化 training”。
- 优化偏置层(Optimize the bias layer):该层结构类似于一个简单的线性回归模型(linear regression model),仅包含两个参数(two parameters)。由于其结构特性,“使得该层的学习速度较快(quick learning speed)”,实际应用中也取得了不错的效果(good performance)。在第二个阶段利用val_old与val_new的数据进行优化(optimize)。
通过两个阶段的学习,在新旧任务上展现出良好性能,并体现出了卓越的稳定性。
实验数据集 :MS-Celeb-1M、iCIFAR-100、ImageNet ILSVRC 2012
