SNN脉冲神经网络中IF神经元的matlab仿真

目录

1.内部电位积分

2.阈值判定和脉冲发放

3.脉冲传播时间间隔

4.部分核心程序


      第三代神经网络,脉冲神经网络 (Spiking Neural Network,SNN) ,旨在弥合神经科学和机器学习之间的差距,使用最拟合生物神经元机制的模型来进行计算,更接近生物神经元机制。脉冲神经网络与目前流行的神经网络和机器学习方法有着根本上的不同。SNN 使用脉冲——这是一种发生在时间点上的离散事件——而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Leaky Integrate-And-Fire (LIF) 模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。

        同传统的人工神经网络一样,脉冲神经网络同样分为三种拓扑结构。它们分别是前馈型脉冲神经网络(feed-forward spiking neural network)、递归型脉冲神经网络(recurrent spiking neural network)和混合型脉冲神经网络(hybird spiking neural network)。

       在脉冲神经网络(SNN)中,整流-火(Integrate-and-Fire,IF)神经元是一种简单但重要的模型,用于模拟神经元的电活动。IF神经元接收来自其他神经元的脉冲输入,根据输入的总量判断是否会发放输出脉冲。它是一种离散时间模型,通过积分输入来决定神经元是否激活。IF神经元的基本思想是在接收到一定数量的输入脉冲后,神经元会产生一个输出脉冲。通常,每个输入脉冲都会在神经元内部积分,累积成为一个内部电位。一旦内部电位达到阈值,神经元会发放一个输出脉冲,并且内部电位会被重置。

1.内部电位积分

IF神经元的内部电位会根据接收到的输入脉冲进行积分。这可以用以下微分方程表示:

其中,$V$ 是内部电位,$\tau_m$ 是膜电容时间常数,$E_{\text{rest}}$ 是静息电位,$R$ 是膜电阻,$I(t)$ 是输入脉冲流。 

2.阈值判定和脉冲发放

当内部电位超过某个阈值 $V_{\text{th}}$ 时,神经元会发放一个输出脉冲,并且内部电位会被重置到一个较低的值

3.脉冲传播时间间隔

       IF神经元通常具有脉冲传播的绝对不变时间间隔,这被称为绝对不变间隔(Absolute Refractory Period)。IF神经元是一种简化的模型,特别适用于描述低层次的神经元行为。它可以用于构建更复杂的脉冲神经网络,但对于模拟更精确的神经元行为,可能需要使用更复杂的模型。

        当使用SNN中的IF神经元时,通常还会考虑一些扩展和变种,以更好地适应不同的应用需求。以下是一些常见的IF神经元的扩展和变种:

1. 神经元自适应: 有时候,神经元的行为会受到其历史输入的影响,这可能通过自适应性机制实现。例如,使用自适应阈值的IF神经元,其中阈值会根据神经元的活动动态地调整。

2. 脉冲幅度: 在标准IF神经元模型中,所有脉冲的幅度是一致的。然而,在某些情况下,神经元可能对于不同的输入具有不同的响应。这可以通过调整脉冲幅度来实现,从而实现更灵活的响应方式。

3. 时间窗口: 在实际的神经系统中,脉冲的时序信息也是非常重要的。因此,某些IF神经元模型会引入时间窗口,以模拟窗口内的脉冲累积。

4. 多种类型的输入: 在真实的神经系统中,神经元可能接收来自多个神经元的不同类型的输入。因此,一些IF神经元模型允许对每个输入脉冲的权重和延迟进行调整。

5. 脉冲传播模式: 除了标准的阈值触发方式,还可以考虑其他脉冲传播模式,比如随机性传播、模拟突触传播等。

6. 网络拓扑和连接性: 在构建SNN时,神经元之间的连接性和拓扑结构也是非常重要的。IF神经元可以应用于不同的连接模式,如全连接、局部连接、稀疏连接等。

总之,IF神经元作为SNN中的基本构建块,为模拟神经元行为提供了一个简单而有效的方法。根据不同的应用需求,可以对IF神经元进行各种扩展和变种,以更好地适应不同的模拟和计算任务。在构建SNN模型时,需要根据具体情况选择合适的IF神经元变体,并结合其他神经元类型来实现更复杂的网络行为。

4.部分核心程序


% 模型参数
 I_ext=12;       % 恒定的外部输入
 itmax=500;     % 时间步数
 del_T=0.5;     % 时间步长
 %itmax=floor(x_max/del_T);
 C_noise=0;  % 外部电流的噪声水平
 T_noise=0.;  % 阈值值的噪声水平
 Mean_Ref=0.1;   % 不应期时间的平均值
 STD_Ref=0.;  % 不应期时间的标准差
 tau_inv=0.1;    %时间常数的倒数
 uu=0;           % 初始膜电位
 tspan=[0 itmax];  % 积分区间 - 从负值开始以消除过渡效应
 theta=10;       % 发放阈值
 x_max=itmax*del_T;      %图的最大水平轴值
% 如果 itmax 小于 x_max,则将 x_max 设置为 itmax
% if itmax < x_max; x_max = itmax; end;
 DelTime=0;

% 使用欧拉方法进行积分
 for it=0:itmax;
     Ntheta=theta+T_noise*randn;
     RefTime=Mean_Ref;
     if (uu > Ntheta) & (RefTime < DelTime)
         x=0;
         DelTime=0;
     else
         x=1;
         DelTime=DelTime+del_T;
     end
     uu=x*(1-tau_inv*del_T)*uu+tau_inv*del_T*I_ext;
     if it > 0 ; 
         u(it)=uu;
         t(it)=it*del_T;
         s(it)=1-x;
     end
 end
UP3025

测试结果如下:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值