【机器学习】介绍LifeLong Learning(终身学习)

发布于:2022-12-04 ⋅ 阅读:(886) ⋅ 点赞:(0)

Lifelong learning

目录

Lifelong learning

一.别称:

Continuous Learning

Never ending Learning

Incremental Learning

二.面临问题

1.Knowledge Retention(but Not Intransigence) and Knowledge Transfer 知识保留(但不妥协)及知识迁移。

 2.Knowledge Transfer

3.Model Expansion

三、学习方法

1.基于正则化(通过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖)

2.基于数据--Multi-task learning with some modify

[基于回放的方法:(1)基于样本回放(2)基于GAN生成(3)基于特征回放]

3.基于模型结构

(1)基于模型扩展--Model Expansion(but parameter efficiency)

(2)基于拓扑图的模型结构

四、如何评价Life-long Learning的好坏

五、这个领域还有哪些前沿的研究方向


一.别称

Continuous Learning

Never ending Learning

Incremental Learning

二.面临问题

1.Knowledge Retention(but Not Intransigence) and Knowledge Transfer 知识保留(但不妥协)及知识迁移。

【如果只使用一个模型来不断的学习不同的任务,自然希望它在学习新的任务的时候,也不要忘记已经学习到的东西。与multi-task learning不太一样】

这意味着以前学到的知识,需要能够促进下一个任务Task B的学习; 学完Task B之后,要不仅可以很好得处理Task B, 同时在Task A 上不能有明显的下降, 最好Task A的性能,也能够有所提升或者是保持。

 2.Knowledge Transfer

【我们希望我们的模型可以使用已经学习到的东西来帮助解决新的问题,达到触类旁通的效果。与transfer learning又不太一样】

(1).为什么不能每个任务一个模型?

不同任务间知识不能传递;不能存储所有的模型

(2)与知识迁移不同

知识迁移是为了更好实现最终的模型,而终生学习的重点在于不遗忘,既能学习最终的模型,也不会忘记前面模型学习到的知识。

3.Model Expansion

模型扩展,如果模型比较简单,也许处理简单问题时还可以,但是在处理复杂问题时结果不太满意。故我们希望模型可以自己根据问题的复杂度进行扩展,变为更加复杂的模型。一般扩展模型是党目前任务的准确度不够好或者loss降不下去的时候会扩展模型,如Net2Net。

三、学习方法

1.基于正则化(通过给新任务的损失函数施加约束的方法来保护旧知识不被新知识覆盖)

即知识蒸馏项作为正则化项来约束模型。此过程往往需要存储旧模型的权重,以取得知识蒸馏的来源。这种方法可以与基于回放的方法结合使用。蒸馏算法与增量学习之间面临一种天然矛盾,如果知识蒸馏的约束过强,则模型不够灵活,被限制在旧任务上;如果知识蒸馏约束较弱,模型可能发生灾难性遗忘。因此,如何设计更好的蒸馏的方法,是本方向改进的重点。目前的主流方法是:基于模型输出结果的蒸馏多采用交叉熵;基于feature和中间结果的蒸馏多采用L2范数或者余弦相似度;PodNet被提出后,一种新的基于池化蒸馏的方法值得关注。

模型在学习新的知识的时候,怎样才能不忘记旧的知识的,比较直接的方式是在计算新任务的损失基础上增加一个损失,减少对旧知识的遗忘。

eg:EWC: Elastic Weight Consolidation

 

 

正则化的方式有很多,部分方法对比如下:

部分正则化相关的论文

2.基于数据--Multi-task learning with some modify

[基于回放的方法:(1)基于样本回放(2)基于GAN生成(3)基于特征回放]

基于样本回放的方法和基于特征回放的方法。基于样本回放的方法能够将旧任务的样本进行存储,这类方法的缺点在于直接存储样本比直接存储特征需要耗费更多的存储空间,同时需要考虑如何选取用于回放的样本。基于特征回放的方法需要将旧任务提取出的特征进行存储,同样面临考虑样本选取的问题。同时特征回放的模型结构进行了更新,那么就需要考虑特征漂移的问题

如果采用Multi-task Learning,需要把Task 1 和 Task2的训练数据都存储起来,需要的时候放在一起训练。 虽然可以看到Task 1和 Task 2都达到了不错的效果, 但是所有数据的存储会是一个很大的问题。

因此, 如何解决数据存储的问题呢?

 LifeLong Learning训练时只用当前任务的数据; 而Multi-task Learning会用到之前所有任务的数据。这带来了数据存储以及计算量不断增大的问题; Multi-task learning可以看作是LifeLong learning的upper bound。

其实就是新的老的数据都扔进去喂。

考虑到实际数据存储的问题,会借助于GAN(GenerativeAdversarialNetworks,生成式对抗网络)来完成, 减少了数据存储,但带来了更大的计算量。

3.基于模型结构

[基于模型拓展;基于拓扑图的模型结构]

(1)基于模型扩展--Model Expansion(but parameter efficiency)

通过扩张模型结构的方式提升模型性能,这样旧的模型结构有利于保持原始任务的性能,新的模型结构可以适应新的增量任务性能。但是此过程中,模型结构增加必然造成任务存储负担和运算负担的加剧,如何通过更优的模型增扩方式,降低此消耗的同时,达到较好的效果,是此方法改进的方向。

a).参数独立-----渐进式神经网络(Progressive Neural Network)

这类方法中,模型参数的不同子集被分配给不同的任务。当网络规模没有限制的时候,每个任务都可以拥有部分相应网络。进一步的想法是将过去任务对应的部分进行遮蔽进而避免更改,这种 mask 操作可以在参数权重层面上进行也可以在神经元甚至是模块层面进行。大多数这类方法需要一个先验任务定义去激活相应的遮蔽或者任务分支。

b)Net2Net

Net2Net(Net to Net) 是利用知识迁移来解决大型网络的训练速度慢的问题,例如先训练一个小的网络,然后Net2Net,训练一个更大的网络,训练更大的网络时可以利用在小网络中已经训练好的权重,使得再训练大型的网络速度就变的非常快,利用小网络的权重的这个过程就是知识迁移的过程。

 如上图,对于一个全连接层来说,如果我们新增了一个节点,那么我们随机从已有节点中选择一个节点copy它的输入权重,使得这个节点的值和已有选择的节点的值相同,对于输出的节点来说,需要把前一层的节点的值求和激活,这时我们发现我们选择的那个节点的值扩大了两倍,于是我们可以把他们各自都除以2,这样我们就实现了全连接层的恒等替换。

对于一个卷积层来说,道理也类似,如果我想增加一个channel,我可以随机选一个channel然后copy它的权重(filter),对于输出时要再进行卷积的filter而言,我们把filter中这两层的channel的权重除以2就可以,这样也在channel增加的情况实现了恒等替换。

(2)基于拓扑图的模型结构

增量任务中,不同的类别之间具有一定的相关性,这种相关性可以通过拓扑结构进行建模和分析。此方向较新,方法的有效性也得到了一定的验证,是未来发展的一个趋势之一。

通过拓扑结构,保留空间特征。

表征异质流形的两种方法的比较。 (a) 随机抽样的代表,传统的 CIL 研究采用这些代表进行知识蒸馏。 (b) 神经网络学习的代表,它很好地保留了流形的拓扑。

 NG稳定和适应的解释。 (a) NG 将 CNN 的特征空间 F 划分为一组拓扑排列的子区域 Fj,由质心向量 vj 表示。 (b) 当用很少的训练样例对 CNN 进行微调时,F 的拓扑结构严重失真,表明发生了灾难性的遗忘。 (c) 为了保持拓扑结构,NG 节点的移动受到锚损失项的惩罚。 (d) NG 通过插入一个新的顶点 ̃ v7 为新的类 y 增长。 由于 d( ̃f , m5) < d( ̃f , m7),新的类训练样本 ̃f 与 v5 不匹配。 (e) 最小-最大损失项通过将 ̃f 推到 ̃ v7 并将 ̃ v7 拉离邻居 v4、v5 和 v6 来适应 F7。 (f) 在 (e) 中的适配后更新拓扑,其中̃ v7 已移动到 v7,并且由于过期时间而删除了 v4 和 v7 之间的连接。

四、如何评价Life-long Learning的好坏

   3个指标:

  • Accuracy 表征N个任务学完后总体的性能;
  • Backward Transfer: 表征N个任务学完后,总体遗忘的程度;通常为负数,越大越好;
  • Forward Transfer: 表征N个任务学完后,总体学习的程度;通常为正数,越大越好;

      R(0, i) 表示在随机初始化的情况下,在Task i上的准确率

五、这个领域还有哪些前沿的研究方向

Curriculum Learning 类似于一个课程系的学习, 研究的是如何安排课程学习的先后顺序。

Taskonomy 研究的是各个任务之间的关系, 即该先学哪个,后学哪个。

参考知乎

相关引用链接

增量学习综述_有害诗篇的博客-CSDN博客_增量学习综述

Life-Long Learning(LLL)终身学习的理解_菜菜的小孙同学的博客-CSDN博客

【机器学习】LifeLong Learning(终身学习)介绍_敲代码的quant的博客-CSDN博客_终身机器学习

李宏毅老师关于LifeLong Learning(终身学习)的视频

    

本文含有隐藏内容,请 开通VIP 后查看