【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer
阅读时间:2023-12-20
1 介绍
年份:2022
作者:Lina M. Tran,Adam Santoro,谷歌DeepMind
期刊: Proceedings of the National Academy of Sciences
引用量:13
代码:https://github.com/linamnt/dnn-neurogenesis
Tran L M, Santoro A, Liu L, et al. Adult neurogenesis acts as a neural regularizer[J]. Proceedings of the National Academy of Sciences, 2022, 119(45): e2206704119.
本文探讨成人神经发生(adult neurogenesis)在大脑中的作用,特别是它如何作为一种神经调节器来促进学习过程中的泛化能力。类似神经发生的进程作为一种正则化手段,促进类别学习任务中的泛化。在一个用于训练CIFAR-10对象识别数据集的卷积神经网络(CNN)中模拟了神经发生,将其视为一种替换/更替机制,即在模型学习对10个不同类别的对象进行分类时,随机选择一小部分隐藏层神经元的权重被重新初始化为新值。研究发现,与没有神经发生的网络相比,神经发生增强了在未见过的测试数据上的泛化能力。但是实验表明随机选择和针对性选择在性能上没有显著差异。
2 创新点
- 神经发生作为正则化机制的假设:提出成人神经发生可能在大脑中起到类似于机器学习中正则化技术的作用,这是一种新的视角,将神经科学的理论与机器学习的技术联系起来。
- 计算模型的应用:使用计算模型来模拟神经发生过程,这种方法允许研究者在控制条件下测试神经发生对学习泛化能力的影响。
- 卷积神经网络(CNN)的模拟:在CNN中模拟神经发生,通过重新初始化隐藏层中一小部分神经元的权重来模拟新神经元的整合,这种方法提供了一种新的神经网络训练策略。
- 神经发生的替换/更替机制:将神经发生视为一种替换机制,这种机制在神经网络中通过随机选择并重新初始化权重来模拟新神经元的加入,这与以往研究不同,它专注于权重的动态变化。
- 与传统正则化方法的比较:将神经发生作为一种正则化手段与传统的正则化技术(如dropout、权重衰减和神经噪声)进行了比较,发现神经发生至少与传统正则化手段一样有效。
- 神经兴奋性的调节:研究了通过增加新神经元的激活来模拟其高兴奋性是否能够进一步促进网络的正则化和性能提升。
- 针对性神经发生的探索:探索了是否有可能通过针对性地选择哪些神经元进行更替来提高网络性能,虽然结果表明随机选择和针对性选择在性能上没有显著差异,但这为未来的研究提供了新的方向。
- 网络鲁棒性的分析:研究了神经发生对网络依赖于单个神经元与分布式编码的影响,发现神经发生可能通过不同于减少对单个神经元依赖的机制来提高泛化能力。
- 实验代码的公开:作者将实验的代码公开在GitHub上,这为其他研究者复现实验结果和进一步研究提供了便利。
3 相关研究
论文《Hoel E. The overfitted brain: Dreams evolved to assist generalization[J]. Patterns, 2021, 2(5).》和《Richards, B.A., & Frankland, P.W. (2017). The Persistence and Transience of Memory. Neuron, 94, 1071-1084.》提出神经噪声可能是大脑执行正则化以更好地提取经验的统计规律性的一种策略。
4 算法
- CNN架构:使用的CNN包含多个卷积层和池化层,后接全连接层。输入层接收32x32像素的RGB图像,然后数据通过卷积层和池化层进行特征提取,最终通过全连接层进行分类。
- 神经发生模拟:在CNN的隐藏层中模拟神经发生,通过在训练过程中随机选择一小部分神经元,并重新初始化它们的权重来模拟新神经元的整合。
- 替换/更替机制:神经发生被建模为一种“替换/更替”机制,其中选定的神经元的输入和输出权重被重置为新值,而成熟神经元的连接保持不变。选定的方式有随机、权重大的部分、权重小的部分三种方式。
- 训练过程:使用随机梯度下降进行网络训练。在训练过程中,神经发生以持续的方式实施,即在每个mini-batch更新后有一定概率发生神经元的更替。
- 超参数调整:确定神经发生发生频率和每次更替事件中要重置的神经元数量,使用贝叶斯优化进行超参数调整。
- 增强兴奋性:为了评估新神经元的兴奋性对正则化的影响,实验中增加了一个兴奋性组件,在每次前向传播中将新神经元的激活乘以一个兴奋性因子。
5 实验分析
(1)神经发生实现过程图示
- 图1A 展示了在实验中使用的卷积神经网络(CNN)的结构示意图。这个CNN包含多个卷积层和池化层,以及随后的全连接层。输入层接收32x32像素的RGB图像,然后通过卷积层和池化层提取特征,最后通过全连接层进行分类。
- 图1B 描述了如何在CNN中实施替换/更替(replacement/turnover)类型的神经发生。在这个过程中,全连接层中随机选择的一小部分神经元的权重会被重新初始化,模拟新神经元的整合。这种模拟不影响网络的整体大小,但改变了网络的连接模式。
- 图1C 说明了在训练过程中如何进行带有神经发生的训练,以及在测试时不进行任何神经发生的事件。训练时,每隔一定数量的 minibatch 更新,就会执行一次神经发生的权重重置。而在测试阶段,不进行任何权重的重置或神经元的更替。
(2)训练准确率和测试准确率的对比实验
- 图2A 展示了对照网络(未引入神经发生)和神经发生网络(引入了神经发生)在训练后的测试准确率的箱线图。箱线图显示了数据的分布和中位数,同时t检验的结果显示神经发生网络的测试准确率显著高于对照网络。
- 图2B 通过小提琴图展示了对照组和神经发生组在最低分(左侧)和最高分(右侧)的得分分布。小提琴图提供了更详细的信息,显示了每个分数的频率分布。t检验结果表明,无论是在最低分还是最高分的网络中,引入神经发生都能显著提高性能。
- 图2C 示意了如何在神经发生网络中实现新神经元的增强兴奋性。通过将新神经元的激活乘以一个兴奋性因子c,来模拟新神经元的高兴奋性。
- 图2D 展示了对照网络、神经发生网络以及增强兴奋性的神经发生网络在测试准确率上的箱线图。ANOVA(方差分析)和Tukey’s HSD(Tukey诚实显著性差异)测试表明,引入神经发生和增强兴奋性的网络在性能上均优于对照网络。
- 图2E 展示了对照组和神经发生组在训练结束时的训练准确率的箱线图。t检验结果显示,尽管神经发生网络在训练准确率上有所下降,但这种差异是显著的。
- 图2F 展示了在训练过程中对照网络和神经发生网络的验证损失变化。这有助于观察模型在训练过程中的泛化能力。
实验结论:
引入神经发生的网络,在训练准确率上略有下降,但是在测试准确率高于未引入神经发生的对照网络,这表明神经发生通过正则化效应提高了网络的泛化能力。
(3)与其他正则化方法相比较
- 图3A 展示了Dropout正则化方法:在每次前向传播过程中,随机地停用一部分神经元及其权重。
- 图3B 展示了权重衰减(Weight decay):在损失函数中添加一个小的惩罚项,这个惩罚项会惩罚大的权重值,导致大的权重随时间衰减。
- 图3C 展示了神经噪声(Neural noise):在每一层的激活值中添加高斯噪声。
- 图3D 展示了神经发生(Neurogenesis)与其他正则化方法(包括Dropout、权重衰减和神经噪声)相比的测试准确率的箱线图。方差分析(ANOVA)和Tukey’s HSD测试结果表明,神经发生与传统的对照组相比有显著提高,与Dropout相比没有显著差异,但与权重衰减和神经噪声相比则有显著提高。
- 图3E 展示了使用组合正则化方法的网络相对于仅使用神经发生的网络的测试性能的热图。z分数表示性能的变化,热图显示了不同组合方法的性能差异。
- 图3F 展示了使用较低参数值的Dropout(0.1)和神经发生(每1000次更新更替一次)组合时的性能图。方差分析显示,这种组合方法并没有比单独使用神经发生的方法有更好的性能。
实验结论:
神经发生作为一种正则化手段,在提高CNN的测试准确率方面与传统的Dropout方法相当,并且优于权重衰减和神经噪声方法。这表明神经发生可以作为一种有效的正则化技术,提高模型的泛化能力。当使用组合正则化方法时,例如同时使用神经发生和Dropout,并没有观察到性能的进一步提升。这可能表明,这些正则化方法的组合并不总是带来累加的效果,甚至可能相互抵消。在某些情况下,组合使用不同的正则化技术可能会降低模型的性能。这些发现强调了在选择正则化策略时需要考虑正则化方法之间的相互作用,以及它们对特定任务和模型架构的适应性。
(4)探讨神经发生的条件
- 图4A 展示了在隐藏层中实施目标神经发生(Targeted Neurogenesis)的示意图。在这个方法中,神经元根据输入权重的大小进行排序,然后选择权重最低的(认为较不重要的)或权重最高的(认为较重要的)神经元进行神经发生处理,即重置这些神经元的权重。还有一种情况是不进行目标选择,即随机选择神经元进行神经发生(Random)。
- 图4B 展示了对照组(Control)、随机神经发生(Random Neurogenesis)、针对权重最高的神经元的目标神经发生(High Importance Neurons,作为阳性对照组)、以及针对权重最低的神经元的目标神经发生(Low Importance Neurons)的模型测试准确率的箱线图。图中还包括了方差分析(ANOVA)和Tukey’s HSD(Tukey诚实显著性差异)的统计测试结果。
实验结论:
实验结果表明,与随机神经发生相比,目标性地对权重最高的神经元进行神经发生(High Importance Neurons)会显著降低模型的测试准确率,这可能是因为这些权重较高的神经元对网络性能有重要贡献,重置它们的权重可能损害了网络已经学到的有用特征。另一方面,目标性地对权重最低的神经元进行神经发生(Low Importance Neurons)并没有比随机神经发生带来性能上的提升。这表明在权重大小的基础上进行的目标选择可能不是提高神经发生效果的有效策略。简单地基于权重大小来选择哪些神经元进行神经发生可能不足以优化网络性能。可能需要更复杂的方法来确定哪些神经元对网络学习最关键,以及如何通过神经发生来有效地调节网络的泛化能力。
(5)消融实验
- 图5A 展示了消融实验(Ablation Experiments)的示意图。消融实验是一种评估网络中单个神经元或神经元组重要性的方法,通过逐渐移除(消融)网络中的神经元,并观察这对网络性能的影响。
- 图5B 展示了随着网络中逐渐增加消融神经元数量,20次重复实验的平均归一化准确率的变化曲线。归一化准确率是将消融后的准确率与原始准确率进行比较,以衡量消融对网络性能的影响。
- 图5C 展示了对照组、神经发生组和Dropout组在第二隐藏层神经元的类选择性(Class Selectivity)的密度图。类选择性是指神经元对特定类别的激活程度,反映了神经元对不同类别的偏好性。
- 图5D 展示了训练后测试准确率的箱线图,这些网络在训练时有或没有引入神经发生,并在测试时有或没有添加新神经元。此外,还展示了重复测量方差分析(Repeated-measures ANOVA)的结果,用以分析训练和测试后添加新神经元的交互效应。
实验结论:
引入神经发生的网络相对于对照网络,在消融神经元后显示出较低的鲁棒性。这意味着,虽然神经发生提高了网络的泛化能力,但这些网络对单个神经元的依赖性更高,消融较少比例的神经元就足以显著影响性能。
类选择性密度图显示了不同网络条件下神经元的类选择性分布。这可能表明神经发生对网络中信息编码方式的影响,以及不同网络如何通过其神经元对输入数据进行分类。
6 思考
(1)只在全连接层实现的神经元更替,不具有代表性,应该在其他网络结构上也试一试效果
(2)神经发生组相对于对照组训练准确率低,但测试准确率高的现象,可以通过以下几个方面来解释:
- 正则化效应:神经发生可以作为一种正则化机制。在机器学习中,正则化技术用来减少模型对训练数据的过拟合,提高模型在未见数据上的泛化能力。神经发生通过在训练过程中引入新的、未经训练的神经元,增加了模型的噪声,这迫使网络学习更加鲁棒的特征表示,而不是仅仅记住训练数据。
- 减少对训练数据的过度拟合:对照组网络可能在训练数据上表现得很好,但可能过于适应这些数据,导致在新的测试数据上泛化能力下降。而神经发生组虽然在训练数据上的表现不如对照组,但因为减少了对特定训练样本的依赖,它能够更好地泛化到新的测试数据上。
- 促进特征的泛化表示:神经发生的引入可能促进了网络权重的更优分布,使得网络能够捕捉到更加泛化的特征表示,这些特征在新的测试集上同样有效。
- 权重重置带来的灵活性:在神经发生过程中,新神经元的权重是随机初始化的,这为网络提供了额外的灵活性来调整其参数,以更好地适应测试数据。
- 损失景观的探索:神经发生可能帮助网络在权重空间中探索更广阔的区域,从而有可能找到比传统训练方法更优的局部最小值。
- 训练和测试的权衡:神经发生组可能在训练过程中牺牲了一些准确率,但这种牺牲换来了在测试集上的更高准确率,这表明模型在训练时避免了对噪声或特定样本的过度学习。
- 统计学习理论:根据统计学习理论,适当的模型复杂度和正则化可以帮助模型更好地捕捉数据的潜在分布,即使这可能导致训练误差的略微增加。
(3)本文算法存在的缺点
没有确定如何进行神经元替换(神经元发生),没有一个明确的指标。简单地基于权重大小来选择哪些神经元进行神经发生可能不足以优化网络性能。可能需要更复杂的方法来确定哪些神经元对网络学习最关键,以及如何通过神经发生来有效地调节网络的泛化能力。
(4)什么是类选择性?有什么作用?
类选择性(Class Selectivity)是指神经元对特定类别或类别之间差异的响应特性。在神经网络和机器学习的背景下,每个神经元可能会对输入数据的某些特征表现出更高的激活水平,这反映了它对该特征的“偏好”或“选择性”。当一个神经元对特定类别的输入表现出显著高于其他类别的激活时,我们称这个神经元具有高类选择性。类选择性也是评估网络泛化能力的一个指标。通常认为,具有高类选择性的神经元可能有助于网络在特定任务上的表现,但也可能降低网络对新或未见类别的泛化能力。相反,低类选择性可能表明网络能够更灵活地响应多种输入,从而提高泛化能力。
类选择性密度图是展示网络中神经元对不同类别的响应强度分布。在这种图中,每个点或区域代表一个神经元,而它们在图中的位置表示对不同类别的偏好程度。
相关文章:

【博士每天一篇文献-算法】Adult neurogenesis acts as a neural regularizer
阅读时间:2023-12-20 1 介绍 年份:2022 作者:Lina M. Tran,Adam Santoro,谷歌DeepMind 期刊: Proceedings of the National Academy of Sciences 引用量:13 代码:https://github.c…...

在Spring Boot项目中引入本地JAR包的步骤和配置
在Spring Boot项目中,有时需要引入本地JAR包以便重用已有的代码库或者第三方库。本文将详细介绍如何在Spring Boot项目中引入本地JAR包的步骤和配置,并提供相应的代码示例。 1. 为什么需要本地JAR包 在开发过程中,可能会遇到以下情况需要使…...

Android Studio中使用命令行gradle查看签名信息
Android Studio中使用命令行gradle查看签名信息: 使用 Gradle 插件生成签名报告 打开 Android Studio 的 Terminal。 运行以下命令:./gradlew signingReport 将生成一个签名报告,其中包含 MD5、SHA1 和 SHA-256 的信息。 如果失败…...

昇思25天学习打卡营第5天 | 神经网络构建
1. 神经网络构建 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同…...

Web缓存—Nginx和CDN应用
目录 一、代理的工作机制 二、概念 三、作用 四、常用的代理服务器 二.Nginx缓存代理服务器部署 1.在三台服务器上部署nginx 此处yum安装 2.准备测试界面 三、CDN概念及作用 1.CDN的工作过程 一、代理的工作机制 (1)代替客户机向网站请求数据…...

Linux 端口
什么是虚拟端口 计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通。 IP地址相当于小区地址,在小区内可以有许多用户(程序)&…...

菜鸡的原地踏步史02(◐‿◑)
每日一念 改掉自己想到哪写哪的坏习惯 二叉树 二叉树的中序遍历 class Solution {/**中序遍历左 - 中 - 右*/private List<Integer> res new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if(root null) {return res;}tranve…...

实现Java应用的数据加密与解密技术
实现Java应用的数据加密与解密技术 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 数据加密与解密的重要性 数据安全是当今互联网应用开发中的重要问题之…...

赛博解压板
目录 开头程序程序的流程图程序的解压效果(暂无,但可以运行一下上面的代码)结尾 开头 大家好,我叫这是我58。今天,我们要看关于赛博解压板的一些东西。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #define ROW 6//ROW表示行数,可…...

微信小程序常用的事件
1.点击事件 WXML 中绑定点击事件: <!-- index.wxml --> <button bindtap"handleTap">点击我</button> 对应的 JS 文件中编写点击事件处理函数: // index.js Page({handleTap: function() {console.log(按钮被点击了);} }…...

js时间转成xx前
// 时间戳转多少分钟之前 export default function getDateDiff(dateTimeStamp) {// console.log(dateTimeStamp,dateTimeStamp)// 时间字符串转时间戳var timestamp new Date(dateTimeStamp).getTime();var minute 1000 * 60;var hour minute * 60;var day hour * 24;var …...

iOS 锁总结(cc)
iOS中atomic和synchrosize锁的本质是什么? 在iOS中,atomic和@synchronized锁的本质涉及底层的多线程同步机制。以下是关于这两者本质的详细解释: atomic 定义与用途: atomic是Objective-C属性修饰符的一种,用于指示属性的存取方法是线程安全的。当一个属性被声明为ato…...

【CSAPP】-binarybomb实验
目录 实验目的与要求 实验原理与内容 实验设备与软件环境 实验过程与结果(可贴图) 操作异常问题与解决方案 实验总结 实验目的与要求 1. 增强学生对于程序的机器级表示、汇编语言、调试器和逆向工程等方面原理与技能的掌握。 2. 掌握使用gdb调试器…...

SpringBoot实战:轻松实现XSS攻击防御(注解和过滤器)
文章目录 引言一、XSS攻击概述1.1 XSS攻击的定义1.2 XSS攻击的类型1.3 XSS攻击的攻击原理及示例 二、Spring Boot中的XSS防御手段2.1 使用注解进行XSS防御2.1.1 引入相关依赖2.1.2 使用XSS注解进行参数校验2.1.3 实现自定义注解处理器2.1.4 使用注解 2.2 使用过滤器进行XSS防御…...

如何改善提示词,让 GPT-4 更高效准确地把视频内容整体转换成文章?
(注:本文为小报童精选文章。已订阅小报童或加入知识星球「玉树芝兰」用户请勿重复付费) 让我们来讨论一下大语言模型应用中的一个重要原则 ——「欲速则不达」。 作为一个自认为懒惰的人,我一直有一个愿望:完成视频制作…...

TensorBoard进阶
文章目录 TensorBoard进阶1.设置TensorBoard2.图像数据在TensorBoard中可视化3.模型结构在TensorBoard中可视化(重点✅)4.高维数据在TensorBoard中低维可视化5.利用TensorBoard跟踪模型的训练过程(重点✅)6.利用TensorBoard给每个…...

使用AES加密数据传输的iOS客户端实现方案
在现代应用开发中,确保数据传输的安全性是至关重要的。本文将介绍如何在iOS客户端中使用AES加密数据传输,并与服务器端保持加密解密的一致性。本文不会包含服务器端代码,但会解释其实现原理。 加密与解密的基本原理 AES(Advance…...

vue3【实战】语义化首页布局
技术要点,详见注释 <script setup></script><template><div class"page"><header>页头</header><nav>导航</nav><!-- 主体内容 --><main class"row"><aside>左侧边栏<s…...

FANG:利用社交网络图进行虚假新闻检测
1.概述 社交媒体已逐渐演变成为公众获取信息的主要途径。然而,值得警惕的是,并非所有流通的信息都具备真实性。特别是在政治选举、疫情爆发等关键节点,带有恶意企图的虚假信息(即“假新闻”)可能会对社会秩序、公平性和理性思考造成严重的干扰。作为全球抗击COVID-19的一部…...

Vue2 基础八电商后台管理项目——中
代码下载 商品分类页 新商品分类组件 goods/Cate.vue,在router.js中导入子级路由组件 Cate.vue,并设置路由规则。 绘制商品分类基本结构 在Cate.vue组件中添加面包屑导航以及卡片视图中的添加分类按钮: <template><div><…...

Typescript window.localStorage 存储 Obj Value区别
window.localStorage.setItem(UserC, JSON.stringify(userC)) const userC JSON.parse(window.localStorage.getItem(UserC) || {}) 不能获得UserC,所有保存的时候需要存储value,而不是对象。 {"__v_isShallow":false, "__v_isRef&quo…...

Linux要解压 .rar 文件,你应该使用 unrar 命令
命令 sudo tar -zxf ~/WebDemo.rar -C /usr/local 有一些问题。tar 命令通常用于解压 .tar、.tar.gz 或 .tar.bz2 文件,而不是 .rar 文件。要解压 .rar 文件,你应该使用 unrar 命令。下面是正确的步骤: 首先,安装 unrar࿰…...

【qt】如何获取网卡的信息?
网卡不只一种,有有线的,有无线的等等 我们用QNetworkInterface类的静态函数allInterfaces() 来获取所有的网卡 返回的是一个网卡的容器. 然后我们对每个网卡来获取其设备名称和硬件地址 可以通过静态函数humanReadableName() 来获取设备名称 可以通过静态函数**hardwareAddre…...

使用Netty框架实现WebSocket服务端与客户端通信(附ssl)
仓库地址: https://gitee.com/lfw1024/netty-websocket 导入后可直接运行 预览页面 自签证书: #换成自己的本地ip keytool -genkey -alias server -keyalg RSA -validity 3650 -keystore D:\mystore.jks -ext sanip:192.168.3.7,ip:127.0.0.1,dns:lo…...

ssm校园志愿服务信息系统-计算机毕业设计源码97697
摘 要 随着社会的进步和信息技术的发展,越来越多的学校开始重视志愿服务工作,通过组织各种志愿服务活动,让学生更好地了解社会、服务社会。然而,在实际操作中,志愿服务的组织和管理面临着诸多问题,如志愿者…...

JVM原理(二):JVM之HotSpot虚拟机中对象的创建寻位与定位整体流程
1. 对象的创建 遇到new指令时 当Java虚拟机遇到一个字节码new指令时。 首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。 如果没有,那么必须执行类的加载过程(加载、检查…...

(七)glDrawArry绘制
几何数据:vao和vbo 材质程序:vs和fs(顶点着色器和片元着色器) 接下来只需要告诉GPU,使用几何数据和材质程序来进行绘制。 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostrea…...

记一次小程序渗透
这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露(高危) 水平越权(高危) 会话重用(高危) 硬编码加密密钥泄露(中危࿰…...

C++ 的常见算法 之一
C 的常见算法 之一 不修改序列算法for_eachcountfind 修改序列算法copymove 不修改序列算法 for_each #include <iostream> // std::cout #include <algorithm> // std::for_each #include <vector> // std::vectorusing namespace std;struc…...

微前端的需求有哪些?微前端的原理是怎么样的?为什么这么设计,及微前端的应用场景是什么?对有些客户,前端的重要性高于后端
微前端(Micro Frontends)是将前端应用拆分成多个独立、可部署的部分,每个部分可以由不同的团队独立开发、测试、部署和维护。这种架构类似于微服务在后端的应用,是为了应对复杂前端应用的维护和扩展问题而提出的。 来龙去脉 背景…...