连续学习入门(二):连续学习的三种类型

news2024/11/26 14:48:02

说明:本系列文章若无特别说明,则在技术上将 Continual Learning(连续学习)等同于 Incremental Learning(增量学习)、Lifelong Learning(终身学习),关于 Continual Learning、Incremental Learning 和 Lifelong Learning 更细节的区别参见 VALSE Seminar【20211215 - 深度连续学习】

本文内容:

  • 介绍连续学习的三种场景
    • Task-Incremental Learning
    • Domain-Incremental Learning
    • Class-Incremental Learning
  • 对比三种场景的区别

文章目录

  • 连续学习场景
    • 1. Task-IL
    • 2. Domain-IL
    • 3. Class-IL

连续学习模型按照一定顺序对连续、非独立同分布的流数据进行学习,从而对模型进行增量式更新。在学习过程中,模型学完一个任务(A)后,接着学习下一个任务(B)且不再使用前一个任务(A)的数据。连续学习算法旨在高效地转化和利用已学习的知识(A)来完成新任务(B)的学习,并最大程度地降低灾难性遗忘旧任务(A)的问题。同时,在学习新旧任务(A & B)后,模型应能够对来自任何任务(A / B)的数据进行有效预测。

以最熟悉的手写数字数据集 MNIST 来看连续学习的学习过程:

MNIST 数据集包含 0 ~ 9 共 10 个数字,我们可以把它分成 5 个独立的 Task(这样划分的数据集叫 Split MNIST),每个 Task 包含两个数字。

  • 第一次训练,连续学习模型只能看到训练数据 {0, 1},此时模型应该学会数字 0 和 1 的分类;
  • 第二次训练,连续学习模型只能看到训练数据 {2, 3}(注意这时 {0, 1} 不可见了!),此时模型应该学会数字 2 和 3 的分类,同时还能分类 0 和 1。
  • 第三次训练,…(以此类推)。

在这里插入图片描述

上面这个例子应该是刚接触连续学习时,最直接能想到的一种连续学习方式,这种连续学习实际上属于 class-incremental learning,是最接近人类、也是最难的连续学习类型。还有两种连续学习类型,分别是 task-incremental learning 和 domain-incremental learning。下面详细介绍这三种连续学习类型。

连续学习场景

Three scenarios for continual learning 将连续学习分为三个场景:
(code:https://github.com/GMvandeVen/continual-learning)

学习场景测试要求
Task-Incremental Learning (Task-IL)提供task-ID
Domain-Incremental Learning (Domain-IL)不提供task-ID
Class-Incremental Learning (Class-IL)不提供task-ID且要求推断task-ID

1. Task-IL

任务增量学习(task-incremental learning, Task-IL)

在 Task-IL 场景下,每个任务都有自己的 task-ID number。在模型训练和测试时始终提供 task-ID,因此模型能够知道当前的输入数据来自哪一个任务,是最简单的连续学习场景。

以 Split MNIST 为例:

Split MNIST 包含 5 个 task,task-ID 及 task 分别为 ID=1 {0,1},ID=2 {2,3},ID=3 {4,5},ID=4 {6,7},ID=5 {8,9}。给出 0 ~ 9 中的任意一个样本 x,首先需要给出 task-ID 向模型指明现在的预测任务是什么(比如给出 task-ID=3),那么模型会从 ID=3 {4,5} 这个任务中对样本 x 进行预测。

针对 Task-IL 场景的连续学习模型能够为每个任务都训练一个专门的预测模块,典型架构就是 multi-headed 输出层。在 multi-headed 输出层每个任务都有专属自己的 output head,而网络较浅层(一般是特征提取层)通常是任务间共享的。

2. Domain-IL

域增量学习(domain-incremental learning, Domain-IL)

Domain-IL 不向模型提供 task-ID,模型直接对待预测样本做出预测,此场景下模型不知道、也不需要知道当前任务是什么。

Domain-IL 场景下的任务通常都具有相同的结构,但有着不同的输入分布(i.e. 任务目标始终相同,但输入数据的分布在改变)。比如一个智能体它需要学会在不同的环境中生存,而不需要明确地识别它所面临的环境,也就是在任何环境(输入)下的学习目标都是生存。Domain-IL 比较典型的实验是用 MNIST 与 Permuted MNIST 作为不同的任务(但任务目标都是分辨10个数字)考察模型的连续学习能力。

以 Permuted MNIST 为例:

MNIST 和 Permuted MNIST 包含 0 ~ 9 所有数字。使用 MNIST 作为第一个任务,预测目标为 0 ~ 9;对 MNIST 进行 permutation,得到 Permuted MNIST 作为第二个任务,预测目标仍为 0 ~ 9;第三、第四 … 任务均基于 MNIST 进行不同的 permutation,这些任务的输入分布不同,但学习目标都是对样本 x 进行 0~9 的预测。

以 Split MNIST 为例:

Split MNIST 将数字 0 ~ 9 划分为 5 个任务,分别为 {0,1},{2,3},{4,5},{6,7},{8,9}。给出 0 ~ 9 中的任意一个样本 x,模型只需要预测样本 x 是”第一类“还是”第二类“,不需要预测出 x 是数字几(预测出是数字几实际上就是要推断样本 x 来自哪一个 task,这是 Class-IL 需要解决的问题)。

3. Class-IL

类增量学习(class-incremental learning, Class-IL)

Class-IL 要求模型推断出待预测样本 x 所属的任务是什么,并对 x 做出预测。类增量学习是3个场景中最复杂、也是最接近现实的学习场景,它和人类的学习方式最相近,需要不断学习新的类别,并进行识别。Class-IL 模型通常使用 single-headed 结构,即所有任务的预测都使用同一个 output layer。

以 Split MNIST 为例:

Split MNIST 将数字 0 ~ 9 划分为 5 个任务,分别为 {0,1},{2,3},{4,5},{6,7},{8,9}。给出 0 ~ 9 中的任意一个样本 x,模型需要预测出这是“数字几”。预测“数字几”这个目标其实包含了两部分,模型要预测出现在是哪个任务(推断 task-ID)并在该任务中做出样本的正确分类。

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

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

相关文章

Express操作MongoDB【一.Express框架通过Mongoose模块操作MongoDB数据库;二.在接口中间件中使用Mongoose模块】

目录 一.Express框架通过Mongoose模块操作MongoDB数据库 1.MongoDB数据库: (1)存放数据的格式:key:value (2)数据库(database)---集合(collection)---文档…

使用vite 搭建vue 3的项目

一、目标: 使用vite搭建一个Vue 3 的项目,并启动成功。 二、准备工作 首先你要有Node.js、VSCode编辑器、Chrome浏览器 关于下载的问题Node.js可以去官网下载 链接:http://nodejs.cn/download/ 下载左边的长期支持版本就好,最新版…

基于Haar-Like特征的人脸检测算法研究-附Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、Haar-Like 特征✳️ 三、人脸检测实验验证✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 脸是每个人最重要的外貌特征,随着科技推动社会不断向前发展,人脸识别也逐渐融入人们的生活中,例如在…

活动预告丨EMNLP 2022半监督和强化对话系统研讨会12月7日线上召开!

由清华大学和中国移动联合承办的EMNLP 2022 SereTOD Workshop “Towards Semi-Supervised and Reinforced Task-Oriented Dialog Systems(迈向半监督和强化的任务型对话系统)”,即将与EMNLP 2022主会同步举办。因受疫情影响,研讨会…

【蓝桥备战】前缀和+差分+高精度

文章目录前缀和差分大整数加减乘除前缀和 前缀和,即preSum[i] nums[i-1] nums[i-2] nums[0]。一般地,我们会让preSum[0] 0。 图:preSum[3] nums[2] nums[1] nums[0]。 构造前缀和数组对我们来说是简单的,只需要会用以下…

c++中的内存分区模型

内存分区模型 c程序在执行时,将内存大方向划分为4个区域1、代码区:存放函数体的二进制代码,由操作系统进行管理2、全局区:存放全局变量和静态变量以及常量3、栈区:由编译器自动分配释放,存放函数的参数值&…

手把手教你使用Vue3指定状态管理库--Pinia

什么是 Pinia Pinia 与 Vuex 一样,是作为 Vue 的“状态存储库”,用来实现 跨页面/组件 形式的数据状态共享。 在平时的开发过程中,Vue 组件之间可以通过 Props 和 Events 实现组件之间的消息传递,对于跨层级的组件也可以通过 Ev…

Java并发编程实战读书笔记三

第七章 取消和关闭 Java没有提供任何机制来安全的终止线程,虽然 Thread.stop 和 suspend 等方法提供了这样的机制,但由于存在着一些严重的陷,因此应该避免使用 7.1任务取消 7.1.1 中断 取消任务中生产者使用了队列的put操作导致阻塞后任务…

day14_类中成员之构造器

由来 我们发现我们new完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻烦了。我们能不能在new对象时,直接为当前对象的某个或所有成员变量直接赋值呢。可以,Java给我们提…

工作两年,没想到靠Python搞副业让我实现了财务自由

前言 国庆假期和好友聚会,聊了各自近两年的变化,朋友的经历让我大吃一惊! 2年前他还是月薪5千的小编,现在轻松实现月入5万的小目标。 (文末送读者福利) 原来是利用空余时间学会了Python编程&#xff0c…

TPM零知识学习二—— 相关链接和页面

TPM2社区的主页地址为:https://tpm2-software.github.io/ 页面如下: 主页中提供了很多有用的链接,包括: Software | tpm2-software community 页面如下: External | tpm2-software community 页面如下:…

《计算机体系结构量化研究方法》1.8 性能的测量、报告和汇总

引入 1、一些概念 响应时间:手机用户所关注的“速度”,也就是一个事件从启动到完成的时间,又称为执行时间。 吞吐量:给定时间内完成的总工作量,WSC的操作人员关注这个。 执行时间是性能的倒数(即执行时间…

DSP之Controlsuit和C2000Ware下载安装

DSP之Controlsuit和C2000Ware下载安装 Controlsuit 用于 C2000TM 微处理器的 controlSUITETM 是一套全面的软件基础设施和软件工具集,旨在最大程度地缩短软件开发时间。从特定于器件的驱动程序和支持软件到复杂系统应用中的完整系统示例,controlSUITET…

Redis击穿、穿透、雪崩

Redis 的基本概念 在没有添加 Redis 的时候,后端的查询流程是: 用户访问页面-请求后端服务-经过逻辑处理后,去数据库查询信息。 在添加 Redis 的之后,后端的查询流程是: 用户访问页面-请求后端服务-经过逻辑处理后&a…

超强AI绘图-文生图

一、前言 前面汇总了四种AI绘图的方法,详情可以点击下图跳转到文章《AI绘画合集(11月汇总)》。主要内容是:具象意象派AI作图、AI绘制专属动漫头像、基于ViLG模型AI 作画。点击下面文章跳转! 《AI绘图—对中文拟合度…

LabVIEW创建类 3

LabVIEW创建类 3 继承 通过“继承”可在现有类的基础上创建新类。若创建一个新的LabVIEW类并将它设置为继承另一个类的数据及成员VI,这个新类将可使用它所继承的类中“公共”及“保护”型的成员VI。这个新类还可添加自己的数据和成员VI以丰富其功能。例如&#xf…

聚观早报 | 脸书泄露数据被罚20亿;iPhone15将全系支持灵动岛

今日要闻:脸书泄露数据被罚20亿;iPhone15将全系支持灵动岛;540万推特用户数据被盗;罗永浩入局tiktok;特斯拉研发改款Model3脸书泄露数据被罚20亿 据报道,脸书因泄露5亿用户数据,被欧洲监管机构罚…

Starday为什么是跨境电商卖家的不二之选?

据国内海关统计显示,近5年来,中国跨境电商规模增长近10倍,年增长率在30%以上,占国际贸易近40%。基于流量模式的跨境电商直播、垂直跨境电商等新模式蓬勃发展,近几年跨境电商一直不断地在深度融合发展,加之疫…

WSL Ubuntu20.04安装pycairo指南

环境说明 wsl Ubuntu20.04 走过的一些可能有用的弯路 由于pycairo要求python3.7,但是之前Ubuntu上有个3.6的python环境,所以就安装了python3.8: sudo apt install python3.8然后python3命令还是链接到python3.6,结果就yongln …

Stateflow状态转移练习

文章目录1.外部转移与内部转移1.1 stateflow1.2 分析2.外部转移内部转移超转移2.1 stateflow2.2 video1.外部转移与内部转移 1.1 stateflow 1.2 分析 首先是 xyz0,然后进入 A 状态,此时 A 的 en 激活,xx1,即 x1其次进入默认状态…