脉冲神经网络原理,脉冲神经网络和人工神经网络
脉冲神经网络(SNN)属于第三代神经网络模型,实现了更高层次的生物神经模拟。除了神经元和突触的状态,还有SNN。
时间的概念被引入到操作中。本文简要介绍这种神秘的神经网络形式。
对当前机器学习有所了解的人都听过这样一个事实:当前的人工神经网络是第二代神经网络。它们通常是完全连接的,接收连续值并输出连续值。现代神经网络在很多领域都取得了突破,但在生物学上并不准确,实际上无法模仿生物脑神经元的工作原理。
第三代神经网络——脉冲神经网络(Spiking Neural Network,SNN),使用最适合生物神经元机制的模型进行计算,以填补神经科学和机器学习之间的空白。脉冲网络与现在流行的神经网络和机器学习方法有着本质的区别。n使用脉冲——。这是发生在该时间点的离散事件——,是一个很常见的连续值。每个峰值用一个代表生物过程的微分方程来表示,其中最重要的是神经元的膜电位。本质上,当一个神经元达到某个电位时,就会出现一个脉冲,然后达到该电位的神经元就会复位。相比之下,最常见的模型是集成和最小(lif)模型。此外,SNN通常是松散连接的,并使用特殊的网络拓扑。
LIF模型中的膜电位微分方程
脉冲过程中的膜电位形态
三种神经网络的脉冲训练
脉冲神经网络图
乍一看,脉冲神经网络的方法似乎是一种倒退。我们从连续输出转移到二进制输出。这些脉冲训练的解释力不强。然而,脉冲训练提高了处理时空数据(或真实世界感官数据)的能力。空间允许神经元只连接到附近的神经元,并单独处理输入块(类似于CNN使用过滤器)。意味着时间脉冲的训练是随时间发生的,二进制码丢失的信息可以从脉冲的时间信息中恢复出来。这样,RNN可以自然地处理时间数据,而不会增加额外的复杂性。已经证明脉冲神经元是比传统人工神经元更强大的计算单元。
从理论上讲,SNN比第二代网络更强大,因此很自然地要考虑为什么它们没有被广泛使用。主要问题是SNN的训练。虽然有生物学习方法,如Hebbian学习和STDP,但没有有效的监控训练方法可以提供比第二代网络更好的性能。因为脉冲训练不小,不可能用梯度下降法训练SNN而不丢失准确的时间信息。因此,为了正确使用SNN解决现实世界的任务,有必要开发一种高效的监控学习方法。这是一项艰巨的任务,因为它涉及赋予这些网络的生物现实主义,并决定了人类大脑如何学习。
另一个问题是,用普通硬件模拟SNN需要很大的计算能力,因为需要模拟微分方程。而神经形态学的硬件,如IBM TrueNorth,目的就是利用神经元冲动行为的离散性和稀疏性来模拟神经元,解决这个问题。
今天,SNN的未来似乎仍不明朗。另一方面,它们是我们当前神经网络的天然继承者;另一方面,对于大多数任务来说,它们不是实用的工具。目前,一些snn已经在实时图像和语音处理中投入使用,但相关文献很少。大多数SNN论文是理论性的,或者通过简单的完全连接的第二代网络来展示它们的性能。但是许多团队致力于开发SNN监控学习规则,我对SNN的未来持乐观态度。
关于仿真工具。几乎都是以脉冲放电的形式对生物神经网络的放电行为进行建模,数学上看起来是微分方程的形式,实际上没有任何意义。
请参考以下链接:
嵌套:
3359 blog . huzi cheng.com/2017/06/08/introduction-to-nest/
github.com/nest/nest-simulator 3359号
PyNN:
33559 www.cn blogs.com/yi fdu 25/p/8401683 . html
请参考博客文章中的工具链接。
不得不说,近几年来,脉冲神经网络仍然在飞速发展:
blog.csdn.net/Xiaoqu 3359号001/文章/详情/78713527
脉冲神经网络框架的Bindsnet目前实际上有很多脉冲神经网络的框架。我以前用过曼达的PyNN Nest和SpiNNaker。为了学习,往往需要修改学习算法的基础。用框架很麻烦。有时候,你想改一个东西,发现别人已经封装好了,很难改,你就要走自己写代码的路了。
一路走来,最大的问题不是不会写代码,而是准确率总是比别人的论文低一点,所以打算抽时间看看别人写的框架,优化自己的代码。当然,我不会去窝和脑框架。因为他们没帮我写代码。都是C语言的,应该能编译。我选择python写的框架来解读。
目前github有很多明星,比如python安装的SNN框架——BindsNET,python安装的pytorch。
链接如下。
3359 github.com/hananel-hazan/binds网
以下是github上BindsNET的介绍。
这是在CPU或GP中使用PyTorch张量函数
Python包,用于在u
BindsNET是一个神经网络模拟库,用于开发生物启发的机器学习算法。
该软件包是正在进行的将SNN应用于生物激励神经动态系统(BINDS)中的机器学习(ML)和强化学习(RL)问题的研究的一部分。
查看BindsNET实验资源库中的实验集合,有在CICS集群上分发的bash脚本,分析结果的函数,实验结果的图表等。
之后我会详细解读这个框架。
发现这个网站不错:
https://www.pianshen.com/article/94171855502/
https://blog.csdn.net/xiaoqu001/article/details/78713527