文章目录
前言
Life long learning(二)
一、Life long learning三个解法
遗忘产生的原因,在task2上θ*在一个loss比较低的位置,而拿回到task1上,就处于一个loss比较高的位置。加入在task2上蓝色椭圆内都算好的,那么如果θ不往右上移动,只往右边移动会不会就不会出现forget的情况。
1.Selective synaptic plasticity(固定某些参数)
有一些参数对过去任务很重要,如果固定这些参数,新任务只改哪些对过去不重要的参数。给每一个参数一个守卫,表示这个参数是否重要。在新任务update参数时,会改写loss function,不去直接最小化L(θ),如果直接最小化就会发生遗忘,把loss function改写
这个L’(θ)才是要minimize的,θi表示要optimize的参数-从过去学到的参数θbi,bi表示多么希望θi和θbi有多接近。如果bi很大表示非常愿意让两者相近,反之表示是否靠近无所谓。不是要求所有θi和θbi的参数都接近,只要求某些参数接近,这里的某些参数是由bi决定如果bi很大,就希望新的和旧的参数接近。如果所有bi都为0,就会出现之前的遗忘,但如果都很大,就会出现再过去任务还可以,新任务一点学不到的情况。bi是人为设置的,那问题的关键就是如何找到bi。
训练完一个模型后,得到θb,比如θb在θ1方向移动,如果对loss没什么影响,表示θ1对旧任务没什么影响,就可以给b1比较小的值。如果θ2方向loss变化很大,就表示需要给b2大一点。
2.Additional neural resource allocation(改变使用在任务里面的neural resource)
最早的想法是progressive neural networks。训练任务1时得到一个模型,训练任务2时不动任务1的模型,而是另外多开一个network,这个network会吃任务1的hidden layer的输出作为输入,这样任务1如果学到有用的资讯,任务2就可以利用。只训练额外的参数,不动任务1的参数。同理任务3。
另一个是packnet。一开始开一个大的network,每次有新任务进来,就只用大network里面的一部分。好处就是参数量,不会随着任务增加而增多。
把两者结合起来(CPG),compacting picking and growing。Model既可以增加新的参数,每次又都只保留部分的参数。
3.Memory reply(产生旧任务资料)
不存过去的资料,但是训练一个generative model,在训练的时候,把过去的资料产生出来。比如训练任务1的同时,训练一个可以产生任务1资料的generator。训练任务2时,用generator产生任务1的资料给任务2,这样任务2训练时就可以同时看到任务1和任务2的资料。之后在训练一个generator可以同时产生任务1和任务2的资料,这样在训练任务3时,用这个generator就可以让任务3同时获得123的资料。只要这个generator的大小比存储资料的大小要小,那么这个方法就是有效的。
二、Curriculum Learning
任务训练的顺序也是重要的。有些顺序会出现遗忘,有些顺序不会出现遗忘。研究训练顺序什么样是对学习有效的问题叫做curriculum learning。
总结
视频学习地址:https://www.bilibili.com/video/BV13Z4y1P7D7/?p=34&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=3a369b537e1d34ff9ba8f8ab23afedec