脉冲神经网络(Spiking Neural Network,SNN)学习(1)

embedded/2024/11/14 0:00:58/

目录

一、神经网络

1、神经元

2、激活函数

(1)常见的激活函数:Sigmoid函数

(2)常见的激活函数:ReLU(Rectified Linear Unit)函数

(3)常见的激活函数:Swish函数

(4)常见的激活函数:GELU函数

(5)常见的激活函数:Maxout单元

二、神经网络结构

1、前馈网络

2、记忆网络

3、图网络

三、脉冲神经网络

 1、神经元连接

2、突触的兴奋/抑制作用

3、神经元脉冲的发放过程

4、脉冲神经网络的学习方法

(1)无监督学习算法

(2)脉冲神经网络的监督学习

(3)脉冲神经网络的强化学习


一、神经网络

1、神经元

人类大脑是人体最复杂的器官,由神经元、神经胶质细胞、神经干细胞和血管组成。

其中,神经元(Neuron),也叫神经细胞(Nerve Cell),是携带和传输信息的细胞,是人脑神经系统中最基本的单元。人脑神经系统是一个非常复杂的组织,包含近860亿个神经元。每个神经元有上千个突触和其他神经元相连接。

典型的神经元结构大致分为细胞体和细胞凸起。

(1) 细胞体(Soma)中的神经细胞膜上有各种受体和离子通道,胞膜的受体可与相应的化学物质神经递质结合,引起离子通透性及膜内外电位差发生改变,产生相应的生理活动:兴奋或抑制。

(2) 细胞突起是由细胞体延伸出来的细长部分,又可分为树突和轴突。

  • a ) 树突(Dendrite)可以接收刺激并将兴奋传入细胞体。每个神经元可以有一或多个树突
  • b ) 轴突(Axon)可以把自身的兴奋状态从胞体传送到另一个神经元或其他组织。每个神经元只有一个轴突

神经元可以接收其他神经元的信息,也可以发送信息给其他神经元。神经元之间没有物理连接,两个“连接”的神经元之间留有 20 纳米左右的缝隙,并靠突触(Synapse)进行互联来传递信息,形成一个神经网络,即神经系统。突触可以理解为神经元之间的连接“接口”,将一个神经元的兴奋状态传到另一个神经元。

一个神经元可被视为一种只有两种状态的细胞:兴奋和抑制。神经元的状态取决于从其他的神经细胞收到的输入信号量,以及突触的强度(抑制或加强)。当信号量总和超过了某个阈值时,细胞体就会兴奋,产生电脉冲。电脉冲沿着轴突并通过突触传递到其他神经元。

图1 典型神经元结构

一个生物神经元通常具有多个树突和一条轴突。树突用来接收信息,轴突用来发送信息。当神经元所获 得的输入信号的积累超过某个阈值时,它就处于兴奋状态,产生电脉冲。轴突尾端有许多末梢可以给其他神经元的树突产生连接(突触),并将电脉冲信号传递给其他神经元。

2、激活函数

激活函数的主要作用是在神经元的净输入(加权输入信号之和加上偏置)和神经元的输出(活性值)之间引入非线性。如果没有激活函数,无论神经网络有多少层,最终都相当于一个线性模型,这将大大限制网络的表达能力和复杂度。

(1)常见的激活函数:Sigmoid函数

S形曲线,输出值在0到1之间,适用于二分类问题。

常用的 Sigmoid 型函数有Logistic函数和Tanh函数。两种函数具有饱和性,但是计算开销较大,而且函数都是在中间(0附近)近似线性,两端饱和。

(2)常见的激活函数:ReLU(Rectified Linear Unit)函数

线性整流函数,输出为输入值的正部分,即f(x) = max(0, x)。它计算简单,能够有效缓解梯度消失问题,是目前最常用的激活函数之一。

优点:采用 ReLU 的神经元只需要进行加、乘和比较的操作,计算上更加高效。 ReLU 函数也被认为具有生物学合理性(Biological Plausibility),比如单侧抑制、宽兴奋边界(即兴奋程度可以非常高)。

缺点:ReLU 函数的输出是非零中心化的,给后一层的神经网络引入偏置偏移,会影响梯度下降的效率此外,ReLU 神经元在训练时比较容易“死亡”。在训练时,如果参数在一次不恰当的更新后,第一个隐藏层中的某个 ReLU 神经元在所有的训练数据上都不能被激活,那么这个神经元自身参数的梯度永远都会是 0,在以后的训练过程中永远不能被激活。

(3)常见的激活函数:Swish函数

(4)常见的激活函数:GELU函数

(5)常见的激活函数:Maxout单元

二、神经网络结构

要想模拟人脑的能力,单一的神经元是远远不够的,需要通过很多神经元一起协作来完成复杂功能。这样通过一定的连接方式或信息传递方式进行协作的神经元可以看成一个网络,就是神经网络

目前常用的神经网络结构有以下三种。

1、前馈网络

前馈网络中各个神经元按接收信息的先后分为不同的组。每一组可以看作一个神经层.每一层中的神经元接收前一层神经元的输出,并输出到下一层神经元。整个网络中的信息是朝一个方向传播,没有反向的信息传播,可以用一个有向无环路图表示.前馈网络包括全连接前馈网络卷积神经网络等。

前馈网络可以看作一个函数,通过简单非线性函数的多次复合,实现输入空间到输出空间的复杂映射。这种网络结构简单,易于实现。

2、记忆网络

记忆网络,也称为反馈网络,网络中的神经元不但可以接收其他神经元的信息,也可以接收自己的历史信息.和前馈网络相比,记忆网络中的神经元具有记忆功能,在不同的时刻具有不同的状态。记忆神经网络中的信息传播可以是单向或双向传递,因此可用一个有向循环图或无向图来表示。记忆网络包括循环神经网络、Hopffeld 网络、玻尔兹曼机、受限玻尔兹曼机等。

记忆网络可以看作一个程序,具有更强的计算和记忆能力。 为了增强记忆网络的记忆容量,可以引入外部记忆单元和读写机制,用来 存一些网络的中间状态,称为记忆增强神经网络(Memory Augmented Neural Network,MANN),比如神经图灵机和记忆网络等。

3、图网络

前馈网络和记忆网络的输入都可以表示为向量或向量序列.但实际应用中很多数据是图结构的数据,比如知识图谱、社交网络、分子(Molecular )网络等。

图网络是定义在图结构数据上的神经网络。图中每个节点都由 一个或一组神经元构成。节点之间的连接可以是有向的,也可以是无向的。每个节点可以收到来自相邻节点或自身的信息。

图网络是前馈网络和记忆网络的泛化,包含很多不同的实现方式,比如图卷积网络(Graph Convolutional Network,GCN)、图注意力网络(Graph Attention Network,GAT)、消息传递神经网络(Message Passing Neural Network,MPNN)等。

其中圆形节点表示一个神经元,方形节点表示一组神经元

三、脉冲神经网络

SNN使用脉冲——这是一种发生在时间点上的离散事件——而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。

 1、神经元连接

  • 神经元的轴突是神经元的输出通道,作用是将细胞体发出的神经冲动传递给另一个或者多个神经元。
  • 神经元的树突是接受从其他神经元传入信息的入口。

下一个神经元的树突接受上一个神经元的轴突释放的化学物质,使该神经元产生电位差,形成电流传递信息。

每个神经元只有一个轴突,与一个或者多个目标神经元发生连接。一些轴突在生长中发出分支,这些分支被称为“侧支”,构成轴突末梢。来自主支的动作电位在各个侧支上同时继续传递,最终达到不同的目标。

两个神经元之间的突触根据连接方式的不同可以分为三类:

(1)轴-树突触:是突触前神经元的轴突末梢和突触后神经元的树突连接形成的突触结构;

(2)轴-体突触:突触前神经元的轴突末梢和突触后神经元的细胞体连接形成的突触结构;

(3)轴-轴突触:一个突触前神经元的轴突末梢与另一个神经元的轴突形成的突触结构。这类突触中一个轴突末梢作为突触前膜,另一个轴突的非末梢位置作为突触后膜。

2、突触的兴奋/抑制作用

每个神经元通过它的轴突平均与上千个神经元相连接,同时也收到上千个神经元的作用。

有些神经元可以与其他神经元形成上万个突触联系。

并不是突触前神经元的每个脉冲都能引起突触后神经元发送脉冲,一般只引起突触后神经元膜电位的局部变化。

  • 有的突触能够促进下一个神经元发放脉冲,称为兴奋性突触(excitatory synapse)
  • 有的突触却能抑制下一个神经元脉冲的发放,称为抑制性突触(inhibitory synapse)

3、神经元脉冲的发放过程

生物神经系统中的信号是以细胞膜的电位变化来传导的。神经元细胞膜内外的电位有差别,外正内负,70~80mV。周围环境和内部变化可以引起膜电位的高低变化。但是这类变化当幅度不大时只是局部的,随着变化幅度的增加,达到一定值时,膜电位会发生突然的变化,产生沿轴突传导的动作电位,也称为脉冲。这种神经元传递的脉冲持续时间为1~2ms,它可以跨越较远的距离进行传递而不致衰减。电位变化的幅度和传导速度都因神经轴突纤维的种类不同而不同。但对一种纤维来说,动作电位和传导速度是一定的,在全范围内,动作电位的产生与否取决于刺激强度是否大于阈值,这种现象称为“全或无”(all or none)定律。

如下图所示,神经元未受刺激时,细胞膜内外两侧存在电位差,称为静息电位(resting potential),一般在-80~-40mV(定义细胞外的电位为0)。当神经元受到外界刺激,突触后电位的总和超过某一值时,神经元产生一个不衰减的“全或无”式的沿神经纤维传递的神经冲动,即动作电位或脉冲。动作电位的动态变化过程包含一个迅速的去极化正向电位变化和缓慢的复极化负向电位变化。动作电位的另一特征是电位的极性在峰电位顶端倒转,细胞内由静息时的负电位变为正电位,这一过程称为超射。神经元动作电位的产生会导致局部的兴奋性发生一系列的变化。大致在动作电位的复极化阶段(repolarizationphase),无论用任何强的刺激都不能再引起动作电位,这个阶段称为绝对不应期(absoluterefractoryperiod);在随后的短时间内,动作电位进入超极化阶段(hyperpolarization phase)用比原来强的刺激方能引起动作电位,而且反应幅度还会小一些,这个阶段称为相对不应期(relative refractoryperiod),神经元对信号的传递方式在很大程度上与神经元的电学特性有关。

生物神经系统在内外刺激作用下,使得神经元按照一定的时间间隔产生一系列的动作电位,称为脉冲序列(spiketrain)。神经元发放的单个动作电位或者脉冲是信号传递的基本单元,因为所有脉冲的波形是相似的,所以动作电位的形状不会携带任何信息,而传递有用神经信息的是脉冲的发放时间和频率。一个神经元就是一个整合器,随时都在接受成百上千的信息,随时都在对所接受的信息进行加工,使相同的信息加在一起,相反的信息互相抵消,然后决定是兴奋还是保持抑制,这就是神经元的整合(integration)作用。如图2.3所示,一个生物神经元通过其大量的树突接受其他突触前神经元发放的各不相同的脉冲序列作为输入,通过突触的作用和神经元胞体的信息整合,神经元发放一定时间间隔的脉冲序列,又通过轴突成为其他神经元的输入。

4、脉冲神经网络的学习方法

大脑中的学习可以理解为突触连接强度随时间的变化过程,这种能力称为突触可塑性(synaptic plasticity)。脉冲神经网络的学习方式主要包括无监督学习(unsupervised learning)、监督学习(supervised learning)和强化学习(reinforcement learning)等。

(1)无监督学习算法

无监督学习算法在人类和动物的学习中占据主导地位,人们通过观察能够发现世界的内在结构,而不是被告知每一个客观事物的名称。人工神经网络无监督学习算法的设计主要是针对无标签数据集的训练,要求应用无监督学习规则对神经网络中的连接权值或结构进行自适应的调整。也就是说,在没有“教师”信号的监督下,神经网络必须自己从输入数据中发现规律性(如统计特征、相关性或类别等),并通过输出实现分类或决策。一般来说,只有当输入数据集中存在冗余性时,无监督学习才有意义,否则,无监督学习不能很好地发现输入数据中的任何模式或特征,即冗余性提供了知识。

脉冲神经网络的无监督学习算法大多是借鉴传统人工神经网络的无监督学习算法,是在Hebb学习规则不同变体的基础上提出的。神经科学的研究成果表明,生物神经系统中的脉冲序列不仅可引起神经突触的持续变化,并且满足脉冲时间依赖可塑性(spike timing-dependent plasticity,STDP)机制。在决定性时间窗口内,根据突触前神经元和突触后神经元发放的脉冲序列的相对时序关系,应用STDP学习规则可以对突触权值进行无监督方式的调整。

(2)脉冲神经网络的监督学习

脉冲神经网络的监督学习是指对于给定的多个输入脉冲序列和多个目标脉冲序列,寻找脉冲神经网络合适的突触权值矩阵,使神经元的输出脉冲序列与对应的目标脉冲序列尽可能接近,即两者的误差评价函数最小。对于脉冲神经网络来说,神经信息以脉冲序列的形式表示,神经元内部状态变量及误差函数不再满足连续可微的性质,构建有效的脉冲神经网络监督学习算法非常困难,同时也是该领域的一个重要的研究方向。

根据监督学习所采用的基本思想不同,可以将现有的监督学习算法分为三类:

  • 基于梯度下降的监督学习算法的基本思想是利用神经元目标输出与实际输出之间的误差以及误差反向传播过程,得到梯度下降计算结果作为突触权值调整的参考量,最终减小这种误差。基于梯度下降的监督学习算法是一种数学分析方法,在学习规则的推导过程中,要求神经元模型的状态变量必须是有解析的表达式,主要采用固定阈值的线性神经元模型,如脉冲响应模型(spike response model)和Integrate-and-Fire神经元模型等。
  • 基于突触可塑性的监督学习算法的基本思想是利用神经元发放脉冲序列的时间相关性所引起的突触可塑性机制,设计神经元突触权值调整的学习规则,这是一种具有生物可解释性的监督学习。

  • 基于脉冲序列卷积的监督学习算法通过脉冲序列内积的差异构造脉冲神经网络的监督学习算法,突触权值的调整依赖于特定核函数的卷积计算,可实现脉冲序列时空模式的学习。

(3)脉冲神经网络的强化学习

强化学习是从环境状态到行为映射的学习,以使智能体行为从环境中获得的累积奖赏值最大。基于生物启发的学习机制,人工神经网络强化学习的研究重点在于探索智能体的自适应优化策略,是近年来神经网络和智能控制领域的主要方法之一。强化学习关注的是智能体如何在环境中采取一系列行为,通过强化学习,一个智能体应该知道在什么状态下应该采取什么行为。可以看到,强化学习和监督学习的区别主要在于以下两点:

强化学习是试错学习,由于没有直接的“教师”指导信息,智能体要不断与环境交互,通过试错的方式来获得最佳策略;
延迟回报,强化学习的指导信息很少,而且往往是在事后(最后一个状态)才给出的,这就导致了一个问题,即获得正回报或者负回报以后,如何将汇报分配给前面的状态。


http://www.ppmy.cn/embedded/137349.html

相关文章

科技改变生活:最新智能开关、调光器及插座产品亮相

根据QYResearch调研团队的最新力作《欧洲开关、调光器和插座市场报告2023-2029》显示,预计到2029年,欧洲开关、调光器和插座市场的规模将攀升至57.8亿美元,并且在接下来的几年里,将以4.2%的复合年增长率(CAGR&#xff…

微擎框架php7.4使用phpexcel导出数据报错修复

在使用微擎社区版时,用phpexcel导出数据,提示错误,经过搜索后得知是php版本问题。 之前一直是用的5.6现在改成了7.4。所以才发现了这个问题。 然后去gitee上看了下微擎官方的代码,好像也没有对这个问题进行修复。 找了下&#…

【VUE】12、VUE中watch的使用详解

在 Vue.js 中,watch 是一个强大的选项,用于观察和响应 Vue 实例上数据的变化。它允许你定义当某个数据属性发生变化时应该执行的回调函数。这在处理复杂的数据逻辑、异步操作或需要在数据变化时执行特定操作的场景中非常有用。 1、基本用法 watch 选项…

day08|计算机网络重难点之 DNS查询过程、CDN是什么,有什么作用?、Cookie和Session是什么?有什么区别?

day08|计算机网络重难点之 DNS查询过程、CDN是什么,有什么作用?、Cookie和Session是什么?有什么区别? 21.DNS查询过程22.CDN是什么,有什么作用?23.Cookie和Session是什么?有什么区别&#xff1f…

重构代码之内联方法

在代码重构中,内联方法主要用于处理那些没有足够独立意义的方法。它的核心思想是将方法的实现直接放到调用它的地方,从而减少不必要的抽象和函数调用。以下是具体的介绍: 一、适用场景 内联方法适用于以下场景: 方法内容过于简…

写给初学者的React Native 全栈开发实战班

React Native 全栈开发实战班 亲爱的同学们: 很高兴在这里与大家相聚!我是你们的讲师,将带领大家一起踏上 React Native 移动开发的学习之旅。 为什么选择 React Native? 在这个移动互联网时代,App 开发工程师已经…

探索微服务中的权限控制:一次线上问题排查的思考

在这篇博客中,我将分享一个近期在排查线上问题时,意外发现的权限控制实现方式。起初,这个问题让我迷惑不已,因为在前端请求中,有个权限控制参数为 null,但在请求从网关进入微服务后,该参数神秘地…

aws(学习笔记第十二课) 使用AWS的RDS-MySQL

aws(学习笔记第十二课) 使用AWS的RDS 学习内容: AWS的RDS-MySQL 1. 使用AWS的RDS 什么是RDS RDS就是Relation Database Service的缩写,是AWS提供的托管关系型数据库系统。让用户能够在 AWS Cloud 云中更轻松地设置、操作和扩展关系数据库。 数据库和we…