李宏毅——终身学习lifelong learning

李宏毅——终身学习lifelong learning

  • 导读
    • 要解决的问题
    • 如何解决
  • 遗忘问题
    • Elastic Weight Consolidation(EWC)
      • 基本思想
      • 理解
      • EWC的变形
    • 其他方法
      • 生成数据
      • 新增类
  • knowledge transfer
    • life-long vs transfer
  • 如何衡量life-long learning
    • GEM
  • Model Expansion
    • Progressive Neural Network
    • expert gate
    • Net2Net
  • curiculum learning

导读

人从小大大用同一个脑袋学习
但每个作业都训练同一个神经网络
李宏毅——终身学习lifelong learning_第1张图片
为什么不用同一个网络学习不同的任务呢?
终身学习的不同称呼
LLL(life long learning)
continuous learning
never ending learning
incremental learning
可以做不同的任务
李宏毅——终身学习lifelong learning_第2张图片

要解决的问题

1、学过的旧东西记下来,但要能学新的
李宏毅——终身学习lifelong learning_第3张图片
例子:手写数字辨识
在一个三层的网络中学习第一个有噪音的任务,在任务1学到的东西可以用在任务2上。任务1的正确率甚至没有任务2高,这个可以视为迁移学习。
让机器学任务2后,任务2的准确率更高,但是任务1的准确率下降
李宏毅——终身学习lifelong learning_第4张图片
是否是因为网络过于简单?不是的,因为同时学任务1和任务2,能够学的比较好
李宏毅——终身学习lifelong learning_第5张图片

例子:问答系统。

机器学习的训练资料是:文章、问题、答案
bAbi训练集有20种不同的题型
机器从第一个任务开始学习,学到第20个。
看机器对题型5的回答,只有刚学完题型5时正确率比较高。
对于其他题型也是这样的。
李宏毅——终身学习lifelong learning_第6张图片
如果同时学20个任务的话,正确率还行。
李宏毅——终身学习lifelong learning_第7张图片
证明网络有能力学完这些东西,但是没有做到。
这种现象叫做灾难遗忘。
李宏毅——终身学习lifelong learning_第8张图片

如何解决

1、多任务学习
很难实现,要保存所有的旧资料才行,学习可能很久(存储、计算问题)

遗忘问题

Elastic Weight Consolidation(EWC)

基本思想

有一些weight重要,但是有一些不重要;保护重要weight,只调不重要的额。
做法:对于每一个theta,有一个守卫参数b
修改loss,计算当前参数与之前的参数之间的距离。
李宏毅——终身学习lifelong learning_第9张图片
b用来表示保护theta的程度
可以将theta视为一种regularization
李宏毅——终身学习lifelong learning_第10张图片

理解

假设有两个任务,网络有两个参数theta,颜色越深,说明loss越小
学习任务1时,参数从theta0学到thetab,再学习任务2时,继续训练,学习到theta* ,此时任务2的loss变小,但是任务2的变大
李宏毅——终身学习lifelong learning_第11张图片
在EWC中,可以使用某种方法算重要性,比如算微分,theta1比较小,也就是说在theta1上,改变参数,对结果影响不大,b1可以设为比较小的值,但是theta2微分比较大,b2设置的比较大
李宏毅——终身学习lifelong learning_第12张图片
移动时,尽量不要动theta2
李宏毅——终身学习lifelong learning_第13张图片
当然求导不是唯一的方法,可以用其他的方法。
原始EWC的实验结果
分别训练A,B,C,横轴表示在不同任务上的表现,纵轴表示训练阶段
李宏毅——终身学习lifelong learning_第14张图片

EWC的变形

李宏毅——终身学习lifelong learning_第15张图片

其他方法

生成数据

生成数据,来缓解数据过多占用内存的问题
先让机器学task1,然后学task2,同时要训练generator,学会生成task1的数据,此时就可以把task1的data丢掉,用生成的数据和task2的放在一起训练。
李宏毅——终身学习lifelong learning_第16张图片
但是目前靠机器生成复杂数据,能不能做的起来尚待研究

新增类

如果训练任务需要不同的网络呢?比如类增量问题
李宏毅——终身学习lifelong learning_第17张图片

knowledge transfer

李宏毅——终身学习lifelong learning_第18张图片
不为每个任务训练模型,让不同模型之间互通有无,也可以节省模型开销空间
李宏毅——终身学习lifelong learning_第19张图片

life-long vs transfer

不同点:在transfer时,只在乎任务2,不在乎任务1点表现,但是life-long希望都表现好
李宏毅——终身学习lifelong learning_第20张图片

如何衡量life-long learning

通常用matrix,每个row代表学习的阶段,column表示在任务X上的表现。
Accuracy是最后一行的平均
多不会遗忘:backward Transfer,学到某个阶段时减去刚学过时的表现,求平均
(通常为负)
李宏毅——终身学习lifelong learning_第21张图片
forward Transfer:表示能transfer到没学的任务的表现
李宏毅——终身学习lifelong learning_第22张图片

GEM

gradient Episodic Memory
在新的任务算出gradient,再计算之前的Gradient的方向。算出现在移动的方向。这个方向不会伤害到原有的任务,而且和当前gradient的方向越近越好。
李宏毅——终身学习lifelong learning_第23张图片
这种需要存一些过去的数据。
它的表现:后续的学习不会影响之前的任务,甚至能有所改善
李宏毅——终身学习lifelong learning_第24张图片

Model Expansion

有可能真的学不下了,能不能扩张模型
李宏毅——终身学习lifelong learning_第25张图片
模型扩张的速度应该比任务来的速度慢。这个是个尚待研究的问题,没有太多研究。

Progressive Neural Network

一个网络做任务1,网络1的输出当作网络2的输入,网络1、2的输出都当作网络3的输入
实操上做不了太多任务
李宏毅——终身学习lifelong learning_第26张图片

expert gate

每个task训练一个网络,每个新任务进来,看和哪个旧任务最像,希望做到knoledege transfer。这里模型扩张的速度和新任务到来的速度一样,在任务较多的时候也是会有比较多的模型
李宏毅——终身学习lifelong learning_第27张图片

Net2Net

让网络长宽
直接加neuron的话,可能会加噪声,所以如何加神经元,但是不引入噪声很重要
做法:把神经元分裂,w仍然是c和d,但是分裂后变为f/2,但是问题是加入的神经元的gradient都一样,所以要加一个小小的noise
也不是每进来一个任务就加网络,而是看训练效果怎么样,决定是否expand
李宏毅——终身学习lifelong learning_第28张图片

curiculum learning

在未来可能会有的问题
这些任务的顺序怎么排序
例子中,先学任务1,再学任务2,效果不好
但是先学任务2,再学任务1时,一开始任务1效果不好,但是没有忘记
所以说明,是否发生遗忘,和任务排序有非常重要的关系。
李宏毅——终身学习lifelong learning_第29张图片
已有的研究
李宏毅——终身学习lifelong learning_第30张图片

你可能感兴趣的:(李宏毅)