论文笔记:Gradient Episodic Memory for Continual Learning

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.mfbz.cn/a/884977.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

True NAS禁用ipv6

在 TrueNAS Scale 中&#xff0c;禁用 IPv6 的方法如下&#xff1a;12 进入 System->Advanced->Sysctl&#xff0c;设置一个 sysctl 可调整变量 net.ipv6.conf.all.disable_ipv6&#xff0c;值为 1&#xff0c;以完全禁用 IPv6。\

SOMEIP_ETS_139: SD_Options_Array_too_short

测试目的&#xff1a; 验证DUT能够拒绝一个选项数组长度短于所需的SubscribeEventgroup消息&#xff0c;并以SubscribeEventgroupNAck作为响应。 描述 本测试用例旨在确保DUT遵循SOME/IP协议&#xff0c;当接收到一个选项数组长度不足以包含所有必需选项的SubscribeEventgro…

【C++篇】启航——初识C++(上篇)

目录 引言 一、C的起源和发展史 1.起源 2.C版本更新 二、C在⼯作领域中的应⽤ 三、C入门建议 1.参考文档 2.推荐书籍 四、C的第一个程序 1.C语言写法 2.C写法 五、命名空间 1.为什么要有命名空间 2.定义命名空间 3.主要特点 4.使用示例 六、C输⼊&输出 …

【muduo源码分析】「阻塞」「非阻塞」「同步」「异步」

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言何为「muduo库」安装muduo库阻塞、非阻塞、同步、异步数据准备数据准备 引言 从本篇博客开始&#xff0c;我会陆续发表muduo库源码分析的相关文章。感谢大家的持续关注&#xff01;&#xff01;…

Vue|插件

在 Vue.js 中&#xff0c;插件是用来扩展 Vue 功能的一种方式&#xff0c;能够帮助开发者扩展和复用功能。通过合理使用插件&#xff0c;可以提高代码的组织性和可维护性 目录 如何使用插件?插件的定义创建及使用插件插件的参数插件的扩展 总结 如何使用插件? 插件的定义 插…

2-107 基于matlab的hsv空间双边滤波去雾图像增强算法

基于matlab的hsv空间双边滤波去雾图像增强算法&#xff0c;原始图像经过光照增强后&#xff0c;将RGB转成hsv&#xff0c;进行图像增强处理&#xff0c;使图像更加清晰。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-107 基于matlab的hsv空间双边滤…

论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)

可证安全隐写&#xff1a;理论、应用与展望 一、什么是可证安全隐写&#xff1f; 对于经验安全的隐写算法&#xff0c;即使其算法设计得相当周密&#xff0c;隐写分析者&#xff08;攻击者&#xff09;在观察了足够数量的载密&#xff08;含有隐写信息的数据&#xff09;和载体…

推荐4款2024年热门的PDF转ppt工具

有时候&#xff0c;我们为了方便&#xff0c;需要将PDF里面的内容直接转换的PPT的格式&#xff0c;既方便自己演示和讲解&#xff0c;也让我们可以更加灵活的进行文件的编辑和修改。如果大家不知道要如何进行操作的话&#xff0c;我可以为大家推荐几个比窘方便实用的PDF转换工具…

html TAB、table生成

1. 代码 <!DOCTYPE html> <head> <meta charset"UTF-8"> <title>Dynamic Tabs with Table Data</title> <style> /* 简单的样式 */ .tab-content { display: none; border: 10px solid #ccc; padding: 30px; mar…

赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会

2024年9月22日&#xff0c;正值全国科普日之际&#xff0c;首届科普翻译与跨学科专业学术研讨会在上海健康与营养研究所信息中心励志厅成功举行并圆满结束。此次研讨会汇聚了来自全国各地的近60名专家学者、学界及企业界代表&#xff0c;共同探讨科普翻译与跨学科专业的发展。作…

BaseCTF2024 web

Web [Week1] HTTP 是什么呀 GET: ?basectf%77%65%31%63%25%30%30%6d%65POST: BaseflgX-Forwarded-For:127.0.0.1Referer: BaseCookie: c00k13i cant eat itUser-Agent: Base有Location跳转, 抓包得到flag: QmFzZUNURntkZGUzZjA0Yy1hMDg5LTQwNGMtOTFjNi01ODZjMzAxMzM3Y2J9Cg…

Springboot jPA+thymeleaf实现增删改查

项目结构 pom文件 配置相关依赖&#xff1a; 2.thymeleaf有点类似于jstlel th:href"{url}表示这是一个链接 th:each"user : ${users}"相当于foreach&#xff0c;对user进行循环遍历 th:if进行if条件判断 {变量} 与 ${变量}的区别: 4.配置好application.ym…

基于SpringBoot+Vue+MySQL的体育商城系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着互联网的飞速发展&#xff0c;电子商务已成为人们日常生活中不可或缺的一部分。体育用品市场作为其中的一个重要分支&#xff0c;也逐渐向线上转移。基于SpringBootVueMySQL的体育商城系统应运而生&#xff0c;旨在通过构建…

E34.【C语言】位段练习题

1.题目 分析下列代码中位段在内存中的排布(已知测试平台为VS2022) struct S {int a : 2;int b : 5;int c : 10;int d : 30; };int main() {struct S s { 0 };return 0; } 有关位段的知识点见64.【C语言】再议结构体(下)文 2.提示 VS满足:由低地址向高地址存储,按浪费空间…

Halo 专业版,含推荐码

立即体验 准备好体验 Halo 了吗&#xff1f;你可以查阅我们完整的部署文档&#xff0c;或者在线使用 Demo 进行体验。 部署指南&#xff1a;www.halo.run Halo 专业版在购买界面输入优惠码&#xff1a; lqMawh8t 使用优惠码优惠码购买专业版&#xff0c;单件 7 折&#xff…

【在Linux世界中追寻伟大的One Piece】进程间通信

目录 1 -> 进程间通信介绍 1.1 -> 进程间通信目的 1.2 -> 进程间通信发展 1.3 -> 进程间通信分类 1.3.1 -> 管道 1.3.2 -> System V IPC 1.3.3 -> POSIX IPC 2 -> 管道 2.1 -> 什么是管道 2.2 -> 匿名管道 2.3 -> 实例代码 2.4 -…

Java | Leetcode Java题解之第436题寻找右区间

题目&#xff1a; 题解&#xff1a; class Solution {public int[] findRightInterval(int[][] intervals) {int n intervals.length;int[][] startIntervals new int[n][2];int[][] endIntervals new int[n][2];for (int i 0; i < n; i) {startIntervals[i][0] inter…

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…

828华为云征文|华为云Flexus云服务器X实例——部署EduSoho网校系统、二次开发对接华为云视频点播实现CDN加速播放

EduSoho 是一款功能强大的网校系统&#xff0c;能够帮助教育机构快速搭建在线学习平台。本文将详细介绍如何在华为云服务器上安装和部署 EduSoho 网校系统&#xff0c;以及二次开发对接华为云视频点播VOD来实现CDN加速播放。 edusoho本地存储的视频播放存在诸多弊端。一方面&a…

建立分支提交代码

git分支 git branch 产看当前分支 git branch -a 查看所有分支 git checkout 分支名 切换分支 git checkout -b 分支名 建立分支&#xff08;仅仅是在本地建立了&#xff0c;并没有关联线上&#xff09; git push --set-upstream origin 分支名 把本地分支推到先线上 gti add …