完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
Spiking Neural Network简述(一)
传统神经网络包括现存的各种以perceptron为基本单元的拓扑变种, 比如卷积神经网络系列(CNNs), 循环神经网络系列(RNNs), 生成对抗网络(GANs), 自编码器(Autoencoders) 等等。 因为反向传播算法的存在和各类数学优化器的发展, 使得第二代神经网络在各项任务上有着出色的表现。 Spiking Neural Network(SNN) 被公认为继现有的MLP为基础的第二代神经网络(ANN)之后发展的第三代神经网络。虽然传统神经网络已然在各项任务上取得了优异的成绩, 但它们的原理和运算过程仍然和真正的人脑信息处理过程依然相差甚远。主要的差异可以总结为以下几点: 1. 传统神经网络算法仍然依据于使用高精度的浮点数进行运算, 然而人脑并不会使用浮点数进行运算。 在人的传感系统和大脑中, 信息会以动作电压或称之为电脉冲(electric spike)的形式传递,接受,和处理。 2. ANN的训练过程对反向传播算法(梯度下降)的依赖程度非常之高, 然而在真实的人脑学习过程中,科学家们还没有观察到这种学习类型。 更多的, 人脑的记忆和学习依赖于突触后细胞受到刺激后所产生的突触可塑性。 详见: Hebbian learning 3. ANN通常需要大量的标签数据集来驱动网络的拟合。 这与我们平时经理的有所不同。 我们在很多情况下的感知和学习过程都是非监督式的。并且, 人脑通常不需要如此大量反复的数据来学习同一件事情。 综上所述, 为了使神经网络更加接近于人脑, SNN随而诞生了。发现它的灵感,就来自于生物大脑处理信息的方式—spikes。 读到这里,就应该已经明白SNN并不是一个像CNN,RNN这样的网络结构, 而是一个新型的,更加接近人脑的一种神经网络算法的统称。 SNN和ANN的区别 那么, SNN和传统方法的区别在哪里呢? 1,信息载体(information carrier) 首先, 最基本的区别是SNN和ANN的信息载体不一样。 ANN 使用的是高精度浮点数而SNN使用的是spikes 或可以理解为1和0,这就大大增加了信息在网络中的稀疏性。这些spike在网络中有相同的幅度和duration. 图1左:传统神经网络结构。 右:SNN结构 那么,在SNN中, 信息是如何用spike来表达的呢? 这就涉及到脉冲编码的知识了。这里做简单介绍,之后我会再详细解释它。 在SNN中, 很重要的一点是引入了时序(temporal)相关的处理形式。 信息是被编码在脉冲序列的时间序列(spike train)中的。 例如: 高频率的一组脉冲序列可以代表一个较高的值而低频率的脉冲则代表低值。又例如: 在一个固定的时间窗中, 单个脉冲出现的位置也可以代表相应的值/信息。 2,神经元 图2左:传统神经元。 右:spiking neuron 既然信息的载体不一样, 那么神经网络中的基本单元–神经元肯定也是不一样的。 对ANN有了解的同学们都知道, 基本神经元perceptron 是一个简单的 加乘运算器用来整合输入该神经元的值 而后接着一个非线性的激活方程(Non-linear activation function)。然而这种针对确切数值的运算并不适用于二进制脉冲的处理。 在SNN中, 基本的运算单元为以生物突触结构为基础构建的脉冲神经元(spiking neuron)。 想象有两个spiking neuron 其中一个为突触前神经元(pre-synaptic neuron)作为spiking的发出者, 一个为突触后神经元(post-synaptic neuron) 作为spike的接受者。 spiking neuron所进行的处理是接受由突触传递而来的脉冲, 依据突触权重通过spiking function产生突触后膜电压(post synaptic potential (PSP)) 图2 spiking neuron的示例。 PSP代表post synaptic potential. 那么PSP是什么呢? 简单的解释就是神经元上的膜电压变化。例如图三就是一个神经元接受到spike后膜电压 u ( t ) u(t) u(t)随着时间 t t t 的变化。在生物学中, 这种电脉冲的幅值和时间常数是在特定范围内的, 例如图三中, 膜电压在接受到脉冲输入前会一直保持在 − 70 -70 −70mV 的地方, 这个值通常叫做静止值(resting value)。 当接受到刺激后, 会产生电压变化的幅值。 在变化结束后, 膜电压会归位回起始的静止值。在实际操作中这种波形要怎样产生呢? 科学家们对生物神经元进行实验分析后, 给出了许多神经元的差分方程(differential equation)模型: 例如: IF neuron(integrated and fire) I ( t ) = C m d V m ( t ) d t I(t) = C_m frac {dV_m (t)}{dt} I(t)=CmdtdVm(t) 可以看出来式子为电容定律的时间导数,Q = CV。 当施加输入电流时,膜电压会随时间增加,直到达到恒定阈值Vth,此时将出现增量函数尖峰,并且电压会重置为其静止电位,此后模型将继续运行。 除此之外Hodgkin–Huxley 模型, LIF模型, SRM模型等等。 但Neuron model在SNN中的作用主要还是作为脉冲序列的处理单元, 其真正的生物学仿真特性我个人认为在SNN的实际应用过程中不必要求过于苛刻的接近于实际生物学的膜电压波形。 图3 单个spike产生的膜电压变化。 那么像图4一样, 当一个突触后神经元接受到多个channel的脉冲序列输入膜电压会发生什么样的变化呢? 图4 单个spiking neuron接受多个spike输入。 图5 膜电压变化仿真。 如图5所示。 突触后神经元会首先按照接受到的时间整合脉冲, 将他们变为膜电压的变化的叠加。 当膜电压超过预先设置好的阈值( ϑ vartheta ϑ)时,突触后neuron被认定为收到了足够的刺激从而发出一个脉冲(spike)。 在发出脉冲后, 膜电压会被重置并且突触后神经元会在一段时间内无法处理接收到的脉冲, 这段时间称为神经元的refractory period。 在refractory period之后, 膜电压会恢复到静止值从而可以准备下一次脉冲的产生。 这就是脉冲神经元一次完整的spike generation过程。 3,学习方法/使用方法 传统ANN主要依赖于基于梯度下降的反向传播算法。 但在SNN中, 因为spiking neuron的function通常为不可导的差分方程, 在SNN中实现反向传播就显得异常的困难。 那么如何训练SNN呢?在实际应用N中, SNN implementation主流的方式大概有三种, 这里做简要的方法叙述:
ANN VS SNN 总结, SNN目前仍在快速发展中, 其优势展现在于相比ANN具有更大的移动设备应用潜能。 这主要归于它的处理方式可以结合新型的类脑芯片(neuromorphic chips)实现高速低功耗的大规模网络运算。 写在最后 第一次撰写个人博客, 所想所写都仅为个人理解, 如有错误欢迎指出和更正。 期待与您共同在新兴领域进行探索和学习。 在后续博客中,我准备继续更新以下内容:
|
|
|
|
只有小组成员才能发言,加入小组>>
3849个成员聚集在这个小组
加入小组3079 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4058 浏览 1 评论
4049 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 20:01 , Processed in 0.506069 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号