增量学习简介(incremental learning)

文章目录

*

+ 前言
+ 基于正则化的增量学习
+ 基于回放的增量学习
+ GAN

前言

个人认为增量学习的定义的边界并不明显,其与其他概念例如:持续学习(Continual Learning)、终身学习(Lifelong Learning),在线学习(online learning),迁移学习(transfer learning)都有交集。

所以我个人粗糙的定义就是:模型基于旧数据学好了参数,但是如今新数据产生了,如何更新模型?

最笨,也最无懈可击的办法就是,将旧数据和新数据混在一起,然后对模型进行继续训练。

现在的一个问题是:能不能不使用旧数据或者少使用旧数据呢?这就是增量学习,也因而有了两种增量学习的方法。前者不使用旧数据,后者少使用旧数据(选一部分作为旧数据的代表)。

重点关注以及解决的问题:

  1. 学习新知识。
  2. 不遗忘旧知识。

基于正则化的增量学习

模型经过新数据后会得到损失,我们希望在损失中再加一些项,希望其可以反应旧数据在当前模型上的表现。毕竟我们不能使用旧数据,所以这些项反应得准不准确谁都说不清,只要有道理即可。

所以其思想就是:不但在学习新的知识,而且一定程度上保护旧知识。

我们以多任务学习中的多类学习为例来介绍这种类型的增量学习,多任务学习比如你可以理解为之前学的都是猫的图片,现在给了狗的图片,也要学。我们的任务就是要学习一个图片分类器。你会纳闷我为什么要举这个例子,因为这是目前的热点,大家做的也是这个。你去一搜会发现,增量学习前面通常都会加一个词”类”,即增量针对的是类增量,也就是之前是狗,现在是猫。

增量学习简介(incremental learning)

那么这种增量学习我们怎么做到呢?

我们通常会这么做,前面那些几十层是用来提取图片特征的(猫狗都共享),后面那些一两层是任务特定的(猫,狗各自都有自己的层),有点像预训练模型。
这个时候我们有两种选择:

  1. 根据新数据微调,那么会改变共享参数,这个时候旧数据的表现可能会变得很差。
  2. 特征抽取,保持共享参数不变,根据新数据只训练新任务的那几个特定层。(也不好,因为之前的共享参数未必学得适用于所有任务,所以单靠后面几层难以学习一个很好的分类器)

Learning without Forgetting (ECCV 2016)提出的LwF算法是基于深度学习的增量学习的里程碑之作。这个其实有点像微调,但是思想上比微调更加丰富。

其算法如下:

增量学习简介(incremental learning)

增量学习简介(incremental learning)
理解:相当于引入了新数据在旧模型上的结果Y o Y_o Y o ​作为旧模型的回忆,希望新数据训练完毕之后,这个Y o Y_o Y o ​在新模型上也没有怎么变化,从而希望旧数据输入新模型得到的结果也没有怎么变化。

注意,上面的train下的参数有一个\hat你可以直接理解为在新数据训练后,参数在改变。

; 基于回放的增量学习

这类问题要考虑如下问题:

  1. 要保留旧任务的哪部分数据
  2. 以及如何利用旧数据与新数据一起训练模型。

iCaRL: Incremental Classifier and Representation Learning (CVPR 2017)是最经典的基于回放的增量学习模型,iCaRL假设越靠近旧数据均值的样本越有代表性。

GAN

大家都知道GAN网络可以用来在旧数据上进行训练,然后生成狗的图片,下次猫的数据来的时候,相当于让GAN生成狗的图片,然后和猫一起训练。

这个方法其实个人觉得也很局限性,因为其变相保存了旧数据,无非原来是狗图片,现在变成了生成狗图片的GAN参数。

但是,话说回来,其确实没有使用旧数据。

参考:https://blog.csdn.net/abcdefg90876/article/details/114109237。这篇更加详细,为其打call。

Original: https://blog.csdn.net/qq_43391414/article/details/121382413
Author: 音程
Title: 增量学习简介(incremental learning)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/718212/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球