李宏毅学习笔记45.Life-long Learning

介绍

Life Long Learning (LLL)
终生学习
也叫:Continuous Learning, Never Ending Learning, Incremental Learning
在这里插入图片描述
最后那个是skynet…
公式输入请参考:在线Latex公式

Knowledge Retention but NOT Intransigence

Example – Image

可以看到任务1有噪音,但是两个任务都是数字识别
在这里插入图片描述
模型构架:3 layers, 50 neurons each
用任务1训练,用任务2进行test
在这里插入图片描述
用任务1训练后,作为任务2的初始参数:
在这里插入图片描述
把任务1和任务2的数据混合后训练:
在这里插入图片描述
明明可以两个任务都做得很好,为什么先训练任务1再训练任务2结果是任务1会烂掉?

Example – Question Answering

问答系统任务描述:Given a document, answer the question based on the document.
使用的是QRN模型
在这里插入图片描述
用的语料库是bAbi,它包含有20种题型,一般有两种玩法:
1、训练一个模型,读取所有题型数据进行训练;
2、训练20个模型,分别解决20种题型。
现在的想法是,训练一个模型,然后一个题型一个题型的任务依次训练。Train a QA model through the 20 tasks
下图是训练题型5的过程,训练完每个题型都让模型去回答题型5的问题,看准确率,可以看到只有训练完题型5其准确率突然暴涨为100%,然后学完别的则坏掉。
在这里插入图片描述
类似的:
在这里插入图片描述
是模型不够复杂吗?不是,下面是把所有数据都学完的结果:
在这里插入图片描述
这个称为:Catastrophic Forgetting灾难性遗忘。
虽然说Multi-task training can solve the problem!但是Multi-task有如下两个问题:

Multi-task training 的两个问题

学一个任务要1天,那么1000个任务?注意这里数据不是一次到位的,所以时间是1+2+3…
另外数据的存储也是问题。
在这里插入图片描述
• Multi-task training can be considered as the upper bound of LLL.
经典的解决方法:

Elastic Weight Consolidation (EWC)

基本思想:固定重要的参数,更改不重要的参数。
Basic Idea: Some parameters in the model are important to the previous tasks. Only change the unimportant parameters.
θ b \theta^b θb is the model learned from the previous tasks.
Each parameter θ i b \theta^b_i θib has a “guard” b i b_i bi.
其中下标i代表第i个参数。 b i b_i bi代表参数的重要性。
在这里插入图片描述
If b i = 0 b_i=0 bi=0, there is no constraint on θ i \theta_i θi
If b i = ∞ b_i=\infty bi=, θ i \theta_i θi would always be equal to θ i b \theta^b_i θib
上式中的后面一项相当于正则项,不同于L2正则,它是针对每一个参数 θ i \theta_i θi,限制 θ i \theta_i θi不能远离 θ b \theta^b θb
下面两个任务,蓝色代表loss越小,白色是loss越大。
先训练任务1,从 θ 0 \theta^0 θ0开始进行GD,更新到 θ b \theta^b θb
然后接着训练任务2,从 θ b \theta^b θb开始进行GD,更新到 θ ∗ \theta^* θ
经过对比就知道了, θ ∗ \theta^* θ在任务1上并不是最优解。
在这里插入图片描述
改进:
在这里插入图片描述
假设上面两个参数都有一个“guard” b i b_i bi,我们用 θ \theta θ的二次偏导来观察 b i b_i bi应该取多大:
在这里插入图片描述
曲线平滑代表 θ 1 \theta_1 θ1方向变化不大,即 θ 1 \theta_1 θ1值变化对task 1的损失函数影响不大,也就是 b 1 b_1 b1可以小一点,不需要对 θ 1 \theta_1 θ1的值进行限制。
在这里插入图片描述
曲线不平滑代表 θ 2 \theta_2 θ2方向变化大,即 θ 2 \theta_2 θ2值变化对task 1的损失函数影响大,也就是 b 2 b_2 b2可以大一点,需要对 θ 2 \theta_2 θ2的值进行限制。
也就是说: b 1 b_1 b1很小, b 2 b_2 b2很大,即可以移动 θ 1 \theta_1 θ1,尽量不要移动 θ 2 \theta_2 θ2
在这里插入图片描述

其他的Elastic Weight Consolidation (EWC)

• Elastic Weight Consolidation (EWC)
• http://www.citeulike.org/group/15400/article/14311063
• Synaptic Intelligence (SI)
• https://arxiv.org/abs/1703.04200
• Memory Aware Synapses (MAS):最新
• Special part: Do not need labelled data
• https://arxiv.org/abs/1711.09601

Generating Data

这个方法是解决不好存储数据的问题的角度出发的,我们每训练一个任务后就用建立一个Generator来生成对应任务的数据,如果多个任务就生成多个任务的数据。(有些数据实在太大,几百个G,这个做法还是有一定意义的,但是具体实作上怎么样还不好说,因为生成一些简单的数字图片还行,但是当前技术要生成高清影像比较困难,如果生成模糊的图片会导致训练结果烂掉)
在这里插入图片描述

Adding New Classes

在LLL中还会遇到任务差异较大,导致模型结构不一样,这个时候应该怎么办?例如一个任务是二分类,一个任务是10分类,那么如何用一个模型解决多个差异较大的不同任务?
• Learning without forgetting (LwF)
https://arxiv.org/abs/1606.09282
在这里插入图片描述
• iCaRL: Incremental Classifier and Representation Learning
https://arxiv.org/abs/1611.07725
在这里插入图片描述

Knowledge Transfer

如果为不同任务训练不同模型,有两个缺点:
➢Knowledge cannot transfer across different tasks
➢Eventually we cannot store all the models
在这里插入图片描述
那用Transfer learning是不是可以解决这个问题?

Life-Long v.s. Transfer

Transfer learning目标当然也是学完task 1后学习task 2要学得更棒,但是学会task 2后并不会一定保证task 1还没忘记。
在这里插入图片描述

LLL Evaluation

一个表格,其中:
R i , j R_{i,j} Ri,j: after training task i, performance on task j
If 𝑖 > 𝑗, After training task i, does task j be forgot
If 𝑖 < 𝑗, Can we transfer the skill of task i to task j
在这里插入图片描述
常见评价指标有:
准确度,就是第一个任务到第T个任务的performance求平均,就是表格最下面一行的平均值
在这里插入图片描述
Accuracy = 1 T ∑ i = 1 T R T , i \text{Accuracy}=\cfrac{1}{T}\sum_{i=1}^TR_{T,i} Accuracy=T1i=1TRT,i
Backward Transfer衡量模型对过去任务的记忆程度,具体看下面蓝色部分,就是模型从task 1学完有一个performance R 1 , 1 R_{1,1} R1,1,然后学task 2,一直学到task T后有一个performance R T , 1 R_{T,1} RT,1,在这个学习过程中模型对于task 1是会遗忘一些东西的,这个时候用 R T , 1 − R 1 , 1 R_{T,1}-R_{1,1} RT,1R1,1来衡量忘记了多少,我们希望这个值越小越好,通常这个值是负的,如果是正的那就NB了(有可能是为正,正代表模型触类旁通,青出于蓝而胜于蓝)。同样算从task 2到task T遗忘了多少: R T , 2 − R 2 , 2 R_{T,2}-R_{2,2} RT,2R2,2
这里能不能像Resnet一样保存一些信息?
在这里插入图片描述
Backward Transfer = 1 T − 1 ∑ i = 1 T R T , i − R i , i \text{Backward Transfer} =\cfrac{1}{T-1}\sum_{i=1}^TR_{T,i}-R_{i,i} Backward Transfer=T11i=1TRT,iRi,i
Forward Transfer用来衡量学了前面的task后学习下一个task的performance有多好。这个表中的第一个行代表用随机初始化来训练不同的task的performance。
在这里插入图片描述
Forward Transfer = 1 T − 1 ∑ i = 2 T R i − 1 , i − R 0 , i \text{Forward Transfer} =\cfrac{1}{T-1}\sum_{i=2}^TR_{i-1,i}-R_{0,i} Forward Transfer=T11i=2TRi1,iR0,i

Gradient Episodic Memory (GEM)

这个是一个更新GD的策略
该策略通过保存以前task的一部分数据用来计算之前task的梯度,如下图中的 g 1 g^1 g1 g 2 g^2 g2,当然任务的的梯度方向为g,在更新梯度的时候要保证新梯度g’不会拖累之前的梯度,而且和当前任务的梯度g越接近越好。
在这里插入图片描述
在这里插入图片描述
该方法结果:
在这里插入图片描述

Model Expansion but Parameter Efficiency

当任务太多的时候,模型可能是由于参数太少,复杂度不够,导致无法拟合所有任务,因此我们希望模型能够在出现这样的情况的时候自动扩展。但我们希望这个扩展是有效率的扩展,而并不是乱扩展(不能和任务的增加数量成正比)。

Progressive Neural Networks

这个在transfer learning有讲,直接贴过来
有一个Task 1,先训练之,并把其参数固定:
在这里插入图片描述
然把Task 1的参数接入到Task 2中(Task 2 的隐藏层会copy Task 1的某个隐藏层的参数),这样的好处就是:
Task 1和Task 2是不同的任务,Task 2的参数是不会影响Task 1的参数的,所以Task 1不会变得比原始更差;
把Task 1的参数接入到Task 2的时候,Task 2可以对参数有选择的copy,例如完全不copy就相当于不接入Task 1的参数,自己训练自己的。
在这里插入图片描述
以此类推:

在这里插入图片描述
这个方法缺点是没有办法学习太多的任务,因为参数增加太快。

Expert Gate

新任务进来就判断新任务和现有任务的相似度,找一个最相似的任务并以其作为新任务的初始化。每增加一个任务也会增加一个模型:
在这里插入图片描述

Net2Net

为原来的网络增加神经元,且保证不改变原来的神经元识别结果。就是如下图所示把一个神经元分裂为两个神经元,注意看输出权重,由于输入不变输出的权重变成原来的1/2,所以结果不变。但是这样分裂后做BP二者算的结果也一样,因此在分裂后会加入一个小小的noise。
在这里插入图片描述
注意:Expand the network only when the training accuracy of the current task is not good enough.

Curriculum Learning : what is the proper learning order?

学习的任务会影响模型的遗忘的情况,以最前面的数字识别的例子
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
taskonomy= task + taxonomy
http://taskonomy.stanford.edu/#abstract

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值