李宏毅——终身学习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
导读
人从小大大用同一个脑袋学习
但每个作业都训练同一个神经网络
为什么不用同一个网络学习不同的任务呢?
终身学习的不同称呼
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相关推荐
- Life-Long Learning(LLL)终身学习的理解
Life-Long Learning(LLL) 看了李宏毅老师的Life-Long Learning视频,以及粗略阅读了A continual learning survey:Defying forg ...
- 李宏毅深度学习——第一天
Course introduction RNN-->输入是一个句子,输出是pos or neg CNN-->输入是图片,输出是从n个选项里选择一个正确的 Seq2seq:翻译(产生文句)( ...
- Why choose lifelong learning in medical images?(附3篇论文翻译)
Why choose lifelong learning in medical images? 最近几年顶会上将lifelong用在medical images中的文章,可参考,附abstract和i ...
- 终身学习(LifeLong Learning)/ 增量学习(Incremental Learning)、在线学习(Online Learning)
1.在线学习 实时获得一个新样本就进行一次模型更新.显然,在线学习时增量学习的特例,而增量学习可视为"批模式"的在线/离线学习. online主要相对于offline或者说batc ...
- 【机器学习】LifeLong Learning(终身学习)介绍
下面的文章转自(已获作者允许): 2020机器学习前沿技术----LifeLong learning - stephon的文章 - 知乎 文章介绍了关于机器学习比较前沿的一项技术,也就是LifeLon ...
- 什么是终身学习(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 ...
- 持续学习(continual learning/ life-long learning)
持续学习,泛化知识的能力是强人工智能的重要特征.人工智能的重要研究目标是构建具备持续学习能力的智能体,该智能体可以根据自身经验构建对世界的复杂理解,从而利用更复杂的知识进行自主的渐进式 ...
- 2021 Lifelong learning(李宏毅
Lifelong learning探讨的问题是,一个模型能否在很多个task上表现都很好.如此下去,模型能力就会越来越强. Life Long Learning 的難點出在什麼樣的地方: 這個算是同一 ...
- 持续学习 (continual learning/ life-long learning)详解
作者:夕小瑶的卖萌屋-- 「小鹿鹿鹿 」 问题定义 我们人类有能够将一个任务的知识用到另一个任务上的能力,学习后一个任务时也不会忘记如何做前一个任务.这种能力叫持续学习 (continual lear ...
最新文章
- openlayers地图旋转_OpenLayers教程二:实现简单的地图显示
- android 高级项目,从零开始的Android新项目8 - Data Binding高级篇
- Spring注解驱动开发
- python 调用gpu算力_数据科学家需要算力,GPU 如何实现?-控制器/处理器-与非网...
- Java List和Array之间的转换
- 题目 2194: 蓝桥杯2018年第九届真题-递增三元组
- 课堂随笔01--进制转换
- python 实现 BCH 纠错码的方法
- arcgis坐标转换
- android manifest 多个application,Android - 如何避免多個Manifest文件中的重復?
- 群晖NAS安装cpolar内网穿透套件(群晖6.X版)
- 系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想
- 计算机统计各职称人数,用公式计算出各年教师的总人数和各职称的百分比
- 网信办督促平台整改算法歧视、大数据杀熟:必须保护用户合法权益
- 表情识别(七)--面部表情识别阶段综述(2018.4)
- 中小型研发团队架构实践三要点
- 数学图形(1.4)心形线
- 如何实现根据照片获取地理位置及如何防御照片泄漏地理位置
- 什么是大数据?大数据用来干嘛?
- MFC下调用yolo_cpp_dll.dll
热门文章
- 不同尺寸的手机屏幕其需要图片的分辨率和尺寸
- 短线操盘的10种方法、
- 论文笔记:Adaptive Cross-Modal Prototypes for Cross-Domain Visual-Language Retrieval
- 五句话介绍Hessian序列化
- 大数据 python和java_大数据入门选择Python还是Java?
- JavaWeb 入门级项目实战 -- 文章发布系统 (第六节)
- 共创RPA发展生态,2019中国RPA应用与发展论坛在北京成功举办
- Android 忆童年 DVD 待机动画
- @Transactional注解和Mybatis缓存问题(Mybatis 查询结果 List 对List修改后再次查询,结果与数据库不一致)
- angular ts 表格_Angular8 ui-grid替代方案ag-grid入门