李宏毅机器学习(27)

Life Long Learning

对比人类从生到死都只用一个脑子学习,而机器每做一个任务就要换一个模型。那为什么机器不像人一样,也只用一个神经网络做所有事呢?
这就是Life Long Learning(LLL)。我们希望机器学会了一个技能之后就永远记得这项技能。
对此,我们需要解决三个问题:

  1. 让机器永远记得学过的知识,也要能学会新的东西。
    李宏毅机器学习(27)_第1张图片

举例而言:在图像识别中,先学任务1再学任务2会发现机器把任务1基本都忘了。
但如果两个任务一起学,发现机器表现反而不错。这说明机器不是学不会,就是忘了!
李宏毅机器学习(27)_第2张图片

文字处理也是这样。学完题型之后立即做题正确率很高,但一学其他的题型后这题就不会了。
李宏毅机器学习(27)_第3张图片

问题是,如果机器同时学所有题型时,机器是可以同时学会的。
李宏毅机器学习(27)_第4张图片

这叫Catastrophic Forgetting

解决方法:EWC

由于存储有限,我们不能将所有任务放在一起学习,并且这在时间上也是无法接受的。(这要求每多一个任务就学习一次)
有一种解决方法叫做Elastic Weight Consolidation (EWC)
基本思想是,让机器学完过去的任务后,保留“重要的参数”,只调“不那么重要的参数”。其重要程度用“守卫” b i b_i bi来表示。这样就能改写Loss Function了。
李宏毅机器学习(27)_第5张图片
这样,如果 b i = 0 b_i=0 bi=0代表可以随便改动参数。
李宏毅机器学习(27)_第6张图片
那么,具体怎么决定这个 b i b_i bi值呢?
一般来说是取“二次微分值”。这样可以在陡峭的地方基本不动,在平坦的地方自由移动。
李宏毅机器学习(27)_第7张图片
李宏毅机器学习(27)_第8张图片
结果表明EWC的效果最好,Gradient Descent会经常“忘记”,L2会“学不进去”。
李宏毅机器学习(27)_第9张图片

Generating Data

我们之前讲到由于存储有限,不能将所有任务一起学习。
对此,有人想出了一招:我们不去存储之前的数据,而做一个用于生成之前数据的模型。即:用一个NN存储数据。
目前这还是个设想,我个人认为这并不实际,因为数据往往是无序的,不好生成。对此最好的方法应该是压缩算法。
李宏毅机器学习(27)_第10张图片

现在,我们再来讲讲LLL的第二个问题。
2. 让机器能做到“任务间的知识转化”,即触类旁通。

这个要求并不只是Transfer Learning:在学习了任务1后,Transfer Learning只在乎能不能完成任务2;而LLL不仅在乎任务2能不能完成,还在乎机器还能不能记得任务1。
李宏毅机器学习(27)_第11张图片

评价方法

LLL的评价方法有很多种。分别有准确度、记忆力、预测力。
李宏毅机器学习(27)_第12张图片
李宏毅机器学习(27)_第13张图片

Gradient Episodic Memory (GEM)

李宏毅机器学习(27)_第14张图片
李宏毅机器学习(27)_第15张图片

最后我们来看LLL的第三个问题:
3. 我们希望模型发现自己实在学不下去的时候,能自动扩张自己的规模。并且模型扩展的速度,比任务增长的速度慢。

目前这个问题尚未很好的解决,下面的例子在扩张的效率上不是很好。

Progressive Neural Networks

如上,把之前任务的前一层的隐层也当作输入。
但是这里,任务量大的话,将导致输入量大,因此难以用到很多种任务上。
李宏毅机器学习(27)_第16张图片

Expert Gate

如上,会查看新任务与哪一个任务最像,然后以那个最像的任务为基础,训练模型。但是也会造成新增一个任务,就多一个模型这个问题。
李宏毅机器学习(27)_第17张图片

Net2Net

可以使用类似“把某个神经元进行分裂”这种方法,去增加网络的宽度。这个方法稍微好一些。
李宏毅机器学习(27)_第18张图片

顺序问题

除了上述3个问题之外,学习的顺序也很重要。有时候只要调换任务的顺序效果就能变得很好。
李宏毅机器学习(27)_第19张图片
针对这个问题,有人就提出了分类学(taskonomy )。
李宏毅机器学习(27)_第20张图片

你可能感兴趣的