一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于脉冲神经网络的类脑仿真的加速方法

2023-07-13 21:08:53 来源:中国专利 TAG:


1.本发明涉及神经网络仿真技术领域,特别涉及一种基于脉冲神经网络的类脑仿真的加速方法。


背景技术:

2.在生物体中,神经元使用动作电位或脉冲作为共同语言来相互交谈,并为学习和决策进行计算。脉冲以神经冲动为形式,体现为或在时间域上有或无(数字)的时间点事件,它允许长距离的神经通信和低能耗的神经计算。
3.但是,外部内部刺激如光、声音、疼痛和饥饿等,这些主要是时间上的模拟连续变量,这些模拟时空域信息需要通过专门的感觉神经元,也称为传入神经元,按照一种或多种神经编码算法将特定类型的模拟刺激转化为相应的脉冲序列,随后将脉冲编码的信息传递给中枢神经系统进行处理。这个过程被称为感觉转导。
4.脉冲神经网络(snn)是模拟哺乳动物大脑皮层神经元工作机理而建构成的神经网络,被称为第三代人工神经网络。snn充分学习了上述生物神经信息传递的方式,不同于传统人工神经网络中每个轮次都进行信息发送的模式,snn只有当一些特殊时刻,即神经元的膜电位到达阈值电压时,神经元才向后级进行信息的传递。除此之外,snn中信息传递的方式也与传统ann中的不同:后者往往以信号的强度值为信息载体,而在snn中,信息承载于一系列冲激函数之和,即所谓脉冲串上。
5.snn中的脉冲数据属于时域信息,现有的ann网络的数据可以理解为空间域信息,而常见分类任务,如车牌识别、手写数字识别、人脸识别等的识别信息,也输入空间域信息,如何能在充分保留信息特征的前提下,有效将空间域信息映射到时域,并减小能耗且生成符合神经生物学原理的时序脉冲,是制约脉冲神经网络发展的关键。
6.在使用gpu进行仿真脉冲神经网络的过程中,因为不同神经元的输出突触数量不同,而导致不同线程及线程束工作量不一致,从而降低了整体的运行效率。期刊文献:计算机工程与科学,第40卷第4期2018年4月公开的《基于突触离子通道动力学神经元网络的高效并行仿真算法》,公开了一种并行仿真的算法,但是并没有很好地解决到现有的技术问题,整体的运行效率还是偏低。


技术实现要素:

7.本发明的目的在于提供一种基于脉冲神经网络的类脑仿真的加速方法,解决现有技术的仿真脉冲神经网络运行效率偏低的问题。
8.为实现上述目的,本发明采取的技术方案为:
9.本发明提供一种基于脉冲神经网络的类脑仿真的加速方法,包括以下步骤:
10.s1、在每个时间片中筛选出所有处于激活状态的神经元;
11.s2、将所有筛选出来的神经元的所有输出突触拆分;
12.s3、拆分后分配给若干个线程来完成脉冲发放任务。
13.进一步地,在所述步骤s1中还包括:设立一个互斥的计数器和一个用于存放筛选结果的数组。
14.进一步地,在所述步骤s1中还包括:当某个神经元在某个时间片内处于激活状态时,读取计数器的值作为该神经元在结果数组中存放的下标。
15.进一步地,在所述步骤s1中还包括:读取计数器的值作为该神经元在结果数组中存放的下标后将计数器加1。
16.进一步地,在所述步骤s3中,采用预设方式对线程分配且以突触为单位。
17.进一步地,所述预设方式包括:
18.在开始仿真之前先求得整个网络所有神经元的最大突触数n,再分配线程。
19.进一步地,所述预设方式还包括:
20.分配线程时,如果筛选出来的神经元数为m,则下标为i的线程对应下标为[i/n]的神经元的下标为i mod n的突触。
[0021]
进一步地,所述预设方式还包括:
[0022]
如果所述突触不存在时,则直接退出。
[0023]
进一步地,所述预设方式还包括:
[0024]
分配后,所有线程的工作量为1或0。
[0025]
与现有技术相比,本发明具有如下有益效果:
[0026]
本发明实施例提供的一种基于脉冲神经网络的类脑仿真的加速方法,包括以下步骤:在每个时间片中筛选出所有处于激活状态的神经元;将所有筛选出来的神经元的所有输出突触拆分;拆分后分配给若干个线程来完成脉冲发放任务。该方法通过将待发放脉冲的神经元先筛选出来,再将发放任务均匀分配到各个线程的方式,在一定程度上均衡了每个线程的工作量,有效地提高了仿真效率。
附图说明
[0027]
图1为本发明实施例提供的基于脉冲神经网络的类脑仿真的加速方法的流程图;
[0028]
图2为本发明实施例提供的基于脉冲神经网络的类脑仿真的加速方法与现有技术的性能对比图。
[0029]
图3为基于脉冲神经网络的类脑仿真的加速方法的分配线程的示意图。
具体实施方式
[0030]
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
[0031]
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0032]
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一
体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0033]
参照图1所示,本发明提供的一种基于脉冲神经网络的类脑仿真的加速方法,包括以下步骤:
[0034]
s1、在每个时间片中筛选出所有处于激活状态的神经元;
[0035]
s2、将所有筛选出来的神经元的所有输出突触拆分;
[0036]
s3、拆分后分配给若干个线程来完成脉冲发放任务。
[0037]
时钟驱动仿真策略是snn仿真策略之一,它将连续的仿真过程分为几个离散的步骤,并同步更新snn中的所有神经元,这些步骤称为时间片,它也称为同步算法。该算法的时间复杂度与所选的时间步长成正比,由于它可以应用于任何神经元模型,因此被广泛使用。
[0038]
由于每个时间片的神经元模型计算都要依赖于上一个时间片仿真结束后的膜电位等状态量以及在之前若干个时间片内由其他神经元发放的脉冲,因此整个仿真过程需要整个网络的所有神经元同步进行仿真,这里可使用gpu等并行化措施,在每个时间片内为每个神经元分配一个线程完成一个时间片的仿真,从而实现加速。
[0039]
如图2所示,simple(常规神经网络)、vogel(沃格尔神经网络)、multi-layers(复合多重神经网络)、resume(简易神经网络)都是测试所用的不同的脉冲神经网络,gpubrain是使用本发明的仿真器,spike和nest是用于对照的其他snn仿真器,nest后面-s代表单线程,-m代表多线程,该结果是测试使用四种网络,在三个仿真器下所消耗的时间,由图可知,本发明使用gpu等并行化措施,大大减少了仿真的时间,提高了仿真的效率。
[0040]
对于每个神经元的仿真则是按照时间片做若干次迭代,每次迭代完成两件事。第一件事是神经元模型的计算,包括将当前时间步中的输入电流代入到神经元模型中计算膜电位的变化,判断其是否满足激活条件并处理不应期。在模拟之前,设置输入电流以记录每个时间步长下每个神经元的输入电流。在仿真过程中,从前一个时间片收到的脉冲和在相应时间输入的脉冲所产生的电流将累积到相应的数组元素中。在计算神经元模型时,程序将根据当前时间步长的索引找到对应的元素作为当前输入电流。
[0041]
第二件事是在神经元被激活后发放脉冲。其过程是找到当前神经元的所有输出突触,然后通过这些突触将脉冲发射到每个突触后神经元。也就是说,根据当前时间和突触延迟将突触权重添加到相应的输入电流数组。当前时间片中所有神经元的输入电流取决于前一个时间片中所有突触前神经元所发射的脉冲,这意味着我们必须严格按顺序执行仿真程序。
[0042]
仿真的过程中发放脉冲这一环节会花费较多时间,该过程是要找到当前神经元的所有输出突触(也就是有向图中对应节点的出边),将脉冲发放到这些突触对应的突触后神经元上。由于每个神经元在哪些时间片会处于激活状态难以预测,且每个神经元所拥有的输出突触数不一致,这会使得不同线程之间的工作量不一致,而仿真整个网络需要所有神经元同步进行,这就意味着大多数工作量少的线程不得不因为少数工作量大的线程而被闲置,这就造成了整体的仿真速度下降。
[0043]
本发明的主要内容就是每个时间片都事先筛选出所有处于激活状态的神经元,将所有筛选出来的神经元的所有输出突触拆分后分配给若干个线程来完成脉冲发放任务,从
而在一定程度上均衡每个线程的工作量。
[0044]
在本实施例中,在步骤s1中,设立一个互斥的计数器和一个用于存放筛选结果的数组,当某个神经元在某个时间片内处于激活状态时,读取计数器的值作为该神经元在结果数组中存放的下标,然后将计数器加1,由于计数器是互斥的,这能保证所有被筛选出来的神经元都能存放到数组中的不同位置。当然这也会使得一些需要进行筛选的线程处于等待状态,从而造成一些额外的开销,该问题在后面内容会提到一种解决方法。
[0045]
在本实施例中,在步骤s3中,对线程的分配以突触为单位,由于筛选出来的神经元不能保证其输出突触数完全相等,如果要让每个线程都精准地分配到每个突触,则代价过大。
[0046]
因此,采取一种折中的方法进行分配:在开始仿真之前先求得整个网络所有神经元的最大突触数n,然后分配线程,分配线程时,如果筛选出来的神经元数为m,则下标为i的线程对应下标为
[i/n]
的神经元的下标为i mod n的突触,如果该突触不存在,则直接退出。
[0047]
分配的示意图如图3所示,每一行对应一个神经元,每一列对应一个突触,行高为当前筛选出来的神经元m,列宽对应最大突触数n,黑色的格子代表该位置存在突触,白色的格子代表该位置无突触,这里面所有格子对应一个线程,如果线程对应黑色的格子,就为对应的突触发放脉冲,如果线程对应白色的格子就直接退出,这样,所有线程的工作量不是1就是0,从而在一定程度上达到了工作量均衡的效果。
[0048]
本发明的基于脉冲神经网络的类脑仿真的加速方法,将所有筛选出来的神经元的所有输出突触拆分后分配给若干个线程来完成脉冲发放任务,从而在一定程度上均衡每个线程的工作量,从而提高仿真效率。
[0049]
最后,如前面所述,本方法存在一定的额外开销,因此必须保证其节省的时间超过额外开销该方法才能有效。经过研究,该方法对于那些最大突触数很高、且平均突触数也较高的神经网络提速效果较为明显。此外,提速效果还与硬件性能有关系。这样,在本仿真器入驻某一计算机或者检测到gpu发生变化时,需要做一组性能测试实验,该实验构造不同最大突触数、平均突触数的神经网络,然后测试其加速比,最后将该实验的所有数据保存。当用户使用仿真器定义好了某一个网络后,仿真器要计算出其最大突触数和平均突触数,然后采用k近邻算法找到之前实验数据与之相近的一组实验数据,根据该实验结果决定是否使用该策略。
[0050]
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表