首页 > 其他分享 >机器学习(李宏毅)——终身学习笔记

机器学习(李宏毅)——终身学习笔记

时间:2022-08-14 15:11:47浏览次数:62  
标签:20 训练 李宏毅 笔记 学习 任务 参数 Learning

Life Long Learning

问题背景

Life long learning通常写为LLL,别名:Continuous Learning、Never Endig Learning以及Incremental(递增的、渐进的) Learning。截屏2022-08-12 21.35.24

难点:截屏2022-08-12 21.41.44

本来学完task1以后即使直接用于task2,其acc也能达到96%,但如果学完后的模型继续用task2的数据去学习,则在task2的测试集上acc固然能提高,但是却会把task1上学习到的知识忘记。

老师又给了一个NLP的例子:

截屏2022-08-14 10.18.14

数据集语料较为简单。通常是把20个任务混合在一起,让QA一次去学习,或者20个任务训练20个模型,其各自有不同的技能。

假设按照任务1到20的顺序去学习,在任务5的测试集进行测试,结果如下:

截屏2022-08-14 10.57.09

模型只要一学习新的任务,旧的任务就会忘记。但这并不意味着模型无法同时学习多个任务。如果把20个任务的训练数据混合在一起进行训练的话,结果如下:

截屏2022-08-14 10.58.34

这个现象叫做catastrophic forgetting(灾难性遗忘),因为这种遗忘不是一般的遗忘, 而是学到新知识后几乎会将旧知识全部忘记。

对于同时学习多个任务的方式,叫做multi-task training。即机器在学习第n个任务的时候需要对前面n - 1个任务的资料也进行学习,很可能没有这么大的空间对这些资料进行存储,训练时间可能大幅增加。因此,多任务学习不是解决终身学习的一个好的方式。

终身学习与迁移学习相比,更关注的是旧的任务上效果怎么样(当然新的任务也会关注),迁移学习只关注新任务效果怎么样。

![截屏2022-08-14 11.12.08](/Users/lipoicyclic/Library/Application Support/typora-user-images/截屏2022-08-14 11.16.52.png)

评估:

截屏2022-08-14 11.32.38

Rij指训练完第i个任务后在第j个任务测试集上的准确率。

截屏2022-08-14 12.27.57

注意Backward Transfer通常是负的,可以衡量学习到新的任务后对于原来任务的遗忘程度。

Forward Transfer可以衡量学习其他任务后对于新任务“无师自通”的能力。

问题解法

1. Selective Synaptic Plasticity(选择突触可塑性)

让某一些神经元/某一些神经元之间的连接具有可塑性,是一种基于正则化的方法。

截屏2022-08-14 12.55.07

一种可能的思想是,希望在学习新任务的时候,不要去改变模型比较重要的参数,只改变不那么重要的参数。

bi代表这个参数对于过去的任务而言是否重要,是人为设定的超参数(如果是可学习的话会学成0:minimize loss)。

截屏2022-08-14 13.17.39

截屏2022-08-14 13.20.35

如果所有的bi都设置为非常大的值,则新的参数和旧的参数会非常接近,在旧任务上固然不会遗忘,但新任务也很有可能学的不好。

那么如何判断一个参数对于旧任务是否重要呢?把\(\theta_b\)在\(\theta_1\)方向上做移动,发现对于Loss影响不大,那么这个参数就不那么重要。

截屏2022-08-14 13.29.41

截屏2022-08-14 13.40.07

改变训练的任务的顺序对于结果有无影响?有!做实验时作者会穷举任务的顺序。

Gradient Episodic Memory(GEM)

GEM是一种早年的做法,其不是对参数加以限制,而是在梯度的方向上做限制。

截屏2022-08-14 13.57.33

但这样就有一个劣势,就是需要所有任务的资料(用以确定梯度的方向)。但实际上gb仅仅是去修改g的方向,确定gb仅需要存储一点资料。

2. Additional Neural Resource Allocation

改变一下使用在每个任务里的Neural的resource。

每次训练新的任务时,之前任务的参数就不要去修改了,而是增下一部分新的参数。但这样每次训练需要额外的空间去产生新的Neural,

截屏2022-08-14 14.03.16

一个相反的思想是PackNet。每次先开一个比较大的模型,每次用其中一部分参数去训练当前任务。

CPG将前面两种方法结合了起来:

截屏2022-08-14 14.36.05

3. Memory Reply

用Generator产生之前任务的资料,拿过来参与新任务的训练。如果存储Generator的空间比直接存储旧的信息所需要的空间小,那么这个方法就是合适的。截屏2022-08-14 14.52.07

如果任务的class数目不一样的话应该怎么解决?截屏2022-08-14 14.54.53

4. Curriculum Learning

研究什么样的学习顺序是有效的

截屏2022-08-14 14.57.08

question

如果不同任务的训练数据不平衡,应该如何处理?

标签:20,训练,李宏毅,笔记,学习,任务,参数,Learning
From: https://www.cnblogs.com/lipoicyclic/p/16585469.html

相关文章

  • Java学习笔记之—java内存结构
    java内存结构之前一直是在学习c++,所以对c++的内存结构比较了解。但是目前由于工作需要从事Java开发,而自己对这方面的知识比较欠缺,所以从网络上阅读查看别人的学习总结,希望......
  • day01 Markdown学习
    Markdown学习二级标题三级标题字体Hello,World!加粗左右各两个**Hello,World!斜体左右各一个*Hello,World!斜体加粗左右各三个***Hello,World!......
  • 阅读笔记: Map-Based Precision Vehicle Localization in Urban Environments
    摘要结合了GPS、IMU、轮速计和LiDAR数据,生成高精度的环境地图。使用了与近期的SLAM方法类似的offlinerelaxation技术,把地图在相交区域和自我重叠区域进行对齐。通过把最......
  • [学习笔记]BSGS
    $\operatorname{BSGS}$,也即$Baby\;step\;Giant\;step$大步小步算法,可以在$\Theta(\sqrt{p})$的时间内求解$$a^x\equivb\pmod{p}$$的问题,其中$a,p$互质(也即$a......
  • java第七周学习情况
    这个星期主要是在搞学校在暑期安排的实验报告b怎么说来着才知道这个消息几天 这是对学习不上心的体现啊题目也有点多慢慢做呗而Java这边还是看些相关知识呗说实话......
  • 笔记 【使用事件】制作3D自动开关门(附:3D人物移动和旋转,out输出参数,3D搭建使用的快捷
    【仍在施工ing】小Joe视频链接传送门使用事件制作3D自动开关门(附:3D人物移动和旋转,out输出参数,3D搭建使用的快捷键和Packages,泛型委托Action等)上期视频上期笔记思考i......
  • 研发工程师L1Python学习
    汉诺塔Description有三个立柱A、B、C。A柱上穿有大小不等的圆盘N个,较大的圆盘在下,较小的圆盘在上。要求把A柱上的圆盘全部移到C柱上,保持大盘在下、小盘在上的规律(可借助B......
  • 用vscode学习使用markdown
    学习java的第一天学习使用vscode来写博客(markdown)字体加粗:hello斜体:hello加粗和斜体:hello引用学习java,走向人生巅峰分割线图片山河或者复制之后用alt+ctr......
  • 【学习笔记/模板】扫描线 周长并
    先开坑,晚上再写。P1856[IOI1998][USACO5.5]矩形周长PictureCode#include<cstdio>#include<algorithm>usingnamespacestd;constintMAXN=1e5+10;intn,......
  • java学习记录
    # 第一个SpringBoot项目https://www.jb51.net/article/223251.htm#_label0#pom用阿里云源```<repositories><repository><id>public</id><name>......