脉冲神经网络:从ANN到SNN

📅 发布时间:2026/10/21 20:56:27
脉冲神经网络:从ANN到SNN
上一节我们已经知道ANN 可以处理时序信息RNN 和 Transformer 都是例子。SNN 的特点不是“只有它能处理时间”而是使用脉冲事件和神经元内部的时间动力学来组织计算。SNN 不一定比 ANN 更省电它的实际效率受到网络、硬件和实现方式的影响。这里我们要学习神经网络不仅可以利用数值大小计算还可以利用脉冲发生的时间计算。1.SNN与ANN的区别左边是 ANN输出一个数值例如y0.8右边是 SNN输出沿时间轴排列的一系列脉冲。1. 一个数值和一串脉冲有什么区别假设我们希望神经网络表示“外界刺激有多强”。对于普通人工神经元我们可以用数值表示 y0.8这个 0.8 可以理解为某种激活程度。但 SNN 可以采用另一种表示方式。我们可以把这两种方式理解为ANN 可以通过一个数值告诉你某种激活程度而 SNN 可以通过脉冲的数量、发生时间和分布来传递信息。例如同样观察 100 毫秒一种神经元可能发放 2 次脉冲另一种可能发放 10 次。这种差别可以承载信息。当然SNN 也不只使用脉冲次数编码信息后面我们会讲到脉冲发生的时间。神经元的输出一定要用一个数值表示吗答案是不一定。这正是从普通 ANN 过渡到 SNN 的一个重要切入点。2.三代神经网络“代”究竟在哪里第一代阈值型还记得上一节的 M-P 模型和感知机吗它们可以按照一个阈值规则输出就像一个开关。条件满足输出 1条件不满足输出 0。它最关注的是激活还是不激活第二代连续激活型后来人们开始使用 Sigmoid 等激活函数。例如 Sigmoid它不再只能表达“是”或“否”还能表达不同的激活程度。这也使连续激活型网络能够采用微分方法来进行梯度计算和参数训练。不过需要说明并非所有现代 ANN 的激活函数都像 Sigmoid 一样处处平滑例如 ReLU 在零点不可导但仍然可以使用适当的梯度方法训练。相较于硬阈值连续激活函数可以表达不同的激活程度。很多常见的现代 ANN 都属于这一类模型范式。第三代脉冲型SNN 引入了脉冲发放及其时间动力学。我们不再只关注一个静态的输出数值而是研究某个神经元何时发放脉冲多个脉冲之间间隔多久这些脉冲如何影响其他神经元一个特别重要的误区注意第三代不意味着一定比第二代更先进、更准确或更快。这个“代”主要是根据神经元模型的信息表达与计算机制进行分类而不是严格的性能排名。它也不表示第二代出现后第一代就消失、第三代出现后第二代就会被替代。这页的分类参考了 Maass 在 1997 年提出的相关研究视角。2.什么是 Spike从输出值到脉冲事件很多初学者会以为 Spike 就是神经元输出一个 1。这个理解有一定道理但还不够完整。1. Spike 到底是什么在 SNN 中Spike 通常指一个神经元在某个时刻发生的发放事件。如果我们用离散时间表示可以写成举个例子观察一个神经元 8 个时间步这意味着它在第 3、5、8 个时间步发放了脉冲。2. 为什么竖线高度都一样我们画的是脉冲发放时刻图Spike Train不是生物神经元真实动作电位的完整波形。竖线只是告诉我们“这个时间点发生过一次脉冲。”它的高度没有特殊数值含义。所以千万不要把这张图理解成某种连续的电压变化曲线。3. 那信息藏在哪里例如下面两个脉冲序列它们都有两次脉冲但是发放时刻不一样。如果神经网络使用时序编码这两种模式就可能表示不同信息。3.为什么脉冲发放的时间很重要请看下图都是在100ms内发出了三次脉冲它们包含的信息一定相同吗1. 第一种观察方法只看脉冲次数假设我们观察 100 ms。序列 A 发放 3 次序列 B 也发放 3 次。计算平均发放频率A 和 B 的平均发放频率都是 30 Hz。如果只看平均发放频率它们没有区别。2. 第二种观察方法比较发放时刻下面我用两组教学数据进一步解释图片的意思。对于采用特定时序编码的网络来说这两种脉冲模式可能对应不同的信息。这就涉及两种重要的信息编码思想编码方式主要关注什么频率编码Rate Coding一段时间内发放多少次脉冲时间编码Temporal Coding脉冲具体在什么时候发放、彼此相隔多久举个直观的例子。假设你听见别人敲门。“咚——咚——咚”和“咚咚咚——”虽然都是敲了 3 次但节奏不同。第一个你会察觉到这个人没那么着急第二个你会察觉到这个人很慌张。这就是时间分布可能携带信息的直观例子。不过SNN 并不一定都使用精确时间编码。有的 SNN 主要依赖发放频率有的则利用脉冲时刻或群体脉冲模式。这里暂不展开4.脉冲神经元如何产生输出前面我们一直在说脉冲但脉冲究竟怎么产生呢请看下图结合这张图我进行讲解1. 什么是膜电位你可以把神经元想象成一个会漏水的水桶。膜电位 V 就像桶里的水位。当输入信号到来时膜电位可能上升没有足够输入时膜电位可能逐渐下降。当膜电位达到预设阈值神经元就会发放一次脉冲。发放之后膜电位通常会被重置。这就是 PPT 中“阈值—发放—复位”的基本思想。2. 数学扩展LIF 神经元下面我们在上图基础上补充一点数学知识。LIF 的全称是 Leaky Integrate-and-Fire即泄漏积分发放模型。这里只做简单讲解一个简化的离散形式是假设初始膜电位每一步的输入都是那么第一个时间步因为 (0.41)所以不发放。第二个时间步仍然不发放。第三个时间步这一次因此神经元发放一次脉冲脉冲神经元不是简单地把输入变成 0 或 1而是通过随时间变化的内部状态决定何时发放脉冲。因此我们可以得到下图SNN的挑战第一代神经网络主要讨论神经元是否激活。第二代神经网络能够通过连续数值表达激活程度。第三代神经网络采用脉冲型神经元可以利用脉冲事件和发放时间组织计算。但三代模型并不是简单的新旧替代关系。尤其是ANN 通过 RNN、位置编码等方法也可以处理复杂的时序信息。因此理解 SNN 的关键不是强调 ANN 做不到什么而是理解 SNN 选择了什么样的神经元模型与计算机制。