查看原文
其他

【强基固本】第三代神经网络初探:脉冲神经网络(Spiking Neural Networks)



“强基固本,行稳致远”,科学研究离不开理论基础,人工智能学科更是需要数学、物理、神经科学等基础学科提供有力支撑,为了紧扣时代脉搏,我们推出“强基固本”专栏,讲解AI领域的基础知识,为你的科研学习提供助力,夯实理论基础,提升原始创新能力,敬请关注。

来源:知乎—陈什么夏

地址:https://zhuanlan.zhihu.com/p/531524477
这篇文章旨在介绍脉冲神经网络(Spiking Neural Networks,SNN)的发展及其原理,适用于作为初次了解。小黄鸭调试法


01
三代神经网络
随着深度学习不断的发展,科学界也不断的基于类脑研究提出新的神经网络架构,到目前为止,神经网络的架构已经更迭了三代[1],他们分别是:

第一代神经网络:

McCulloch–Pitt感知机,它仅由输入和输出组成,第一个神经元的计算模型是由Warren MuCulloch(神经科学家)和Walter Pitts(逻辑学家)在1943年提出的。执行阈值运算并输出数字(0,1)。由于其简单的结构,导致无法解决非线性问题。

McCulloch–Pitt感知机,其中,g为输入求和函数,f为决策函数

第二代神经网络:

第二代神经网络解决了非线性的问题,包括添加了隐藏层,激活函数(例如sigmoid或ReLU增加了连续非线性),基于反向传播机制(back propagation)使其能够计算一组连续的输出值。第二代神经网络也是目前使用的最广泛的网络算法,目前所有的主流深度神经网络DNN,都属于第二代网络。
典型的二代神经网络:多层感知机MLP(MultiLayer Perceptron)

第三代神经网络[2]:

通过“整合放电”(integrate-and-fire)机制进行数据传递的尖峰神经元,通过脉冲交换信息,因此称为脉冲神经网络(SNN)。第二代和第三代神经网络之间最大的区别在于信息处理性质。第二代神经网络使用了实值计算(real-value)(例如,信号振幅),而SNN则使用信号的时间(脉冲)处理信息。SNNs中的神经元单元只有在接收或发出尖峰信号时才处于活跃状态,因此它是事件驱动型的,因此可以使其节省能耗。
  • SNN脉冲神经网络增加了时间的维度,有利于持久学习不遗忘
  • SNN以脉冲的形式,可以以二进制进行学习,更节省能耗
脉冲神经网络SNN


02
什么是脉冲神经网络(SNN)?
SNN是由海德堡大学和伯尔尼大学的研究人员首次提出[3],作为一种快速和节能的技术,使用尖峰神经形态基质进行计算。
a) 传统ANN神经元网络,对所有的权重进行求和输出;b)SNN脉冲神经网络,神经元在时间维度上积累脉冲,达到阈值之后输出
除了神经元和突触状态外,SNNs还将时间纳入其工作模型。其理念是,SNN中的神经元不会在每个传播周期结束时传输信息(例如传统的MLP多层感知器网络),而是只有当膜电位 —— 一个神经元与其膜电荷有关的内在质量--达到某个值,即所谓的阈值时才会传输信息。当膜电位达到阈值时,神经元就会发射,向相邻的神经元发送信号,相邻的神经元根据信号增加或减少其电位。
脉冲神经网络SNN与生物神经元的类比图,相较于ANN,SNN在拟态上更加接近生物神经元
人工神经元尽管与生物神经元有着惊人的相似性,但其行为方式并不一样。生物神经元和SNN在以下方面有根本性的不同:
  • SNN只有一般的通用结构,没有特异化的结构
  • 生物神经元并不直接传递冲动。为了进行交流,必须在突触间隙中交换称为神经递质的化学物质
  • 计算与学习规则


03
脉冲神经网络机制与编码
与ANN擅长处理持续变化的时间值相比,SNN主要应用在处理在规定时间发生的离散事件。SNN将一组尖峰作为输入,并产生一组尖峰作为输出(一系列的尖峰通常被称为尖峰序列)。构建SNN的整体想法为
  1. 每个神经元都有一个值,相当于生物神经元在任何时候的电势。
  2. 一个神经元的值可以根据其数学模型而改变;例如,如果一个神经元从上游神经元得到一个尖峰,其值可能会上升或下降。
  3. 如果一个神经元的值超过了某个阈值,该神经元将向与第一个神经元相连的每个下游神经元发送一个脉冲,而该神经元的值将立即下降到其平均值以下。
  4. 因此,该神经元将经历一个类似于生物神经元的折返期。随着时间的推移,该神经元的值将逐渐恢复到其平均值。
人工尖峰神经网络被设计用来做神经计算。这就需要赋予神经尖峰以意义:对于计算来说,重要的变量必须以尖峰神经元交流的方式来定义。基于生物学知识,人们提出了各种神经元信息编码。

二进制编码(Binary Coding)

二进制编码是一种全有(1)或全无(0)的编码,其中一个神经元在一个特定的时间间隔内要么活跃,或不活跃,在整个时间范围内发射一个或多个尖峰。这种编码的原因是:在生理机制中,神经元在接受输入(感觉刺激,如光或外部电输入)时倾向于类似的激活机制。
单个神经元可以从这种二进制抽象中获益,因为它们被描绘成只能接受两个开/关值的二进制单元。它也可以应用于对目前尖峰神经网络的尖峰序列的解释,在尖峰序列分类中采用了对输出尖峰序列的二进制解释。

速率编码(Rate Coding)

在速率编码中,间隔中的尖峰速率被用作信息交流的尺度。这是从尖峰的时间性质中抽象出来的。在生物上的神经元对于较强的(感觉或人工)刺激会更频繁地释放脉冲,这一事实促使了速率编码。
它可以在单神经元水平上使用,也可以再次用于解释尖峰序列。在第一种情况下,神经元被直接描述为速率神经元,它在每个时间步长将实值输入数字 "速率 "转换成输出 "速率"。在技术背景和认知研究中,速率编码一直是传统的人工 "Sigmoidal"神经元的概念,即拥有非线性激活函数的神经元。

完全时间性编码(Fully Temporal Coding)

一个完全时间性的编码取决于所有尖峰的精确时间。来自神经科学的证据表明,尖峰的时间可以非常精确,并具有高度的可重复性。其中,时序与全时空代码中的某个(内部或外部)事件有关(如刺激的开始或参考神经元的尖峰)。

延迟编码(Latency Coding)

延迟编码利用了尖峰出现的时间,但没有使用尖峰的数量。一个特定的(内部或外部)事件和第一个尖峰之间的延迟被用来编码信息。这种编码已被用于无监督和有监督的学习方法,如SpikeProp[4]和Chronotron[5]等。关于刺激的信息是按照一个组内的神经元产生其第一个尖峰的顺序来编码的,这与等级顺序编码密切相关。

脉冲神经网络架构机制

在SNN结构中,尖峰神经元和连接突触是由可配置的标量权重描述的。模拟输入数据通过基于速率、时间或其他技术被编码成尖峰序列,作为构建SNN的初始阶段。例如下图的输入与输出:

基于SNN的MLP架构

相比于大脑中的生物神经元(以及模拟的尖峰神经元)从神经网络中的其他神经元获得突触输入。动作电位的产生和网络动态都存在于生物脑网络中。与实际的生物网络相比,人工SNN的网络动力学要简化很多。在这种情况下,假设建模的尖峰神经元具有纯粹的阈值动力学(相对于折射、滞后、共振动力学或抑制后反弹的特征),当突触后神经元的膜电位达到阈值时,突触前神经元的活动会影响突触后神经元的膜电位,从而产生动作电位或尖峰。


04
脉冲神经网络的学习过程
在几乎所有的ANN中,不管是尖峰还是非尖峰,都是通过改变标量值的突触权值来实现学习的。脉冲机制允许复制一种在非加速网络中不可能实现的生物可信的学习规则。这种学习规则的许多变体已被神经科学家们在总括为术语:"尖峰时间依赖的可塑性"(spike-timing-dependent plasticity,STDP)。
它的主要特点是,连接突触前和突触后神经元的权重(突触效能,synaptic efficacy)能够根据它们在几十毫秒时间间隔内的相对尖峰时间而改变。权重的调整是基于突触局部和时间局部的信息。

无监督学习

无监督学习旨在检测非标签数据中的统计相关性,并做出相应的反应(分类,聚类)达成目标。其中,SNN适用于Hebbian learning和尖峰泛化,并识别相应的相关性。
Hebbian learning,活动依赖的突触可塑性,突触前和突触后神经元的相关激活导致两个神经元之间的联系加强。这种学习方法表明,如果神经网络中的神经元经常一起为该网络的特定输入而兴奋,则它们之间会形成更强的连接。
STDP被定义为一个过程,如果突触后的神经元在突触前的神经元发射脉冲后不久就激活,那么突触后的神经元就会加强突触的权重,如果突触后的神经元发射较晚,那么突触的权重就会减弱。另一方面,这种传统形式的STDP仅仅是STDP众多生理形式中的一种。

监督学习

在监督学习中,数据(输入)伴随着标签(目标),学习的目的是将(类)输入与目标输出相关联(输入与输出之间的映射或回归)。目标和实际输出之间的误差信号脉冲被进行计算,并被用来更新网络的权重。监督学习允许我们使用目标来直接更新参数。强化学习为我们提供了一个通用的错误信号("奖励"),从而反映系统的运作情况。在实践中,这两种监督学习的界限是模糊的。在这方面,SNN的训练模式与第二代神经网络并无太大区别。


05
脉冲神经网络的应用与优劣势
从理论上讲,SNNs可用于与标准ANNs相同的应用。目前,SNNs主要的应用领域还是在脑科学与认知科学中,用于了解生物动物的中枢神经系统,如昆虫在陌生环境中寻找食物。由于SNNs的相似性,它们可以被用来研究生物大脑网络的运作:从一个关于真实神经回路的拓扑结构和功能的假设开始,该回路的记录可以与适当的SNN的输出进行比较,以评估该假设的合理性。然而,SNNs缺乏足够合适的训练过程,这在特定的应用中可能是一个障碍,如计算机视觉。
优点
  • SNN是一个动态系统。因此,它在动态过程中表现出色,如语音和动态图片识别
  • 当一个SNN已经在工作时,它仍然可以继续进行学习
  • 训练一个SNN时,你只需要训练输出神经元
  • 然而,SNN通常相较ANN有更少的神经元
  • 由于神经元发送脉冲而不是连续的值,利用了信息的时间呈现,SNNs提高了信息处理的效率和抗噪音能力,可以高效的运作,并相比于ANN,消耗更少的能量
缺点
  • SNNs训练过程比较困难
  • 到目前为止,还没有专门为这项任务建立的学习算法
  • 目前,建立一个小型的SNN并不实用
如果有好的信息或者文章,欢迎补充评论,谢谢~

参考

1. https://blog.csdn.net/qq_41955989/article/details/107025337

2. https://analyticsindiamag.com/a-tutorial-on-spiking-neural-networks-for-beginners/

3. Ghosh-Dastidar, Samanwoy, and Hojjat Adeli. "Spiking neural networks." International journal of neural systems 19.04 (2009): 295-308.

4. Bohte, Sander M., Joost N. Kok, and Johannes A. La Poutré. "SpikeProp: backpropagation for networks of spiking neurons." ESANN. Vol. 48. 2000.

5. Florian, Răzvan V. "The chronotron: A neuron that learns to fire temporally precise spike patterns." (2012): e40233.

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

“强基固本”历史文章


更多强基固本专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存