2017的经典论文,Learning without Forgetting(LwF)。在多篇论文中被用作实验比较的经典算法。作者认为Fine Tuning / Duplicating and Fine Tuning / Feature Extraction / Joint Training这几种基于修改参数的算法均存在性能或效率不高的问题。实验证明,作者提出的LwF算法可以克服上述算法的不足。

LwF实现增量学习的核心是 对参数的更新方法 ,文章介绍并比较了几种经典增量学习的算法Fine Tuning / Duplicating and Fine Tuning / Feature Extraction / Joint Training。如图:

  • 以CNN模型为例,图中 \theta _{s} 代表卷积层和全连接层的共享参数, \theta _{o} 代表先前学习的任务的特定参数, \theta _{n} 代表新任务的特定参数。
  • (a)代表无增量学习能力的原始模型,所有的参数均不会更新。
  • (b)代表微调算法,在增量学习阶段, \theta _{o} 不变,随机初始化 \theta _{n} ,并在训练过程更新 \theta _{s}\theta _{n}
  • (c)代表特征提取算法,在增量学习阶段, \theta _{o}\theta _{s} 不变, \theta _{n} 在旧任务提取的特征上进行训练并更新。
  • (d)代表联合训练算法,在增量学习阶段,联合优化 \theta _{o}\theta _{s}\theta _{n} 至收敛。
  • (e)代表作者提出的LwF算法,在增量学习阶段,先用 \theta _{o}\theta _{s} 训练 \theta _{n} 至收敛,再联合优化 \theta _{o}\theta _{s}\theta _{n} 至收敛。
  • LwF算法伪代码如下:

  • \theta _{s} 代表卷积层和全连接层的共享参数, \theta _{o} 代表先前学习的任务的特定参数, X_{n}Y_{n} 代表新数据的值和标签。
  • 初始阶段:模型用旧的 \theta _{s}\theta _{o} 输出对新数据的预测 Y_{o} 。同时随机初始化代表新任务的特定参数 \theta _{n}
  • 增量阶段是一个重复多次直至Loss函数最小的过程,期间使用 \theta _{s}\theta _{o} 输出 {Y_{o}}' ,使用 \theta _{s}\theta _{n} 输出 {Y_{n}}'Y_{o}{Y_{o}}' 存在损失, Y_{n}{Y_{n}}' 存在损失,调整三个参数直至损失函数收敛。
  • LwF与联合训练(Joint learning)的异同:

    联合训练需要用到旧任务的数据和标签,而LwF使用新数据 X_{n} 和上一次模型的预测输出 Y_{o}

    实验中,增量数据采用不同的数据集,LwF对新类别数据的分类准确率较高且能克服旧类别数据灾难性遗忘问题。