脉冲神经网络:SNN 的信息传递与计算特点

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

本节课将带领大家深入理解脉冲神经网络(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 表示下游神经元。

w_{ji} 表示从 i 到 j 的突触权重。

I_{j,i}[t]表示这一条突触产生的输入贡献。

是不是很熟悉?

这其实就是 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. 固定时间步计算

假设我们模拟六个时间点:

神经元可能只在 t_2 和 t_5收到输入事件。

但是,固定时间步仿真仍然会按照预定时间间隔进行状态更新。

2. 为什么事件驱动可能更加高效?

假设一个神经网络运行 1,000 个时间步。

但是只有少数时间步存在脉冲活动。

如果每一步都进行完整的计算,可能会做很多与实际事件无关的工作。

而事件驱动计算可以尝试利用稀疏性,在真正需要处理事件时进行相应运算。

不是每个 SNN 都采用事件驱动实现。

例如,在普通 GPU 上运行 SNN,很多程序还是逐时间步模拟整个网络。

另外,事件驱动实现也需要管理事件与神经元状态,本身有额外开销。

所以,SNN 有事件驱动计算的潜力,不意味着它天然比 ANN 省电。

7.SNN的特性

1.时序性

一条是 A 先发放、B 后发放。

另一条是 B 先发放、A 后发放。

如果输入顺序发生变化,神经元的膜电位变化轨迹也可能不同。

例如存在泄漏时,较早到达的脉冲可能在下一次输入到来之前已经衰减。

脉冲的时间分布可能参与信息计算。

2. 状态性:神经元会保留过去的影响

中间画了两个不同的神经元状态。

一个膜电位低。

一个膜电位高。

如果它们现在收到同样的输入,输出可能不同。

为什么?

因为当前计算受到历史状态影响。

这实际上与 RNN 的隐藏状态有相似之处。

不过这里我们先记住,SNN 中常见的状态变量是膜电位。

3. 潜在稀疏性:不是每个时间步都发放

右边画了一段时间轴,大部分时间格没有脉冲事件。

例如一个神经元在 100 个时间步中,只发放 3 次。

我们就可以说它的发放活动在时间上比较稀疏。

但我们必须区分:

脉冲少和计算开销少。

前者是活动特征。

后者是实际计算系统的性能指标。

稀疏性只有在合适的算法和硬件实现下,才可能转化为节省计算和能耗的优势。

总结

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值