【博士每天一篇论文-算法】Continual Learning Through Synaptic Intelligence,SI算法

news2024/11/18 21:34:17

阅读时间:2023-11-23

1 介绍

年份:2017
作者:Friedemann Zenke,巴塞尔大学弗里德里希·米歇尔研究所(FMI) Ben Poole,谷歌 DeepMind 研究科学家
期刊: International conference on machine learning. PMLR
引用量:2309

这篇论文介绍了受生物神经网络启发的智能突触,用于解决人工神经网络(ANNs)中的忘却灾难问题。当ANNs学习新任务时,会忘记之前学习的任务,这就是所谓的忘却灾难。智能突触通过累积与任务相关的信息来存储新记忆,而不会忘记旧记忆,从而减少忘却,同时保持计算效率。该方法通过为每个突触赋予一个本地的“重要性”度量,来衡量突触在过去训练任务中解决问题的能力。在训练新任务时,对于重要的参数变化进行惩罚,以避免旧的记忆被覆盖。该方法通过保留对过去任务重要参数的改变,同时只允许不重要的参数学习来避免灾难性遗忘。

2 创新点

  1. 引入了 intelligent synapses(智能突触)的概念,智能突触通过累积与任务相关的信息来存储新的记忆,同时不会忘记旧的记忆,从而降低遗忘,同时保持计算效率。通过单个突触估计其对过去任务的重要性,并对最重要突触的变化惩罚来解决灾难性遗忘。
  2. 这篇论文指出,ANNs的问题在于它们未能融入生物突触的复杂性,而生物突触使用复杂的分子机制来影响各种时间和空间尺度上的可塑性。因此,论文提出了三种缓解灾难性遗忘的方法:架构、功能和结构方法。而本文提出的方法是一种结构正则化器,可以在线计算和在每个突触局部实施。该方法保持了总损失函数关于所有任务的总和的全局损失,从而减少了在过去被认为是具有重要影响的权重的剧烈变化。
  3. 智能突触为ANNs引入了生物复杂性,并使其能够在数据分布可能随时间改变的新领域中实现持续学习。

3 相关研究

作者说分为三种研究方向,其实细分的话,可以分为四种:

(1)架构
架构方法通过改变网络的架构来减少任务之间的干扰,而不改变目标函数。最简单的架构正则化形式是冻结网络中的某些权重,使其保持完全相同(Razavian et al., 2014)。更灵活的方法是减少与原始任务共享的层的学习率,同时进行微调,以避免参数的剧烈变化(Donahue et al., 2014; Yosinski et al., 2014)。使用ReLU、MaxOut和局部取胜等不同非线性的方法已被证明可提高在排列的MNIST和情感分析任务上的性能(Srivastava et al., 2013; Goodfellow et al., 2013)。此外,注入噪声以稀疏梯度(使用dropout)也可以提高性能(Goodfellow et al., 2013)。Rusu等人(2016)最近的工作提出了更大胆的架构改变,其中先前任务的整个网络被复制并增加了新的特征,同时解决新任务。这样完全可以防止对前面任务的遗忘,但是随着任务数量的增加,架构复杂性也会增加。
(2)功能
功能方法对灾难性遗忘进行附加惩罚项,惩罚神经网络输入-输出函数的变化。在Li&Hoiem(2016)中,通过使用知识蒸馏的一种形式,鼓励先前任务网络和当前网络在应用于新任务的数据时的预测结果相似(Hinton et al., 2014)。类似地,Jung等人(2016)使用最终隐藏激活之间的L2距离进行正则化,而不是使用知识蒸馏惩罚项。这两种正则化方法旨在通过使用先前任务的参数存储或计算额外的激活来保留旧任务的输入-输出映射的某些方面。这使得功能方法变得计算上昂贵,因为它要求每个新数据点都要通过旧任务的网络进行前向传递。
(3)正则化
第三种技术是结构正则化,涉及对参数施加惩罚,以使其保持接近于旧任务的参数。最近,Kirkpatrick等人(2017)提出了弹性权重合并(EWC),对新任务的参数和旧任务的参数之间的差异施加二次惩罚。他们使用的对角线加权与旧任务上旧参数的Fisher信息度量的对角线成正比。准确计算Fisher的对角线需要对所有可能的输出标签求和,因此其复杂度与输出数量成线性关系。这限制了这种方法在低维输出空间中的应用。

4 算法

4.1 算法原理

在学习一个任务后,由于只能访问当前任务的损失函数,无法直接使用该任务的损失函数,所以作者构造一个代理损失函数(surrogate loss)来近似原始损失函数。这样在训练新任务时,对于重要的参数变化进行惩罚,以避免旧的记忆被覆盖。
image.png
图中展示了在学习完一个任务后,使用二次代理损失函数来匹配原始损失函数下降动态的情况。这个二次代理损失函数满足三个条件:总损失函数的下降量、参数空间的总运动量和在末态达到最小值。这个代理损失函数的构造能更好地总结原始损失函数的下降轨迹。
该方法中,作者目标是限制重要参数的改变,使用二次代理损失来近似对过去任务的损失函数,并将重要参数的改变量与参数距离相结合。通过调整二次代理损失的强度参数,可以权衡对新旧任务的记忆。
image.png
image.png
其中,c为强度参数,c = 1将对应于对旧记忆和新记忆的等权重分配, θ k \theta_{k} θk为网络权重参数, Ω k u \Omega_k^u Ωku为参数特定的正则化强度, ξ \xi ξ为额外的阻尼参数,用于在 Δ k v \Delta_k^v Δkv趋于0的情况下限制表达式, ω k u \omega_k^u ωku表示每个参数对总损失变化的贡献, ( Δ k v ) 2 (\Delta_k^v)^2 (Δkv)2确保正则化项具有与损失 L 相同的单位。
与现有的EWC方法相比,这种方法中的重要性计算(路径积分,path integral)是通过沿着整个学习轨迹进行信息积分来计算的,而不是在每个任务结束时计算Fisher信息矩阵的对角线,具体的如何根据学习轨迹计算参数的重要性,需要搞明白几个公式推导。

4.2 推导证明

换一种说法,首先要计算参数的重要性,然后对重要的参数进行限制改变。
(1)参数的重要性计算:
对于每个任务µ,根据以下公式计算每个参数的路径积分损失函数 ω k u \omega_k^u ωku。路径积分损失函数是参数在整个学习轨迹上的贡献的累加,表示参数的重要性。
ω k u = ∫ 0 ∞ θ k T Q d θ \omega_k^u = \int_0^{\infty} \theta_k^TQd\theta ωku=0θkTQdθ
其中, Q表示参数Hessian矩阵H的对角元素。具体按照以下步骤计算 :

  • 计算参数Hessian矩阵H的特征值和特征向量,并将其表示为 λ α \lambda_{\alpha} λα u α u_{\alpha} uα
  • 计算初始参数与最终参数之间的差异在特征向量 α \alpha α上的投影 d α = u α ⋅ ( θ ( 0 ) − θ ∗ ) d_{\alpha} = u_{\alpha}\cdot (\theta(0)-\theta^*) dα=uα(θ(0)θ)
  • 将公式(9)插入到公式(10)中,并进行基础变换以得到H的特征模式,然后进行积分计算,可以得到:

Q = ∫ 0 ∞ e − H τ t d t Q = \int_0^{\infty} e^{-H \tau t}dt Q=0eHτtdt
最终,通过计算路径积分损失函数 ω k u \omega_k^u ωku,可以获得参数 θ k \theta_k θk在整个学习轨迹中的重要性。
(2)以正则项加入损失函数
根据计算得到的路径积分损失函数,通过引入二次替代损失来近似参数的重要性,并保持与之前任务的损失函数相同的最小值和在参数距离上相同的下降量。
image.png
image.png
(3)更新梯度
在训练新任务时,通过惩罚对重要参数的变化来避免覆盖旧的记忆。

5 实验分析

采用的数据集有:split MNIST、permuted MNIST、split CIFAR-10、split CIFAR-100

5.1 Split MNIST

image.png
采用只有两层的MLP模型。在训练第一个任务时,两种情况下的惩罚都是零,。当在数字“2”和“3”上进行训练时(任务2),具有和没有整合的模型在任务2上的准确率都接近1。

5.2 permuted MNIST

image.png

  • 当不使用突触巩固(不使用正则化项)时,神经网络在学习新任务时会迅速忘记之前的任务。相比之下,通过启用突触巩固,并选择合适的参数c > 0,同一个网络在学习9个附加任务时能够保持高的分类准确性。
  • 该网络学习解决所有其他任务的准确性也很高,并且仅稍微比同时训练所有数据的网络差一点。
  • 实验结果与EWC的结果接近

image.png
为了更好地理解训练过程中的突触动力学,我们可视化了不同任务之 ω k u \omega_k^u ωku的成对相关性。发现,当不进行巩固时,第二个隐藏层的 ω k u \omega_k^u ωku在不同任务之间是相关的,这可能是灾难性遗忘的原因。然而,通过巩固,这些有助于降低损失的突触集在不同任务之间基本上是不相关的,因此在更新权重以解决新任务时避免了干扰。

5.3 Split CIFAR-10/CIFAR-100

image.png
采用4个卷积层和2个带有dropout的全连接层的CNN模型,通过改变参数c的值(在1×10−3 < c < 0.1的范围内),来确定最佳c的值。研究结果发现,在训练了所有任务之后,使用巩固的网络在所有任务上的验证准确度相似,而未使用巩固的网络在老任务上的准确度明显降低。重要的是,使用巩固训练的网络性能总是优于未使用巩固的网络,除了最后一个任务。最后,对比使用巩固训练的网络在所有任务上的性能与从头(from stratch)开始训练的网络的性能,发现前者表现更好。
总之,这项研究表明在更复杂的数据集和更大的模型上,通过突触巩固动力学可以防止灾难性遗忘,并提高网络的泛化性能。

6 思考

(1)本文提出的方法在正则化惩罚方面与 EWC 类似,区别在于计算突触重要性的方式上有所不同。

  • SI方法是在线计算和沿着整个学习轨迹计算重要性衡量,而EWC方法则是在每个任务结束时,依赖于参数最终值的点估计来计算重要性。
  • SI方法通过结构化的正则化器来减少参数的突然改变,EWC方法需要在单独的阶段计算参数的Fisher信息矩阵的对角线 。
  • SI方法可以在每个突触本地实施,并且可以在线计算,以便在以前的任务中引导学习 。

(2)代理损失函数中的常数c成为了一个超参数,需要对不同任务进行调参。c的值在1×10−3 < c < 0.1的范围内。

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

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

相关文章

jdk17新特性—— record关键字(类似于Lombok功能)

目录 一、record关键字的概述1.1、概述1.2、特性 二、record关键字的代码示例2.1、record关键字代码示例2.2、record关键字代码.class文件示例2.3、record关键字代码示例 总结说明 三、record关键字实现密封接口的代码示例3.1、record关键字实现密封接口的代码示例 四、record关…

Linux 常用命令行

Linux (Ubuntu) 常用操作命令行 1. 打开终端&#xff1a;ctrl alt t; 2. 清屏&#xff1a;clear; 3. 进入目录&#xff1a;cd path;[/ 根目录&#xff1b;./ 当前目录&#xff1b;../ 上一级] 4. 返回上一级目录: cd ..; 5. 显示工作路径: pwd; 6. 列表显示文件、文件夹&…

PAT-Apat甲级题1004(python和c++实现)

PTA | 1004 Counting Leaves 1004 Counting Leaves 作者 CHEN, Yue 单位 浙江大学 A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child. Input Specification: Each input file contains one te…

【超详细教程】2024最新Pytorch安装教程(同时讲解安装CPU和GPU版本)

目录 一、前言 二、pytorch简介 三、安装准备工作 3.1、下载Anaconda 四、判断是否有NVIDIA显卡 五、安装pytorch-CPU版本 六、安装pytorch-GPU版本 6.1、查看CUDA显卡驱动版本 6.2、安装CUDA 6.3、安装CuDNN&#xff08;加速器&#xff09; 6.4、安装pytorch-GPU 七…

瑞_23种设计模式_原型模式

文章目录 1 原型模式&#xff08;Prototype Pattern&#xff09;原型模式的结构 2 实现3 案例3.1 需求3.2 设计3.3 代码实现3.3.1 浅克隆代码实现3.3.2 深克隆代码实现 3.4 总结 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《23种设计模式》的原型模式篇。本文中的部…

通用缓存SpringCache

概述 在项目中&#xff0c;我们通常会把高频的查询进行缓存。如资讯网站首页的文章列表、电商网站首页的商品列表、微博等社交媒体热搜的文章等等&#xff0c;当大量的用户发起查询时&#xff0c;借助缓存提高查询效率&#xff0c;同时减轻数据库压力。 目前的缓存框架有很多:…

【Linux C | 网络编程】netstat 命令图文详解 | 查看网络连接、查看路由表、查看统计数据

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

深度学习快速入门--7天做项目

深度学习快速入门--7天做项目 0. 引言1. 本文内容2. 深度学习是什么3. 项目是一个很好的切入点4. 7天做项目4.1 第一天&#xff1a;数据整理4.2 第二天&#xff1a;数据处理4.3 第三天&#xff1a;简单神经网络设计4.4 第四天&#xff1a;分析效果与原因4.5 第五天&#xff1a;…

day02.C++命名空间

目录 一、命名空间的作用 二、命名空间的定义 三、命名空间的镶嵌定义 四、命名空间的使用方法 一、命名空间的作用 一个中大型软件往往由多名程序员共同开发&#xff0c;会使用大量的变量和函数&#xff0c;不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过…

iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法

在iOS应用开发过程中&#xff0c;调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时&#xff0c;我们可以连接电脑并使用Xcode Console等工具来查看日志。然而&#xff0c;这种方式可能不够方便&#xff0c;并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了…

Day 17------C语言收尾之链表的删除、位运算、预处理、宏定义

链表 空链表&#xff1a; 注意&#xff1a;函数不能返回局部变量的地址 操作&#xff1a; 1.创建空链表 2.头插 3.尾插 4.链表遍历 5.链表的长度 free&#xff1a;释放 删除&#xff1a; 头删 void popFront(struct Node *head) { //1.p指针变量指向首节点 //2.断…

康姿百德床垫价格合理功效好,用科技力量守护您的睡眠健康

现代生活中&#xff0c;优质睡眠的观念已深入人心。人们渐渐认识到&#xff0c;一个舒适的床垫不仅仅是睡眠的工具&#xff0c;更是健康的守护者。很多朋友在选购床垫一掷千金&#xff0c;却找不到一款合适的床垫。康姿百德床垫是专为提升睡眠质量研发的床垫&#xff0c;成为了…

网络安全全栈培训笔记(60-服务攻防-中间件安全CVE复现WeblogicJenkinsGlassFish)

第60天 服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish 知识点: 中间件及框架列表: lIS,Apache,Nginx,Tomcat,Docker,Weblogic,JBoos,WebSphere,Jenkins, GlassFish,Jira,Struts2,Laravel,Solr,Shiro,Thinkphp,Sprng,Flask,jQuery 1、中间件-Web…

Portainer访问远程Docker (TLS加密)

前言&#xff1a; docker的2375端口&#xff0c;出于安全性考虑即(Docker Remote API未授权访问漏洞)&#xff0c;是不开放的&#xff0c;如果想要管理远程docker&#xff0c;可以使用TLS机制来进行访问&#xff0c;这里以Portainer访问连接为例 文章参考&#xff1a;https://b…

外卖,也可以“聚合”

文章首发于微信公众号:PenguinPay &#xff0c;欢迎关注。 一、背景 1.1 订单来源 在过去&#xff0c;商家普遍使用传统POS收银软件进行线下店面收银&#xff0c;可以在一定程度上提升收银效率。 之后随着O2O外卖渠道的发展&#xff0c;越来越多的商家选择在线上平台运营门店…

吸猫毛空气净化器哪个好?推荐除猫毛效果好的宠物空气净化器品牌

如今&#xff0c;越来越多的家庭选择养宠物&#xff0c;使家庭变得更加温馨。然而&#xff0c;养宠物可能会带来异味和空气中的毛发增多&#xff0c;这可能会成为一大困扰&#xff0c;并对健康造成问题。 为了不让家里充斥着异味&#xff0c;特别是来自宠物便便的味道&#xf…

DATAX改造支持geometry类型数据同步

数据库使用postgresql安装了postgis插件存储了geometry空间数据&#xff0c;想使用datax做数据同步&#xff0c;但datax本身不支持geometry类型数据&#xff0c;如何改造呢&#xff1f; 1.首先下载已改造支持geometry类型的datax引擎&#xff0c;下载地址 https://download.c…

《区块链简易速速上手小册》第5章:智能合约(2024 最新版)

文章目录 5.1 智能合约的概念5.1.1 智能合约的基础知识5.1.2 主要案例&#xff1a;去中心化金融&#xff08;DeFi&#xff09;平台5.1.3 拓展案例 1&#xff1a;智能合约在供应链管理中的应用5.1.4 拓展案例 2&#xff1a;智能合约在房地产交易中的应用 5.2 智能合约的应用案例…

函数重载你真的了解吗?

1.什么叫函数重载&#xff1f; 函数重载&#xff08;Function Overloading&#xff09;是指在同一个作用域内&#xff0c;允许定义多个具有相同名称但参数列表不同的函数。具体而言&#xff0c;函数重载允许你定义同名的函数&#xff0c;但这些函数应该有不同的参数类型、参数个…

代码随想录算法训练营Day44|完全背包理论基础、518.零钱兑换II、377. 组合总和 Ⅳ

目录 完全背包理论基础 完全背包问题 算法实现 518.零钱兑换II 前言 思路 377. 组合总和 Ⅳ 前言 思路 算法实现 总结 完全背包理论基础 题目链接 文章链接 完全背包问题 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是…