首页 > 编程知识 正文

脉冲耦合神经网络原理,脉冲神经网络应用

时间:2023-05-05 10:29:23 阅读:169349 作者:4726

脉冲神经网络(SNN )属于第三代神经网络模型,实现了更高的生物神经模拟水平。 除了神经元和突触的状态之外,还有SNN

将时间的概念引入了那个操作中。 本文简要介绍这种神秘的神经网络形式。

所有对当前机器学习有所了解的人都听过这样一个事实,即当前的人工神经网络是第二代神经网络。 它们通常完全连接,接收连续的值,并输出连续的值。 现代神经网络在许多领域实现了突破,但在生物学上并不准确,实际上无法模仿生物大脑神经元的工作原理。

第三代神经网络,脉冲神经网络(Spiking Neural Network,SNN ),利用最适合生物神经元机制的模型进行计算,以填补神经科学和机器学习的差距。 脉冲网络与现在流行的神经网络和机器学习方法有着根本的不同。 SNN使用脉冲——。 这是时间点发生的离散事件——,是非常常见的连续值。 各峰值由表示生物过程的微分方程表示,其中最重要的是神经元的膜电位。 本质上,当神经元达到某个电位时,就会出现脉冲,之后达到电位的神经元就会复位。 相比之下,最常见的模型是集成和最小(lif )模型。 此外,SNN通常松散连接,并利用特殊的网络拓扑。

LIF模型中膜电位的微分方程

脉冲期间膜电位形态

三神经网络的脉冲训练

脉冲神经网络图

乍一看,脉冲神经网络的方法似乎是一种倒退。 我们从连续输出移动到二进制输出。 这些脉冲训练的解释力不强。 然而,脉冲训练提高了处理时空数据(或真实世界感觉数据)的能力。 空间是允许神经元只连接到附近的神经元,并单独处理输入块(类似于CNN使用过滤器)。 时间意味着脉冲训练随时间发生,二进制码丢失的信息可以从脉冲的时间信息中重新获取。 这样,RNN就可以自然处理时间数据,而不增加额外的复杂性。 事实证明,脉冲神经元是比传统人工神经元更强大的计算单元。

理论上SNN比第二代网络更强大,所以思考为什么它们没有被广泛使用是很自然的。 主要问题是SNN的训练。 尽管有无Hebbian learning、STDP等生物学学习方法的监视,但没有有效的监视训练方法能够提供比第二代网络更好的性能。 由于脉冲训练并不微小,因此无法在不损失准确的时间信息的情况下使用梯度下降来训练SNN。 因此,为了正确使用SNN解决现实世界的任务,有必要开发高效的监视学习方法。 这是一项艰巨的任务,因为它涉及赋予这些网络的生物现实主义,并决定人脑如何学习。

另一个问题是用普通硬件模拟SNN需要大量的计算力,因为需要模拟微分方程。 然而,神经形态的硬件,如IBM TrueNorth,的目的是利用神经元脉冲行为的离散和稀疏本质来模拟神经元,解决这个问题。

今天,SNN的未来似乎依然不明朗。 另一方面,它们是我们现在神经网络的天然继承者; 但另一方面,对大多数任务来说,它们还不是实践工具。 目前,在实时图像和语音处理中已有一些SNN投入使用,但相关文献还很少。 大多数SNN论文都是理论性的,或者通过简单的全连接第二代网络展示了性能。 但是很多团队致力于开发SNN监控学习规则,我对SNN的前景很乐观。

关于模拟工具。 几乎都是以脉冲放电行为,在数学上好像是以微分方程的形式,将生物神经网络放电行为模型化,但实际上没有什么意义。

请参阅以下链接:

NEST :

3359 blog.huzi cheng.com/2017/06/08/introduction-to-nest /

3359 github.com/nest/nest-simulator

PyNN :

33559 www.cn blogs.com/yi fdu 25/p/8401683.html

工具的链接请参阅博文。

不得不说这几年,脉冲神经网络还在迅速发展:

3359 blog.csdn.net/Xiaoqu 001/article/details/78713527

脉冲网络框架的bindsnet目前脉冲神经网络的框架其实很多。 我以前用过PyNN Nest和曼大的SpiNNaker。 为了研究,往往必须修改学习算法的基础性。 使用框架很麻烦,有时想改变一些东西,发现别人封装了,很难改变,就必须走上自己写代码的道路。

一路走来,最大的问题不是不会写代码,而是精度总是比别人的论文低一点,所以我打算抽出时间看看别人写的框架,优化自己的代码。 当然不会去看nest、brain这些框架。 因为他们对我写代码没什么帮助。 他们都是c语言,应该会编译。 我选择python写的框架进行解读。

现在,在github中有星星比较多的python安装的SNN框架——BindsNET,python pytorch安装

链接如下。

3359 github.com/hananel-hazan/binds net

以下是BindsNET在github上的介绍。

这是使用PyTorch张量功能在CPU或GP中

U上模拟尖峰神经网络(SNN)的Python包。
BindsNET是一个用于开发生物启发的机器学习算法的神经网络仿真库。
该软件包是目前正在进行的将SNN应用于生物启发神经动力学系统(BINDS)实验室机器学习(ML)和强化学习(RL)问题的研究的一部分。
查看BindsNET实验存储库中的实验集合,附带用于在CICS集群上分配的bash脚本、用于分析结果的函数、实验结果的图表等等。

之后我将会对这个框架进行详细解读

发现这个网站不错:
https://www.pianshen.com/article/94171855502/
https://blog.csdn.net/xiaoqu001/article/details/78713527

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。