我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。


本节内容综述


  1. 终身学习技术,让一个模型学习多个任务,又叫 Continuous Learning、Never Ending Learning、Incremental Learning。
  2. 要做到 Life Long Learning ,要解决三个问题:Knowledge Retention (but NOT Intransigence)、 Knowledge Transfer 以及 Model Expansion (but Parameter Efficiency) 。
  3. 首先来看 ​​Knowledge Retention (but NOT Intransigence)​​ 。
  4. 首先来看看机器的脑洞有多大,见 Example: Image 。我们发现机器存在 Catastrophic forgetting 。
  5. 在实际情况中,假设我们有 1000 个任务,我们很难把前 999 个任务的数据都保留,每次都同时在 1000 个任务上学习。因此,我们期待有一种方法,可以把之前学过的任务“记下来”,从而只学习新的任务,也不会忘记以前学过的任务。由此,提到方法 ​​Elastic Weight Consolidation (EWC)​​ 。
  6. 我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:​​我们不去存储之前的数据,而做一个用于生成之前数据的模型​​。
  7. 此外,我们还可以考虑 Adding New Classes 这种思路。
  8. 进入下一部分,​​Knowledge Transfer​​ 。简单地讨论了 LLL 的目的与意义。
  9. 之后,简单介绍了 ​​Evaluation​​ 。为了举指标的例子,介绍了一个方法 Gradient Episodic Memory (GEM) 。
  10. 最后一部分将简单讨论 ​​Model Expansion (but Parameter Efficiency)​​ 。
  11. 此外,我们可以讨论 ​​Curriculum Learning​​​ ,即多任务的​​学习顺序​​其实也很重要。


文章目录




小细节

Knowledge Retention (but NOT Intransigence)

Example

Image

【李宏毅2020 ML/DL】P99-105 Life Long Learning_人工智能

如上,其在任务一学到 90% ,在任务二上测试,准确率更高;但是在学完任务一后,再去学任务二,其在任务一的表现变差了(Forget!!)。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_02

但是,如果把任务一、任务二打乱在一起,一起学习,如上,其结果偏好。其明明可以把两个任务都做好。

Question Answering

【李宏毅2020 ML/DL】P99-105 Life Long Learning_深度学习_03

如上,让机器学一个问答数据集 ​​bAbi​​ 。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_终身学习_04

如上是某个题型的准确率,以第一排为例,在学完题型 5 后,去学题型 6 ,其马上就忘了题型 5 。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_机器学习_05

但是,如果把 20 个题型一起训练,其在各个题型的表现其实不差。

我们叫这种情况为机器的 Catastrophic forgetting 。

Elastic Weight Consolidation (EWC)

基本思想是,让机器学完过去的任务后,保留“重要的参数”,只调“不那么重要的参数”。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_机器学习_06

如上,对于模型 b b b,其每一个参数 θ i b \theta_i^b θib​都有一个“守卫” b i b_i bi​。由此,我们得到了 EWC 中的损失函数。

由此:


  • 如果 b i = 0 b_i = 0 bi=0 ,那么对于 θ i \theta_i θi 来讲就没有约束;
  • 如果 b i = ∞ b_i = \infty bi=∞ ,那么 θ i \theta_i θi 就会等于 θ i b \theta_i^b θib 。

我们这里,考虑的是新参数与旧参数的关系。

Example

【李宏毅2020 ML/DL】P99-105 Life Long Learning_人工智能_07

如上,是任务1与任务2的loss分布,颜色越深,代表 loss 越小。如上,先训练任务1,再训练任务2,会导致“遗忘”任务1。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_终身学习_08

如果使用EWC呢?计算这个“保镖” b b b有很多方法,这里“计算二次微分”来做。如上,通过算二次微分,发现,在 θ 1 \theta_1 θ1​上,动一动没关系,但是 θ 2 \theta_2 θ2​发现尽量不要动它。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_09

如上,在上面的限制下,我们的 θ ∗ \theta^* θ∗在任务一、二效果都可以。

Result

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_10

如上,使用 EWC 在以此学习三个例子,效果较好。而 L2 正则其很难学习新任务。

More

【李宏毅2020 ML/DL】P99-105 Life Long Learning_机器学习_11

一些其他新EWC研究如上。

Generating Data

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_12

我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:我们不去存储之前的数据,而做一个用于生成之前数据的模型。

但其实,让机器生成数据并不好做。

Adding New Classes

【李宏毅2020 ML/DL】P99-105 Life Long Learning_深度学习_13

如上,我们的模型结构在各个任务中都是相同的,那有没有可能直接在原任务上修改任务,进而实现终身学习呢?有技术 LwF 与 iCaRL 。

Knowledge Transfer

我们为每个任务训练一个模型,但是这样可能很难做到“任务间的知识转化”,即​​触类旁通​​。

而这不就是 Transfer Learning 要解决的问题吗?但是 Transfer Learning 没有考虑学完任务2后,在任务1上的表现。

因此,LLL中包含了 Transfer Learning 要考虑的问题。

Evaluation

【李宏毅2020 ML/DL】P99-105 Life Long Learning_人工智能_14

如上,我们要衡量一个 LLL 模型,通常画一个矩阵。其中定义了 A c c u r a c y Accuracy Accuracy 、 B a c k w a r d    T r a n s f e r Backward \; Transfer BackwardTransfer (描述忘记程度)、 F o r w a r d    T r a n s f e r Forward \; Transfer ForwardTransfer 等指标。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_人工智能_15

F o r w a r d    T r a n s f e r Forward \; Transfer ForwardTransfer 如上。

Gradient Episodic Memory (GEM)

这里举了一个例子。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_人工智能_16

假设存了一些过去 task 的资料,如上红和绿。我们希望做目前的梯度下降时,不会伤害过去的梯度,即​​目前的梯度与之前任务在该点的梯度夹角不能超过90度​​。

【李宏毅2020 ML/DL】P99-105 Life Long Learning_机器学习_17

其各个指标/结果如上。

Model Expansion (but Parameter Efficiency)

我们希望模型扩展的速度,比任务增长的速度慢。

这是一个难点,目前没有太好的文章。

Progressive Neural Networks

【李宏毅2020 ML/DL】P99-105 Life Long Learning_终身学习_18

如上,把之前任务的前一层的隐层也当作输入。

但是这里,任务量大的话,将导致输入量大,因此难以用到很多种任务上。

Expert Gate

【李宏毅2020 ML/DL】P99-105 Life Long Learning_深度学习_19

如上,会查看新任务与哪一个任务最像,然后以那个最像的任务为基础,训练模型。但是也会造成新增一个任务,就多一个模型这个问题。

Net2Net

【李宏毅2020 ML/DL】P99-105 Life Long Learning_终身学习_20

如上,可以使用类似“把某个神经元进行分裂”这种方法,去增加网络的宽度。

Curriculum Learning

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_21

如上,我们之前讨论过的例子,学习顺序其实影响很大。

taskonomy = task + taxonomy 分类学

【李宏毅2020 ML/DL】P99-105 Life Long Learning_LLL_22

如上有人基于此提出了 taskonomy 。