参考资料:
类脑运算--脉冲神经网络(Spiking Neural Network)叙述:https://blog.csdn.net/Yannan_Strath/article/details/105761023
脉冲神经网络的五脏六腑:https://blog.csdn.net/u011853479/article/details/61414913
目录
1.IF neuron(integrated and fire)
3.Leaky Integrate and Fire(LIF)模型
一些基础知识
- 在人的传感系统和大脑中, 信息会以动作电压或称之为电脉冲(electric spike)的形式传递,接受,和处理。
- 人脑的记忆和学习依赖于突触后细胞受到刺激后所产生的突触可塑性。 详见: Hebbian learning
- 我们在很多情况下的感知和学习过程都是非监督式的
- SNN并不是一个像CNN,RNN这样的网络结构, 而是一个新型的,更加接近人脑的一种神经网络算法的统称。
名词解释
在SNN中, 信息是如何用spike来表达的?
脉冲编码。在SNN中, 引入了时序(temporal)相关的处理形式。 信息是被编码在脉冲序列的时间序列(spike train)中的。 例:高频率的一组脉冲序列可以代表一个较高的值而低频率的脉冲则代表低值。又例如: 在一个固定的时间窗中, 单个脉冲出现的位置也可以代表相应的值/信息。
PSP是什么?
神经元上的膜电压变化
图1 单个spike产生的膜电压变化
膜电压在接受到脉冲输入前会一直保持在 − 70 -70−70mV 的地方, 这个值通常叫做静止值(resting value)。 当接受到刺激后, 会产生电压变化的幅值。 在变化结束后, 膜电压会归位回起始的静止值。
脉冲神经元模型
脉冲神经元模型可以模拟PSP波形
1.IF neuron(integrated and fire)
当施加输入电流时,膜电压会随时间增加,直到达到恒定阈值Vth,此时将出现增量函数尖峰,并且电压会重置为其静止电位,此后模型将继续运行。
2. Hodgkin–Huxley 模型
HH模型是一组描述神经元细胞膜的电生理现象的非线性微分方程,直接反映了细胞膜上离子通道的开闭情况。
图2 HH模型所对应的电路图
其中 C 代表脂质双层(lipid bilayer) 的电容;RNa, RK, Rl分别代表钠离子通道、 钾离子通道与漏电通道的电阻(RNa, RK 上的斜箭头表明其为随时间变化的变量, 而 R l 则为一个常数); E l, E Na, E K 分别代表由于膜内外电离子浓度差别所导致的漏电平衡电压、钠离子平衡电压、钾离子平衡电压;膜电压V代表神经膜内外的电压差,可以通过HH模型的仿真来得到V随时间变化的曲线。
图3 神经元的膜电压变化
图中共有6个输入脉冲(垂直虚线所示),每个脉冲触发膜电压V的快速上升。
如果输入脉冲之间的时间间隔较长(例如在1ms与22ms到达的2个脉冲之间,由于漏电通道的作用,没有新的输入脉冲),膜电压V就会随着时间逐渐降低至平衡电压El。
如果有多个输入脉冲在短时间内连续到达(例如在45~50ms 之间的3 个脉冲),那么膜电压V会上升至发放阈值Vth(红色水平虚线所示) 而触发一个输出脉冲。之后V被重置为低于平衡电压El的Vreset,然后逐渐回升至平衡电压El。
神经元的行为与输入的时间特性密切相关,一组脉冲如果在短时间内连续到达,可以触发神经元的脉冲;但是同样数量的一组脉冲如果在较长时间内分散到达,那么膜电压的漏电效应便不会产生脉冲。
HH模型精确度高,但运算量大
3.Leaky Integrate and Fire(LIF)模型
LIF模型将细胞膜的电特性看成电阻和电容的组合。运算量小,但牺牲了精确度。
4.Izhikevich模型
结合了HH模型和LIF模型的优点,生物精确性接近HH模型,运算复杂度接近LIF模型。
5. SRM模型
突触后神经元发出脉冲的过程?
图4 单个spiking neuron接受多个spike输入。
图5 膜电压变化仿真
- 突触后神经元会首先按照接受到的时间整合脉冲, 将他们变为膜电压的变化的叠加。
- 当膜电压超过预先设置好的阈值(ϑ)时,突触后neuron被认定为收到了足够的刺激从而发出一个脉冲(spike)。
- 在发出脉冲后, 膜电压会被重置并且突触后神经元会在一段时间内无法处理接收到的脉冲, 这段时间称为神经元的refractory period。
- 在refractory period之后, 膜电压会恢复到静止值从而可以准备下一次脉冲的产生。 这就是脉冲神经元一次完整的spike generation过程。
什么是refractory period?
突触后神经元发出脉冲后, 膜电压会被重置并且突触后神经元会在一段时间内无法处理接收到的脉冲, 这段时间称为神经元的refractory period。
SNN的学习方法
1.将传统ANN转换为SNN
对原始的CNN进行训练,将训练好的权值直接迁移到相似网络结构的SNN。要将训练好的网络在输入,运算和输出上全面转换为以二进制spike为处理载体的网络。 在输入上,要将输入信号编码为脉冲序列。 所有神经元要用相应的spiking neuron来替换, 训练所得得权重要进行量化。
困难
- CNN中的某一层神经元可能会输出负值,这些负数用SNN表示会比较困难。比如,CNN中的sigmoid函数的输出范围为-1到1,每个卷积层的加权和可能也为负值,在进行颜色空间变换时某个颜色通道也可能取到负值。虽然,SNN可以采用抑制神经元来表示负值,但会成倍地增加所需要的神经元数目,提高计算的复杂度。
- 对于SNN,CNN中神经元的偏置很难表示。
- CNN中的Max-pooling层对应到SNN中,需要两层的脉冲神经网络。同样提高了SNN的复杂度。
裁剪
- 保证CNN中的每个神经元的输出值都是正数。在图像预处理层之后,卷积层之前加入abs()绝对值函数,保证卷积层的输入值都是非负的。将神经元的激活函数替换为ReLU函数。一方面可以加快原始CNN的收敛速度,另一方面ReLU函数和LIF神经元的性质比较接近,可以最小化网络转化之后的精度损失。
- 将CNN所有的偏置项都置为0。
- 采用空间线性降采样层代替Max-pooling层。
转化
- SNN的网络结构与裁剪后的CNN相同,单纯地将CNN中的人工神经元替换为脉冲神经元
- 在CNN的卷积层之前增加用于脉冲序列生成的一层网络,对输入的图像数据进行编码,转化为脉冲序列。
- 变换决策方式。在某一段时间内,对全连接层输出的脉冲数进行统计,取脉冲数最多的类别作为最终的分类结果
- 将裁减后的CNN训练得到的权值全部迁移到对应的SNN。
最终的转化结果如下图所示。
图6 ANN转化为SNN的结果
2.反向传播
脉冲神经元的spike function无法直接求导做差计算出梯度。 但研究人员想出了很多聪明得方法来预估网络中的变化参数的梯度从而进行反向传播: spikeprop, Slayer
3.突触可塑性
利用生物学的原理研究人员将spike time dependent plasticity (脉冲时间相关可塑性)引入了SNN的训练。 然而这种训练方法虽然novel, 但训练过程非常繁琐, 而且是一种纯非监督式学习, 非常考验设计者对神经科学和神经网络得理解
ANN vs SNN
1.信息载体
图7 ANN和SNN的信息载体
ANN:高精度浮点数
SNN:spikes ,或可以理解为1和0
2.神经元
图8 ANN和SNN的神经元
ANN:加乘运算器:整合输入该神经元的值 ,而后接着一个非线性的激活方程
SNN:spiking neuron所进行的处理是接受由突触传递而来的脉冲, 依据突触权重通过spiking function产生突触后膜电压(post synaptic potential (PSP))