李宏毅ML+DL学习记录:life long learning

       life long learning 是指这个NN在不断地学习,之前可能只能解决task1,但是经过再次学习,它还能解决task2;再学习,还能解决task3…
life long learning需要解决的问题是knowledge retention(but not intransigence)
       什么意思呢?就是说这个NN不仅要做到保留原来的知识,还要能接受新的知识。
在这里插入图片描述
      从上图可以看出,当只学习了task1的数据时,NN在task1上的准确率是90%,在task2上的正确率是96%;当这个NN继续学习task2的数据集后,在task1上的正确率下降到了80%,在task2上的正确率上升到了97%。在task2上的性能有所提升,说明NN确实能学到新知识,但是在task1上的性能下降,说明它遗忘了一些过去的知识,这是我们不希望看到的。
      如何解决上述遗忘问题呢?

1.EWC

在这里插入图片描述
在这里插入图片描述
      具体用例子来说明:
在这里插入图片描述
      (颜色越深表示loss越小)
       初始化的θ为θ0,学习了task1的数据之后变到了θb.
在这里插入图片描述
      如果不加任何限制,针对task2,把θb作为初始化值,该NN学习了task2的数据集后,变成θ*,但是我们发现θ* 在task1上的效果并没有θb 好,因此该NN发生了遗忘。
      现在我们就用EWC的思想来解决这一问题,那么bi的大小如何决定呢?
在这里插入图片描述

      bi的大小取决于loss对θib的二阶偏微分大小。
      我们知道二阶微分代表的是变化率,二阶微分越大,就表明该变量变动一点点,y就会变动很大;二阶微分越小,就表明该变量变动一点点,y也变动的很少。
      因此,如果loss对θib的二阶偏微分较小,说明该参数的变动对loss的影响较小,所以bi就小;如果loss对θib的二阶偏微分较大,说明该参数的变动对loss的影响较大,所以bi就大。
      按照此思想设置好bi后,效果如下图:
在这里插入图片描述
      SGD\L2\EWC效果对比:
在这里插入图片描述
      最上面的三条线:使用不同的loss函数的情况下,taskA 在NN分别学习了A,B,C数据集后的准确率。当只学了A的时候,SGD\L2\EWC的效果都不错;继续学了B后,用该NN测试A,发现SGD\L2的准确率都有明显的下降;继续学了C后,SGD下降更为明显。

2.gradient episodic memory(GEM)

在这里插入图片描述
      以上图为例,假设进行到task3时,对于θ来说,按照g方向来更新,是目前来说降低loss的最好方式,但是如果完全按照g’方向来更新的话,更新后的θ可能在task1、task2上的效果就变差呢?怎么办呢?
      在进行到task3时,不仅算task3数据的loss对θ的gradient,还要算task1、task2数据的loss对θ的gradient的,然后找到此时能使task1、task2、task3效果变好的更新方向(分别为g1\g2\g),然后利用这三个,算出一个g’(g’满足:g’ *g1>=0,g’ *g2>=0, g’与g as close as possible).最终θ按照g’方向进行更新。这样,经过task3数据集训练过后的NN不仅不会在task1、task2上的效果变差,反而会变得更好一点。

3.generating data

      主要思想:用task1的数据训练好NN后,同时还生成一个能generate task1数据的东西;在准备用task2的数据继续训练NN时,用这个东西把task1的数据再generate出来,用task1、task2的数据共同再继续训练NN,训练完成的同时,又生成了一个可以generate task1 and task2 数据的东西…如此重复下去。

LLL 模型效果评价

      从上面的内容中我们可以看出,一个life long learning model 效果的好坏主要看两个方面:1.它遗忘了多少过去 2.它学到了多少新的。那如何衡量这两方面的效果呢?
在这里插入图片描述
在这里插入图片描述
      accuracy:整个life long learning model的最终准确率
      backward transfer:LLL模型忘记了多少以前的
      forward transfer:LLL模型学到了多少新的
      一般来说,backward的值经常都是负的,也就是说总会遗忘掉一些过去的知识。但GEW的backward是正的。

发布了43 篇原创文章 · 获赞 1 · 访问量 751

猜你喜欢

转载自blog.csdn.net/weixin_41391619/article/details/104738977