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

【连续学习之SSL算法】2018年论文Selfless sequential learning

1 介绍

年份:2018

期刊: arXiv preprint
Aljundi R, Rohrbach M, Tuytelaars T. Selfless sequential learning[J]. arXiv preprint arXiv:1806.05421, 2018.

本文提出了一种名为SLNID(Sparse coding through Local Neural Inhibition and Discounting)的正则化算法,其核心原理是通过模拟大脑中的侧抑制机制,在神经网络中鼓励表示稀疏性,即在网络层级上抑制同时激活的神经元,从而实现对新任务学习时保留网络容量以减少对先前任务的遗忘,并提高序列学习的性能。本文算法属于基于正则化的算法,因为它通过引入一个新的正则化项来鼓励神经网络在表示层面上保持稀疏性,同时考虑了神经元的重要性,以减少对先前任务的干扰。

2 创新点

  1. 自less序列学习(Selfless Sequential Learning)概念
    • 提出了自less序列学习的概念,强调在学习过程中不仅要考虑当前任务,还要为未来任务预留模型容量。
  2. 基于侧抑制的正则化策略
    • 受到大脑中侧抑制机制的启发,提出了一种新的正则化方法,通过惩罚同时激活的神经元来鼓励表示稀疏性。
  3. 局部神经抑制(Local Neural Inhibition)
    • 为了适应复杂任务,提出了局部神经抑制的概念,即只在局部邻域内抑制其他神经元的活动,而不是在整个层级上。
  4. 神经元重要性权重(Neuron Importance for Discounting Inhibition)
    • 引入了神经元重要性的概念,用于调整正则化项,以避免对先前任务中重要的神经元施加抑制,从而减少对旧任务的干扰。
  5. 稀疏编码通过局部神经抑制和折扣(SLNID)
    • 结合了上述概念,提出了SLNID正则化方法,该方法在保持表示稀疏性的同时,允许对先前任务重要的神经元进行折扣处理。
  6. 实验验证
    • 在多个数据集(包括Permuted MNIST、CIFAR和Tiny Imagenet)上验证了所提方法的有效性,并与现有的终身学习(Lifelong Learning, LLL)方法进行了比较,显示出一致的性能提升。
  7. 与现有LLL方法的兼容性
    • 展示了SLNID正则化方法可以与现有的基于重要参数保持的LLL方法(如EWC和MAS)结合使用,并且能够提升这些方法的性能。

3 算法

3.1 算法原理

  1. 表示稀疏性(Representation Sparsity)
    • 算法强调在神经网络的激活(即神经元的输出)层面上实现稀疏性,而不是在参数层面上。这样做的目的是减少新任务学习时对旧任务的干扰,因为稀疏的表示意味着大部分神经元在任何给定时间都是不活跃的,从而为新任务留出更多的网络容量。
  2. 局部神经抑制(Local Neural Inhibition)
    • 算法通过局部神经抑制来实现表示稀疏性。这意味着算法会抑制在同一局部区域内同时激活的神经元,模仿大脑中的侧抑制过程。这种局部抑制通过一个高斯权重函数实现,该函数根据神经元之间的距离来调整它们之间的相互抑制强度。
  3. 神经元重要性(Neuron Importance)
    • 算法引入了神经元重要性的概念,用于衡量神经元在先前任务中的重要性。这是通过计算神经元输出对损失函数梯度的绝对值累积来实现的。重要的神经元在新任务中不会被抑制,以避免对旧任务的性能造成影响。
  4. 正则化项(Regularization Term)
    • 算法在训练目标函数中加入了一个正则化项,用于惩罚那些同时激活的神经元。这个正则化项考虑了神经元的重要性,并使用高斯函数来实现局部抑制。
  5. 折扣抑制(Discounting Inhibition)
    • 对于那些对先前任务重要的神经元,算法会减少或“折扣”对它们的抑制,以保护旧任务的性能不受学习新任务的影响。
  6. 结合现有方法(Combination with Existing Methods)
    • SLNID正则化项可以与现有的终身学习(Lifelong Learning, LLL)方法结合使用,如EWC(Elastic Weight Consolidation)和MAS(Memory Aware Synapses)。这些方法通过惩罚对先前任务重要参数的改变来减少灾难性遗忘。
  7. 训练过程(Training Process)
    • 在训练过程中,算法会优化一个包含数据损失、参数重要性惩罚项和表示稀疏性正则化项的组合目标函数。这有助于在保持对新任务的学习的同时,保留对旧任务的记忆。

3.2 算法步骤

  1. 初始化网络参数 θ \theta θ和网络容量。
  2. 对于序列中的每个新任务 T n T_n Tn,执行以下步骤:

a. 使用当前任务的数据集训练网络,同时最小化以下目标函数:

min ⁡ θ 1 M ∑ m = 1 M L ( y m , f ( x m , θ n ) ) + λ Ω ∑ k Ω k ( θ n k − θ n − 1 k ) 2 + λ S S L R S S L ( H l ) \min_{\theta} \frac{1}{M} \sum_{m=1}^{M} L(y_m, f(x_m, \theta_n)) + \lambda_{\Omega} \sum_{k} \Omega_k (\theta_{n_k} - \theta_{n-1_k})^2 + \lambda_{SSL} R_{SSL}(H_l) θminM1m=1ML(ym,f(xm,θn))+λΩkΩk(θnkθn1k)2+λSSLRSSL(Hl)

其中, L L L是损失函数, f f f是网络预测函数, θ n − 1 \theta_{n-1} θn1是之前任务学习到的最优参数, λ Ω \lambda_{\Omega} λΩ λ S S L \lambda_{SSL} λSSL是权衡参数, R S S L R_{SSL} RSSL是稀疏表示正则化项。
b. 计算每个神经元的重要性权重 α i \alpha_i αi,通过累积每个神经元输出对损失函数梯度的绝对值来实现:

α i = 1 M ∑ m = 1 M ∣ g i ( x m ) ∣ , g i ( x m ) = ∂ ( L ( y m , f ( x m , θ n ) ) ) ∂ n i \alpha_i = \frac{1}{M} \sum_{m=1}^{M} |g_i(x_m)|, \quad g_i(x_m) = \frac{\partial (L(y_m, f(x_m, \theta_n)))}{\partial n_{i}} αi=M1m=1Mgi(xm),gi(xm)=ni(L(ym,f(xm,θn)))

其中, n i n_i ni是第 i i i个神经元的输出。

c. 应用局部神经抑制和折扣抑制,更新正则化项 R S S L ( H l ) R_{SSL}(H_l) RSSL(Hl)

R S L N I D ( H l ) = 1 M ∑ i , j e − ( α i + α j ) e − ( i − j ) 2 2 σ 2 ∑ m h m i h m j , for  i ≠ j R_{SLNID}(H_l) = \frac{1}{M} \sum_{i,j} e^{-(\alpha_i + \alpha_j)} e^{-\frac{(i-j)^2}{2\sigma^2}} \sum_{m} h_{m_i} h_{m_j}, \quad \text{for } i \neq j RSLNID(Hl)=M1i,je(αi+αj)e2σ2(ij)2mhmihmj,for i=j

其中, h m i h_{m_i} hmi是第 m m m个输入在隐藏层的激活值, σ 2 \sigma^2 σ2是高斯函数的方差,控制局部邻域的范围。它通过考虑神经元的重要性和它们之间的空间距离来调整相互间的抑制强度。

d. 更新网络参数 θ \theta θ,通过梯度下降或其他优化算法最小化目标函数。

  1. 重复步骤 2,直到所有任务都已学习。
  2. 在新任务学习时,通过保留未使用的神经元和减少对重要神经元的干扰,减少对先前任务的遗忘,并提高新任务的学习效率。

4 实验分析

图1展示了参数稀疏(a)与表示稀疏(b)在简单双任务案例中的区别,其中参数稀疏导致第二层及更深层的激活在新任务学习时发生改变,而表示稀疏通过限制激活的神经元数量减少了这种干扰。实验结论表明,表示稀疏(如SLNID方法所采用的)相比于参数稀疏,在序列学习中能更有效地减少新任务对旧任务的干扰,从而提高了模型在连续任务学习中的性能和稳定性。

图2展示了在5个排列MNIST序列上不同正则化技术的比较,其中基于表示的正则化技术(实心条形)表现优于基于参数的正则化(带线条的条形)和激活函数(点状条形),特别是SLNID正则化在最后两个任务上表现最佳,表明其在保留网络容量以学习后续任务方面更为有效。实验结论表明,基于表示的正则化方法,尤其是SLNID,能够在序列学习中更好地维持性能,特别是在学习序列中较晚出现的任务时,这表明这些方法在保留网络容量以适应新任务方面更为有效。

5 思考

(1)参数稀疏与表示稀疏分别是什么意思?有哪些代表性算法?

  1. 参数稀疏(Parameter Sparsity)
    • 定义:参数稀疏指的是网络中的权重参数本身是稀疏的,即许多权重值为零或接近零。这意味着网络中只有少数连接是活跃的,而大部分连接可以被忽略。
    • 代表性算法
      • 权重衰减(Weight Decay):通过在损失函数中添加L1或L2正则化项来实现参数的稀疏性,L1正则化倾向于产生更稀疏的解。
      • Pruning:这是一种后训练技术,通过移除那些对输出影响最小的权重来减少网络的复杂度。
      • Sparse Coding:在信号处理和机器学习中,通过优化使得编码向量中只有少数非零元素,用于特征提取和压缩。
  2. 表示稀疏(Representation Sparsity)
    • 定义:表示稀疏指的是网络在处理输入时产生的激活模式是稀疏的,即在任何给定时间,只有少数神经元处于激活状态,而大多数神经元的激活值接近零。
    • 代表性算法
      • ReLU激活函数:由于ReLU函数将负值置为零,它自然倾向于产生稀疏的激活。
      • L1正则化应用于激活:通过对激活值施加L1正则化,鼓励模型学习到更稀疏的表示。
      • 自编码器(Autoencoders):特别是稀疏自编码器,它们通过正则化项强制编码表示为稀疏形式。
      • 文章中提到的SLNID:通过局部神经抑制和折扣抑制来实现表示稀疏,减少新任务学习时对旧任务的干扰。

相关文章:

【连续学习之SSL算法】2018年论文Selfless sequential learning

1 介绍 年份:2018 期刊: arXiv preprint Aljundi R, Rohrbach M, Tuytelaars T. Selfless sequential learning[J]. arXiv preprint arXiv:1806.05421, 2018. 本文提出了一种名为SLNID(Sparse coding through Local Neural Inhibition and…...

【蓝桥杯——物联网设计与开发】拓展模块5 - 光敏/热释电模块

目录 一、光敏/热释电模块 (1)资源介绍 🔅原理图 🔅AS312 🌙简介 🌙特性 🔅LDR (2)STM32CubeMX 软件配置 (3)代码编写 (4&#x…...

数字IC后端设计实现十大精华主题分享

今天小编给大家分享下吾爱IC社区星球上周十大后端精华主题。 Q1:星主,请教个问题,长tree的时候发现这个scan的tree 的skew差不多400p,我高亮了整个tree的schematic,我在想是不是我在这一系列mux前边打断,设置ignore p…...

高质量配音如何影响游戏的受欢迎度

在游戏行业中,创造沉浸式、引人入胜且令人难忘的体验往往决定了游戏的成功或失败。在影响游戏流行度的众多因素中,配音脱颖而出,成为将叙事与玩家互动连接起来的重要元素。高质量的配音将游戏中的对白转化为游戏的活跃部分,让玩家…...

QWidget应用封装为qt插件,供其他qt应用调用

在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用. 插件优点: 与主程序为同一个进程,免去了进程间繁琐的通信方式,…...

UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作

UE5视频看了不少,但基本都是蓝图如何搞,或者改一下属性,理解UE系统现有组件使用的。一直对C脚本和蓝图之间的关系不是很理解,看到一个视频讲的很好,我也做笔记记录一下。 我的环境是UE5.3.2. 创建UE空项目 我们创建…...

使用FreeNAS软件部署ISCSI的SAN架构存储(IP-SAN)练习题

一,实验用到工具分别为: VMware虚拟机,安装教程:VMware Workstation Pro 17 安装图文教程 FreeNAS系统,安装教程:FreeNAS-11.2-U4.1安装教程2024(图文教程) 二,新建虚…...

Sql Sqserver 相关知识总结

Sql Sqserver 相关知识总结 文章目录 Sql Sqserver 相关知识总结前言优化语句查询(select)条件过滤(Where)分组处理(GROUP BY)模糊查询(like)包含(in)合集&am…...

面试题整理17----K8s中request和limit资源限制是如何实现的

面试题整理17----K8s中request和limit资源限制是如何实现的 1. 资源请求(Resource Requests)2. 资源限制(Resource Limits)3. 总结 在Kubernetes(K8s)中,Pod的资源限制(Resource Lim…...

Spring Boot @Conditional注解

在Spring Boot中,Conditional 注解用于条件性地注册bean。这意味着它可以根据某些条件来决定是否应该创建一个特定的bean。这个注解可以放在配置类或方法上,并且它会根据提供的一组条件来判断是否应该实例化对应的组件。 要使用 Conditional注解时&#…...

jpeg文件学习

相关最全的一篇文章链接:https://www.cnblogs.com/wtysos11/p/14089482.html YUV基础知识 Y表示亮度分量:如果只显示Y的话,图像看起来会是一张黑白照。 U(Cb)表示色度分量:是照片蓝色部分去掉亮度&#x…...

c++基于过程

前言: 笔记基于C黑马程序员网课视频:黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 在此发布笔记,只是为方便学习,不做其他用途,原作者为黑马程序员。 1. C基础 1.1 用Visual Studio写C程…...

FOC软件 STM32CubeMX 使用

1、安装-及相关软件版本 展示版本注意事项:keil MDK和STM32CubeMX版本至少要大于等于图中版本。 2、 Motor Profiler 5.2.0使用方法...

leetcode hot 100 全排列

46. 全排列 已解答 中等 相关标签 相关企业 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int…...

使用qrcode.vue生成当前网页的二维码(H5)

使用npm&#xff1a; npm install qrcode.vue 使用yarn&#xff1a; yarn add qrcode.vue package.json&#xff1a; 实现&#xff1a; <template><div class"code"><qrcode-vue :value"currentUrl" :size"size" render-as&…...

0055. shell命令--useradd

目录 55. shell命令--useradd 功能说明 语法格式 选项说明 选项 退出值 相关文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/skel/ /etc/login.defs /etc/default/useradd 实践操作 注意事项 55. shell命令--useradd 功能说明 useradd 命令是 Lin…...

blender中合并的模型,在threejs中显示多个mesh;blender多材质烘培成一个材质

描述&#xff1a;在blender中合并的模型导出为glb&#xff0c;在threejs中导入仍显示多个mesh&#xff0c;并不是统一的整体&#xff0c;导致需要整体高亮或者使用DragControls等不能统一控制。 原因&#xff1a;模型有多个材质&#xff0c;在blender中合并的时候&#xff0c;…...

vue 本地自测iframe通讯

使用 postMessage API 来实现跨窗口&#xff08;跨域&#xff09;的消息传递。postMessage 允许你安全地发送消息到其他窗口&#xff0c;包括嵌套的 iframe&#xff0c;而不需要担心同源策略的问题。 发送消息&#xff08;父应用&#xff09; 1. 父应用&#xff1a;发送消息给…...

C++:单例模式

创建自己的对象&#xff0c;同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…...

SOME/IP 协议详解——信息格式

文章目录 1. 头部格式1.1 消息 ID&#xff08;Message ID&#xff09;1.2 长度&#xff08;Length&#xff09;1.3 请求 ID&#xff08;Request ID&#xff09;1.4 协议版本&#xff08;Protocol Version&#xff09;&#xff1a;1.5 接口版本&#xff08;Interface Version&am…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

小木的算法日记-多叉树的递归/层序遍历

&#x1f332; 从二叉树到森林&#xff1a;一文彻底搞懂多叉树遍历的艺术 &#x1f680; 引言 你好&#xff0c;未来的算法大神&#xff01; 在数据结构的世界里&#xff0c;“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的&#xff0c;它…...

【UE5 C++】通过文件对话框获取选择文件的路径

目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 &#xff0c;这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器&#xff0c;右键点击 .uproject 文件&#xff0c;选择 "Generate Visual Studio project files"&#xff0c;重…...