李宏毅——终身学习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

导读

人从小大大用同一个脑袋学习
但每个作业都训练同一个神经网络

为什么不用同一个网络学习不同的任务呢?
终身学习的不同称呼
LLL(life long learning)
continuous learning
never ending learning
incremental learning
可以做不同的任务

要解决的问题

1、学过的旧东西记下来,但要能学新的

例子:手写数字辨识
在一个三层的网络中学习第一个有噪音的任务,在任务1学到的东西可以用在任务2上。任务1的正确率甚至没有任务2高,这个可以视为迁移学习。
让机器学任务2后,任务2的准确率更高,但是任务1的准确率下降

是否是因为网络过于简单?不是的,因为同时学任务1和任务2,能够学的比较好

例子:问答系统。

机器学习的训练资料是:文章、问题、答案
bAbi训练集有20种不同的题型
机器从第一个任务开始学习,学到第20个。
看机器对题型5的回答,只有刚学完题型5时正确率比较高。
对于其他题型也是这样的。

如果同时学20个任务的话,正确率还行。

证明网络有能力学完这些东西,但是没有做到。
这种现象叫做灾难遗忘。

如何解决

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

遗忘问题

Elastic Weight Consolidation(EWC)

基本思想

有一些weight重要,但是有一些不重要;保护重要weight,只调不重要的额。
做法:对于每一个theta,有一个守卫参数b
修改loss,计算当前参数与之前的参数之间的距离。

b用来表示保护theta的程度
可以将theta视为一种regularization

理解

假设有两个任务,网络有两个参数theta,颜色越深,说明loss越小
学习任务1时,参数从theta0学到thetab,再学习任务2时,继续训练,学习到theta* ,此时任务2的loss变小,但是任务2的变大

在EWC中,可以使用某种方法算重要性,比如算微分,theta1比较小,也就是说在theta1上,改变参数,对结果影响不大,b1可以设为比较小的值,但是theta2微分比较大,b2设置的比较大

移动时,尽量不要动theta2

当然求导不是唯一的方法,可以用其他的方法。
原始EWC的实验结果
分别训练A,B,C,横轴表示在不同任务上的表现,纵轴表示训练阶段

EWC的变形

其他方法

生成数据

生成数据,来缓解数据过多占用内存的问题
先让机器学task1,然后学task2,同时要训练generator,学会生成task1的数据,此时就可以把task1的data丢掉,用生成的数据和task2的放在一起训练。

但是目前靠机器生成复杂数据,能不能做的起来尚待研究

新增类

如果训练任务需要不同的网络呢?比如类增量问题

knowledge transfer


不为每个任务训练模型,让不同模型之间互通有无,也可以节省模型开销空间

life-long vs transfer

不同点:在transfer时,只在乎任务2,不在乎任务1点表现,但是life-long希望都表现好

如何衡量life-long learning

通常用matrix,每个row代表学习的阶段,column表示在任务X上的表现。
Accuracy是最后一行的平均
多不会遗忘:backward Transfer,学到某个阶段时减去刚学过时的表现,求平均
(通常为负)

forward Transfer:表示能transfer到没学的任务的表现

GEM

gradient Episodic Memory
在新的任务算出gradient,再计算之前的Gradient的方向。算出现在移动的方向。这个方向不会伤害到原有的任务,而且和当前gradient的方向越近越好。

这种需要存一些过去的数据。
它的表现:后续的学习不会影响之前的任务,甚至能有所改善

Model Expansion

有可能真的学不下了,能不能扩张模型

模型扩张的速度应该比任务来的速度慢。这个是个尚待研究的问题,没有太多研究。

Progressive Neural Network

一个网络做任务1,网络1的输出当作网络2的输入,网络1、2的输出都当作网络3的输入
实操上做不了太多任务

expert gate

每个task训练一个网络,每个新任务进来,看和哪个旧任务最像,希望做到knoledege transfer。这里模型扩张的速度和新任务到来的速度一样,在任务较多的时候也是会有比较多的模型

Net2Net

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

curiculum learning

在未来可能会有的问题
这些任务的顺序怎么排序
例子中,先学任务1,再学任务2,效果不好
但是先学任务2,再学任务1时,一开始任务1效果不好,但是没有忘记
所以说明,是否发生遗忘,和任务排序有非常重要的关系。

已有的研究

李宏毅——终身学习lifelong learning相关推荐

  1. Life-Long Learning(LLL)终身学习的理解

    Life-Long Learning(LLL) 看了李宏毅老师的Life-Long Learning视频,以及粗略阅读了A continual learning survey:Defying forg ...

  2. 李宏毅深度学习——第一天

    Course introduction RNN-->输入是一个句子,输出是pos or neg CNN-->输入是图片,输出是从n个选项里选择一个正确的 Seq2seq:翻译(产生文句)( ...

  3. Why choose lifelong learning in medical images?(附3篇论文翻译)

    Why choose lifelong learning in medical images? 最近几年顶会上将lifelong用在medical images中的文章,可参考,附abstract和i ...

  4. 终身学习(LifeLong Learning)/ 增量学习(Incremental Learning)、在线学习(Online Learning)

    1.在线学习 实时获得一个新样本就进行一次模型更新.显然,在线学习时增量学习的特例,而增量学习可视为"批模式"的在线/离线学习. online主要相对于offline或者说batc ...

  5. 【机器学习】LifeLong Learning(终身学习)介绍

    下面的文章转自(已获作者允许): 2020机器学习前沿技术----LifeLong learning - stephon的文章 - 知乎 文章介绍了关于机器学习比较前沿的一项技术,也就是LifeLon ...

  6. 什么是终身学习(Life Long Learning / Continuous Learning / Never Ending Learning / Incremental Learning)

    文章目录 1. 概念区分 1.1 Life Long v.s. Multi task 1.2 Life Long v.s. Transfer 2. 终身学习 2.1 Selective Synapti ...

  7. 持续学习(continual learning/ life-long learning)

            持续学习,泛化知识的能力是强人工智能的重要特征.人工智能的重要研究目标是构建具备持续学习能力的智能体,该智能体可以根据自身经验构建对世界的复杂理解,从而利用更复杂的知识进行自主的渐进式 ...

  8. 2021 Lifelong learning(李宏毅

    Lifelong learning探讨的问题是,一个模型能否在很多个task上表现都很好.如此下去,模型能力就会越来越强. Life Long Learning 的難點出在什麼樣的地方: 這個算是同一 ...

  9. 持续学习 (continual learning/ life-long learning)详解

    作者:夕小瑶的卖萌屋-- 「小鹿鹿鹿 」 问题定义 我们人类有能够将一个任务的知识用到另一个任务上的能力,学习后一个任务时也不会忘记如何做前一个任务.这种能力叫持续学习 (continual lear ...

最新文章

  1. openlayers地图旋转_OpenLayers教程二:实现简单的地图显示
  2. android 高级项目,从零开始的Android新项目8 - Data Binding高级篇
  3. Spring注解驱动开发
  4. python 调用gpu算力_数据科学家需要算力,GPU 如何实现?-控制器/处理器-与非网...
  5. Java List和Array之间的转换
  6. 题目 2194: 蓝桥杯2018年第九届真题-递增三元组
  7. 课堂随笔01--进制转换
  8. python 实现 BCH 纠错码的方法
  9. arcgis坐标转换
  10. android manifest 多个application,Android - 如何避免多個Manifest文件中的重復?
  11. 群晖NAS安装cpolar内网穿透套件(群晖6.X版)
  12. 系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想
  13. 计算机统计各职称人数,用公式计算出各年教师的总人数和各职称的百分比
  14. 网信办督促平台整改算法歧视、大数据杀熟:必须保护用户合法权益
  15. 表情识别(七)--面部表情识别阶段综述(2018.4)
  16. 中小型研发团队架构实践三要点
  17. 数学图形(1.4)心形线
  18. 如何实现根据照片获取地理位置及如何防御照片泄漏地理位置
  19. 什么是大数据?大数据用来干嘛?
  20. MFC下调用yolo_cpp_dll.dll

热门文章

  1. 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
  2. 短线操盘的10种方法、
  3. 论文笔记:Adaptive Cross-Modal Prototypes for Cross-Domain Visual-Language Retrieval
  4. 五句话介绍Hessian序列化
  5. 大数据 python和java_大数据入门选择Python还是Java?
  6. JavaWeb 入门级项目实战 -- 文章发布系统 (第六节)
  7. 共创RPA发展生态,2019中国RPA应用与发展论坛在北京成功举办
  8. Android 忆童年 DVD 待机动画
  9. @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)
  10. angular ts 表格_Angular8 ui-grid替代方案ag-grid入门