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

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

阅读时间: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的范围内。

相关文章:

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

阅读时间&#xff1a;2023-11-23 1 介绍 年份&#xff1a;2017 作者&#xff1a;Friedemann Zenke&#xff0c;巴塞尔大学弗里德里希米歇尔研究所(FMI) Ben Poole&#xff0c;谷歌 DeepMind 研究科学家 期刊&#xff1a; International conference on machine learning. PMLR…...

【软件工程】建模工具之开发各阶段绘图——UML2.0常用图实践技巧(功能用例图、静态类图、动态序列图状态图活动图)

更多示例图片可以参考&#xff1a;&#xff08;除了常见的流程图&#xff0c;其他都有&#xff09; 概念&#xff1a;类图 静态&#xff1a;用例图 动态&#xff1a;顺序图&状态图&活动图 1、【面向对象】UML类图、用例图、顺序图、活动图、状态图、通信图、构件图、部…...

Typora导出word

Typora导出word Typora是一款简洁易用的Markdown编辑器, Pandoc是一个文档转换工具&#xff0c;可以将Markdown格式的文档转换为其他格式&#xff0c;如HTML、PDF等. linux下安装 Pandoc : sudo apt install -y pandoc安装成功后,typora 会自动监测到. 然后 点击文件->…...

CSS 星空按钮

<template><button class="btn" type="button"><strong>星空按钮</strong><div id="container-stars"><div id="stars"></div></div><div id="glow"><div class=…...

Kotlin快速入门系列10

Kotlin的委托 委托模式是常见的设计模式之一。在委托模式中&#xff0c;有两个对象参与处理同一个请求&#xff0c;接受请求的对象将请求委托给另一个对象来处理。与Java一样&#xff0c;Kotlin也支持委托模式&#xff0c;通过关键字by。 类委托 类的委托即一个类中定义的方…...

Docker中配置MySql环境

目录 一、简单安装 1. 首先从Docker Hub中拉取镜像 2. 启动尝试创建MySQL容器&#xff0c;并设置挂载卷。 3. 查看mysql8这个容器是否启动成功 4. 如果已经成功启动&#xff0c;进入容器中简单测试 4.1 进入容器 4.2 登录mysql中 4.3 进行简单添加查找测试 二、主从复…...

智慧文旅:驱动文化与旅游融合发展的新动力

随着科技的快速发展和人们生活水平的提高&#xff0c;文化和旅游的融合成为了时代发展的必然趋势。智慧文旅作为这一趋势的引领者&#xff0c;通过先进的信息技术手段&#xff0c;推动文化与旅游的深度融合&#xff0c;为产业的发展注入新的活力。本文将深入探讨智慧文旅如何成…...

wordpress怎么做产品展示站?推荐使用MOK主题和ent主题

大多数WordPress站点都是个人博客网站&#xff0c;主要以文章性质的图文为主。不过部分站长想要用WordPress搭建一个产品展示站&#xff0c;应该怎么做呢&#xff1f; 其实&#xff0c;WordPress可以用来建立各种各样的博客网站&#xff0c;包括个人博客、企业网站、商城、影视…...

8、应急响应-战前溯源反制主机蜜罐系统HFishHIDSElkeidWazuh

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正 目录 背景&#xff1a; 一、潮源反制-平台部署-蜜罐-Hfish 二、溯源反制-平台部署-HIDS-Wazuh 三、溯源反制-平台部署-HlDS-Elkeid-hub 背景&#xff1a; 攻击者对服务器存在着各种威胁行为&#xff0c;作为安全人员&am…...

LeetCode:283. 移动零

283. 移动零 1&#xff09;题目2&#xff09;代码方法一&#xff1a;两层for循环方法二&#xff1a;使用双指针 3&#xff09;结果方法一结果方法二结果 1&#xff09;题目 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的…...

游戏开发丨基于Panda3D的迷宫小球游戏

文章目录 写在前面Panda3D程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于panda3d的迷宫中的小球游戏 所需环境 pythonpycharm或anacondapanda3d 下载地址 https://download.csdn.net/download/m0_68111267/88792121 Panda3D Panda3D是一种开放源代码…...

微信小程序 安卓/IOS兼容问题

一、背景 在开发微信小程序时&#xff0c;不同的手机型号会出现兼容问题&#xff0c;特此记录一下 二、安卓/IOS兼容问题总结 2.1、new Date()时间转换格式时&#xff0c;IOS不兼容 问题&#xff1a;在安卓中时间格式2024-1-31 10:10:10&#xff0c;但是在iOS中是不支持 &q…...

结构体--共用体--枚举 之难点——链表 奋力学习嵌入式的第十六天

结构体 注意&#xff1a; 1.结构体类型 可以定义在 函数里里面 但是此时作用域就被限定在该函数中 2.结构体定义形式 //形式一 限定一类型 后定义变量 struct stu { ... }; struct stu s; //形式二 定义类型的同时 定义变量 struct stu { ... }s1,s2,*s3,s4[10]; struc…...

猜凶手

日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff1a;C在胡说 已知3个人说了真话&#xff0c;1个人说的是假话。 现在请根据这…...

python-自动化篇-运维-实现读取日志文件最后一行的时间

文章目录 1. 使用Python打开日志文件2.python读取文件最后一行两种方式3.读取当前时间&#xff0c;进行两者相减&#xff0c;超时报警4.将内容推送到企业微信5. 关闭日志文件整体代码 1. 使用Python打开日志文件 在开始实时读取日志文件之前&#xff0c;我们首先需要打开一个日…...

QT SQL

QT SQL模块提供数据库编程的支持&#xff0c;支持多种常见的数据库&#xff1a;MySQL\Oracle\MS SQL Server\SQLite等。SQL模块包含多个类&#xff0c;可以实现&#xff1a;数据库连接、SQL语句执行、数据获取与界面显示 等功能。数据 与 界面间用Model\View架构。 一、 二、Q…...

C++(20):通过concept及nlohmann将数据转换为字符串

nlohmann可以自动兼容将C++的很多原生类型转换为json,甚至自定义类型也不需要太复杂的操作就可以转换为json,可以利用这一点将数据转换为string: #include <nlohmann/json.hpp> #include <string> #include <vector> #include <tuple> #include <…...

Transformer 自然语言处理(四)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十章&#xff1a;从头开始训练变换器 在本书的开头段落中&#xff0c;我们提到了一个名为 GitHub Copilot 的复杂应用&#xff0c;它使用类似 GPT 的…...

BRAIN :帕金森病中与痴呆相关的动态功能连接改变

fMRI成像手段由于其在高空间分辨率的优势获得了疾病研究的青睐&#xff0c;越来越多的疾病研究使用fMRI手段来通过找到特异的神经标记物从而提升临床治疗的诊断效力以及准确率。但是&#xff0c;功能磁共振受到其时间分辨率相对较低这一缺点的影响&#xff0c;在对疾病时间特异…...

harmony os系统

因为实验室配的是Windows电脑&#xff0c;最近在搜索marginnote有没有windows的版本&#xff0c;不然好多功能相似的软件在使用不能信息同步是挺麻烦的。搜索结果当然还是没有对应版本。那我退而求其次&#xff0c;看看怎么在Windows上使用marginnote&#xff0c;结果大家意见基…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

python打卡day49@浙大疏锦行

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

当下AI智能硬件方案浅谈

背景&#xff1a; 现在大模型出来以后&#xff0c;打破了常规的机械式的对话&#xff0c;人机对话变得更聪明一点。 对话用到的技术主要是实时音视频&#xff0c;简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术&#xff0c;开发自己的大模型。商用方案多见为字节、百…...

接口 RESTful 中的超媒体:REST 架构的灵魂驱动

在 RESTful 架构中&#xff0c;** 超媒体&#xff08;Hypermedia&#xff09;** 是一个核心概念&#xff0c;它体现了 REST 的 “表述性状态转移&#xff08;Representational State Transfer&#xff09;” 的本质&#xff0c;也是区分 “真 RESTful API” 与 “伪 RESTful AP…...

Q1起重机指挥理论备考要点分析

Q1起重机指挥理论备考要点分析 一、考试重点内容概述 Q1起重机指挥理论考试主要包含三大核心模块&#xff1a;安全技术知识&#xff08;占40%&#xff09;、指挥信号规范&#xff08;占30%&#xff09;和法规标准&#xff08;占30%&#xff09;。考试采用百分制&#xff0c;8…...

C++ 使用 ffmpeg 解码 rtsp 流并获取每帧的YUV数据

一、简介 FFmpeg 是一个‌开源的多媒体处理框架‌&#xff0c;非常适用于处理音视频的录制、转换、流化和播放。 二、代码 示例代码使用工作线程读取rtsp视频流&#xff0c;自动重连&#xff0c;支持手动退出&#xff0c;解码并将二进制文件保存下来。 注意&#xff1a; 代…...