阅读记录:Gradient Episodic Memory for Continual Learning

news2024/9/24 12:12:15

1. Contribution

  1. 提出了一组指标来评估模型在连续数据上的学习情况。这些指标不仅通过测试准确性来表征模型,还通过其跨任务迁移知识的能力来表征模型。
  2. 针对持续学习任务,提出了GEM模型(Gradient Episodic Memory),它可以减少遗忘,同时允许将知识有益地迁移到以前的任务中。
  3. MNISTCIFAR-100数据集上做了实验

2. Challenge/ Issues

独立且同分布的(iid假设),意思是:每张图片都是随机挑选的,彼此独立,没有关联

  1. 非独立同分布的数据(Non-iid input data)监督学习通过多次重复数据来让模型记住东西(不断地让模型重复学习一些图片:苹果、香蕉、橘子等很多水果),而人类学习是通过一次性有顺序地学习。(比如教一个小朋友时,可能不会重复展示同样的苹果或香蕉图片,你是按顺序给他看新的例子。小朋友也不会记住每一张图片,只能记住一部分。更重要的是,现实中的学习任务会不断变化——今天你可能在教水果,明天可能就开始教动物。)
  2. 灾难性遗忘(Catastrophic forgetting):如果直接用监督学习的方法去解决类似人类的学习任务(比如教不同的东西、不断变化的任务),那问题就来了。因为监督学习依赖于iid假设,认为所有数据都是来自同一分布,并且可以重复多次学习。但是在人类学习的场景中,iid假设不成立,数据不是独立的,也不是来自相同的任务分布。这样一来,监督学习的模型可能会因为新数据而“遗忘”旧的数据和知识,这就是所谓的“灾难性遗忘”。
  3. 知识迁移:当连续的任务相关时,存在迁移学习的机会,这可以转化为更快地学习新任务以及在旧任务上的性能提升。

3. 论文设定的scenario

在训练时,仅以三元组 (xi, ti, yi) 的形式向模型提供一个示例,model 永远不会两次经历相同的示例,并且任务按顺序流式传输。不需要对任务强加任何顺序,因为未来的任务可能与过去的任务同时发生。

3.1 数据三元组的构成:

每个数据样本由三部分组成:

x:特征向量,比如一张图片。
t:任务描述符,告诉我们当前任务是什么(例如“识别水果”或者“识别动物”)。
y:目标向量,即标签,表示图片的具体内容(如“苹果”或者“猫”)。
模型的目标是学会如何根据给定的图片 x 和任务描述符 t,预测出正确的标签 y。

3.2 局部iid(locally iid):

“局部iid”是指在某个特定的任务中(比如在任务 t 中),数据是独立同分布(iid)的,也就是说,在某个任务的学习阶段内,数据可以随机地、不相关地抽取出来。简单来说,局部iid意味着:

  • 对于某一个任务 t 来说,图片和标签的关系是随机的,没有顺序影响。例如,如果任务是“识别水果”,那么苹果和香蕉图片的顺序是随机的,彼此之间没有相关性。

虽然在每个任务中,数据是随机独立的(iid),但在不同任务之间,数据不是随机的。例如,模型可能会先连续看到许多水果图片,然后才切换到动物识别任务,这使得任务间数据的顺序不是随机的。

3.3 学习目标

目标是学习一个预测模型 f,这个模型可以根据任意的图片 x 和任务描述符 t,预测出图片的标签 y。关键是,模型不仅需要识别当前任务的数据(如正在学习中的任务),还要记住以前学过的任务,甚至能够处理未来可能遇到的新任务。

例如:

  • 如果模型已经学过了识别水果(任务 t1)和识别动物(任务 t2),那么即使任务结束后,模型仍然能够根据给定的任务描述符 t1 识别苹果,或者根据 t2 识别猫。
  • 而且,模型还应该能处理未来可能出现的新任务。

4. Technical contribution

4.1 introduce a set of metrics

  • Average Accuracy:这个指标是模型在所有任务上的平均表现。你教完机器人识别水果和动物后,测试它在所有任务上的表现,看它识别每个任务(如水果或动物)的正确率,然后取平均值。
  • Backward transfer (BWT):这是评估模型在学习新任务后,对之前任务表现的影响。具体来说,如果学完了任务2,测试它在任务1上的表现,看有没有提高或下降。
  • Forward transfer (FWT):这是评估模型在学习新任务时,之前学到的任务对新任务的影响。具体来说,在学任务2时,看看任务1是否帮助了任务2的学习。

Ri,j 表示模型在学完任务 ti 后,在任务 tj 上的测试准确率。

在这里插入图片描述

4.2 key point of GEM model

  • 记忆分配策略: GEM 有一个总的记忆空间 M,用于存储多个任务的样本。如果任务总数 T 是已知的,那么每个任务可以分配 m = M / T 个记忆位置。如果任务数量不确定,GEM 可以随着新任务的到来动态减少每个任务的分配空间。
  • 损失函数和约束条件:每当模型学习一个新任务时,GEM 会通过一个损失函数来调整模型的参数。然而,与传统方法不同的是,GEM 在更新参数时会限制过去任务的损失不增加,即:模型在新任务上的学习不能损害它对旧任务的表现。
  • 使用梯度约束来防止遗忘:GEM 的一个核心思想是通过梯度投影来避免遗忘。当模型更新参数时,它会计算一个梯度。如果这个梯度方向会导致旧任务的损失增加,GEM 就会通过调整这个梯度方向,保证不会增加旧任务的损失。
  • 解决梯度约束问题:如果梯度违反了约束,GEM 会通过求解一个二次规划问题(Quadratic Programming来找到一个新的梯度,使得在满足约束的前提下尽可能接近原始梯度。
    在这里插入图片描述

4.3 GEM的训练伪代码

训练过程

  1. 初始化:
  • Mt:每个任务的记忆被初始化为空集,之后会逐步添加样本。
  • R:用于记录每个任务的测试准确率,初始化为全零矩阵。
  1. 任务循环:
  • 对每个任务 t
    • 遍历训练数据集中的每个样本 (x, y)
      • 将样本加入到记忆中:将当前样本加入任务 t 的记忆中。
      • 计算梯度:
        • g:计算当前任务的损失函数梯度,表示当前任务在当前样本下的梯度。
        • gk:对所有以前的任务 k < t,计算其在记忆中的梯度。
      • 梯度投影:使用梯度投影方法(公式 11),将当前梯度 g 调整为满足所有之前任务的约束条件,生成新的梯度 ̃g
      • 更新参数: 根据投影后的梯度 ̃g 更新模型参数
    • 评估任务:在每次任务学习完成后,评估模型在所有任务上的表现,并记录在矩阵 R 中
  1. 返回训练结果:最终返回更新后的模型和记录的任务表现矩阵 R。

评估过程

  1. 任务循环:对每个任务 k,计算其测试准确率:
  • 遍历任务 k 的所有测试样本 (x, y)。
  • 计算准确率:累积预测结果的准确率。
  • 平均准确率:最终将累积的准确率除以该任务的测试样本数量,得到任务 k 的准确率。
  1. 返回准确率向量:最终返回每个任务的测试准确率 r。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++中stack类和queue类

感谢大佬的光临各位&#xff0c;希望和大家一起进步&#xff0c;望得到你的三连&#xff0c;互三支持&#xff0c;一起进步 数据结构习题_LaNzikinh篮子的博客-CSDN博客 初阶数据结构_LaNzikinh篮子的博客-CSDN博客 收入专栏&#xff1a;C_LaNzikinh篮子的博客-CSDN博客 其他专…

基于MT79815G CPE 板子上挂usb3.0的5G 模块,WIFI能跑多少速度呢

关于MT79815G CPE 板子上挂usb3.0的5G 模块&#xff0c;WIFI能跑多少速度的问题&#xff0c;我们以启明智显 ZX7981P智能无线接入型路由器&#xff08;CPE&#xff09;挂广合通5G模组为例说明&#xff1a; 一般来说&#xff0c;用 ZX7981P&#xff0c;通过软加速&#xff0c;U…

Java:列表操作

目录 1、判断列表是否为空或者为NULL2、列表包含3、列表排序4、列表截取5、列表合并6、列表求极值7、列表转字符串8、列表去重的四种方式9、列表转数组 1、判断列表是否为空或者为NULL Optional.ofNullable(list).orElse(Collections.emptyList()).isEmpty() // true为空或NU…

【JAVA-数据结构】时间空间复杂度计算案例

接着上一篇文章&#xff0c;对应举一些例子。 1.时间复杂度 【实例1】 // 计算func2的时间复杂度&#xff1f; void func2(int N) {int count 0;for (int k 0; k < 2 * N ; k) {count;} int M 10;while ((M--) > 0) {count;} System.out.println(count); } 基本操作…

在云渲染中3D工程文件安全性怎么样?

在云渲染中&#xff0c;3D工程文件的安全性是用户最关心的问题之一。随着企业对数据保护意识的增强&#xff0c;云渲染平台采取了严格的安全措施和加密技术&#xff0c;以确保用户数据的安全性和隐私性。 云渲染平台为了保障用户数据的安全&#xff0c;采取了多层次的安全措施。…

电子信息制造业数据安全如何防护?有什么加密方案?

电子信息制造业数据加密解决方案 问题 1.电子文档&#xff08;源代码、设计图纸、设计方案等&#xff09;均要做数据保护措施&#xff0c;防止内部人员有意或无意造成数据泄露&#xff1b; 2.与外部企业之间往来的外发文件&#xff0c;管控不当&#xff0c;容易造成泄密&…

工业能源物联网的建设与维护该如何实现

随着全球对可持续发展的重视&#xff0c;智能电网和微电网的应用逐渐成为能源转型的重要方向。在新型电力系统中&#xff0c;负荷侧资源不再是单纯消耗的“消费者”&#xff0c;而是既消耗电能又可生产电能的“产消者”。比如&#xff0c;电力用户利用屋顶建设光伏发电&#xf…

防火墙详解(二)通过网页登录配置华为eNSP中USG6000V1防火墙

配置步骤 步骤一 打开eNSP&#xff0c;建立如下拓扑。防火墙使用&#xff1a;USG6000V1。 Cloud的作用是通过它可以连接本地的网卡&#xff0c;然后与我们的电脑进行通信。 由于防火墙USG6000V&#xff0c;不能直接开启&#xff0c;需要的导入包&#xff0c;所以需要在华为官网…

可视挖耳勺神器怎么样?可视耳勺热销第一名品牌!

耳道作为我们身体的重要部分&#xff0c;它的清洁健康很重要。传统挖耳勺的材质偏硬、表面摩擦力大并且在不可视的情况下进行盲目掏耳&#xff0c;很容易出现刮伤耳道肌肤导致耳朵出血感染等意外。而网上出现了一种新型的掏耳神器--可视耳勺&#xff0c;它到底怎么样&#xff1…

Java语言程序设计基础篇_编程练习题**18.38 (递归树)

目录 题目&#xff1a;**18.38 (递归树) 代码示例 代码逻辑解释 类定义和变量初始化 main 方法 start 方法 drawRecursiveTree 方法 输出结果 题目&#xff1a;**18.38 (递归树) 编写一个程序来显示一个递归树&#xff0c;如图18-20所示 代码示例 编程练习题18_38Re…

Python模块和包:自定义模块和包③

文章目录 一、模块1.1 什么是模块1.2 创建模块1.3 导入模块1.4 模块的命名空间 二、包2.1 什么是包2.2 创建包2.3 导入包2.4 包的命名空间 三、综合详细例子3.1 项目结构3.2 模块代码student.pycourse.pymanager.py 3.3 主程序代码main.py 3.4 运行结果 四、总结 Python模块和包…

regPractice-正则表达式练习

正则表达式练习(java) 1 . 校验密码强度 密码的强度必须是包含大小写字母和数字的组合&#xff0c;不能使用特殊字符&#xff0c;长度在8-10之间。 ^(?.*\d)(?.*\[a-z])(?.*[A-Z])[a-zA-Z\d]{8,10}$**(?pattern)**属于正向前瞻断言 正向前瞻断言的语法是 (?pattern)&a…

Android开发不用存储权限进行拍照

Android开发不用存储权限进行拍照 有时平台审核严&#xff0c;拍照时不能获取存储。这怎么办呢&#xff0c;拍照功能又不能去掉。 一、思路&#xff1a; 得自定义Camera&#xff0c;然后把拍照图片存在app目录下&#xff0c;再刷新到手机相册 二、效果图&#xff1a; Andro…

31省市农业地图大数据

1.北京市 谷类作物种植结构&#xff08;万亩&#xff09; 农作物种植结构&#xff08;万亩&#xff09; 2.天津市 谷类作物种植结构&#xff08;万亩&#xff09; 农作物种植结构&#xff08;万亩&#xff09; 3.黑龙江省 谷类作物种植结构&#xff08;万亩&#xff09; 农作物…

JVM 几种经典的垃圾收集器

目录 前言 Serial Serial Old ParNew Parallel Scavenge Parallel Old CMS收集器 garbage first 收集器 前言 回顾一下之前的几种垃圾收集算法: JVM java主流的追踪式垃圾收集器-CSDN博客文章浏览阅读646次&#xff0c;点赞22次&#xff0c;收藏16次。简要介绍了几…

【C++11新特性】多线程

目录 一、thread类 二、互斥锁 1.四种锁 &#xff08;1&#xff09;mutex &#xff08;2&#xff09;recursive_mutex &#xff08;3&#xff09;time_mutex &#xff08;4&#xff09;recurive_timed_mutex 2.lock_guard 3.unique_lock 4.锁的原理 三、原子操作 四…

供应链采购管理系统:开启智能采购新时代

在当今全球化的商业环境中&#xff0c;供应链管理的高效性和智能化对于企业的生存与发展至关重要。而供应链采购管理系统&#xff0c;尤其是智能采购系统&#xff0c;正成为企业提升竞争力的关键工具。 一、传统采购管理的挑战 传统的供应链采购管理往往面临着诸多难题。首先&a…

【计算机网络 - 基础问题】每日 3 题(二十二)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

【Python】多个dataframe存入excel的不同的sheet表里,而不会被覆盖的方法

我发现&#xff0c;我原来用的多个工作簿存入的方法&#xff0c;发现不太可行了。当使用for循环的时候&#xff0c;原来的sheet 会被新的表给覆盖&#xff0c;后来我找到一种新的方法&#xff1a; with pd.ExcelWriter(file_name ) as writer:Table.to_excel(writer, sheet_na…

程序打开了 但是不显示

程序打开了 但是不显示 失败起因尝试一尝试二 失败 起因 起因是我使用搜狗输入法发现图片表情后台显示打开了&#xff0c;但是在桌面上不显示 尝试一 选中程序&#xff0c;点击alt空格键 会出现还原页面选项 但是我的这个是灰色的 没用 尝试二 https://answers.microsof…