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

文章目录

  • 介绍
  • Knowledge Retention but NOT Intransigence
    • Example – Image
    • Example – Question Answering
    • Multi-task training 的两个问题
    • Elastic Weight Consolidation (EWC)
      • 其他的Elastic Weight Consolidation (EWC)
    • Generating Data
    • Adding New Classes
  • Knowledge Transfer
    • Life-Long v.s. Transfer
    • LLL Evaluation
    • Gradient Episodic Memory (GEM)
  • Model Expansion but Parameter Efficiency
    • Progressive Neural Networks
    • Expert Gate
    • Net2Net
  • Curriculum Learning : what is the proper learning order?

介绍

Life Long Learning (LLL)
终生学习
也叫:Continuous Learning, Never Ending Learning, Incremental Learning
李宏毅学习笔记45.Life-long Learning_第1张图片
最后那个是skynet…
公式输入请参考:在线Latex公式

Knowledge Retention but NOT Intransigence

Example – Image

可以看到任务1有噪音,但是两个任务都是数字识别
李宏毅学习笔记45.Life-long Learning_第2张图片
模型构架:3 layers, 50 neurons each
用任务1训练,用任务2进行test
李宏毅学习笔记45.Life-long Learning_第3张图片
用任务1训练后,作为任务2的初始参数:
李宏毅学习笔记45.Life-long Learning_第4张图片
把任务1和任务2的数据混合后训练:
李宏毅学习笔记45.Life-long Learning_第5张图片
明明可以两个任务都做得很好,为什么先训练任务1再训练任务2结果是任务1会烂掉?

Example – Question Answering

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

Multi-task training 的两个问题

学一个任务要1天,那么1000个任务?注意这里数据不是一次到位的,所以时间是1+2+3…
另外数据的存储也是问题。
李宏毅学习笔记45.Life-long Learning_第10张图片
• 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代表参数的重要性。
李宏毅学习笔记45.Life-long Learning_第11张图片
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上并不是最优解。
李宏毅学习笔记45.Life-long Learning_第12张图片
改进:
李宏毅学习笔记45.Life-long Learning_第13张图片
假设上面两个参数都有一个“guard” b i b_i bi,我们用 θ \theta θ的二次偏导来观察 b i b_i bi应该取多大:
李宏毅学习笔记45.Life-long Learning_第14张图片
曲线平滑代表 θ 1 \theta_1 θ1方向变化不大,即 θ 1 \theta_1 θ1值变化对task 1的损失函数影响不大,也就是 b 1 b_1 b1可以小一点,不需要对 θ 1 \theta_1 θ1的值进行限制。
李宏毅学习笔记45.Life-long Learning_第15张图片
曲线不平滑代表 θ 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
李宏毅学习笔记45.Life-long Learning_第16张图片

其他的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,这个做法还是有一定意义的,但是具体实作上怎么样还不好说,因为生成一些简单的数字图片还行,但是当前技术要生成高清影像比较困难,如果生成模糊的图片会导致训练结果烂掉)
李宏毅学习笔记45.Life-long Learning_第17张图片

Adding New Classes

在LLL中还会遇到任务差异较大,导致模型结构不一样,这个时候应该怎么办?例如一个任务是二分类,一个任务是10分类,那么如何用一个模型解决多个差异较大的不同任务?
• Learning without forgetting (LwF)
https://arxiv.org/abs/1606.09282
李宏毅学习笔记45.Life-long Learning_第18张图片
• iCaRL: Incremental Classifier and Representation Learning
https://arxiv.org/abs/1611.07725
李宏毅学习笔记45.Life-long Learning_第19张图片

Knowledge Transfer

如果为不同任务训练不同模型,有两个缺点:
➢Knowledge cannot transfer across different tasks
➢Eventually we cannot store all the models
李宏毅学习笔记45.Life-long Learning_第20张图片
那用Transfer learning是不是可以解决这个问题?

Life-Long v.s. Transfer

Transfer learning目标当然也是学完task 1后学习task 2要学得更棒,但是学会task 2后并不会一定保证task 1还没忘记。
李宏毅学习笔记45.Life-long Learning_第21张图片

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
李宏毅学习笔记45.Life-long Learning_第22张图片
常见评价指标有:
准确度,就是第一个任务到第T个任务的performance求平均,就是表格最下面一行的平均值
李宏毅学习笔记45.Life-long Learning_第23张图片
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一样保存一些信息?
李宏毅学习笔记45.Life-long Learning_第24张图片
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。
李宏毅学习笔记45.Life-long Learning_第25张图片
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越接近越好。
李宏毅学习笔记45.Life-long Learning_第26张图片
李宏毅学习笔记45.Life-long Learning_第27张图片
该方法结果:
李宏毅学习笔记45.Life-long Learning_第28张图片

Model Expansion but Parameter Efficiency

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

Progressive Neural Networks

这个在transfer learning有讲,直接贴过来
有一个Task 1,先训练之,并把其参数固定:
李宏毅学习笔记45.Life-long Learning_第29张图片
然把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的参数,自己训练自己的。
李宏毅学习笔记45.Life-long Learning_第30张图片
以此类推:

李宏毅学习笔记45.Life-long Learning_第31张图片
这个方法缺点是没有办法学习太多的任务,因为参数增加太快。

Expert Gate

新任务进来就判断新任务和现有任务的相似度,找一个最相似的任务并以其作为新任务的初始化。每增加一个任务也会增加一个模型:
李宏毅学习笔记45.Life-long Learning_第32张图片

Net2Net

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

Curriculum Learning : what is the proper learning order?

学习的任务会影响模型的遗忘的情况,以最前面的数字识别的例子
在这里插入图片描述
李宏毅学习笔记45.Life-long Learning_第34张图片

李宏毅学习笔记45.Life-long Learning_第35张图片
李宏毅学习笔记45.Life-long Learning_第36张图片
taskonomy= task + taxonomy
http://taskonomy.stanford.edu/#abstract

你可能感兴趣的:(李宏毅机器学习笔记)