【李宏毅2020 ML/DL】P99-105 Life Long Learning
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
本节内容综述
- 终身学习技术,让一个模型学习多个任务,又叫 Continuous Learning、Never Ending Learning、Incremental Learning。
- 要做到 Life Long Learning ,要解决三个问题:Knowledge Retention (but NOT Intransigence)、 Knowledge Transfer 以及 Model Expansion (but Parameter Efficiency) 。
- 首先来看
Knowledge Retention (but NOT Intransigence)
。 - 首先来看看机器的脑洞有多大,见 Example: Image 。我们发现机器存在 Catastrophic forgetting 。
- 在实际情况中,假设我们有 1000 个任务,我们很难把前 999 个任务的数据都保留,每次都同时在 1000 个任务上学习。因此,我们期待有一种方法,可以把之前学过的任务“记下来”,从而只学习新的任务,也不会忘记以前学过的任务。由此,提到方法
Elastic Weight Consolidation (EWC)
。 - 我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:
我们不去存储之前的数据,而做一个用于生成之前数据的模型
。 - 此外,我们还可以考虑 Adding New Classes 这种思路。
- 进入下一部分,
Knowledge Transfer
。简单地讨论了 LLL 的目的与意义。 - 之后,简单介绍了
Evaluation
。为了举指标的例子,介绍了一个方法 Gradient Episodic Memory (GEM) 。 - 最后一部分将简单讨论
Model Expansion (but Parameter Efficiency)
。 - 此外,我们可以讨论
Curriculum Learning
,即多任务的学习顺序
其实也很重要。
文章目录
小细节
Knowledge Retention (but NOT Intransigence)
Example
Image
如上,其在任务一学到 90% ,在任务二上测试,准确率更高;但是在学完任务一后,再去学任务二,其在任务一的表现变差了(Forget!!)。
但是,如果把任务一、任务二打乱在一起,一起学习,如上,其结果偏好。其明明可以把两个任务都做好。
Question Answering
如上,让机器学一个问答数据集 bAbi
。
如上是某个题型的准确率,以第一排为例,在学完题型 5 后,去学题型 6 ,其马上就忘了题型 5 。
但是,如果把 20 个题型一起训练,其在各个题型的表现其实不差。
我们叫这种情况为机器的 Catastrophic forgetting 。
Elastic Weight Consolidation (EWC)
基本思想是,让机器学完过去的任务后,保留“重要的参数”,只调“不那么重要的参数”。
如上,对于模型,其每一个参数都有一个“守卫”。由此,我们得到了 EWC 中的损失函数。
由此:
- 如果 ,那么对于 来讲就没有约束;
- 如果 ,那么 就会等于 。
我们这里,考虑的是新参数与旧参数的关系。
Example
如上,是任务1与任务2的loss分布,颜色越深,代表 loss 越小。如上,先训练任务1,再训练任务2,会导致“遗忘”任务1。
如果使用EWC呢?计算这个“保镖”有很多方法,这里“计算二次微分”来做。如上,通过算二次微分,发现,在上,动一动没关系,但是发现尽量不要动它。
如上,在上面的限制下,我们的在任务一、二效果都可以。
Result
如上,使用 EWC 在以此学习三个例子,效果较好。而 L2 正则其很难学习新任务。
More
一些其他新EWC研究如上。
Generating Data
我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:我们不去存储之前的数据,而做一个用于生成之前数据的模型。
但其实,让机器生成数据并不好做。
Adding New Classes
如上,我们的模型结构在各个任务中都是相同的,那有没有可能直接在原任务上修改任务,进而实现终身学习呢?有技术 LwF 与 iCaRL 。
Knowledge Transfer
我们为每个任务训练一个模型,但是这样可能很难做到“任务间的知识转化”,即触类旁通
。
而这不就是 Transfer Learning 要解决的问题吗?但是 Transfer Learning 没有考虑学完任务2后,在任务1上的表现。
因此,LLL中包含了 Transfer Learning 要考虑的问题。
Evaluation
如上,我们要衡量一个 LLL 模型,通常画一个矩阵。其中定义了 、 (描述忘记程度)、 等指标。
如上。
Gradient Episodic Memory (GEM)
这里举了一个例子。
假设存了一些过去 task 的资料,如上红和绿。我们希望做目前的梯度下降时,不会伤害过去的梯度,即目前的梯度与之前任务在该点的梯度夹角不能超过90度
。
其各个指标/结果如上。
Model Expansion (but Parameter Efficiency)
我们希望模型扩展的速度,比任务增长的速度慢。
这是一个难点,目前没有太好的文章。
Progressive Neural Networks
如上,把之前任务的前一层的隐层也当作输入。
但是这里,任务量大的话,将导致输入量大,因此难以用到很多种任务上。
Expert Gate
如上,会查看新任务与哪一个任务最像,然后以那个最像的任务为基础,训练模型。但是也会造成新增一个任务,就多一个模型这个问题。
Net2Net
如上,可以使用类似“把某个神经元进行分裂”这种方法,去增加网络的宽度。
Curriculum Learning
如上,我们之前讨论过的例子,学习顺序其实影响很大。
taskonomy = task + taxonomy 分类学
如上有人基于此提出了 taskonomy 。