Zhangzhe's Blog

The projection of my life.

0%

LwF: Learning without Forgetting

URL

TL;DR

lwf1.png

  • 本文将一个增量学习任务的网络结构拆分成三个部分:
    • backbone
    • 旧任务相关参数
    • 新任务相关参数
  • 所有增量学习都需要:
    • 使用原始 backbone(可微调)
    • 随机初始化新任务相关参数
  • 在此基础上增量学习常用的解决灾难式遗忘的方法有:
    • Fine-tuning:在 新任务数据集冻结旧任务相关参数,Fine-tuning backbone 以及新任务相关参数,如上图 b 所示
    • Feature Extraction:在 新任务数据集冻结 backbone 以及旧任务相关参数,只训练新任务相关参数,(与 b 不同的地方在于 是否冻结 backbone),如上图 c 所示
    • Joint Training:在 所有任务数据集上Fine-tuning 所有参数(backbone、新任务相关参数、旧任务相关参数),(与 b 不同的地方在于 是否使用所有任务数据,以及是否 fine-tuning 旧任务相关参数),如上图 d 所示
    • Learning without Forgetting:在 新任务数据集Fine-tuning 所有参数(backbone、新任务相关参数、旧任务相关参数),如上图 e 所示,(与 d 不同的地方在于 使用的训练数据不同),这种方法使用的标签包括:
      • 硬标签:新任务数据的 原始标签
      • 软标签:新任务数据在旧模型上的 输出分布,目的是:使得网络在训练新任务时,尽可能保持旧任务上的分布

Joint Training 因为用到所有数据同时训练,所以通常被认为是增量学习的算法效果上界

Algorithm

lwf2.png

  • LwF 算法会修改所有参数:

    • backbone
    • 新任务相关参数
    • 旧任务相关参数(这个很重要!)
  • LwF 损失函数中各参数的含义:

    • θs,θs,θs^\theta_s,\theta_s^\star,\hat{\theta_s} 分别表示:backbone 原始参数、backbone 在所有任务上的最优参数、backbone 训练中的临时参数
    • θo,θo,θo^\theta_o,\theta_o^\star,\hat{\theta_o} 分别表示:旧任务相关参数原始参数、旧任务相关参数在所有任务上的最优参数、旧任务相关参数训练中的临时参数
    • θn,θn,θn^\theta_n,\theta_n^\star,\hat{\theta_n} 分别表示:新任务相关参数原始参数、新任务相关参数在所有任务上的最优参数、新任务相关参数训练中的临时参数
    • λo\lambda_o 表示:旧任务重要程度权重

Experiment

lwf3.png

Fine-tuning、Feature Extraction、Joint Training 都强

Thought

  • 使用一种类似蒸馏的方法,使用新数据 + 旧模型的方法 replay 旧数据,看起来挺 make sense