Life Long Learning

Life Long Learning

2020713

21:46

 

目录

-

- 问题定义

- Upper Bound - Multi-task Learning

- Knowledge Retention

    - Elastic Weight Consolidation (EWC)

        - 简述

        - 一个直观的理解

        - 用二阶导数衡量参数的重要性

    - Generating Data

    - Adding New Classes

- Knowledge Transfer

    - Evaluation

    - Gradient Episodic Memory (GEM)

- Model Expansion

- Curriculum Learning

概述

“终身学习”研究如何用同一个模型不断学习新任务而不发生灾难性遗忘。

 

1. 问题定义

Life Long Learning,指的是使用同一个模型学习新任务的时候,能不能不要忘记以前的任务?例如做transfer learning的时候。其基本的motivation应该是人类可以同时学习多个任务,并且以前的知识得到很大的保留,但其实这个motivation是一种理想化的目的,有可能人脑就是很多个不同的网络,共用,协作而处理多种问题,当然这些不重要。对于这个问题,关键点是:

  • Knowledge Retention,but NOT Intransigence,保留知识,但不是不妥协
  • Knowledge Transfer,知识迁移
  • Model Expansion,but Parameter Efficiency(灾难性遗忘) ,可拓展性,但是参数不要过多

事实上就是要解决Catastropohic forgetting问题,解决这个问题的最简单的方法,容易想到multi-task learning的方法,所有任务一起训练。但是这种方法要求你每次都需要训练以往的所有任务,所以并不是很现实。

2. Upper Bound - Multi-task Learning

其实multi-task是解决灾难性遗忘的一个很强的方法,它的问题就是随着任务的增加,最终必定让实现变得不可能。所以文献中一般使用multi-task作为upper Bound。用于评估实验。

3. Knowledge Retention

Elastic Weight Consolidation (EWC)

简述

这是方法之一,这个方法的思想很简单,看公式可以直接get到这个想法。

Life Long Learning

它类似于L2正则,区别是你需要在L2正则项前面增加b项,用于衡量该参数的重要性。很容易可以想到,如果b很大,那么意味着这个参数不能改变,要尽可能像(l使得loss接近0),如果b很小,那么这个参数改变与否就无所谓。

一个直观的理解

假设只有两个参数,θ1和θ2,颜色深浅代表loss的大小,越深代表该取值loss越小。

图中先在task1训练得到θ^b,而迁移学习到task2之后得到θ^*,我们可以直观地看到Catastropohic Forgetting。在高维的情况下,可以说两个任务最后的解没有落在解空间重叠的部分。

Life Long Learning

事实上,我们可以做到让其落在重叠部分,即两个任务都表现得很好。

Life Long Learning

 

用二阶导数衡量参数的重要性

以上述问题为例,其实可以求各个参数的二阶导数,如果二阶导数小,说明一阶导数的变化不容易引起结果改变,如果二阶导数大,则说明一阶导数的变化容易影响结果。所以我们可以得到用二阶导数的大小来确定b的取值。

Life Long Learning

Generating Data

因为multi-task的问题在于,随着任务增加,数据量会不断增加,对于life long learning,这是不可接受的。所以有的研究就提出:不保存过往数据,而是通过数据学习生成模型,用于生成以前看过的数据,然后使用multi-task方法解决问题。

ref

https://arxiv.org/abs/1705.08690

https://arxiv.org/abs/1711.10563

生成模型方面可以使用Gan,这是仍在研究的方法,因为目前而言,生成“高清”的数据这件事,仍然是一个挑战。

Adding New Classes

有时候任务之间的目标标签数量是不一样的,例如task A是2分类,可能task B是3分类。我们知道,如果直接修改模型的输出的话,会导致task A的灾难性遗忘。所以这个点关注的是,改变分类的同时保持知识。

ref

Learning without forgetting (LwF) https://arxiv.org/abs/1606.09282

iCaRL: Incremental Classifier and Representation Learning https://arxiv.org/abs/1611.07725

  1. Knowledge Transfer

考虑在训练多个task的时候,不同task之间是否有帮助。这看起来很像tansfer learning里使用pretrained model进行fine tune。但其实是不同的。两者的区别在于。

  • pretrained model,从task A迁移到task B,目标使task B做得更好,但是task A很可能就会遗忘
  • life long learning, task A,task B,…, 多个任务学习之后,目标是使在所有task 上都做得更好

在继续往下讨论之前需要先了解一下life long learning的一种评估方法。

Evaluation

目前评估方法没有统一的标准,不同文献可能有所不同。以下是其中一种方法,可以从中体会到,在life long learning中如何对foget和tansfer的好坏做评估。

Life Long Learning

R_(i,j): after training task i, performance on task j。例如,我们看第一列(task 1),从上到下分别表示:无训练下的初始化模型对task 1的准确率;经过task 1训练,在task 1上的准确率;经过task 1,2训练,在task 1上的准确率;经过task 1,2,3……

Life Long Learning

根据以上说明,可以得到三种评价指标。

Life Long Learning

其中准确率是学习完所有任务之后,在所有task上的表现均值。BWT是最后一行减去对角线,考量学习过所有任务之后,在各个任务上的遗忘情况。而FWT比较难理解,例如i=T,则表示(学习过T-1个任务之后,在T任务上的表现)-(没任何任务之前,在T任务的表现),以此来衡量每个任务学习后的迁移能力。

一般而言,BWT是负数的,因为学习新的任务之后,前面的任务会发生遗忘。因而,BWT是越大越好,正数就表明不仅没有遗忘,而且相互提高。而其余两个则分别代表了整体准确率和知识迁移水平,都是越高越好。

 

Gradient Episodic Memory (GEM)

有没有方法能够让BWT为正——学习了新的task之后,不仅不降低原来task的表现,忘记以前的知识,而且还有所提升。

它的原理很简单,从过往任务中采样部分数据保存,更新任务的gradient的同时,该方向不和过去数据上的gradient相反(内积为负,影响过去数据的表现)。如下图,g_1和g内积为负,所以挑战g为g',解一个优化问题:在保证g'最大的情况下,满足约束条件——和过去的gradient内积为正。

Life Long Learning

这实际上是一种作弊的方法,因为life long learning本来要求不能保存过去的数据。

4. Model Expansion

事实上,在模型足够大的情况下,其实模型是有能力在某个任务集合中的所有任务中取得很好的表现的。这也是life long learning的理论基础。它研究的是,如何在不断训练新任务之后,不遗忘过去的任务。

那么其中就有个问题了,什么模型大小是适合的,能不能在需要的适合动态扩展模型大小。我们知道,改变模型结构是会直接导致灾难性遗忘的,所以这个点研究的就是如何动态扩展模型大小而不发生灾难性遗忘。

此处简单介绍研究点,不做深入展开。

5. Curriculum Learning

这个名字是不好理解的,它主要研究任务顺序对life long learning的影响。有一点明确的是,任务顺序确实对结果影响很大。

Life Long Learning

那什么顺序正确?顺序如何影响结果?这一点,称为Curriculum Learning,大概指的是任务之间像课程选修顺序的研究,不做展开。