【论文阅读】Three scenarios for continual learning

2023-11-08

题目:2019_Three scenarios for continual learning

1. 论文的总体介绍

论文链接https://arxiv.org/abs/1904.07734

代码链接https://github.com/GMvandeVen/continual-learning

论文的动机:针对当前 CL(continual learning) 领域,因为不同的人提出了不同的解决方案,这些方法都不是在同一个benchmark 下进行比较的,无法公平地比较各种方法的优劣,所以作者提出了一种新的 benchmark 用于评估 CL 方案的性能。

论文的方案:这个 benchmark 包含三种场景,每种场景包含两种任务协议(protocols)。

这三种场景可以组成任意复杂的任务。

这三个场景是通过定义两个判断点(是否提供任务 id 和 是否需要推断任务 id )来确定的:
1.测试时,如果提供任务id,就定义为场景1.
2.测试时,如果不提供任务id,且不需要推断出任务id,就定义为场景2. 
3.测试时,如果不提供任务id,且需要推断出任务id,就定义为场景3.

两种任务协议(protocols):
1. split task protocols。
2. permuted task protocols。

论文的贡献

  1. 提出了一个 benchmark 。
  2. 在这个 benchmark 下,对比了几个 CL 方案。

论文的结论:在场景3中, 基于正则化方法(regularization-based approaches)的效果不好,基于数据经验重放方法(replay-based approaches)的效果较好。

2. 论文提出的 benchmark: 三种场景

2.1. 三种场景的定义如下:

在这里插入图片描述
说明如下:

场景 测试时的要求 特点
场景1 Task-IL(incremental learning) 提供任务 id 该场景下的网络结构通常有一个 “multi-head” output layer,即每个任务都有一个 own output units,网络的其他部分是共享的。
场景2 Domain-IL 不提供任务 id,不需要推断出任务 id 这种场景通常是不同任务之间的结构是相同的,但是不同任务中的“输入分布”却改变了。
场景3 Class-IL 不提供任务 id,需要推断出任务 id 、、

2.2. split task protocols 下的三种场景

MNIST 数据集一共有10个数字,每个任务分2个类别的数据。训练时会先后提供这个5个任务的数据给网络训练。测试时在三种场景下测试。

1.场景1,提供任务id之后。给一个数据和数据所属的任务id,然后判断的这个数据是给定任务id中的第一类或第二类。
2.场景2,不提供任务id,不需要推断出任务id。给一个数据,不提供数据所属的任务id,然后判断这个数据是第几类。
3.场景3,不提供任务id,需要推断出任务id。给一个数据,不提供数据所属的任务id,然后判断这个数据具体是哪一个任务的第几类。

在这里插入图片描述

2.3. permuted task protocols 下的三种场景

理解了 split 任务就能很容易的理解 permuted 任务了。permuted task protocols 是在 split task protocols 的基础上,将任务数从5扩展到了10,同时将每个任务的类别从2扩展到了10,其中 permutation 2 到10 的9个任务的数据是由 permutation 1 中的数据根据9种随机乱序方式构建的。

在这里插入图片描述

3. CL策略/方法/算法

作者将现有的CL策略分成了四个大类,分别是:

序号 类别 代表算法 算法思想 算法优点 算法缺点
Task-specific Components XdG、 任务 id 给定型:新增加一个任务时,就为网络添加个一个针对该任务的结构(Task-specific Components),训练时不是训练整个网络,而是只训练网络的部分结构。 因为这个算法需要提供任务 id 来确定 Task-specific Components,所以这类算法只适用于场景1
Regularized Optimization EWC、Online EWC、SI 正则优化型:学习新任务时,要根据当前所有参数对之前任务的重要性来更新参数。对之前任务越重要的参数越要减小更新。任务id 不提供时,为每一个任务训练网络的不同部分。 每一个任务都是在前面任务的基础上对网络进行优化的,最终的解不是全局最优解。
Modifying Training Data LwF、DGR、DGR+distill 数据重放型:除了主网络模型之外,还需要一个网络用于实现数据的重放,通常是使用GAN中的生成器来实现,这里称之为 Deep Generative Replay(DGR)。同时也就可以和知识蒸馏(distill)相结合,这样就称之为 ”DGR+distill“ 1.数据重放,涉及隐私问题。 2.多次数据重放后存在数据偏移问题
Using Exemplars iCaRL 样例保存型: 算法需要保存一些典型的样例,用于实现CL学习。通过一个特征提取网络提取不同类别数据的特征,再使用 nearest-class-mean rule 来实现分类。 存储了样例,违反了CL的定义

4. 实验设计

在三种场景,2个任务 protocols 上测试不同算法的表现结果。

4.1 任务 protocols 定义(即三个场景的数据集准备)

论文只使用了MNIST数据集进行实验,设置的需要连续学习的任务数量最多是10,所以之后的其他论文添加了其他的数据集,用于评估算法在长序列任务下的学习能力。

task protocols 任务数量 每个任务中的类别数 图片大小 说明
split MNIST 5 2 28x28 pixel grey-scale images 总共 10 类数字,每个类别有 6000个图片用于训练,1000个用于测试。
permuted MNIST 10 10 zero-padded to 32x32 pixels 总共 100 类数字,每个类别有 6000个图片用于训练,1000个用于测试。

4.2 对算法的相关设置(之后会根据论文给出更加具体的说明)

为了公平比较,所有方法都使用相同的神经网络架构。split MNIST 使用2个隐藏层实现,每层 400节点。permuted MNIST 使用2个隐藏层实现,每层 1000节点。激活函数使用 ReLU,除了iCaRL,最后一层是softmax输出层。

在场景1中,所有的方法都使用 multi-headed output layer 实现,即每个任务都有一个指定的输出单元,只有需要适应当前任务id对应的输出单元时,该单元才会被使用到,其他情况下(训练或测试),该单元都不会处于不被使用的状态。

在场景2中,所有的方法都使用 single-headed output layer 实现,即所有的任务都通过这一个单头输出层实现。训练不同的任务时,这个单头会一直处于工作状态(一直被使用)。单头输出层的每个单元(输出)对应任务中的一个类别。

在场景3中,每个类别都有其自己的输出单元,当前任务前的所有单元都应该一直处于激活状态。

序号 算法名称 算法设置 算法特点
1 XdG 因为这个算法测试时,必须要使用到任务id , 所以只适用于 场景1
2 EWC / Online EWC / SI:
3 LwF / DGR / DGR+distill
4 iCaRL

后续将仔细分析这四类算法中的每一个算法。除了这四个算法之外,还需要引入两个算法用于对比:

1.None(fine-tuning): 即不采取任何策略,只使用当前数据集来训练当前任务。这个作为 a lower bound(算法下界)。
2.Offline(joint training): 即使用之前所有的数据集一起来训练当前任务。这个作为 an upper bound(算法上界)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文阅读】Three scenarios for continual learning 的相关文章

随机推荐

  • FM1722/02NL+STM32硬件SPI调试笔记

    1 介绍 FM17XX 系列通用非接触读卡机芯片是复旦微电子股份有限公司设计的 基于 ISO14443 标准的系 列通用非接触卡读卡机芯片 采用 0 6 微米 CMOS EEPROM 工艺 FM17XX 系列读卡机芯片可分别支持 13 56
  • vi编辑文件时查找字符串

    原文地址 http vieri blog 51cto com blog 1950953 373639 使用vi编辑器编辑长文件时 常常是头昏眼花 也找不到需要更改的内容 这时 使用查找功能尤为重要 一 常规查找 方法如下 1 命令模式下输入
  • PTA 基础编程题目集 7-20 打印九九口诀表 C语言

    PTA 基础编程题目集 7 20 打印九九口诀表 C语言 下面是一个完整的下三角九九口诀表 本题要求对任意给定的一位正整数N 输出从11到NN的部分口诀表 输入格式 输入在一行中给出一个正整数N 1 N 9 输出格式 输出下三角N N部分口
  • ❤️【数据结构】之单链表的增、删、查、改(C语言实现)看一遍就会!!!

    文章目录 前言 作者简介 一 单链表 二 1 单链表结构 2 创建新节点 3 单链表的头插 2 单链表的尾插 3 单链表的头删 4 单链表的尾删 5 找到某个值的位置 6 在任意值前面插入值 7 删除任意位置的值 8 打印链表 9 主函数
  • Elasticsearch基本操作

    1 数据格式 Elasticsearch是面向文档型数据库 一条数据在这里就是一个文档 为了方便理解 我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行类比 这里 Types 的概念已经被逐渐弱化 El
  • 联机手写汉字识别,基于新型RNN网络结构的方法

    本文简要介绍2019年4月Pattern Recognition录用论文 RecognizingOnline Handwritten Chinese Characters Using RNNs with New Computing Arch
  • Unity的Input.GetAxis()的返回值

    Unity的Input GetAxis float moveHorizontal Input GetAxis Horizontal 水平的向左是 1 向右是1 静止返回值是0 float moveVertical Input GetAxis
  • 使用boost::range模块进行反转操作的相关测试程序

    使用boost range模块进行反转操作的相关测试程序 在C 中 使用第三方库可以帮助我们更方便地进行各种操作 boost库是一个受欢迎的C 库之一 提供了许多功能强大的模块 其中 boost range模块为我们提供了一组用于操作范围的
  • 一线大厂的企业云原生成本优化实践指南

    胡忠想 星汉未来联合创始人 CPO 读完需要 18分钟 速读仅需 6 分钟 1 前言 近年来 公有云 混合云等技术在全球迅速发展 云的普及度越来越高 Docker Kubernetes DevOps Service Mesh 等云原生技术蓬
  • 软件测试常见面试题

    文章目录 1 你的测试职业发展是什么 2 你认为测试人员需要具备哪些素质 3 你为什么能够做测试这一行 4 测试的目的是什么 5 测试分为哪几个阶段 6 单元测试的测试对象 目的 测试依据 测试方法 7 怎样看待加班问题 8 结合你以前的学
  • 【Python数据科学手册】Pandas——二、Pandas对象简介

    文章目录 二 Pandas对象简介 1 Pandas的Series对象 1 Serise是通用的NumPy数组 2 Series是特殊的字典 3 创建Series对象 2 Pandas的DataFrame对象 1 DataFrame是通用的
  • Spring Oauth2-Authorization-Server jwt 认证

    Spring Oauth2 Authorization Server jwt 认证机制 基于 spring security oauth2 authorization server 0 2 3 配置 资源服务器配置 Bean Securit
  • 全鲸董事长韩耀宁受邀出席第十九届中国科学家论坛,发表重要演讲

    9月18日 第十九届中国科学家 国际 论坛在京隆重开幕 来自全国各地行业的院士 科学家 教授 学者 科技工作者以及2000多名各行业领军企业家出席了本次年度盛会 大会以 推动科技国际合作 提高我国科技创新国际影响力 塑造创新发展新优势 为主
  • 用递归算法实现开平方根

    用递归算法实现开平方根 前言 本文是用手算平方根的解法 用python代码实现 手算平方根方法学自西瓜视频李永乐老师 代码为个人原创 手算平方根方法 现在我们有一个非负数S 要求S的平方根 我们可以先将S拆成两个数相加 这两个数分别是小于等
  • Filter过滤器——javaweb

    介绍 Filter 过滤器 用来过滤网站数据 每次请求都会走一次过滤器 直到服务器关闭 Filter 实现步骤 导包
  • QT界面:控件随界面大小自适应变化

    在用QT做一个图像显示界面的过程中需要控件随着QT界面缩放进行自适应变化的问题 特此记录一下 环境 Win10 VS2015 QT5 1 拖拽控件 首先 新建一个QT GUI工程 在Qt Designer中调整界面大小并拖拽需要的控件 如图
  • Vue---Vue常用特性

    一 常用特性概览 表单操作 自定义指令 计算属性 过滤器 侦听器 声明周期 1 表单操作 2 表单域修饰符 number 转化为数值 trim 去掉开始和结尾空格 lazy 将input事件切换change事件
  • el-upload+额外的参数 , element上传功能组件及其参数的详解

    前言 我们使用 element ui 的时候 可能会有一个需求要给后台传入额外的值 我这边是遇到了 然后通过找到各种资料解决了 现在把我的upload的组件分享一下 可以实现导入 导出功能 导入的时候也会有额外的参数 这个是通过 gjlx
  • C++11:右值引用

    新特性目的 右值引用 Rvalue Referene 是 C 新标准 C 11 11 代表 2011 年 中引入的新特性 它实现了转移语义 Move Sementics 和精确传递 Perfect Forwarding 它的主要目的有两个方
  • 【论文阅读】Three scenarios for continual learning

    文章目录 题目 2019 Three scenarios for continual learning 1 论文的总体介绍 2 论文提出的 benchmark 三种场景 2 1 三种场景的定义如下 2 2 split task protoc