在模型迭代训练或线上测试阶段,会不断收集到新的数据或者bad case,需要对现有模型进行更新训练,这就是一种增量学习。在训练策略不改变的情况下,随着训练数据的不断增加,更新一次模型需要的时间将会不断增加。

为了能够快速地更新模型,并且能达到理想的效果,需要对模型训练策略进行调整。

主流的几大类方法
  • 全量数据训练:将新数据和全量旧数据整合为一个训练集,进行模型训练;
  • 模型finetune:只使用新数据和较小的学习率对旧模型进行微调;
  • 部分样本训练:将新数据和部分旧数据整合为一个训练集,进行模型训练;
  • 基于蒸馏的方法:旧模型作为教师模型,使用新数据和旧数据进行模型蒸馏学习;
各类方法的优缺点
训练方法旧数据效果新数据效果训练速度备注
全量数据训练效果较好效果较好速度很慢全量训练时,如果新数据量较少,可以复制多份新数据来保证模型在新数据上的效果,由于训练数据非常多,迭代速度会很慢
模型finetune效果一般效果较好速度很快在这四类方法中,模型finetune需要的数据量最少,更新速度最快,但是只采用新数据,但是只采用新数据会导致模型对旧数据的遗忘
部分样本训练效果一般效果一般速度较快通过对旧数据进行采样(如筛选样本聚类中心附近的少数样本),减少训练使用的旧数据,在一定程度上可以降低新模型对旧数据的遗忘问题,在分类模型上这种策略效果较好,但是对于检测/分割模型,样本采样的方法效果较差
基于蒸馏的方法效果较好效果较好速度较快使用旧模型作为教师模型,监督新模型的学习,降低新模型对旧数据的遗忘,为了提高训练速度可以减少对旧数据的训练次数

基于蒸馏方法的增量学习,可以通过教师模型的知识知道学生网络的学习,降低学生模型学习新数据的时候对旧数据的遗忘问题。我们设计了基于蒸馏方法的增量学习方案,从数据和模型训练两个方面入手,解决训练迭代速度和效果无法兼得的问题。

  • 数据准备:对于大量的旧数据和少量的新数据,我们对新数据进行重复采样N次,然后形成新的训练集,同时降低模型迭代的epoch到原来的1/N,减少训练时间;
  • 蒸馏学习:以旧模型作为教师网络,在模型训练过程中,针对旧数据添加蒸馏损失,保证模型对旧数据的效果;