【七-2】终身学习 Life Long Learning - catasrophic forgetting

        娱乐圈太乱了,吃瓜都有点疲劳,其实我的态度是谴责的,但我不觉得非常愤怒,什么样的人都有,垃圾回到垃圾桶去就好        csdn的编辑器一言难尽... ,1、不要偷懒把序号标好2、一篇笔记不要写太长 3、总结笔记内容        我其实没有思考过为什么人工智能还没有变成天网,学了这两课之后:确实人工智能发展的很快,也还有很长的路要走,这些研究员好聪明,这些方法也太妙了~

Abstract

        本课讲解了灾难性遗忘的原因,提出了解决的思路

        讲解了五种方法,思路分别是:限制参数、限制梯度下降的方向、每次新增参数、提前开好网络定好参数总量、生成数据

        最后给出了扩展资料:解决每个任务class不同的方法、LLL的三个场景、如何确定任务的学习顺序

目录

一、为什么会发生灾难性遗忘?

1、说明:

2、过程:        

 3、头脑风暴之解决思路

二、解决遗忘问题-selective synaptic plasticity方法

1、基本思想-参数限制

2、损失函数-全在解释bi

3、合适的bi:原理 + 方法? = 哪些参数对过去的任务是不重要的?

a、原理

b、方法

三、解决遗忘问题- Gradient Episodic Memory(GEM)方法

 1、基本思想

四、解决遗忘问题- additional neural resource allocation方法

1、基本思想

 2、评价

五、解决遗忘问题- PackNet方法(与方法四正好相反) 

1、基本思想

2、评价

3、改进版本CPG——方法四+方法五

六、解决遗忘问题- Memory reply方法

1、基本思想

2、评价

七、class数目不同可以训练吗

 八、LLL的三个场景-本课只讲了最简单的场景 

九、怎样的任务学习顺序是好的(Curriculum learning) 


LLL的三个可能解法:

  1. 重点方法(发展完整):selective synaptic plasticity(aka:regularization - based approach):只让类神经网络中的部分 神经元或者神经元的连接具有可塑性,其他连接都被固化不能被移动不能被改变数值
  2. additional neural resource allocation
  3. memory reply

一、为什么会发生灾难性遗忘?

1、说明:

        a、假设只有两个参数,图代表两个任务的损失函数

        b、不一样的θ会有不同的损失,颜色越白loss越大

2、过程:        

        a、先训练任务1,得到一个θ0,按照梯度下降的方向不断更新得到θb,loss降得够小了就相当于把任务1学完了。此时机器学完任务1,参数为θb。

        b、同样的参数拷贝过来做任务2,任务2有不同的error surface,根据这个error surface梯度下降更新参数得到θ*

        c、这时如果把θ*拿回任务1使用,会发现不能得到好的结果

 3、头脑风暴之解决思路

        就上图来说在任务2中只要在蓝色范围内就算是比较好的参数,是否可以就近移动,让参数值变化不大,而让其在任务1上的表现变好呢? 

二、解决遗忘问题-selective synaptic plasticity方法

1、基本思想-参数限制

        每个参数对过去学过的任务的重要性是不同的,有些参数对过去的任务很重要,在学习新任务时希望保留这些重要参数最好不要变,而只是去改那些对过去任务不重要的参数。

        需要额外空间存储一个旧的模型和bi值

2、损失函数-全在解释bi

θb是模型在过去任务中学得的 

每个参数一个守卫bi

最小化Lθ会导致灾难性遗忘,所以更改误差函数为L'(要学的参数-过去学得的参数,他们的结果越小越好。如果bi很大那么我们希望差值越小越好),最小化L'  

  

         并不是平等的看待所有参数与过去参数接近这件事,只需要某些参数接近就好,哪些参数要接近?bi来决定,bi大则要接近,bi小则无所谓,

        bi = 0:对新参数与过去参数之间关系没有限制——灾难性遗忘

        bi 无穷大:非常接近,不会有遗忘问题,但是学不好新任务了(固执intransigence)

3、合适的bi:原理 + 方法? = 哪些参数对过去的任务是不重要的?

a、原理

        任务1学完得到θb,看看θb中的每个参数对任务1的影响(在对应维度上移动,看对loss的影响,影响小代表可以被改变)如:维度上移动发现对loss没有影响(依然在蓝色区域),代表可以在新任务上被改变,对应的b1就很小。 

        当b1小 b2大时,意味着更新时只会沿θ1方向移动,不会沿theta2方向移动。则新参数在原来的任务上loss的变化也不大,就解决了遗忘问题

EWC:bi按重要程度设定 19:34

L2:bi = 1,固执的留在过去

SGD:bi = 0, 灾难性遗忘        

 b、方法

 

三、解决遗忘问题- Gradient Episodic Memory(GEM)方法

 1、基本思想

        不是在参数上限制,而是在梯度下降的方向上限制

        需要额外空间:存储不太多的数据来计算更新的方向

        在参数更新之前,算在任务1和2上的参数更新方向,如果方向不一致(内积不等于0)就修改方向,修改方向后可以缓解遗忘现象。但是要算之前任务的参数更新方向需要之前任务的数据,就要把数据一直存着,存的资料不多就是了(这就与LLL的目标不同,LLL就是希望可以不用把过去的资料都存着)

四、解决遗忘问题- additional neural resource allocation方法

1、基本思想

        改变使用在每个任务里神经元的resource

        训练任务1之后有一个模型,训练任务2的时候不要动任务1的模型,另外开一个network用任务1隐藏层输出作为输入(则任务1学到的东西任务2也可以利用)。换种说法:训练任务2的时候不要动1的参数,而是新增一些参数,只训练额外的参数

 2、评价

        不会有遗忘问题

        但是每次训练新任务都会需要新的空间产生新的网络,模型在不断的变大,任务量小适用

五、解决遗忘问题- PackNet方法(与方法四正好相反) 

1、基本思想

        先开一个大的network,新任务来了只用这个network里面的一部分

        第一次只能用灰色的参数,第二个任务只能用橙色,第三个任务只能用白色参数,第四个任务只能用绿色参数

2、评价

        参数量不会随着任务增加而增加,不会遗忘,但只是提前把存储资源用了而已

3、改进版本CPG——方法四+方法五

基本思想:模型既可以增加新的参数,每次只保留部分参数拿来做训练,模型也可以扩张

六、解决遗忘问题- Memory reply方法

1、基本思想

        训练一个生成模型,既然不能存过去的资料,就在需要用这些资料的时候,用这个模型把资料产生出来。

        不止训练一个分类模型解决任务1,还同时训练一个生成模型来产生任务1的资料

        如果训练任务2时,只使用任务2的资料会出现遗忘问题,就可以用生成模型生成任务1的资料给任务2的分类模型来训练

        因为任务2同时看到了1和2的资料所以不会出现遗忘

        接下来用任务2的资料,用能产生任务1资料的生成模型产生的任务1资料,一起训练一个能产生两个任务资料的生成模型

2、评价

        产生的这个生成模型占用空间

        但是这种生成数据的方法非常有效,往往可以逼近LLL的上限(也就是Multi-task的效果)

七、class数目不同可以训练吗

 八、LLL的三个场景-本课只讲了最简单的场景 

九、怎样的任务学习顺序是好的(Curriculum learning) 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值