组会 | SNN 的 BPTT(backpropagation through time)
目录
- 1 神经学基础知识
- 1.1 神经元
- 1.2 神经元之间的连接
- 1.3 膜电位
- 1.4 去极化与超极化
- 2 SNN
- 2.1 LIF 模型
- 2.2 BPTT 中存在的问题
- 2.3 梯度爆炸或消失问题
前言:
- 本博仅为组会总结,如有谬误,请不吝指正!
- 虽然标题为 BPTT,但侧重于对神经学基础知识和 LIF 模型的学习。
参考博客:
- 神经元 - 维基百科
- SNN 学习笔记(一):LIF 模型
1 神经学基础知识
1.1 神经元
神经元(英语:neuron)主要由胞体(全称细胞体)和胞突(胞突包含树突和轴突)组成,其基本构造包括:树突、轴突、髓鞘和细胞核。
神经元的结构如下图所示:
根据维基百科以及医学生同学的说明,可以把神经元理解成:由树突、细胞体、轴突三大部分组成,而髓鞘是包裹在轴突外的一层物质。如下图所示:
图源维基百科:https://zh.wikipedia.org/wiki/%E7%A5%9E%E7%B6%93%E5%85%83
1.2 神经元之间的连接
下图展示了三个神经元之间的连接:
注意:突触不是一个神经元上的单一结构,而是在两个神经元之间形成的连接!
突触(英语:Synapse)是神经元之间或神经元与非神经元细胞(如肌肉细胞或腺体)之间的特化连接。它主要包括以下三个部分:
- 突触前膜:是指轴突末梢的细胞膜。
- 突触后膜:是指下一个神经元的树突或细胞体的细胞膜,它含有神经递质的受体。
- 突触间隙:是指突触前膜和突触后膜之间的空间,神经递质在这个空间中扩散。
突触的具体结构如下图所示:
典型的化学突触(突触分为化学突触和电突触这两大类)是在两个神经元之间形成的单向通信机制。神经信息的流向是从突触前细胞到突触后细胞。突触通常形成在突触前细胞的轴突和突触后细胞的细胞体或树突之间。在常见的突触中,从突触后细胞的细胞膜上伸出一个称为突棘的突起物,与突触前细胞的轴突末梢相对,形成一个宽约 20nm 的空隙,成为突触间隙。
GPT:“突棘” 并不是 “树突” 本身,而是树突上的一个小突起。
突触前膜内的突触小泡含有在细胞体内合成并转运过来的神经递质分子。
- 当突触前细胞受到刺激并产生动作电位时,这个电信号会传播到轴突末端,导致钙离子通道开放,使钙离子流入轴突末端。该过程称为 “兴奋-分泌” 耦合,是神经元将电信号转化为化学信号的关键机制。
- 流入的钙离子(Ca²⁺)触发突触小泡与突触前膜融合,通过胞吐作用将神经递质释放到突触间隙。释放后的神经递质分子会扩散到突触后膜,并与膜上的特异性神经递质受体结合。
这种结合可以在突触后细胞产生局部电位、改变基因表达或引发其他细胞内的生化反应,从而完成神经元之间或神经元与靶细胞之间的信号传递。
科普:在静息状态下,细胞膜内外存在电位差,通常内部较外部负,这个电位差称为静息膜电位。当细胞膜对钙离子的通透性增加时,钙离子从细胞外流入细胞内,导致细胞内正电荷的增加,这时细胞膜电位就会向零电位方向移动,即发生去极化。如果去极化达到一定的阈值,就会触发动作电位的产生,使得细胞能够传递电信号。
1.3 膜电位
膜电位(英文:membrane potential)是指以细胞膜为间隔的细胞内外溶液之间的电位差。动物与植物的细胞膜在静息时维持一定电位差,细胞内部的负电性常大于其外部。
神经元处于静息电位的示意图如下:
膜电位的大小主要是由细胞内外溶液的离子组成以及离子的膜通透性所决定的,其形成也依赖于膜上各种离子通道和离子泵的共同作用。
1.4 去极化与超极化
去极化(英文:depolarization)是静息电位减小的过程或状态,即细胞的膜电位向负值减少(正值增加)的方向变化。例如:细胞静息电位为 -70mV,其后膜电位变为 -60mV,则称该细胞去极化。
说明:静息时细胞的膜电位处于一定的负值水平。当细胞受到外界刺激后,静息电位的负值水平变小,向零电位趋近。这是因为细胞内外的阳离子或阴离子通过细胞膜的离子通道转移了,导致细胞内阳离子的净电荷增多了。
超极化(英文:hyperpolarization)是指神经元细胞膜内的电位向负值增大的方向变化。超极化是指神经细胞膜的一种生理状态。例如:细胞静息电位为 -70mV,其后膜电位变为 -80mV,甚至 -90mV,则称该细胞超极化。超极化可使神经元处于暂时的抑制状态。
下图中的纵轴是膜电位,横轴是时间。静息电位约为 -70mV,阈值约为 -55mV:
上图描绘了一个典型的动作电位周期:
- 刺激(Stimulus):当外界给予足够的刺激时,膜电位开始上升。
- 失败的启动(Failed Initiations):如果刺激不足以使膜电位达到阈限,则不会产生动作电位。
- 上升相(Rising Phase):一旦膜电位超过阈限,钠离子通道打开,钠离子进入细胞,导致膜电位急剧上升,直到达到峰值(大约 +40mV)。
- 峰值(Peak):这是动作电位的最高点,也是膜电位最正的点。
- 过冲(Overshoot):有时膜电位可能会短暂地超过其正常范围的正值。
- 下降相(Falling Phase):随着钠离子通道关闭和钾离子通道打开,钾离子流出细胞,导致膜电位逐渐下降。
- 下冲(Undershoot):在某些情况下,膜电位可能会暂时低于静息电位,然后恢复到正常的静息电位水平。
- 复极化:是指膜电位恢复到原始静息电位的过程。
- 超极化:有时膜电位可能会稍微低于静息电位,这被称为超极化。
- 恢复:最后膜电位完全恢复到静息电位,准备接受下一次刺激。
2 SNN
2.1 LIF 模型
LIF 模型(英文:Leaky Integrate-and-Fire Model)的核心思想如下:
- Leaky(泄露):在缺乏足够刺激或无外部输入的情况下,细胞膜的自然离子通道活动导致膜电位逐渐泄漏,趋向于静息状态,这主要是由于钾离子的外流。
- Integrate(集成):神经元能够接收并综合来自多个突触前神经元的信号,这些信号在时间和空间上的总和决定了膜电位的变动。
- Fired(激发):一旦膜电位达到阈值,神经元将发放一个动作电位。随后膜电位迅速下降并复位至一个特定的电位水平,通常低于静息电位,这个过程称为复位。
对于 SNN 中的 LIF 模型 ,我们可以用如下公式进行描述:
U [ t ] = β U [ t − 1 ] + W X [ t ] − S o u t [ t − 1 ] θ U[t] = \beta U[t-1] + WX[t] - S_{out}[t-1]\theta U[t]=βU[t−1]+WX[t]−Sout[t−1]θ
其中:
- U [ t ] U[t] U[t] 表示当前时刻 t 的膜电位, U [ t − 1 ] U[t-1] U[t−1] 表示上一时刻 t-1 的膜电位。
- X [ t ] X[t] X[t] 表示当前时刻 t 的输入,即来自其他神经元或外部环境的刺激。
- S o u t [ t − 1 ] S_{out}[t-1] Sout[t−1] 表示神经元在上一时刻 t-1 是否发放了动作电位;
- 若 S o u t [ t − 1 ] = 1 S_{out}[t-1]=1 Sout[t−1]=1,则表示神经元在上一时刻发放了动作电位;
- 若 S o u t [ t − 1 ] = 0 S_{out}[t-1]=0 Sout[t−1]=0,则表示神经元在上一时刻没有发放动作电位。
- β \beta β 衰减因子表示神经元内部状态的遗忘速度,取值范围通常在 0 到 1 之间。
- W W W 权重矩阵表示输入信号 X [ t ] X[t] X[t] 对神经元内部状态的影响程度。
- θ \theta θ 是神经元发放动作电位的阈值。
Q: − S o u t [ t − 1 ] θ - S_{out}[t-1]\theta −Sout[t−1]θ 的作用是什么?
A:若 S o u t [ t − 1 ] = 1 S_{out}[t-1] = 1 Sout[t−1]=1,则表示神经元在上一时刻发放了动作电位,那么 U [ t ] U[t] U[t] 会减去 θ θ θ,模拟膜电位的重置过程。因此 − S o u t [ t − 1 ] θ - S_{out}[t-1]\theta −Sout[t−1]θ 又被称为复位函数,但复位函数的形式其实不止这一种,它可以是把膜电位直接复位为 0,也可以是采用衰减的方式。
2.2 BPTT 中存在的问题
BPTT 是一种基于梯度的反向传播算法,主要用于训练循环神经网络,例如 RNN 和 SNN 。
如下图所示,SNN 和 RNN 的展开结构相似:
由于前期组会已经介绍过了 RNN 的 BPTT,因此这里就不推导 SNN 的梯度公式了。
针对采用 LIF 模型的 SNN,在使用 BPTT 进行模型训练时,可能会遇到梯度不可微的问题。
假设 LIF 模型采用如下公式模拟 Fired 阶段:
S ( U − θ ) = { 0 , U < θ 1 , U ≥ θ S(U - \theta) = \left\{ \begin{array}{ll} 0, & U < \theta \\ 1, & U \geq \theta \end{array} \right. S(U−θ)={0,1,U<θU≥θ
说明: U U U 是指当前时刻的膜电位,不过尚未经过复位函数 S S S 的处理。
而函数 S S S 在 U = θ U = \theta U=θ 这一点是不可微的,因为导数趋近于无限大:
∂ S ∂ U = { 0 , if U < θ 0 , if U > θ ∞ , if U = θ \frac{\partial S}{\partial U} = \begin{cases} 0, & \text{if }\ U < \theta \\ 0, & \text{if }\ U > \theta \\ \infty, & \text{if }\ U = \theta \end{cases} ∂U∂S=⎩ ⎨ ⎧0,0,∞,if U<θif U>θif U=θ
因此通常采用 代理梯度 来平滑这一问题,比如采用代理函数 S ~ \tilde{S} S~ 替代函数 S S S:
S ~ = 1 π arctan ( π U ) \tilde{S}=\frac{1}{\pi}\arctan(\pi U) S~=π1arctan(πU)
求导结果为:
∂ S ~ ∂ U = 1 π ⋅ 1 1 + ( π U ) 2 \frac{\partial \tilde{S}}{\partial U} = \frac{1}{\pi} \cdot \frac{1}{1 + (\pi U)^2} ∂U∂S~=π1⋅1+(πU)21
2.3 梯度爆炸或消失问题
在采用 BPTT 训练 RNN 时,针对梯度爆炸、梯度消失的问题:
- 使用 ReLU 等激活函数来代替 Sigmod 以尝试缓解;
- 或者限制时间步的个数。
以上方法对于 SNN 中的 BPTT 可能不适用:
- 在代理函数的基础上进一步替换为 ReLU 函数,可能偏差较大;
- 减少时间步,即忽略膜电位,可能会违反生物特性。