1.终身学习概述:不断的学习新任务


1.1 终身学习的几种称呼:
Life Long Learning(LLL)
Continuous Learning
Never Ending Learning
Incremental(增长的,增加的) Learning

1.2 Life Long Learning 在现实世界的应用

用标记好的数据训练出模型Model(old task),模型上线,不断在线上收集资料,用收集的资料更新模型Model(New task),循环进行,这本质上就是LLL问题

1.3 LLL难点:

终身学习中指的学习不同任务不是说先语音后图像这种,每个任务相差都不大,就如上图所示,只是一个有杂质一个没有杂质,模型在task1上训练后,在task1可以达到90%,去预测task2可以达到96%,而把在task1上训练好的模型再接着用task2的数据训练,结果在task2上准确率变高了,在task1上反而会降低,也就是说对已经学习到的技能会产生遗忘

把两个任务的数据同时混到一起然后训练模型,而不是先用task1的数据训练再用task2的数据训练,会表明其实该模型结构有能力把两个任务都学好


corpus n.文集,文献,语料库
让机器对这20个问答任务依次学习

左图是让机器依次学习20个任务,然后学完一个任务就测一下在task5上面的准确率,会发现学习task5之前准确率为0,学习完task5之后准确率达到1,而后学习完其他task后准确率又会暴跌。
右图是把二十个任务的数据放到一起,让机器一起学习,然后测模型在不同task上的准确率,task19可能比较难,机器没有学会,但是也能证明机器是有能力学习这些任务的

总结:
LLL的难点是机器明明有能力学习多个任务,但是按序学习就会对前面的任务遗忘->是不为也,非不能也->catastrophic forgetting

1.4 怎么让机器可以依序学习多个任务而不产生这种灾难性任务?

有的人可能会说前面举的例子中把两个task的数据放到一起训练就可以同时学会两个task了,那也可以继续用这种方式去解决多任务学习问题。
首先这种训练方式称为Multi-task training,如果当任务很多时,比如已经学会了999个任务,现在要学习第1000个任务,那就需要把1000个任务的数据都拿去训练,一个是存储会有问题,一个是计算能力的问题,训练时间会很长。
所以Multi-task training can be considered as the upper bound of LLL,也就是说这种方式的结果会被视为LLL的上限,在研究LLL的时候会先跑一个Multi-task看上限在哪里,然后看自己的方法产生的结果能不能逼近这个上限。

1.5 为什么不让一个模型就学习一个任务,而是要让一个模型学习多个任务?
如果是让一个模型学习一个任务,那实现一个功能多样的机器人就会面临下面这两个问题:
(1)最终没有足够的空间存储所有模型
(2)不同的任务之间不能够互通有无,没法从别的任务里面学到在单一任务中没法学到的知识

1.6 终身学习和迁移学习的关注点不同:
二者虽然都是让机器去学习多个任务,但是关注点不一样,迁移学习里在意的是机器在task1上学到的技能能不能对task2有帮助,所以只看在task2上机器做的好不好,终身学习关注的是机器学完task2后还能不能解决task1
也就是说迁移学习是关注新任务做的怎么样,终身学习是关注旧任务做的怎么样

1.7 LLL的几个评估指标:

permutation是比较难的任务,从task2开始就是用不同的规则对task1的每一张图进行打乱
也可以选择让task1中的每张图片做不同角度的旋转然后充当后续的一系列任务
下面的任务序列比较简单,直接切分数字,然后在不同的task中分类,其实可以看成分奇偶

先随机初始化一个参数,测在不同任务上的accuracy,然后每次学完一个新task,测在不同task上的accuracy
i>j时是看有没有遗忘过去的任务,比如R4,1就是看学完4个task后有没有遗忘task1
i<j时是看能不能无师自通,比如R1,4就是看学完task1后能不能解决task4
评估指标有三个:
(1) accuracy是最后一行取平均值
(2) backward transfer是蓝色箭头指向的相减,R1,1就是刚学完task1时在task1上效果怎么样,RT,1是学完所有任务时在task1上效果怎么样,是衡量遗忘程度,这两个值相减的结果一般会是负的

(3) forward transfer是看没有接触这个task之前模型能学到什么程度,RT-1,T减R0,T是只学了前面T-1个任务,没有学task T时,这个时候在taskT上测试,与最初的随机初始化的模型相比,在taskT上有多大的提升

1.8 产生catastrophic forget的原因:
假设模型只有两个参数,颜色代表LOSS,越偏蓝色LOSS越小,越偏白色LOSS越大。在task1初始化一个参数θ0,利用梯度下降确认参数θb,然后保持这个参数不变用task2的数据训练跑到θ*的位置,这个位置对于task1来说,LOSS就会增大,也就是产生了forget,解决办法是限制参数移动方向,因为task2中明显在一个范围内的参数都可以保持低水平LOSS,可以找到一个位置使task1和task2的LOSS都可以接受

2.几种catastrophic forget的可能解法:

2.1 Selective Synaptic Plasticity: 只让网络中某些神经元或者某些神经元之间的连接具有可塑性,其余参数固化,该方法也称为Regularization-based Approach
每一个参数对学习完的任务的重要程度是不一样的,学习新任务时,对旧任务比较重要的参数最好保持不变,只去改对旧任务不重要的参数

θb是前面的任务训练出来的最终参数,给θb中的每个参数都配一个“守卫”bi是表示这个参数对旧任务的重要程度的

只需要bi大的新旧参数接近

bi=0相当于没做限制,就会造成灾难性遗忘
bi=∞新旧参数就会总保持一致使差值为0,不会忘记旧任务,但是没法学好新的任务,因为学习过程中参数几乎不变
bi是人为设定的,怎么确定这个bi该设置的大一点还是小一点

在θ1方向上移动,LOSS变化很小,说明θ1不重要,所以可以把b1设置的小一点
在θ2方向上移动,LOSS变化很大,说明θ2很重要,b2就设置的大一点,在学习新任务的时候就不要动θ2

b1设置的小,b2设置的大以后,在task2上训练时就会让它尽量在θ1方向移动,在θ2方向尽量不动,学习完的参数放到task1上也会得到一个可以接受的效果

横轴是一次训练各个任务的时间
纵轴是每个任务的准确率
蓝线是bi=0,也就是对参数不做限制,可以看到在taskA表现好,学完taskB就会对taskA遗忘,学完taskC时对taskA遗忘的更多,也就是会造成灾难性遗忘
绿线是bi=1,也就是所有的参数重要性假设一致,遗忘程度下降,但是很难学习新的任务
红线是按重要性给bi赋值,几乎不会遗忘,但是在学习新任务时没有不做限制(bi=0)在新任务上表现好

可以看这几个去学习怎么用不同的方法算bi
2.2 Gradient Episodic Memory(GEM)

GEM不是在参数上做限制,是在梯度更新的方向上做限制,红色虚线是在新任务上的梯度更新方向,绿色是如果还在旧任务上接着训练的梯度更新方向,然后对红色虚线做一些修正,用红色实线做最后的梯度更新方向
缺陷:需要存旧任务的数据才能算在旧任务上的梯度更新方向,LLL追求的是不保存旧任务的数据

2.3 Additional Neural Resource Allocation:
改变一下分配在不同任务上的神经网络资源
2.3.1 Progressive Neural Networks

训练task2的重新建立一个模型,然后用task1的最终参数做task2的初始参数,不去动task1的模型,从而在task1上的效果也不会有大变化,训练task3的时候再开一个模型,用task1和task2的最终参数做task3的初始参数
缺陷:任务多的时候,存所有模型会耗费内存
2.3.2 PackNet

与上一个方法想反,每一个圆圈代表一个参数位置,一开始创建一个大的网络,每个任务只分配一定量的参数位置,这样旧任务的参数就不会改变
2.3.3 Compacting,Picking,and Growing(CPG)

CPG就是Progressive Neural Networks和PackNet的结合,每一次既可以新增参数,又会只分配一部分参数给新任务做训练

2.4 Memory Reply

用一个模型去生成数据,假设是模型A
训练task1的时候用task1的数据训练出一个模型B,同时用模型A生成一份属于task1的数据dataset-task1
训练task2的时候用task2的数据加dataset-task1,在B的基础上训练出模型C,同时用模型A生成属于task1和task2的数据dataset-task1&2,依此类推
实验证明Generating Data可以接近LLL的上限,也就是可以接近Multi-task training的结果

如果不同的任务分类的class逐渐增多怎么办可以看上面的两个文献
LLL一共有三种情景,今天讲的是最简单的一种情景,剩下的可以看链接


上图表明不同的task学习顺序也会对效果造成影响

2022李宏毅第14讲---机器终身学习(Life Long Learning)相关推荐

  1. 李宏毅深度学习——机器终身学习

    机器终身学习 一.终身学习在现实世界的应用 二.终身学习v.s.Transfer Learning 三.终身学习的评估 四.灾难性遗忘解决方法 1.选择性突触的可塑性 (1)为什么会出现灾难性遗忘 ( ...

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

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

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

    娱乐圈太乱了,吃瓜都有点疲劳,其实我的态度是谴责的,但我不觉得非常愤怒,什么样的人都有,垃圾回到垃圾桶去就好        csdn的编辑器一言难尽... ,1.不要偷懒把序号标好2.一篇笔记不要写太 ...

  4. DARPA“终身学习机器”项目取得重大进展

    来源:DARPA网站 2019年3月,美国防高级研究计划局(DARPA)"终身学习机器"(L2M)项目研究人员在<自然·机器智能>杂志发表了其有关人工智能算法的研究结果 ...

  5. [2022]李宏毅深度学习与机器学习第十二讲(必修)-Reinforcement Learning RL

    [2022]李宏毅深度学习与机器学习第十二讲(必修)-Reinforcement Learning RL 做笔记的目的 What is RL Policy Gradient Version 1 Ver ...

  6. [2022]李宏毅深度学习与机器学习第四讲(选修)-GNN

    [2022]李宏毅深度学习与机器学习第四讲(选修)-GNN 做笔记的目的 GNN NN4G DCNN MoNET GTA GIN 做笔记的目的 1.监督自己把50多个小时的视频看下去,所以每看一部分内 ...

  7. [2022]李宏毅深度学习与机器学习第六讲(必修)-GAN

    [2022]李宏毅深度学习与机器学习第六讲(必修)-GAN 做笔记的目的 GAN generator Unconditional generator Theory Behind Tips for GA ...

  8. [2022]李宏毅深度学习与机器学习课程内容总结

    [2022]李宏毅深度学习与机器学习课程内容总结 课程感受 第一讲必修 ML的三个步骤 第一讲选修 深度学习发展趋势 反向传播 从线性模型到神经网络 为什么要用正则化技术 为什么分类是用交叉熵损失函数 ...

  9. 李宏毅——终身学习lifelong learning

    李宏毅--终身学习lifelong learning 导读 要解决的问题 如何解决 遗忘问题 Elastic Weight Consolidation(EWC) 基本思想 理解 EWC的变形 其他方法 ...

  10. Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲

    Tensorflow2.0学习笔记(一)北大曹健老师教学视频1-4讲 返回目录 这个笔记现在是主要根据北京大学曹健老师的视频写的,这个视频超级棒,非常推荐. 第一讲 常用函数的使用(包含了很多琐碎的函 ...

最新文章

  1. SQL2K数据库开发八之表操作创建主键
  2. python与Java线程实现方式的对比
  3. Java 动态写轮眼 SharinganJPanel (整理)
  4. 【Xamarin挖墙脚系列:Xamarin4.0的重大变更】
  5. 微信支付服务器验证的java_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...
  6. canvas转盘抽奖的实现(二)
  7. 如何对QQ好友的IP地址进行精准定位
  8. 一个简单的python例子(监控网页是否运行)
  9. AM信号的调制与解调
  10. FBReader 探究
  11. 一键生成动漫头像微信小程序源码
  12. 2020中国高校计算机大赛网络技术挑战赛,喜报:我院学子喜获2020年中国高校计算机大赛-网络技术挑战赛13项奖励...
  13. 计算机组成原理——数据通路实例
  14. wpf toolbar右对齐_侧方停车是与旁车对齐还是反光镜对B柱?有什么停车技巧吗
  15. 超全Python 量化金融库汇总,必看
  16. java 多维数组 分配空间的方法
  17. 关于STM32驱动LCD显示屏,程序下载后白屏、乱码需要上电复位才能恢复正常问题的解决办法
  18. 有人通过这份面试题拿到了蚂蚁金服的offer!牛逼!
  19. Prescan测试场景和工况的建模方法,导入功能
  20. Python学生公寓管理系统的设计与实现 毕业设计-附源码181047

热门文章

  1. 解决使用CSDN下载东西时,点击直接下载没有反应的问题
  2. 在VT上搜索恶意软件
  3. OSChina 周四乱弹 ——Iphone7出了开始做牛做马了
  4. 【JZOJ3424】粉刷匠
  5. 如何听清楚、说明白--《结构思考力》
  6. python安装出错0x80072ee7_python3.6.4安装错误0x80072efd
  7. 罗振宇2021“时间的朋友·长大以后”跨年演讲全文无删减整理,核心观点、大纲提炼
  8. 最新RiPro6.3.8 wordpress主题最新版完整修复去后门和加密文件
  9. Transportation Research(TR)系列主编汇总
  10. 001案例分析、常见项目管理名词