我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。

本节内容综述

  1. 终身学习技术,让一个模型学习多个任务,又叫 Continuous Learning、Never Ending Learning、Incremental Learning。
  2. 要做到 Life Long Learning ,要解决三个问题:Knowledge Retention (but NOT Intransigence)、 Knowledge Transfer 以及 Model Expansion (but Parameter Efficiency) 。
  3. 首先来看 Knowledge Retention (but NOT Intransigence)
  4. 首先来看看机器的脑洞有多大,见 Example: Image 。我们发现机器存在 Catastrophic forgetting 。
  5. 在实际情况中,假设我们有 1000 个任务,我们很难把前 999 个任务的数据都保留,每次都同时在 1000 个任务上学习。因此,我们期待有一种方法,可以把之前学过的任务“记下来”,从而只学习新的任务,也不会忘记以前学过的任务。由此,提到方法 Elastic Weight Consolidation (EWC)
  6. 我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:我们不去存储之前的数据,而做一个用于生成之前数据的模型
  7. 此外,我们还可以考虑 Adding New Classes 这种思路。
  8. 进入下一部分,Knowledge Transfer 。简单地讨论了 LLL 的目的与意义。
  9. 之后,简单介绍了 Evaluation 。为了举指标的例子,介绍了一个方法 Gradient Episodic Memory (GEM) 。
  10. 最后一部分将简单讨论 Model Expansion (but Parameter Efficiency)
  11. 此外,我们可以讨论 Curriculum Learning ,即多任务的学习顺序其实也很重要。

文章目录

  • 本节内容综述
  • 小细节
    • Knowledge Retention (but NOT Intransigence)
      • Example
        • Image
        • Question Answering
      • Elastic Weight Consolidation (EWC)
        • Example
        • Result
        • More
      • Generating Data
      • Adding New Classes
    • Knowledge Transfer
    • Evaluation
      • Gradient Episodic Memory (GEM)
    • Model Expansion (but Parameter Efficiency)
      • Progressive Neural Networks
      • Expert Gate
      • Net2Net
    • Curriculum Learning
      • taskonomy = task + taxonomy 分类学

小细节

Knowledge Retention (but NOT Intransigence)

Example

Image


如上,其在任务一学到 90% ,在任务二上测试,准确率更高;但是在学完任务一后,再去学任务二,其在任务一的表现变差了(Forget!!)。


但是,如果把任务一、任务二打乱在一起,一起学习,如上,其结果偏好。其明明可以把两个任务都做好。

Question Answering


如上,让机器学一个问答数据集 bAbi


如上是某个题型的准确率,以第一排为例,在学完题型 5 后,去学题型 6 ,其马上就忘了题型 5 。

但是,如果把 20 个题型一起训练,其在各个题型的表现其实不差。

我们叫这种情况为机器的 Catastrophic forgetting 。

Elastic Weight Consolidation (EWC)

基本思想是,让机器学完过去的任务后,保留“重要的参数”,只调“不那么重要的参数”。


如上,对于模型bbb,其每一个参数θib\theta_i^bθib​都有一个“守卫”bib_ibi​。由此,我们得到了 EWC 中的损失函数。

由此:

  • 如果 bi=0b_i = 0bi​=0 ,那么对于 θi\theta_iθi​ 来讲就没有约束;
  • 如果 bi=∞b_i = \inftybi​=∞ ,那么 θi\theta_iθi​ 就会等于 θib\theta_i^bθib​ 。

我们这里,考虑的是新参数与旧参数的关系。

Example


如上,是任务1与任务2的loss分布,颜色越深,代表 loss 越小。如上,先训练任务1,再训练任务2,会导致“遗忘”任务1。


如果使用EWC呢?计算这个“保镖”bbb有很多方法,这里“计算二次微分”来做。如上,通过算二次微分,发现,在θ1\theta_1θ1​上,动一动没关系,但是θ2\theta_2θ2​发现尽量不要动它。


如上,在上面的限制下,我们的θ∗\theta^*θ∗在任务一、二效果都可以。

Result


如上,使用 EWC 在以此学习三个例子,效果较好。而 L2 正则其很难学习新任务。

More


一些其他新EWC研究如上。

Generating Data


我们发现,multi-task learning 通常是 life long learning 的上线。有人想了一个奇招:我们不去存储之前的数据,而做一个用于生成之前数据的模型。

但其实,让机器生成数据并不好做。

Adding New Classes


如上,我们的模型结构在各个任务中都是相同的,那有没有可能直接在原任务上修改任务,进而实现终身学习呢?有技术 LwF 与 iCaRL 。

Knowledge Transfer

我们为每个任务训练一个模型,但是这样可能很难做到“任务间的知识转化”,即触类旁通

而这不就是 Transfer Learning 要解决的问题吗?但是 Transfer Learning 没有考虑学完任务2后,在任务1上的表现。

因此,LLL中包含了 Transfer Learning 要考虑的问题。

Evaluation


如上,我们要衡量一个 LLL 模型,通常画一个矩阵。其中定义了 AccuracyAccuracyAccuracy 、 BackwardTransferBackward \; TransferBackwardTransfer (描述忘记程度)、 ForwardTransferForward \; TransferForwardTransfer 等指标。


ForwardTransferForward \; TransferForwardTransfer 如上。

Gradient Episodic Memory (GEM)

这里举了一个例子。

假设存了一些过去 task 的资料,如上红和绿。我们希望做目前的梯度下降时,不会伤害过去的梯度,即目前的梯度与之前任务在该点的梯度夹角不能超过90度


其各个指标/结果如上。

Model Expansion (but Parameter Efficiency)

我们希望模型扩展的速度,比任务增长的速度慢。

这是一个难点,目前没有太好的文章。

Progressive Neural Networks


如上,把之前任务的前一层的隐层也当作输入。

但是这里,任务量大的话,将导致输入量大,因此难以用到很多种任务上。

Expert Gate


如上,会查看新任务与哪一个任务最像,然后以那个最像的任务为基础,训练模型。但是也会造成新增一个任务,就多一个模型这个问题。

Net2Net


如上,可以使用类似“把某个神经元进行分裂”这种方法,去增加网络的宽度。

Curriculum Learning


如上,我们之前讨论过的例子,学习顺序其实影响很大。

taskonomy = task + taxonomy 分类学


如上有人基于此提出了 taskonomy 。

【李宏毅2020 ML/DL】P99-105 Life Long Learning相关推荐

  1. 【李宏毅2020 ML/DL】补充:Structured Learning: Structured SVM

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...

  2. 【李宏毅2020 ML/DL】补充:Structured Learning: Introduction Structured Linear Model

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...

  3. 【李宏毅2020 ML/DL】补充:Meta Learning - Metric-based Approach Train+Test as RNN

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在油管李老师主页即可找到.本节内容 35 分钟左右. ...

  4. 【李宏毅2020 ML/DL】补充:Meta Learning - Gradient Descent as LSTM

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.上节课李老师讲了元学习中的参数初始化方法:MAML 与 ...

  5. 【李宏毅2020 ML/DL】P107-109 Deep Reinforcement Learning | Scratching the surface

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 关于强化学习,我专门花半年时间学习实践过,因此这里笔记只记录李老师的 outline .我的强化学习资源仓库: ...

  6. 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM

    李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...

  7. 【李宏毅2020 ML/DL】P1 introduction

    [李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...

  8. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...

  9. 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

最新文章

  1. tcpdump 抓取icmp数据包
  2. 揭秘华为麒麟990 5G:提前3年布局,百亿晶体管把7nm用到了极致
  3. 关于安装torch、torchvision包的问题
  4. js中while死循环语句_Java系列教程day06——循环语句
  5. android的指纹问题
  6. RDD持久化、广播、累加器
  7. 信息学奥赛一本通 1019:浮点数向零舍入 | OpenJudge NOI 1.2 06
  8. C++提高部分_C++类模板中成员函数的创建时机---C++语言工作笔记089
  9. java实现c语言的函数_C语言tolower函数介绍、示例和实现
  10. linux嵌入式缺点,嵌入式领域linux作为实时操作系统的缺点
  11. WebGrid 在asp.net mvc中的使用和理解(译)
  12. The proxy server received an invalid response from an upstream server.
  13. 万年历c语言程序设计免费,C语言程序设计万年历程序
  14. Linux驱动——编译驱动的两种形式(内核目录外、内核目录中)
  15. 网工必知 | 什么叫一层交换机,二层交换机,三层交换机?
  16. tcp 握手失败_什么是三次握手,握手为何要进行三次,如果握手失败会有什么后果...
  17. IOS开发之工欲善其事必先利其器:Xcode
  18. mysql二级考试范围_计算机二级MySQL考试内容大纲
  19. 【ZigBee 系列】| 网关的构成?用 JN51X9 的案例来讲解框架及各部分的功能
  20. Ethereum智能合约迁移到PlatON教程

热门文章

  1. 自己的 「 代码制造 check list 」
  2. OxA6可以作为C语言常量吗,淮阴师范学院期末考试c语言题库
  3. 【Hive】性能调优 - map-side JOIN
  4. iOS上架被拒理由及相关解决方案记录
  5. python ModuleNotFoundError: No module named ‘requests‘ 的 解决方案
  6. 【C语言】利用递归解决猴子吃桃问题
  7. IoT:BLE4.0教程一 蓝牙协议连接过程与广播分析
  8. web 折线图大数据量拉取展示方案_对比多种微前端方案
  9. 疯狂java实验五数据流编程_2017-2018-2 20165209 实验五《网络编程与安全》实验报告...
  10. adam优化_认识 AdaMod: 一个新的有记忆的深度学习优化器