【博士每天一篇文献-算法】Fearnet Brain-inspired model for incremental learning

阅读时间:2023-12-16

1 介绍

年份:2017
作者:Ronald Kemker,美国太空部队;Christopher Kanan,罗切斯特大学
期刊: arXiv preprint
引用量:520
Kemker R, Kanan C. Fearnet: Brain-inspired model for incremental learning[J]. arXiv preprint arXiv:1711.10563, 2017.
image.png
image.png
提出一种名为 FearNet 的新型神经网络模型,这个模型受到大脑记忆机制的启发,用于解决增量学习中的灾难性遗忘问题。FearNet 模型不存储先前的例子,使其具有内存效率。它使用一个由大脑启发的双记忆系统,新记忆从受海马体复合体启发的网络巩固到受内侧前额叶皮层启发的长期存储网络。记忆巩固的灵感来自于睡眠期间发生的过程。FearNet 还使用一个受基底外侧杏仁核启发的模块来确定在回忆时使用哪个记忆系统。

2 创新点

  1. FearNet 的架构包括三个神经网络:一个受海马体复合体启发的用于快速回忆的近期记忆系统,一个受内侧前额叶皮层启发的用于长期存储的网络,以及一个受基底外侧杏仁核启发的用于确定使用哪个记忆系统进行回忆的网络。
  2. 受到睡眠期间记忆重放的启发,FearNet 使用生成式自编码器进行伪重放,这通过生成先前学习的例子并在巩固期间与新信息一起重放,减轻了灾难性遗忘,这个过程不涉及存储以前的训练数据。FearNet 使用了一个受基底外侧杏仁核启发的模块来决定在特定情况下应该使用哪个记忆系统进行回忆,这增加了模型的灵活性和准确性。
  3. FearNet 在大型图像(CIFAR-100、CUB-200)和音频数据集(AudioSet)上取得了最先进的结果,并且具有相对较小的内存占用,展示了双记忆模型如何被扩展。

3 相关研究

  1. 重放(Rehearsal)方法:通过在新学习会话中混合旧样本来模拟独立同分布条件,以减少灾难性遗忘。这种方法需要存储所有训练数据。 参考论文:Hetherington P A, Seidenberg M S. Is there “catastrophic interference” in connectionist networks?[C]//11th Annual Conference Cognitive Science Society Pod. Psychology Press, 2014: 26-33.
  2. 伪重放(Pseudorehearsal):由 Robins (1995) 提出,不重放过去的训练数据,而是生成新的例子。这种方法启发了 FearNet 的记忆巩固方法。 参考文献:Robins A. Catastrophic forgetting, rehearsal and pseudorehearsal[J]. Connection Science, 1995, 7(2): 123-146.
  3. PathNet:使用进化算法找到 DNN 的最优路径,然后冻结该路径上的权重。它假设每个学习会话都看到所有类别,不适合增量类别学习。 参考文献:Fernando C, Banarse D, Blundell C, et al. Pathnet: Evolution channels gradient descent in super neural networks[J]. arXiv preprint arXiv:1701.08734, 2017.
  4. Elastic Weight Consolidation (EWC):一种正则化方案,将可塑性重定向到对之前学习会话不太重要的权重上。 参考论文:Kirkpatrick J, Pascanu R, Rabinowitz N, et al. Overcoming catastrophic forgetting in neural networks[J]. Proceedings of the national academy of sciences, 2017, 114(13): 3521-3526.
  5. Fixed Expansion Layer (FEL) 模型:通过使用稀疏更新来减轻灾难性遗忘,具有连接性约束的第二隐藏层(FEL层)在训练期间不更新。 参考论文:Coop R, Mishtal A, Arel I. Ensemble learning in fixed expansion layer networks for mitigating catastrophic forgetting[J]. IEEE transactions on neural networks and learning systems, 2013, 24(10): 1623-1634.
  6. GeppNet:使用自组织映射(SOM)作为长期记忆,输入通过二维格子重新组织,并通过简单的线性层进行分类。 参考论文:Gepperth A, Karaoguz C. A bio-inspired incremental learning architecture for applied perceptual problems[J]. Cognitive Computation, 2016, 8(5): 924-934.
  7. iCaRL 框架:一种增量类别学习框架,使用 DNN 进行监督表示学习,通过存储的示例和学习会话数据更新 DNN。 参考论文:Rebuffi S A, Kolesnikov A, Sperl G, et al. icarl: Incremental classifier and representation learning[C]//Proceedings of the IEEE conference on Computer Vision and Pattern Recognition. 2017: 2001-2010.

4 算法

4.1 模型结构

image.png
图1展示了FearNet模型的结构,它由三个受大脑启发的模块组成,这些模块分别对应于人类大脑中的不同部位,具体如下:

  1. mPFC (Medial Prefrontal Cortex, 内侧前额叶皮层):这部分负责长期存储(long-term storage)。在FearNet中,mPFC作为一个神经网络,被训练来重建其输入(使用对称的编码器-解码器,即自编码器),并计算分类概率。mPFC的设计允许它通过自编码器生成伪示例,这有助于在不需要存储先前训练样本的情况下进行记忆巩固。
  2. HC (Hippocampal Complex, 海马体复合体):这部分负责近期存储(recent storage)。在FearNet中,HC被建模为一个概率神经网络,它使用存储的训练样本来计算输入特征向量属于某个类别的条件概率。一旦HC中的例子被巩固到mPFC,它们就会被从HC中移除。
  3. BLA (Basolateral Amygdala, 基底外侧杏仁核):这部分用于决定在回忆时使用mPFC还是HC。BLA在预测时使用,以确定应该使用短期记忆系统还是长期记忆系统来进行输入的分类。BLA的输出是一个介于0和1之间的值,值为1表示应该使用mPFC进行分类。

FearNet通过这三个模块的交互来实现增量学习,其中mPFC和HC分别处理长期和近期的记忆存储,而BLA则在预测阶段决定使用哪个记忆系统。这种设计模仿了大脑如何处理和巩固记忆,使得FearNet能够在学习新类别的同时,减少对旧类别知识的遗忘。
image.png
FearNet模型中两个子系统,分别是内侧前额叶皮层(mPFC)和基底外侧杏仁核(BLA)。

  1. mPFC (Medial Prefrontal Cortex, 内侧前额叶皮层) 子系统:
    • 负责长期存储远程记忆(long-term storage of remote memories)。
    • 在FearNet中,mPFC是一个深度神经网络(DNN),它不仅被训练来使用对称的编码器-解码器结构重建其输入(即自编码器),而且还用于计算分类概率。
    • 自编码器的重建能力允许mPFC生成伪样本,这些样本用于在不需要存储实际训练数据的情况下进行记忆巩固。
  2. BLA (Basolateral Amygdala, 基底外侧杏仁核) 子系统:
    • 在预测时使用,以确定记忆应该从短期记忆还是长期记忆中召回。
    • BLA作为决策模块,帮助FearNet在进行预测时选择最合适的记忆系统。它的输出将影响是使用HC(海马体复合体,处理近期记忆)还是mPFC(处理长期记忆)来进行特定输入的分类。

在FearNet模型中,BLA的作用是动态选择最合适的记忆系统来处理当前的输入数据。这种设计模仿了大脑如何处理记忆的检索过程,即在需要时选择从短期记忆或长期记忆中提取信息。通过这种方式,FearNet能够灵活地处理新信息和旧信息,减少灾难性遗忘,同时提高增量学习的性能。

4.2 算法步骤

(1)训练阶段

  1. 初始化mPFC:使用基础知识集初始化mPFC网络。
  2. 存储类统计信息:为基础知识中的每个类别存储均值(µt)和协方差矩阵(Σt)。
  3. 循环学习会话:对于T/2到T的每个类别c:
    • 将类别c的数据(X, y)存储在HC(海马体复合体)中。
    • 如果c满足睡眠条件(例如,每K个学习会话后):
      • 使用HC中的数据和mPFC解码器生成的伪示例对mPFC进行微调。
      • 更新所有见过的类别的均值和协方差矩阵。
      • 清除HC中的数据。
    • 否则:
      • 更新BLA(基底外侧杏仁核)网络。

(2)预测阶段

  1. 输入数据:接收输入数据X。
  2. BLA预测:BLA网络预测使用HC还是mPFC进行回忆的概率A(X)。
  3. 计算ψ值:计算ψ值,它是HC预测的最高概率与BLA输出的组合。
  4. 决策回忆
    • 如果ψ值大于mPFC预测的最高概率,则使用HC进行回忆。
    • 否则,使用mPFC进行回忆。
  5. 输出预测:返回回忆网络的预测结果作为最终输出。

5 实验分析

(1)基于蒸馏回放 的ICaRL算法
image.png
说明在增量学习中,保留足够数量的示例对于维持对先前学习类别的记忆至关重要。
(2)不同的增量学习模型性能
image.png
image.png

  1. X轴:表示模型训练过程中所见到的类别数量。随着模型学习越来越多的类别,X轴的值增加。
  2. Y轴:表示平均测试准确率,即模型对所有至今见过的类别的测试样本正确分类的比例。
  3. 曲线:每条曲线代表一个不同的模型或基线方法,包括:
  • Offline MLP:这是一个非增量学习基线,它一次性接收所有训练数据。
  • 1-Nearest Neighbor (1-NN):最近邻算法,它通过存储所有训练数据来避免遗忘。
  • GeppNet+STM:GeppNet的变体,使用固定大小的短期记忆缓冲区。
  • GeppNet:基于自组织映射的增量学习模型。
  • FEL(Fixed Expansion Layer):使用稀疏更新来减少灾难性遗忘。
  • iCaRL(Incremental Classifier and Representation Learning):一种特别为增量类别学习设计的框架。
  • FearNet:本文提出的模型,使用双记忆系统和伪重演机制。
  1. 评价指标:
  • Ω b a s e \Omega_{base} Ωbase:衡量模型对基础知识(即早期学习过的类别)的保持能力。
  • Ω n e w \Omega_{new} Ωnew衡量模型对最新学习类别的测试准确率。
  • Ω a l l \Omega_{all} Ωall衡量模型对所有至今见过的类别的综合测试准确率。
  1. 实验结论
  • FearNet的优越性能:FearNet在CIFAR-100、CUB-200和AudioSet数据集上的所有类别至今所见的平均测试准确率(Mean-class test accuracy)表现出色,这表明它在增量学习过程中有效地减少了灾难性遗忘。
  • 减少灾难性遗忘:FearNet的设计显著降低了学习新类别时对旧类别知识遗忘的风险。这一点从图4中FearNet曲线相对于其他方法保持较高准确率可以看出。
  • 与现有方法的比较:表2中列出的FearNet与其他方法相比,通常具有更高的 Ω b a s e \Omega_{base} Ωbase Ω a l l \Omega{all} Ωall值,这表明FearNet在保持基础知识和整合新知识方面更有效。
  • FearNet的内存效率:FearNet不存储先前训练的示例,而是使用生成模型来模拟旧的记忆,这使得它在内存使用上更加高效。

(3)验证BLA的有效性
image.png
展示了FearNet在使用BLA进行网络选择与已知记忆位置的理想情况(预言者)之间的性能差异。BLA能够较好地预测应该使用mPFC(长期记忆)还是HC(近期记忆)进行回忆,这表明BLA在实际应用中是有效的。
(4)记忆巩固对于维持长期记忆的稳定性分析
image.png

  • X轴:表示在FearNet模型中进行记忆巩固(或称为“睡眠”)的频率。这个频率指的是模型在连续学习新类别之前,将新学到的信息从短期记忆(HC)转移到长期记忆(mPFC)的次数。
  • Y轴:表示性能指标,是平均测试准确率或其他衡量模型性能的指标。
  • 曲线:展示了随着睡眠频率减少(即学习更多类别后进行记忆巩固的间隔变长),FearNet在不同性能指标上的变化趋势。

图中显示了随着睡眠频率的减少(即记忆巩固间隔的增加),FearNet的性能在某些方面有所下降。这表明定期进行记忆巩固对于维持长期记忆的稳定性是重要的。
(5)多模态学习能力
截屏2024-06-23 下午4.41.42.png
表4显示了FearNet在处理来自不同模态(如图像和音频)的数据时的学习能力。这表明FearNet能够适应并学习多种类型的输入数据。Ωbase指标反映了模型对基础知识的保留能力。实验发现,当基础知识集较大或更具代表性时,模型在增量学习过程中对基础知识的保留更好。Ωnew指标衡量了模型对新类别的学习能力。实验结果表明,即使在增量学习新模态的数据时,FearNet也能够有效地学习新知识。Ωall指标提供了模型在整个测试集上的整体性能的视图。这揭示了FearNet在整合新旧知识方面的能力。
(6)内存需求
截屏2024-06-23 下午4.43.40.png
FearNet显示出比其他模型更低的内存需求,这表明它在内存使用上更为高效。
(7)对角线协方差矩阵(Diagonal Covariance Matrix)代替完整的协方差矩阵(Full Covariance Matrix)对FearNet模型性能的影响。
截屏2024-06-23 下午4.44.27.png
如果性能指标下降不多,这表明模型对协方差矩阵类型的敏感度较低。使用对角线协方差矩阵通常会减少模型的内存占用,因为它只存储方差而不是完整的协方差矩阵。如果性能下降可接受,这可能是一个内存优化的有效策略。这个实验说明了在FearNet模型中使用对角线协方差矩阵作为协方差矩阵简化的一种可能方法,以及这种方法对模型性能和内存效率的潜在影响。

6 思考

(1)结构比较复杂,分为三个模块,模块之间有生物启发的复杂关系。
(2)论文的“睡眠”是一个比喻,指的是FearNet在一定数量的学习会话后进行记忆巩固的过程。

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

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

相关文章

基于Java中的SSM框架实现萌宠优购系统项目【项目源码】计算机毕业设计

基于Java中的SSM框架实现萌宠优购系统演示 研究背景 现在人们在生活中、工作中压力与日俱增,而宠物也在人们的生活扮演者越来越重要的角色。然而,对于一些宠物爱好者来说,宠物早已经是他们生活中不可或缺的一部分。因为宠物能与人有心灵的沟…

计算机进入安全模式

最近老是蓝屏------显示是REGISTRY_ERROR(注册表错误) 重启之后选择进入安全模式 我重启之后,按F8进不了安全模式。通过另一种方式进入,按住Shift键再按重启 重启之后出现以下界面 选择疑难解答,再选择高级选项 在高…

20240623日志:大模型压缩-sliceGPT

context 1. 剪枝方案图释2. 正交矩阵Q 1. 剪枝方案图释 Fig. 1.1 剪枝方案 图中的阴影是表示丢弃掉这部分数据。通过引入正交矩阵 Q Q Q使 Q ⊤ Q Q Q ⊤ I \mathrm{Q}^\top\mathrm{Q}\mathrm{Q}\mathrm{Q}^\top\mathrm{I} Q⊤QQQ⊤I,来大量缩减 X X X的列数和 W …

androidx.preference框架介绍

一,概要 Preference作为setting核心框架,笔者对此框架做一个简单的解析,androidx.preference本质是对设置领域提供了一层View封装,以android view本身的策略模式进行二次开发,将常用的一些设置样式封装到不同的Preference中,以达到快速开发设置相关功能。并且,此风格与…

将 MinIO 与 Keycloak OIDC 集成

Keycloak是一种单点登录解决方案。使用Keycloak,用户使用Keycloak而不是MinIO进行身份验证。如果没有Keycloak,您将不得不为每个用户创建一个单独的身份 - 从长远来看,这将很麻烦。您需要一个集中身份解决方案来管理 MinIO 的身份验证和授权。…

OpenHarmony 5.0 纯血鸿蒙系统

OpenHarmony-v5.0-Beta1 版本已于 2024-06-20 发布。 OpenHarmony 5.0 Beta1 版本标准系统能力持续完善,ArkUI 完善了组件通过 C API 调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力…

【面试题】漏洞复现的步骤

漏洞复现是信息安全工作中非常重要的一个环节,它通过对已发现的漏洞进行模拟攻击,来验证漏洞的存在性并深入理解其影响。以下是漏洞复现的主要步骤,并尽量以分点表示和归纳的形式呈现: 1. 收集漏洞信息 从漏洞公告、CVE&#xf…

Vue2中的render函数

Vue 推荐在绝大多数情况下使用模板来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力。这时你可以用render渲染函数,它比模板更接近编译器 。 在Vue2中,render函数是一个可选的、用于生成虚拟DOM的特殊函数。它是Vu…

国际网络专线怎么开通?

在全球化日益加速的今天,企业越来越需要稳定、高效的网络来支撑他们的跨国业务。国际网络专线,作为外贸企业、出海企业等拓展全球业务的关键基础设施,其重要性不言而喻。那么,企业如何才能开通国际网络专线呢?本文将详…

Amazon Q Developer 实战:从新代码生成到遗留代码优化(下)

简述 本文是使用 Amazon Q Developer 探索如何在 Visual Studio Code 集成编程环境(IDE),从新代码生成到遗留代码优化的续集。在上一篇博客《Amazon Q Developer 实战:从新代码生成到遗留代码优化(上)》中…

docker常见问题-持续更新

docker 启动的问题解决 解决: 下载更新linux的win子系统, 重启就可以 WSL 2 installation is incomplete. 更加报错提示,猜测可能是我们使用的wsl2版本老了,需要我们自己手动更新一下,我们根据提示去微软官网下载最新版的wsl2安装后即可正常打开。更新包下载链接。 https://ws…

HBase:大数据时代的分布式存储利器

HBase:大数据时代的分布式存储利器 HBase:大数据时代的分布式存储利器1. HBase简介2. HBase特点3. HBase应用场景4. 总结 HBase:大数据时代的分布式存储利器 随着互联网和大数据技术的飞速发展,数据存储和计算需求呈现出爆炸式增…

Arduino - 串行绘图仪

Arduino - Serial Plotter Arduino - 串行绘图仪 In this tutorial, we will learn how to use the Serial Plotter on Arduino IDE, how to plot the multiple graphs. 在本教程中,我们将学习如何在Arduino IDE上使用串行绘图仪,如何绘制多个图形。 A…

webstorm无法识别@路径的问题,左键无法跳转

在项目根目录下创建 webstorm.config.js use strict; const webpackConfig require(vue/cli-service/webpack.config.js); module.exports webpackConfig;webstorm设置里找到以下位置,引入新建的 webstorm.config.js即可,不生效把webstorm重启一下

android Studio 无线开发调试: PC机远程安卓电脑 免费

背景 公司的安卓机比较大,还有连接着串口设备不好挪动。 但是遇到问题调试很麻烦。想找到一套远程调试方法。 实现 要求: adb android Studio 2023.3.1 安卓机IP:1928.168.1.228 直接用adb远程连接:adb connect 1928.168.1.228 默认端口…

HarmonyOS Next开发学习手册——ExtensionAbility

概述 EmbeddedUIExtensionAbility 是EMBEDDED_UI类型的ExtensionAbility组件,提供了跨进程界面嵌入的能力。 EmbeddedUIExtensionAbility需要和 EmbeddedComponent 一起配合使用,开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的Embed…

读AI新生:破解人机共存密码笔记11智能爆炸

1. 大猩猩问题 1.1. 大约1000万年前,现代大猩猩的祖先创造了进化出现代人类的遗传谱系 1.1.1. 它们的物种基本上没有未来,除了我们屈尊所允许它们拥有的未来 1.1.2. 我们不希望在超级智能机器面前处于类似的地位 1.2. 大猩猩问题就是人类是否能在一个…

电脑提示msvcr120.dll丢失怎样修复

文件功能与重要性:msvcr120.dll 文件的功能和重要性体现在多个方面,以下是对其核心功能的详细分析: 运行时支持 msvcr120.dll 提供了运行时环境,使得使用 Microsoft Visual C 2013 编译的程序能够调用必要的运行时函数。这些函数…

Mysql----表的约束

提示:以下是本篇文章正文内容,下面案例可供参考 一、表的约束 表的约束:表中一定要有约束,通过约束让插入表中的数据是符合预期的。它的本质是通过技术手段,让程序员插入正确的数据,约束的最终目标是保证…

Java | Leetcode Java题解之第189题轮转数组

题目: 题解: class Solution {public void rotate(int[] nums, int k) {k % nums.length;reverse(nums, 0, nums.length - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.length - 1);}public void reverse(int[] nums, int start, int end) {whil…