Overcoming catastrophic forgetting in neural networks
目录
预备知识:
论文笔记
1. Introduction
2. Elastic weight consolidation
2.1 EWC allows continual learning in a supervised learning context
2.2 EWC allows continual learning in a reinforcement learning context
3. Conclusion
文章链接:https://arxiv.org/abs/1612.00796
预备知识:
有关Life-Long Learning:Lecture 14:Life-long Learning_zzz_qing的博客-CSDN博客
Life-Long Learning Goal: A model can beat all task!
Life-Long Learning有很多种不同的做法,EWC属于Regularization-based methods:
在李宏毅老师Life-Long Learning课程对应的HW14中,给出了EWC的简介和相关代码:
The ewc class applied EWC algorithm to calculate the regularization term. Here we will focus on the algorithm of EWC.
In this assignment, we want to let our model learn 10 tasks successively. Here we show a simple example that lets the model learn 2 tasks(task A and task B) successively.
In the EWC algorithm, the definition of the loss function is shown below:
Assume we have a neural network with more than two parameters.
下面是EWC的部分代码,由代码可知道EWC需要使用label数据:
# Simply use groud truth label of dataset.
label = data[1].to(self.device)# generate Fisher(F) matrix for EWC
loss = F.nll_loss(F.log_softmax(output, dim=1), label)
loss.backward() for n, p in self.model.named_parameters():# get the gradient of each parameter and square it, then average it in all validation set. precision_matrices[n].data += p.grad.data ** 2 / number_data
def penalty(self, model: nn.Module):loss = 0for n, p in model.named_parameters():# generate the final regularization term by the ewc weight (self._precision_matrices[n]) and the square of weight difference ((p - self.p_old[n]) ** 2). _loss = self._precision_matrices[n] * (p - self.p_old[n]) ** 2loss += _loss.sum()return loss
论文笔记
本文通过选择性地放慢对那些任务重要的权重的学习来记住旧任务。
本文通过解决一组基于 MNIST 手写数字数据集的分类任务并通过顺序学习多个 Atari 2600 游戏来证明我们的方法是可扩展且有效的。
1. Introduction
intelligent agents必须展示持续学习的能力:即学习连续任务而不忘记如何执行先前训练的任务的能力。
关于灾难性遗忘相关知识点在life-long learning笔记中有,这里不赘述。
在life-long learning笔记中有提到同时训练多个任务不会发生灾难性遗忘,本文给出了解释:在实现continual learning方面,当前的方法通常确保来自所有任务的数据在训练期间同时可用。通过在学习期间交错来自多个任务的数据,不会发生遗忘,因为网络的权重可以针对所有任务的性能进行联合优化。在这种机制中——通常被称为多任务学习范式——深度学习技术已被用于训练能够成功玩多个 Atari 游戏的单个智能体。(在这篇文献提出的时间点,按顺序学习任务就是把所有任务的数据都记下来,学习新任务的时候再把前面的任务再学一遍,需要存储很多数据,训练起来也很慢)
本研究为人工神经网络开发了一种弹性权重整合(简称 EWC)算法。该算法根据某些权重对先前看到的任务的重要性来减慢对某些权重的学习。我们展示了 EWC 如何用于监督学习和强化学习问题以按顺序训练多个任务而不忘记旧任务。
2. Elastic weight consolidation
在本节中,我们将解释为什么我们希望在旧任务的邻域中找到新任务的解决方案,我们如何实现约束,最后我们如何确定哪些参数是重要的。
深度神经网络由多层linear projection followed by element-wise non-linearities组成。学习任务包括调整linear projection的一组权重和偏差 θ,以优化性能。 θ 的许多配置将导致相同的性能,这与 EWC 相关:过度参数化使得任务 B 的解决方案 θ* B 很可能与之前找到的任务 A 的解决方案 θ* A 很接近。因此,在学习任务 B 时,EWC 保护了通过将参数限制在以 θ* A 为中心的任务 A 的低误差区域中,可以提高任务 A 的性能,如图 1 中的示意图所示:(这就是李宏毅老师在Regularization-based的方法中介绍的思想)
为了证明这种约束选择的合理性并定义哪些权重对任务最重要,从概率的角度考虑神经网络训练是很有用的。从这个角度来看,优化参数无异于在给定一些数据 D 的情况下找到它们最可能的值。我们可以根据参数 p(θ) 的先验概率和数据 p(D|θ) 使用贝叶斯规则:
关于任务 A 的所有信息都必须被吸收到后验分布 p(θ|DA) 中。这个后验概率必须包含关于哪些参数对任务 A 很重要的信息,因此是实施 EWC 的关键。
真正的后验概率是难以处理的,因此将后验近似为高斯分布,其均值由参数 θ∗ A 给出,对角线精度由 Fisher 信息矩阵 F 的对角线给出。F 具有三个关键属性:(a) 它相当于接近最小值的损失的二阶导数,(b) 它可以单独从一阶导数计算,因此即使计算也很容易对于大型模型,(c) 它保证是半正定的。
这种方法类似于期望传播,其中每个子任务都被视为后验的一个因素。给定这个近似值,我们在 EWC 中最小化的函数 L 是:
LB(θ) 仅是任务 B 的损失,λ 设置旧任务与新任务相比的重要性,i 标记每个参数。
2.1 EWC allows continual learning in a supervised learning context
如图 A 所示,使用普通随机梯度下降 (SGD) 对这一系列任务进行训练会导致灾难性遗忘。
这个问题不能通过对每个权重使用固定的二次约束(绿色曲线,L2 正则化)对网络进行正则化来解决。对每个权重使用固定的二次约束会导致任务 A 中的性能下降要轻得多,但任务 B 无法正确学习,因为约束保护了所有权重,导致在 B 上留下很少的剩余容量来学习。但是,当我们使用 EWC 时,考虑到了每个权重对任务 A 的不同的重要性,网络可以很好地学习任务 B 而不会忘记任务 A(红色曲线)。
将传统的 dropout 正则化与 EWC 进行比较,单独使用 dropout 正则化的随机梯度下降是有限的,并且它不能扩展到更多任务(图 B)。相比之下,EWC 允许按顺序学习大量任务,错误率只会适度增长:
EWC 允许网络有效地将更多功能压缩到具有固定容量的网络中。下面评估它是否为每个任务分配完全独立的网络部分,或者是否通过共享表示以更有效的方式使用容量(通过测量任务对各自的 Fisher 信息矩阵之间的重叠来确定每个任务是否依赖于相同的权重集,小的重叠意味着这两个任务依赖于不同的权重集,大的重叠表明两个任务都使用了权重)。
图 C 显示了作为深度函数的重叠。作为一个简单的控制,当一个网络在两个非常相似的任务上进行训练时,这些任务依赖于整个网络中相似的权重集(灰色曲线) .当这两个任务彼此更加不同时,网络开始为这两个任务(黑线)分配单独的容量(即权重)。然而,即使对于大排列,更靠近输出的网络层确实被重新用于两个任务。这反映了这样一个事实,即排列使输入域非常不同,但输出域(即类标签)是共享的。
2.2 EWC allows continual learning in a reinforcement learning context
为了在RL中应用 EWC,在每个任务切换时计算 Fisher 信息矩阵。对于每个任务,都会添加一个惩罚,其中锚点由参数的当前值给出,权重由 Fisher 信息矩阵乘以通过超参数搜索优化的缩放因子 λ 给出。我们只对经历了至少 2000 万帧的游戏添加了 EWC 惩罚。
我们还允许 DQN 代理为每个推断的任务维护单独的短期记忆缓冲区:这些允许使用经验重放机制在策略外学习每个任务的动作值。因此,整个系统在两个时间尺度上有记忆:在短时间尺度上,经验回放机制允许 DQN 中的学习基于交错和不相关的经验。在更长的时间范围内,跨任务的专业知识通过使用 EWC 得到整合。最后,我们允许少量网络参数特定于游戏,而不是跨游戏共享。特别是,我们允许网络的每一层都有特定于每个游戏的偏差和每个元素的乘法增益。
实验结果表明,通过使用 EWC,agent确实学会了玩多个游戏:
3. Conclusion
本文提出了一种新算法,即弹性权重合并,它解决了神经网络持续学习带来的重大问题。 EWC 允许在新学习过程中保护先前任务的知识,从而避免灾难性地遗忘旧能力。
我们将 EWC 实现为一个软的二次约束,其中每个权重被拉回其旧值,其数量与其对先前学习任务的性能的重要性成正比。就任务共享结构而言,使用 EWC 训练的网络会重用网络的共享组件。
EWC 算法可以基于贝叶斯学习方法。形式上,当有新任务要学习时,网络参数由先验调节,先验是给定先前任务数据的参数的后验分布。这使得对先前任务约束不佳的参数的快速学习率成为可能,而对于那些至关重要的参数则可以降低学习率。
相关文章:

Overcoming catastrophic forgetting in neural networks
目录 预备知识: 论文笔记 1. Introduction 2. Elastic weight consolidation 2.1 EWC allows continual learning in a supervised learning context 2.2 EWC allows continual learning in a reinforcement learning context 3. Conclusion 文章链接&#x…...

[Linux] Linux文件系统
🥁作者: 华丞臧. 📕专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 文章目录 一、Linux文件系统1.1 磁盘1.2 inode1.3 软硬…...

有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定
俯拍相机中心和吸嘴中心的标定 文章目录 俯拍相机中心和吸嘴中心的标定 前言适用模型如下:一、使用一个标定片进行标定1.关键注意:2.标定步骤: 二、使用一个L型的工件1.关键注意:2.标定步骤: 总结 前言 在自动化设备领…...

【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch
所谓响应式就是界面和数据同步,能实现实时更新。 Vue 中用过三种响应式解决方案,分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 1. ref和reactive vue3中实现响应…...

自动化测试工具的基本原理以及应用场景
自动化测试工具是现代软件开发流程中必不可少的组成部分,它可以通过编写脚本或使用图形用户界面工具自动化测试过程,提高测试的效率和准确性。本文将介绍自动化测试工具的基本原理以及应用场景。 自动化测试工具的基本原理 自动化测试工具通常采用的原理…...

《Java虚拟机学习》 java代码的运行过程
1. Java文件转换 当我们保存java文件后,首先由编译器编译成class文件,然后通过Java虚拟机将class文件转换成字节码文件 2.Java虚拟机是怎么运行Java文件 首先将java文件加载到java虚拟机中,然后由虚拟机将类元信息存储在 虚拟机的方法区中。…...

关于Intel处理器架构中AVX2里Gather特性的说明
在 Intel Haswell 架构里引入了 Gather 特性。它使得CPU可以使用向量索引存储器编址从存储器取非连续的数据元素。这些gather指令引入了一种新的存储器寻址形式,该形式由一个 基地址寄存器(仍然是通用目的寄存器)和通过一个 向量寄存器&#…...

UNIX常用命令(C站最全,一文通关)
unix常见命令列举如下,除了看还要会用: ls - 列出目录下的文件 cd - 切换目录 pwd - 显示当前目录 mkdir - 创建目录 rm - 删除文件或目录 rmdir - 删除空目录 cp - 复制文件或目录 mv - 移动文件或目录,或重命名 cat - 显示文件内容 less - 分…...

Vue监听属性详细讲解
文章目录 定义要监听的属性定义 watch修改监听的属性值监听数组变化监听对象变化监听计算属性变化监听事件变化监听路由变化 在 Vue 中,可以使用 watch/$watch 方法监听数据、计算属性、事件和路由的变化,从而实现数据绑定、事件监听和路由控制等功能。需…...

网申形式一览:这三种投递方式,你了解吗?
银行校招是个滚动的过程,每家银行的网申期并不一致。想要在看重的银行网申期投出一份漂亮的简历,简历自身要“过硬”。是不是还有同学不清楚网申简历形式? 从如信银行考试中心了解到,银行网申,尤其是大行网申ÿ…...

vue项目将多张图片生成一个gif动图
当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私,就不公开啦 我们要引入一个gif.js的引入包,但是他没有直接引入的方式,只能从官方下载文件包,下载地址&#…...

开心档之Go 语言常量
Go 语言常量 常量是一个简单值的标识符,在程序运行时,不会被修改的量。 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 常量的定义格式: const identifier [type] value你可以省略类…...

动态库和静态库的使用
一、什么是库? 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容。 常见的库类型 共享库 静态库 动态库…...

前端:20 个常见的前端算法题
现在面试中,算法出现的频率越来越高了,大厂基本必考 今天给大家带来 20 个常见的前端算法题,重要的地方已添加注释,如有不正确的地方,欢迎多多指正 💕 1、两数之和 题目: 给定一个数组 nums …...

【Linux】多线程 --- 线程概念 控制 封装
从前种种,譬如昨日死。从后种种,往如今日生。 文章目录 一、线程概念1.重新理解用户级页表1.1 进程资源如何进行分配呢?(地址空间页表)1.2 虚拟地址如何转换到物理地址?(页目录页表项࿰…...

最长递增子序列的长度 _ 贪心+二分查找 _ 20230510
最长递增子序列的长度 _ 贪心二分查找 _ 20230510 前言 最长递增子序列的程序一般采用动态规划方式,使用bottom-up的数组记忆方式比较容易理解,当然也可以采用top-down的递归模式。本文主要讨论如何利用贪心策略,同时辅助以二分查找的方式实…...

VMware ESXi 7.0 U3m Unlocker OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
ESXi 7 U3 标准版集成 Intel 网卡、USB 网卡 和 NVMe 驱动 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u3-sysin/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023-05-03,发布 ESXi 7.0U…...

Scrum敏捷开发和项目管理流程及工具
Scrum是全球运用最广泛的敏捷管理框架,Leangoo基于Scrum框架提供了一系列的流程和模板,可以帮助敏捷团队快速启动Scrum敏捷开发。 这里可以介绍一下在scrum中单团队敏捷开发如何管理,单团队敏捷开发主要是针对10-15人以下,只有一…...

微服务之配置中心
文章目录 1什么是配置2什么是配置中心3为什么我们要用配置中心4特点 1什么是配置 就是springboot中的application.yml/properties文件 比如:项目名、端口号、数据库连接参数、启动参数等。 2什么是配置中心 配置中心就是用来管理项目当中所有配置的系统ÿ…...

windows下安装OpenCL
由于我的电脑是windows10,显卡是集显Intel UHD Graphics 630。 下载Intel的SDK for OpenCL,下载地址https://software.intel.com/en-us/opencl-sdk/choose-download,也可以在我的资源里面直接下载https://download.csdn.net/download/qq_363…...

前端项目的通用优化策略
一、虚拟滚动 当我们开发的时候,遇到大数据加载,页面卡顿的问题应该如何处理?大多数情况下,我们都是尽量通过分页的方式处理这类问题,但是总有一些特殊的情况我们必须把数据全部加载到前端进行处理。我曾经遇到过一个…...

关于 IO、存储、硬盘和文件系统
关于IO、存储、硬盘和文件系统 0.引入1.了解IO1.1.存储器IO1.2.设备IO 2.存储介质和存储类型2.1.内存2.2.硬盘2.3.固态硬盘(SSD)2.4.U盘 3.硬盘的工作原理3.1.磁头3.2.盘片3.3.电动机3.4.硬盘的读写操作 4.文件系统概述4.1.文件系统的类型4.2.文件系统的…...

计算机网络期中复习提纲-酷酷的聪整理版
第一章 概述 1.请介绍计算机网络在逻辑上的组成及其各自的作用。 计算机网络在逻辑上可以分为终端子网和通信子网两部分。 终端子网是指连接计算机与网络的部分,主要负责将数据从计算机发送到通信子网,或将从通信子网接收到的数据传输到计算机。终端子网通常包括物理层和数据…...

clickhouse的嵌套数据结构Tuple、Array与Nested类型介绍和使用示例
文章目录 Tuple类型Array类型Nested类型使用示例单独使用Tuple数组嵌套 Array(Tuple)Nested类型 生产使用:分组查询 Tuple类型 Tuple是ClickHouse数据库中的一种数据类型,它允许在一个字段中存储由不同数据类型组成的元组(tuple)。元组可以包含任意数量…...

人脸修复增强调研
Real-ESRGAN 工程地址:https://github.com/xinntao/Real-ESRGAN 效果: 人脸增强部分,调用的GFPGAN. GFPGAN 工程地址:https://github.com/TencentARC/GFPGAN 论文效果: BasicSR-ESRGAN: 项目地址&a…...

【Java】继承和多态
文章目录 一、继承1.继承的例子(is-a)2.组合的例子(has-a) 二、多态1.重写2.重载 三、继承的语法四、继承的注意事项1.初始化的顺序:2.super关键字 五、继承访问限定符六、多态实现方式七、多态的理解注意事项…...

ThingsBoard集群部署之k8s
1、概述 今天终于有时间去搞这个啦,拖了很久了,一直没时间,因为我本地没有那么多机器资源,开虚拟机不够,如果租用阿里云服务器,需要有充值的时间,因为这个费用是按小时付费,需要有连贯的时间来搞才行,今天恰好有时间,就开始搞了,弄成功搞出来了,特地写博客记录下来…...

【Gorm】如何在 GORM 中实现模型之间的关联?
文章目录 关联1、Belongs To(属于)2、Has One(拥有一个)3、Has Many(拥有多个)4、Many To Many(多对多) 关联 当涉及到 ORM(Object-Relational Mapping)的…...

Linux危险命令
rm -rf 命令 该命令可能导致不可恢复的系统崩坏。 rm -rf / #强制删除根目录下所有东西。rm -rf * #强制删除当前目录的所有文件。rm -rf . #强制删除当前文件夹及其子文件夹。fork 炸弹 :() { :|:& };:不太好理解可以转换成 bomb() {bomb|bomb& }; bomb一旦执行…...

FPGA入门系列13--异步串口通信
文章简介 本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码…...