当前位置: 首页 > news >正文

【连续学习之ResCL算法】2020年AAAI会议论文:Residual continual learning

1 介绍

年份:2020

会议: AAAI

Lee J, Joo D, Hong H G, et al. Residual continual learning[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(04): 4553-4560.

本文提出的算法是Residual Continual Learning (ResCL),其核心原理是通过在线性组合原始网络和微调网络的每层参数来重新参数化网络,以此在连续学习多个任务时防止灾难性遗忘现象,同时不需要任何源任务信息,保持网络大小不变。先第一次训练,采用LWF算法知识蒸馏到新模型,再合并LWF模型和旧模型后,然后采用的合并后的损失函数第二次训练合并后的模型。ResCL算法属于基于架构的算法,因为它通过调整网络架构来实现连续学习,同时它也利用了基于正则化的方法来优化组合网络的参数

2 创新点

  1. 残差学习重参数化:ResCL通过线性组合原始网络和微调网络的每层来重新参数化网络参数,这种残差学习的方法允许网络在连续学习多个任务时有效地控制源任务和目标任务之间的性能权衡。
  2. 无需源任务信息:ResCL不需要除了原始网络之外的任何源任务信息,这使得它在实际应用中更加实用,尤其是在源数据不可用或难以处理的情况下。
  3. 网络大小不变:与传统的网络扩展方法不同,ResCL在推理阶段不会增加网络的大小,这对于在资源受限的环境中部署深度学习模型尤为重要。
  4. 特殊权重衰减损失:ResCL引入了一种特殊的权重衰减损失,这种损失函数专门设计用于连续学习,能够有效地防止遗忘源任务知识。
  5. 适用于通用CNNs:该方法可以自然地应用于包括批量归一化(Batch Normalization)层在内的通用卷积神经网络。
  6. 公平比较的衡量标准:ResCL提出了两种衡量不同连续学习方法的公平标准,即最大可实现平均准确率和在所需目标准确率下的源准确率,这些标准不依赖于特定的超参数设置。
  7. 连续学习多个任务:ResCL不仅适用于两个任务的连续学习,还可以扩展到三个或更多任务的连续学习场景,展示了良好的扩展性和适应性。

3 算法

3.1 算法原理

  1. 重新参数化
    ResCL通过线性组合原始网络(源任务网络)和微调网络(目标任务网络)的每层参数来重新参数化网络。对于全连接层,如果 W s W_s Ws是源网络的权重矩阵, W t W_t Wt是微调网络的权重矩阵,那么组合层的输出可以表示为:

( 1 C o + α s ) ⊙ ( W s x ) + α t ⊙ ( W t x ) (1_{Co} + \alpha_s) \odot (W_s x) + \alpha_t \odot (W_t x) (1Co+αs)(Wsx)+αt(Wtx)

其中, 1 C o 1_{Co} 1Co是全1向量, ⊙ \odot 表示逐元素乘法, α s \alpha_s αs α t \alpha_t αt是组合参数向量。这些参数通过反向传播学习得到,允许网络在保留源任务知识的同时适应新任务。

  1. 特殊权重衰减损失
    为了防止遗忘源任务,ResCL引入了一种特殊的权重衰减损失。不同于常规的权重衰减损失,ResCL的权重衰减损失专门设计用于连续学习,其目的是保护原始网络权重不受目标任务影响。这种损失函数可以表示为:

λ ∣ ∣ ( α s , α t ) ∣ ∣ 1 \lambda ||(\alpha_s, \alpha_t)||_1 λ∣∣(αs,αt)1

其中, λ \lambda λ是权衡超参数,控制源任务和目标任务性能之间的平衡。

  1. 批量归一化层的处理
    考虑到现代卷积神经网络(CNN)中广泛使用的批量归一化(Batch Normalization, BN)层,ResCL也考虑了BN层的影响。每个子网络都有自己的BN层,以保持各自任务的分布信息。在推理阶段,BN层可以被视为确定性线性层,因此可以与卷积层合并。
  2. 训练过程
    ResCL的训练包括两个阶段:首先是微调阶段,微调网络 n e t t nett nett在目标任务上进行训练;其次是组合网络训练阶段,组合网络 n e t c netc netc在源任务和目标任务上进行训练,同时使用LwF损失和权重衰减损失来保持源任务性能。
  3. 性能权衡
    ResCL通过超参数 λ \lambda λ来控制源任务和目标任务之间的性能权衡。通过调整 λ \lambda λ,可以在保持源任务性能和提高目标任务性能之间找到平衡点。

3.2 算法步骤

  1. 初始训练(源任务训练)
    • 首先,有一个已经在源任务上训练好的网络,我们称之为源网络 n e t s ( ⋅ ; θ s ∗ ) nets(\cdot; \theta^*_s) nets(;θs)
  2. 微调(目标任务训练)
    • 接着,使用源网络的参数初始化一个新的网络 n e t t ( ⋅ ; θ t ) nett(\cdot; \theta_t) nett(;θt),并在目标任务数据上进行微调,得到微调后的网络参数 θ t ∗ \theta^*_t θt。这个过程类似于 LwF 中的第一步,即在目标任务上微调模型,但并不完全相同,因为 ResCL 的目标是重新参数化网络以保留源任务的知识。
  3. 合并网络
    • 然后,ResCL 将源网络和微调网络的每层参数线性组合,形成一个新的组合网络 n e t c netc netc。这个组合网络包含了可学习的组合参数 α s \alpha_s αs α t \alpha_t αt,它们决定了如何混合源网络和微调网络的特征。
  4. 第二次训练(组合网络训练)
    • 最后,对组合网络 n e t c netc netc进行训练。这个训练过程涉及到特殊的损失函数,包括:
      • LwF 损失:用于保持源任务的性能。
      • 知识蒸馏损失:用于使目标任务的输出接近微调网络的输出。
      • 权重衰减损失:用于防止遗忘,通过衰减组合参数 α s \alpha_s αs α t \alpha_t αt来保护源网络的特征。

4 实验结果

图1展示了ResCL方法的流程,其中包括原始网络的微调、组合层的引入以及使用LwF损失和衰减损失进行的持续学习,以保持源任务性能并适应目标任务。

图2展示了源网络和目标网络的预激活残差单元如何通过组合层在每个非线性激活之前合并,形成在推理阶段使用的等效组合网络,且该网络与原始网络具有相同的规模。

5 思考

(1)训练两次,第一次先蒸馏、第二次是将蒸馏后的模型与旧模型合并,合并后再重新训练一遍

(2)如何组合两个网络?

在Residual Continual Learning (ResCL)算法中,组合两个网络是通过线性组合每一层的输出来实现的。这个过程涉及到源网络(已经训练好的网络,记作 n e t s nets nets)和目标网络(在目标任务上微调后的网络,记作 n e t t nett nett)。

  1. 线性组合
    对于网络中的每个层(假设是全连接层或卷积层),ResCL算法将源网络和目标网络对应层的输出进行线性组合。对于全连接层,如果 W s W_s Ws是源网络层的权重矩阵, W t W_t Wt是目标网络层的权重矩阵,那么组合层的输出可以表示为:

( 1 C o + α s ) ⊙ ( W s x ) + α t ⊙ ( W t x ) (1_{Co} + \alpha_s) \odot (W_s x) + \alpha_t \odot (W_t x) (1Co+αs)(Wsx)+αt(Wtx)

其中, 1 C o 1_{Co} 1Co是一个全1向量,用于与 W s x W_s x Wsx相加, ⊙ \odot 表示逐元素乘法, α s \alpha_s αs α t \alpha_t αt是组合参数向量,它们是可学习的参数,用于控制源网络和目标网络输出的混合比例。

  1. 学习组合参数
    组合参数 α s \alpha_s αs α t \alpha_t αt通过反向传播和梯度下降进行学习和优化。这些参数允许网络在保留源任务知识的同时适应新任务。
  2. 保持网络大小不变
    由于这种线性组合是在特征层面进行的,最终的网络在推理阶段的规模不会增加。这是因为组合层可以被看作是重新参数化,而不是增加额外的层或参数。
  3. 处理非线性层
    对于非线性层(如ReLU激活层),这些层不能被包含在组合中,因为它们不是线性的。因此,组合层应该在非线性层之前应用,以确保网络的非线性特性得以保留。
  4. 批量归一化层的处理
    对于包含批量归一化(Batch Normalization, BN)层的网络,ResCL算法为每个任务保留了独立的BN层,并在组合网络中使用。这是因为BN层依赖于特定任务的统计信息,因此在连续学习中需要保持这些信息以避免遗忘。

(3)论文中的残差结构体现在哪?

残差结构主要体现在网络参数的重新参数化和权重衰减损失的设计上

  1. 线性组合的重新参数化
    ResCL算法通过线性组合原始网络(源网络)和微调网络(目标网络)的每层参数来实现残差学习。对于全连接层或卷积层,这种组合可以表示为:

( 1 C o + α s ) ⊙ ( W s x ) + α t ⊙ ( W t x ) (1_{Co} + \alpha_s) \odot (W_s x) + \alpha_t \odot (W_t x) (1Co+αs)(Wsx)+αt(Wtx)

其中, W s W_s Ws W t W_t Wt分别是源网络和目标网络的权重, α s \alpha_s αs α t \alpha_t αt是可学习的组合参数, 1 C o 1_{Co} 1Co是全1向量。这种结构允许网络学习源网络和目标网络之间的残差,即目标网络相对于源网络的变化。

  1. 残差学习的思想
    ResCL算法的设计理念与残差学习(Residual Learning)相似,残差学习通过将输入直接添加到网络的深层来促进深层网络的训练。在ResCL中,通过重新参数化,网络学习如何调整源网络的输出以适应目标任务,这可以看作是学习源网络输出到目标网络输出的“残差”。
  2. 权重衰减损失
    ResCL中的权重衰减损失( λ ∣ ∣ ( α s , α t ) ∣ ∣ 1 \lambda ||(\alpha_s, \alpha_t)||_1 λ∣∣(αs,αt)1)有助于控制组合参数,使得只有对目标任务必要的特征才会显著偏离源网络的特征。这种设计类似于在残差网络中通过权重衰减来促使残差部分的权重趋于零,从而保持网络的稀疏性和效率。

相关文章:

【连续学习之ResCL算法】2020年AAAI会议论文:Residual continual learning

1 介绍 年份:2020 会议: AAAI Lee J, Joo D, Hong H G, et al. Residual continual learning[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(04): 4553-4560. 本文提出的算法是Residual Continual Learning (ResC…...

【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程

系列文章目录 【zookeeper核心源码解析】第一课:zk启动类核心流程序列图 【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程 【zookeeper核心源码解析】第三课:leader与follower何时开始同步&#…...

数据流图和流程图的区别

在结构化建模中,数据流图和流程图都是非常重要的工具,它们为开发人员提供了强大的手段来分析和设计系统。尽管两者在表面上看起来有些相似,但它们在功能、用途和表达方式上存在显著的区别。本文将详细探讨数据流图和流程图的区别,…...

关于内网服务器依托可上网电脑实现访问互联网

关于内网服务器依托可上网电脑实现访问互联网 背景:在实验室内网的一个服务器,没有配置 NAT ,无法使用外网,只能在局域网内进行访问,但是呢,我们自己的电脑是可以访问互联网的,那么怎么通过让自…...

期权懂|期权入门知识:如何选择期权合约?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 期权入门知识:如何选择期权合约? 一、选择月份: 通常情况下,月份的选择与期货合约的选择类似,主要关注主力合约。主力…...

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容,方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里:发现正确识别和分析了链接里面的内容 链接如下:https://arxiv.org/pdf/2009.1…...

Bash 脚本教程

注:本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程,非常不错,至少没接触过 BASH 的也能看懂! 建立一个脚本 Linux 中有…...

Pinia最简单使用(vite+vue3)

文章目录 创建项目安装Pinia包main.js注册Pinia在src下创建store/store.js文件,放入以下内容在app.vue中的使用(在其他组件也一样的) 创建项目 npm create vitelatest my-vue-app选vue 选JavaScript cd my-vue-app npm install npm run dev安装Pinia包 npm install piniamain…...

计算机网络——期末复习(4)协议或技术汇总、思维导图

思维导图 协议与技术 物理层通信协议:曼彻斯特编码链路层通信协议:CSMA/CD (1)停止-等待协议(属于自动请求重传ARQ协议):确认、否认、重传、超时重传、 (2)回退N帧协…...

Microsoft word@【标题样式】应用不生效(主要表现为在导航窗格不显示)

背景 随笔。Microsoft word 2013基础使用,仅做参考和积累。 问题 Microsoft word 2013,对段落标题文字应用【标题样式】不生效(主要表现为在导航窗格不显示)。 图1 图2 观察图1和图2,发现图1的文字在应用【标题一】样…...

轮播图带详情插件、uniApp插件

超级好用的轮播图 介绍访问地址参数介绍使用方法(简单使用,参数结构点击链接查看详情)图片展示 介绍 带有底部物品介绍以及价格的轮播图组件,持续维护,uniApp插件,直接下载填充数据就可以在项目里面使用 …...

云计算时代携程的网络架构变迁

大家觉得有意义和帮助记得及时关注和点赞!!! 前言0 携程云平台简介 网络演进时间线1 基于 VLAN 的二层网络 1.1 需求1.2 解决方案:OpenStack Provider Network 模型1.3 硬件网络拓扑1.4 宿主机内部网络拓扑1.5 小结 优点缺点2 基于 SDN 的大二层网络 2.1 面临的新问…...

USB 状态机及状态转换

文章目录 USB 状态机及状态转换连接状态供电状态默认状态地址状态配置状态挂起状态USB 状态机及状态转换 枚举完成之前,USB 设备要经过一系列的状态变化,才能最终完成枚举。这些状态是 连接状态 - attached供电状态 - powered默认状态 - default地址状态 - address配置状态 -…...

Go C编程 第6课 无人机 --- 计算旋转角

旋转的秘密---认识角度 rt、lt命令学习 goc电子课程 一、编程步骤 第一步 第二步 第三步 第四步 二、画“四轴无人机” (一)、画第一根机轴 (二)、画第二根机轴 (三)、画完整的无人机 三、画“多轴无人…...

C++-----图

一、图的结构 在 C 中,图可以用多种结构表示,常见的有邻接矩阵和邻接表。 邻接矩阵 使用二维数组 adjMatrix 来表示图中顶点之间的连接关系。对于无向图,如果 adjMatrix[i][j] 不为零,则表示顶点 i 和顶点 j 之间存在边&#x…...

mysql 数据库迁移到达梦数据库

1.windows安装达梦数据库,去官网下载 dm8 进行安装,安装后,可以使用管理工具管理数据 使用迁移工具对数据进行迁移; 2.使用php 或者 thinkphp连接达梦数据库 2.1、先PHP开启DM扩展 从达梦数据库安装目录下drivers/php_pdo 复制对…...

【记录】使用R2 CDN替换本地项目图片以加速图片加载

将图片存储到 Cloudflare 的存储桶中,并通过其提供的公共 URL 来替换代码中的本地路径,可以减小项目中打包的图片文件体积 实现方法的详细步骤: 1. 上传图片到 Cloudflare 的存储桶 (1)登录 Cloudflare Dashboard&am…...

12.13[java exp4][debug]nginx 500,究极未解之谜,出自重启,解决自重启,迷???

pro1 pro2?????????未解之谜,究极未解之谜???? 就是 auth_request http://auth_server/auth/check;接受不到,auth_server无法受到请求,就完全没收到?但是/auth/login等直接…...

Disruptor 高性能环形消息框架

官方文档:Disruptor 1. 简介 Disruptor是一个高性能的互进程(Inter-process)和多线程(Multi-threaded)消息处理库,由LMAX交易所开发,用于在Java虚拟机(JVM)上实现高性能…...

Python列表(二)

方式三: 创建对应的枚举对象 概念:通过枚举函数,生成一个新的对象 作用:函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列 同时列出数据下标和数据 #生成枚举对象 values [&…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...