IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 李宏毅机器学习36——life long learning -> 正文阅读

[人工智能]李宏毅机器学习36——life long learning

这节课学习了life?long?learning,life?long?learning意为终身学习,意思是通过一个神经网络来进行多个task的训练。

LLL面临的主要问题就是经过多个task之后,神经网络对于早期训练的效果就会很差,这可以理解为会遗忘掉过去的事。为了处理这个问题,主要学习了两种方法。

1是EWC(Elastic weight consolidation),ewc的想法是保留之前task训练过程中重要的参数,去更改不太重要的参数,使得经过多个task训练后,对早期的task仍然有不错的表现。在这个过程中,引入了一个值来表示参数的重要程度,例子中,参数重要程度b取的是参数的二次微分。

2是GEM(gradient episodic memory),GEM的方法是在训练时同时考虑之前task的梯度下降方向,使得每次新的task梯度下降时,之前的效果也不会太差。

最后简单讲了一些life?long?learning模型的评估方法。

目录

一、什么是Life long learning

二、解决方法

1.EWC

2.GEM

三、衡量life long learning的模型:

总结:


一、什么是Life long learning

Life long learning意思是终身学习,是指一直使用同一个神经网络去学习不同的任务。

实现life long learning大致分为三方面:knowledge retention,knowledge transfer,model expansion。

knowledge retention是指让机器保留之前学到的内容,而且还要学会变通。

例如:

给机器两个相近的task,当机器学习过task1之后,它对task2也会产生不错的结果。

在上面的nn基础上,继续训练task2,这时,task1的正确率就会垮掉,这种情况就意味着机器会忘记过去的事。

另外,如果让机器同时学习task1和task2,结果反而会表现的更好。

这说明机器是可以同时训练task1和task2的。

看起来这种方法可以解决机器遗忘的问题,但是代价太大了,假设有n个的task同时训练,当新的task出现时,就需要n个task和新的task结合到一起,同时训练。这就需要机器保留大量的数据。

二、解决方法

1.EWC

Elastic weight consolidation:保留之前训练中重要的参数,只更改其中不重要的参数。

Θb是先前任务中训练出的参数

Θbi是指之前训练的参数中第i个参数,bi代表θbi的重要程度。

这样我们就得到一个新的loss函数,

新的loss函数在之前的基础上,增加了参数变换前后的距离*bi。这样会让参数尽可能的小幅度变化。每个参数的变化幅度取决于参数的重要程度。

举例:

假设一个简单任务只有两个参数θ1和θ2,颜色越深代表对应参数的loss越小。

假设机器先训练task1,再训练task2。先要调整task中的θ,在转移到θ2中,继续调整参数。经过task2调整后的参数,再回过头去看task1,发现参数还是不行。也就是忘记了在θ1中学习的东西。

同样的问题,我们来使用EWC。

在EWC中,参数的重要程度bi由θbi的二次微分决定,当θ变化幅度较小时,对应的bi也很小。反之亦然。

回过头来,θ1的重要程度b1比较小,而b2比较大,说明在task2时可以沿着θ1的方向移动,尽量不要沿θ2方向移动。如下图情况,这时候回到task1,我们可以发现loss实际上并没有掉太多。

2.GEM

以下图为例,假设进行到task3时,对于θ来说,按照g方向来更新,是目前来说降低loss的最好方式,但是如果完全按照g’方向来更新的话,更新后的θ可能在task1、task2上的效果就变差。
我们可以这样处理:在进行到task3时,先算task3数据的loss对θ的gradient,再计算task1、task2数据的loss对θ的gradient的,然后找到此时能使task1、task2、task3效果变好的更新方向(分别为下图的g1\g2\g),然后利用这三个,算出一个g’(g’满足:g’ *g1>=0,g’ *g2>=0, g’与g尽可能接近)。最终θ按照g’方向进行更新。这样,经过task3数据集训练过后的NN不仅不会在task1、task2上的效果变差,反而会变得更好一点。


三、衡量life long learning的模型:

每一列表示参数在不同test上的表现,每一行表示学完task之后,在其他task上的表现。

Ri,j就表示学完task i之后,在task j的表现。

评估模型的好坏也主要看它对之前task的遗忘率和与其他task的联系。

Accuracy也就是在所有任务学过之后,每个任务表现的平均值。

Backward transfer是用来检查机器的对之前task的遗忘情况。

Forward transfer是评判还没学到的task t的机器,根据之前学过的task,得到task t的表现情况。

总结:

终身学习和迁移学习的对比:

迁移学习是在学习新任务时,用旧任务学到的知识辅助学习,它最后只关心在新任务上的效果。也就是说,学了任务1,我能更好地学任务2;终身学习是在学习新任务时,一方面利用旧任务学到的知识,另一方面还要保留旧任务学到的知识,意思就是学了任务2,我也不会忘记任务1。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:07:54  更:2021-09-06 11:11:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:40:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码