本节课将带领大家深入理解脉冲神经网络(Spiking Neural Network,SNN)的基本组成与信息处理机制,探索神经元之间如何通过脉冲事件传递信息,以及多个神经元如何协同完成计算。
我们将进一步分析 SNN 的三大计算特点:时序性、状态性与潜在稀疏性,理解脉冲发放时间、历史状态与事件驱动计算之间的关系,以及 SNN 在计算效率方面的潜力与限制。
1.一个脉冲如何在神经网络中传播?
请看下图:

假设神经元 A 发放了一次 Spike。
我们可以问:
A 输出一个脉冲给了B
B就一定会输出信号吗??
之前学过 ANN,可能会认为:A输出了1,B就收到了1,只有权重和偏置是0的 情况下,B才没有输出,其余几乎都是要输出激活值的。
但 SNN 中有一个很重要的区别:
接收到一个脉冲事件,与自己发放一个脉冲事件,是两件事。
举个生活中的例子。
假设 B 是一个水桶,只有水位达到指定高度,才会触发一个报警器。
A 发放脉冲,相当于向水桶里倒了一点水。
如果原本水很少,倒入这点水可能还不足以报警。
如果原本水位已经很高,同样一份输入就可能触发报警。
这就是我们今天要理解的计算过程。
先记住一句话:
上游神经元发放 Spike,只是给下游神经元提供输入,并不意味着下游一定发放。
2.SNN基本构成
接下来请看下图:

这个图画了一个小型神经网络:N1、N2 连接到 N3、N4,随后连接到 N5。实际上和ANN非常类似。
1. 神经元(Neuron)
神经元是负责计算的基本单元。
它具有内部状态,会接收输入,并判断自己是否应该发放脉冲。
注意,SNN 中的神经元不只是一个简单的数学加法器。
它的状态通常还会随时间改变。
2. 突触(Synapse)
突触是神经元之间的连接。
例如:

它表示 N1 的发放事件可以通过这条连接影响 N3。
我们可以把突触理解为信号传递的通道。
3. 权重(Weight)
现在有一个问题。
如果 N1 和 N2 都连接 N3,那么它们对 N3 的影响一定相同吗?
不一定。
每条突触都有相应的连接权重。
例如:

在本节使用的简化模型中,权重可以决定一次输入脉冲对下游神经元的作用大小。
它可以是正数,也可以是负数。
-
正权重通常具有兴奋性作用。
-
负权重通常具有抑制性作用。
4. 脉冲序列(Spike Train)
假设我们观察神经元 N1 的 5 个时间步。
它的发放情况是:

表示:
第 1 步不发放,第 2 步发放,第 3、4 步不发放,第 5 步再次发放。
这里的 1 代表发放事件,0 代表没有发放。
这是最需要理解的内容。
你可以先把 SNN 想象为一个由许多具有内部状态的小计算单元连接而成的系统。
这些单元通过 Spike 交换信息。
3 :多个神经元的脉冲活动如何表示?
请看下图:

用 N1 到 N5 五个神经元展示它们各自在什么时间发放。
首先看横轴:时间。
再看纵轴:不同神经元。
例如图中的 N1,在:
三个时刻发放了脉冲。
N2 则在:
两个时刻发放了脉冲。
为什么要这样表示?
因为一个 SNN 可能包含几百甚至几万个神经元。
如果我们只看一长串 0 和 1,就很难观察它们的整体活动。
脉冲栅格图让我们能够直观看到:
哪些神经元比较活跃,哪些时刻出现集中发放,以及不同神经元的活动是否存在时间上的联系。
但要注意,两个神经元同时发放,不代表它们一定存在直接的因果连接。
接下来请看下图:

-
A 通过正权重连接到 C。
-
B 通过负权重连接到 C。
-
C 接收两路输入并更新自己的内部状态。
这里我们逐个理解。
i表示上游神经元。
j 表示下游神经元。
表示从 i 到 j 的突触权重。
表示这一条突触产生的输入贡献。
是不是很熟悉?
这其实就是 ANN 中的加权运算。
不同的是,我们现在加权的对象是脉冲事件。
脉冲告诉神经元“发生了什么事件”,权重决定这个事件对下游产生什么影响。
4.神经元如何输出
神经元收到一次输入之后,膜电位可能上升。
但如果没有达到阈值,它就不会发放。
随后,新的输入可能再次到来,使膜电位继续变化。
只有达到阈值,才会触发输出脉冲。

这里涉及 SNN 非常重要的一个性质:
神经元会受到历史输入的影响。
假设阈值为:1
现在考虑两种情况。
C 原来的膜电位是 0.1。
收到输入后,假设暂时不考虑泄漏,我们输入0.5,加起来是0.6,没有到1,肯定不发放
如果C 原来的膜电位是 0.7,加上0.5后就大于1,就可以考虑发放了
当前的输入完全相同,但结果不同。
区别就在于:
神经元过去积累的状态不同。
5.完整脉冲传播
请看下图

图中:
-
A 在时间步 2 发放一次脉冲。
-
B 在时间步 4 发放一次脉冲。
-
C 在时间步 4 发放一次脉冲。
下方的膜电位曲线先升高,之后达到阈值,发放后复位。
特别声明:
这个示例不考虑膜电位泄漏,也不考虑脉冲传播延迟。
也就是说,我们在这个例子中可以简单地认为,输入到达后,产生的状态变化能够保留下来。
C 在第 4 个时间步发放时,A 已经两步没有发放脉冲了。
但 A 之前的输入仍然影响了 C 的计算结果。
所以:
SNN 的计算不仅取决于当前有哪些脉冲,还取决于先前的脉冲如何改变了神经元内部状态。
这就是为什么 SNN 能够处理时间相关的信息。
另外,在这个例子里,两个输入脉冲并没有简单地被转发成两个输出脉冲。
A、B 一共发放两次,C 只发放一次。
也就是说,SNN 的神经元会对输入脉冲进行整合和转换。
最后C发放之后内部状态就会变成静息的膜电位
6.事件驱动
1. 固定时间步计算
假设我们模拟六个时间点:
![]()
神经元可能只在 和
收到输入事件。
但是,固定时间步仿真仍然会按照预定时间间隔进行状态更新。

2. 为什么事件驱动可能更加高效?
假设一个神经网络运行 1,000 个时间步。
但是只有少数时间步存在脉冲活动。
如果每一步都进行完整的计算,可能会做很多与实际事件无关的工作。
而事件驱动计算可以尝试利用稀疏性,在真正需要处理事件时进行相应运算。
不是每个 SNN 都采用事件驱动实现。
例如,在普通 GPU 上运行 SNN,很多程序还是逐时间步模拟整个网络。
另外,事件驱动实现也需要管理事件与神经元状态,本身有额外开销。
所以,SNN 有事件驱动计算的潜力,不意味着它天然比 ANN 省电。
7.SNN的特性

1.时序性
一条是 A 先发放、B 后发放。
另一条是 B 先发放、A 后发放。
如果输入顺序发生变化,神经元的膜电位变化轨迹也可能不同。
例如存在泄漏时,较早到达的脉冲可能在下一次输入到来之前已经衰减。
脉冲的时间分布可能参与信息计算。
2. 状态性:神经元会保留过去的影响
中间画了两个不同的神经元状态。
一个膜电位低。
一个膜电位高。
如果它们现在收到同样的输入,输出可能不同。
为什么?
因为当前计算受到历史状态影响。
这实际上与 RNN 的隐藏状态有相似之处。
不过这里我们先记住,SNN 中常见的状态变量是膜电位。
3. 潜在稀疏性:不是每个时间步都发放
右边画了一段时间轴,大部分时间格没有脉冲事件。
例如一个神经元在 100 个时间步中,只发放 3 次。
我们就可以说它的发放活动在时间上比较稀疏。
但我们必须区分:
脉冲少和计算开销少。
前者是活动特征。
后者是实际计算系统的性能指标。
稀疏性只有在合适的算法和硬件实现下,才可能转化为节省计算和能耗的优势。
总结

本文系统阐述脉冲神经网络(SNN)的信息传递机制与核心计算特点:时序性(脉冲时间编码信息)、状态性(神经元膜电位保留历史影响)、潜在稀疏性(事件驱动下的低频脉冲活动)。内容涵盖SNN基本构成(神经元、突触、权重、脉冲序列)、脉冲传播过程、整合发放机制及事件驱动计算的效率潜力,强调其区别于ANN的动态、时空耦合计算范式。
3万+

被折叠的 条评论
为什么被折叠?



