PRN(20200908):Frosting Weights for Better Continual Training

Zhu, Xiaofeng, et al. “Frosting Weights for Better Continual Training.” 2019 18th IEEE International Conference On Machine Learning And Applications (ICMLA). IEEE, 2019.

1. 问题背景

问题依旧是解决深度学习灾难性遗忘问题,详见深度学习之灾难性遗忘问题PRN(20200816):A Hierarchical Deep Convolutional Neural Network for Incremental Learning [Tree-CNN]中的介绍。

但是,作者在引言第五段中,明确指出,该文可作为Continual learning的一个特殊案例,因为该论文的关注点以及数据的设置方置与Continual learning是有区别的。

在Continual learning与Sequential learning中,只有新数据是可用于模型训练的。

作者称该文的目的与Continual learning与Sequential learning有所区别,此处是为了保证:重新训练的模型在新旧数据上都能有很好的性能。所以,该文在遇到新数据时,会将新数据与部分旧数据一齐对网络进行重训练。作者补充说:为了保证计算量不会随着新数据增加而越来越大,论文采用固定大小的训练集,也即新数据+旧数据的总数是一个常值。论文中相关的数据筛选方法却未给出。当然,还有一系列疑点会在下文给出。

作者缓解灾难性遗忘问题的方法属于集成模型类方法,主要贡献是提出了两种集成模型(BoostNet与FrostNet)用于持续的训练任务。

2. 解决灾难性遗忘的三种途径

  • 参数正则化:这类方法通过限制对历史任务重要的节点权值的改变来平衡新旧任务的学习问题,方法内部要解决的问题是如何评价节点权值的对历史任务的重要性?例如,突触智能就属于这类方法。
  • 模型集成:可以用集成学习的概念先入为主的理解它,解决灾难性遗忘问题的手段就是给预训练过的网络训练多个子网络分别解决不同的任务,该方法存在的问题是存储消耗与训练阶段数成正比。简单来说,你要训练新数据需要新建立一个子网络
  • Memory Consolidation:记忆巩固是从数据层面来解决灾难性遗忘的问题,它通过学习存储不同数据的模式或记忆来重新生成对历史知识具有巩固作用的虚似训练数据对网络进行不断刺激。代表方法有,知识蒸馏法、Self-refreshing Memory Approaches以及基于对抗生成网络(GAN)的方法等。

该文的目标是持续的学习到一个更加泛化的网络,即能够通过获取新数据中知识来修正历史训练的模型的错误。

3. 方法

为了更好的理解方法,先给出论文训练的过程:

  • 利用数据集1预训练一个教师网络;(数据集1被称为历史数据,数据集2被称为新数据)
  • 之后利用一半的数据集1与一半的新数据集2构成新的训练数据集训练新网络。(这个构造的数据集被称为重训练数据集)

3.1 BoostNet

  • 对于一个利用历史数据集训练好的网络(如下图虚框A所示),此处称为网络A;
  • 我们组合新数据与老数据的一部分(老数据的子集)构成重训练数据集;
  • 将重训练数据集输入到网络A,计算模型的输出与残差(Residuals),其中残差为真值与预测值的差值,用来度量网络A需要提升多少才能在重训练数据表现好;正常情况下,此时重训练数据集中的老数据的残差接近零,新数据的残差很大。
  • 网络A的参数与结构都保持不变,然后利用上面计算的残差作为训练数据的label训练网络B;
  • 最后,在推断(也即预测阶段)用网络A的输出与网络B的输出的和作为最终的输出。
    PRN(20200908):Frosting Weights for Better Continual Training

想法很纯朴,但是BoostNet的问题是,每次新数据到来时,都需要新建一个网络来拟合前面网络的残差。

3.2 FrostNet

没看懂,我把原文贴出来(看懂的大神请告诉小弟):

PRN(20200908):Frosting Weights for Better Continual Training
PRN(20200908):Frosting Weights for Better Continual Training

PRN(20200908):Frosting Weights for Better Continual Training
由于没看懂,所以不评价FrostNet的好坏。但是,论文这样写是不是太过简化了,重要的东西没有说出来。

为了避免有些人说我没有好好看,我贴出我与作者交流的邮件内容来证明我是有多想弄清这个结霜网络到底是如何结霜的:

我给作者的邮件[不惜贴上我蹩脚的英文]:
PRN(20200908):Frosting Weights for Better Continual Training
作者的回复:
PRN(20200908):Frosting Weights for Better Continual Training
首先,感谢作者的回复,还是挺和气。可是,真的没有回答到点子上。唉,也不想继续在此逗留,回了句Thank you very much就撤了。