基于Knowledge Distillation的增量学习论文学习(之四)——End-to-End Incremental Learning

这是ECCV2018的一个工作,提出了端到端的增量学习。

  1. 动机:目前深度学习在处理增量学习问题时面临着“灾难遗忘”的问题,作者认为其主要原因是对新类别数据训练师,无法使用旧数据。为此,作者提出端到端增量学习,其思路是,选出一部分具有代表性的旧数据,与新类别数据组成训练集对模型进行更新训练。训练的损失函数包括两部分,对旧类别数据的蒸馏交叉损失,对新数据的交叉熵损失。
  2. 作者的认识:一个真正的增量深度学习分类方法应具备以下特点:(1)可以对流数据以及任何顺序、任何时间出现的类别数据进行训练;(2)对新旧数据表现都好;(3)模型的参数和内存消耗在一定范围内;(4)特征表示和分类器是端到端的。基于这四点认识,作者认为包括LwF在内的方法均没有达到这四点要求,而LwF的问题,就在于训练新数据时完全舍弃了旧数据。
  3. 作者思路:
图1 End-to-end增量学习思路

端到端增量学习的框架建立在深度网络基础上,损失函数是一个交叉熵蒸馏损失函数。网络包括一个分类层和一个分类损失函数,分类层利用特征提取器产生一系列logits集(基于softmax生成的类别概率值)。可以看出,损失函数的设计形式与前文中LwF接近。但不同于LwF,作者挑选了一部分旧数据参与训练,为了使模型更好利用这部分数据,开辟一个专有存储空间存储这部分数据。同时为了使样本数目均衡,采用增广扩充方法生成一部分数据。具体步骤包括:

  • 开辟专有存储空间:开辟专有存储空间是为了将新类别中最具代表性的样本挑选出来,不断扩充旧样本库集合。一般而言,可以有两种存储分配方式。第一种,设定样本量上限为K个。随着类别c的增多,每个类别能够存储的样本数量减少。第二种思路是固定每个类别的样本个数,即设定单个类别的样本数上限,不设定样本总数上限。
  • 专有存储空间的操作主要包括两种,样本选择及加入和剩余样本剔除。样本选择及加入采用herding selection,即对类别中所有样本与均值点的距离进行排序,选择距离最小的n个样本作为代表性样本。剩余样本剔除即剔除代表性样本之外的所有样本。
  • 网络结构设计:如图1所示,网络结构包括两部分,特征提取器和分类输出层。特征提取器由一系列卷积层组成,分类层也就是全连接层,输出与类别数目相同。因此,可以说end-to-end的增量学习框架与LwF存在很多的相似点。不同之处在于下式中损失函数的计算。其中Lc表示常规的交叉熵损失,但是样本是由专有存储空间的样本提供的,包括新类别数据与旧数据。LD则为蒸馏的交叉损失函数,仅计算旧类别数据。

4. 最后总结一下end-to-end增量学习的步骤:

共四个步骤,组成训练集,训练模型,基于训练数据子集的微调,更新内存空间。

(1)训练集的组成如开辟专有空间步骤所述,包含了新类别的全部数据与旧类别中代表性样本。采用经典的双损失函数设计,即正常的交叉熵损失和蒸馏交叉熵损失。前者的数据是新类别和旧类别中代表性样本,采用真值的one-hot编码;后者则采用旧类别样本中的蒸馏标签。如第一张图所示,模型包含三个分类节点,其中两个灰色框表示处理旧数据,一个绿色框处理新数据。对灰色框采用蒸馏损失(黄色箭头),蓝色箭头采用交叉熵损失。可以这么简单总结,新样本只用于构建常规的交叉熵损失,旧样本则用于同时构建常规交叉熵损失和蒸馏损失。

(2)训练过程:对数据做增广扩充处理,训练时不冻结特征层和分类层,所有参数均更新。

(3)平衡微调:解决挑选的旧样本过少问题,具体操作就是丢弃部分新数据,使得训练子集中每类样本数量个数相同或接近。

(4)更新内存空间:平衡微调后,需要通过加入新类别样本更新代表性内存。

总结而言,本文的所谓端到端增量学习主要包括以下几点:1)挑选特定旧数据参与增量训练;2)双损失函数的设计;3)增量训练时样本增广扩充、样本平衡微调的细节处理。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值