一种支持独立时延的脉冲信号传递系统及方法与流程

文档序号:37690096发布日期:2024-04-18 21:07阅读:15来源:国知局
一种支持独立时延的脉冲信号传递系统及方法与流程

本发明涉及信息处理,尤其涉及脑仿真中前神经元簇与后神经元簇之间的脉冲信号传递。


背景技术:

1、使用计算机模拟大脑中数以亿计的突触与神经元的活动是研究人员理解大脑动力学、探索大脑运行机制、进行脑科学相关研究的一个重要途径。我们将使用计算机模拟大脑突触与神经元活动的行为称为“脑仿真”。从文献[1]和文献[2]的开创性工作开始,研究人员为脑仿真技术领域提供了众多有生物学理论支撑的突触、神经元模拟方案。

2、随着近年来脑科学领域的关注度不断提升、神经科学与计算机科学领域快速发展、计算机硬件的升级迭代,涌现了许多优秀的支持脑仿真功能的框架。

3、使用这些框架进行脑仿真过程中,“脉冲信号传递”是一个重要的环节。脑仿真时,神经元之间是通过突触相互连接的。具体的两个神经元之间可能存在突触连接,也可能不存在突触连接。某个神经元发出脉冲信号后,信号通过从该神经元连出的突触传递给其他神经元。脑仿真框架搭建起来的由突触、神经元组成的网络称为“脑仿真网络”。

4、为了在计算机中模拟脉冲产生与传递活动,将真实世界中的连续时间离散化为时间步,仿真时脉冲产生与传递的活动都是在离散的时间步中进行的。两个时间步之间代表的时长可以人为设置(一般为0.1毫秒)。

5、脉冲信号在某条突触上传递的过程中,要乘以某个人为给出的权重值,经过某个人为给出的时间步后到达其他神经元。接收该信号的神经元的膜电位值会发生变化。信号在突触上传递所用的时间步称为“时延”,真实大脑中每条突触都有其独立的时延值,即,突触之间的时延值相互独立,不会相互影响。

6、在脑仿真时,对部分神经元输入电流,使这些神经元膜电位超过设定好的阈值,进而发放脉冲,这些发放的脉冲信号通过突触传递给其他神经元,引起其他神经元的膜电位值变化。当膜电位值超过设定好的阈值时,这些神经元也会发放脉冲,进而影响到与之相连的其他神经元。研究人员可以观察仿真过程中不同神经元的膜电位变化和脉冲发放情况来进行脑科学相关的研究。仿真的时长以时间步为单位,如果时间步设置为0.1毫秒,研究人员想观察对真实世界仿真0.1秒的结果,则仿真程序运行时长设置为1000个时间步。

7、为了更清晰地表达复杂相连的数量庞大的神经元,脑仿真领域引入了“神经元簇”的概念。神经元簇是由若干个神经元组成的集合,两个神经元簇之间通过若干条突触相连。脑仿真时,一个神经元簇发出脉冲信号,脉冲信号通过神经元簇之间的突触连接传递给另一个神经元簇。发出脉冲信号的神经元簇称为“前神经元簇”,接收脉冲信号的神经元簇称为“后神经元簇”。两神经元簇之间的每条突触均由前神经元簇中的某个神经元发出,连向后神经元簇的某个神经元。每条突触都对应人为给定一个权重值以及一个时延值,在该条突触上传递的脉冲信号要乘以该权重值并经过该时延值对应的时间步后到达对应的神经元。

8、文献[3]、文献[4]、文献[5]是三个主要的支持脑仿真功能的框架。

9、文献[3]、文献[4]的框架搭建突触与神经元组成的脑仿真网络后,支持用户为脑仿真网络中的每一条突触连接独立地设置时延,与大脑真实情况保持一致,真实的大脑中突触连接对应的时延值之间相互独立,不会相互影响。两个框架提出的脉冲信号传递方法均描述单个神经元发放的脉冲通过从该神经元连出的突触向其他相连的神经元进行传递的过程。文献[3]的框架提出的脉冲信号传递方法基于cpu多线程的思路,实现该方法时要使用c++多线程代码,只能实现在cpu上;文献[4]的框架提出的脉冲信号传递方法基于gpu多线程思路,实现该方法时要使用cuda代码,只能实现在gpu上。综上,两个框架提出的脉冲信号传递方法均难以实现在不同硬件上。

10、文献[5]的框架搭建脑仿真网络后,前神经元簇同一个神经元连出去的所有突触连接只能有相同的时延值,即,同一个神经元连出的所有突触连接对应的时延值不是相互独立的。因此,文献[5]的框架进行脉冲信号传递时不支持用户为每条突触连接独立地设置时延,这与真实情况不一致。文献[5]的框架提出的的脉冲信号传递方法描述前神经元簇发放的脉冲通过两个神经元簇之间的突触向后神经元簇进行传递的过程。该方法可以实现在不同硬件上。

11、本发明引用的文献信息如下:

12、文献[1]:hodgkin a l,huxley a f.a quantitative description of membranecurrent and its application to conduction and excitation in nerve[j].thejournal of physiology,1952,117(4):500;

13、文献[2]:segev i,rinzel j,shepherd g m.the theoretical foundations ofdendritic function:the collected papers of wilfrid rall with commentaries(computational neuroscience)[j].1994;

14、文献[3]:gewaltig m o,diesmann m.nest(neural simulation tool)[j].scholarpedia,2007,2(4):1430;

15、文献[4]:golosio b,tiddia g,de luca c,et al.fast simulations ofhighly-connected spiking cortical models using gpus[j].frontiers incomputational neuroscience,2021,15:627620;

16、文献[5]:wang c,chen x,zhang t,et al.brainpy:a flexible,integrative,efficient,and extensible framework towards general-purpose brain dynamicsprogramming[j].biorxiv,2022:2022.10.28.514024。


技术实现思路

1、本发明的目的是解决上述现有技术存在的缺陷。

2、本发明提供一种支持独立时延的脉冲信号传递系统,应用于由具有计算能力的电子设备实现的脑仿真中,该系统依次包括:前神经元簇模块、脉冲信号传递模块、及后神经元簇模块;其中,

3、前神经元簇包括p个神经元;其中,p大于或等于1;

4、后神经元簇包括q个神经元;其中,q大于或等于1;

5、脉冲信号传递模块内封装有多个基于神经元之间突触连接规则的脉冲信号传递算子,用于前神经元簇与后神经元簇之间脉冲信号传递的仿真;脉冲信号传递模块设置有多个接口用于获取调用脉冲信号传递算子所需的技术参数;其中,多个接口包括:突触连接规则rule、突触连接结构的表达形式repr、突触的权重信息wuser、突触的时延信息duser、前神经元簇神经元个数p、后神经元簇神经元个数q、仿真总时间步t。

6、进一步地,神经元之间突触连接规则包括:两个神经元簇之间神经元一对一连接的规则(one2one);两个神经元簇之间前神经元簇的每个神经元与后神经元簇所有神经元全部进行连接的规则(all2all);及自定义连接规则,自定义连接规则允许用户指定两个神经元簇之间的突触连接数量、两个神经元簇的神经元之间进行连接的概率,也允许用户直接指定具体的突触连接结构。

7、进一步地,突触连接结构通过以下三种形式进行表达:

8、‘mat’,使用矩阵m表达两个神经元簇之间突触连接的结构:矩阵的行数m为前神经元簇神经元数量,列数为后神经元簇神经元数量;如果矩阵的第i行第j列元素mij为1,表示前神经元簇第i个神经元与后神经元簇第j个神经元之间有突触连接,如果mij为0,表示这两个神经元之间没有连接;

9、‘coo’,使用两个向量表达突触连接的结构:一个向量为神经元簇间所有突触对应的前神经元簇神经元的id,记为pre_ids;另一个向量为神经元簇间所有突触对应的后神经元簇神经元的id,记为post_ids;

10、‘csr’,该表达形式由‘coo’衍生而来:对‘coo’表达形式下的pre_ids按照由小到大的顺序进行排序,pre_ids排序后,post_ids的顺序也相应发生改变;‘csr’形式使用两个向量表达突触连接结构:一个向量为排序后的post_ids;另一个向量记为pre_indptr,长度为前神经元簇神经元数量加1;当pre_indptr第i个元素与第i+1个元素相同时,前神经元簇第i个神经元没有连向后神经元簇的突触连接。

11、进一步地,脉冲信号传递模块基于突触连接规则、突触连接结构表达形式,封装了五个脉冲信号传递算子:event_one2one、event_all2all、event_mat、event_coo、event_csr;脉冲信号传递模块根据所获取的突触连接规则rule、突触连接结构的表达形式repr,确定待调用的脉冲信号传递算子;其中,

12、当所获取的突触连接规则rule为对应于两个神经元簇之间神经元一对一连接的规则(one2one)时,确定待调用的脉冲信号传递算子为event_one2one;

13、当所获取的突触连接规则rule为两个神经元簇之间前神经元簇的每个神经元与后神经元簇所有神经元全部进行连接的规则(all2all)时,确定待调用的脉冲信号传递算子为event_all2all;

14、当所获取的突触连接规则rule为所获取的突触连接规则rule为自定义规则、且突触连接结构的表达形式repr为‘mat’时,确定待调用的脉冲信号传递算子为event_mat;

15、当所获取的突触连接规则rule为所获取的突触连接规则rule为自定义规则、且突触连接结构的表达形式repr为‘coo’时,确定待调用的脉冲信号传递算子为event_coo;

16、当所获取的突触连接规则rule为所获取的突触连接规则rule为自定义规则、且突触连接结构的表达形式repr为‘csr’时,确定待调用的脉冲信号传递算子为event_csr。

17、本发明还提供一种支持独立时延的脉冲信号传递方法,应用于由具有计算能力的电子设备实现的脑仿真中,由如上所述的支持独立时延的脉冲信号传递系统实现,该方法包括如下步骤:

18、步骤1,获取前神经元簇神经元个数p、后神经元簇神经元个数q、前后神经元簇之间的突触连接规则rule、突触连接结构的表达形式repr、突触的权重信息wuser、突触的时延信息duser、仿真总时间步t;

19、步骤2,根据所获取的突触连接规则rule、突触连接结构的表达形式repr,确定待调用的脉冲信号传递算子;

20、步骤3,根据所获取的突触的权重信息wuser、突触的时延信息duser生成脉冲信号传递算子工作过程所需的权重信息w和时延信息d;

21、步骤4,将循环计数器rc初始值设置为0;目标缓存tb初始值设置为长度为(max(d)+1)*q的元素全为0的向量,将仿真时间步t的初始值置0,其中,max(d)表示时延信息d中元素的最大值;

22、步骤5,获取前神经元簇发放的脉冲sp;

23、步骤6,依据所确定的突触连接规则及突触结构表达形式调用不同脉冲信号传递算子,获得当前时刻后神经元簇应接收的脉冲信号,用于更新后神经元簇的神经元的膜电位;

24、步骤7,令t=t+1,判断仿真时间步t是否小于仿真总时间步t,当仿真时间步t小于仿真总时间步t时,返回步骤5;当仿真时间步t大于等于仿真总时间步t时,结束运行。

25、进一步地,步骤3中,当wuser、duser是符合脉冲信号传递算子所需的数据时,wuser、duser与w、d等价;当wuser、duser是用户指定的数据生成规则时,按照给定的数据生成规则自动生成符合算子工作所需的w、d。

26、进一步地,步骤5中,前神经元簇发放的脉冲sp是长度为p的向量,该向量由0、1组成,当前神经元簇第i个神经元在当前时间步发放脉冲,sp的第i个元素为1,若未发放脉冲,元素为0。

27、进一步地,步骤6中,当调用的脉冲信号传递算子为event_one2one时,获得当前时刻后神经元簇应接收的脉冲信号具体包括如下步骤:

28、步骤6101,计算待累加给目标缓存tb的向量delta:

29、delta=sp*w;

30、步骤6102,计算待更新的tb的元素的索引向量indices:

31、indices=(rc+d)%(max(d)+1)*q+arange(q)

32、式中,rc+d表示d中每一个元素均与rc相加,得到新的向量,arange(q)用于生成一个从0开始、相邻元素差值为1且递增的向量,该向量长度为q,最后一个元素为q-1;

33、步骤6103,更新目标缓存tb:

34、tb[indices]+=delta

35、式中,tb[indices]表示tb中由indices作为索引指定出的元素,这些元素个数与向量delta的长度相同,公式表示对tb中由indices指定的元素累加向量delta;

36、步骤6104,从目标缓存中选取出目标向量tv:

37、tv=tb[rc*q:(rc+1)*q-1]

38、公式表示选取tb中索引为rc*q至(rc+1)*q-1的元素,作为目标向量tv,获取到tv后,表示已获取到当前时间步传递到后神经元簇的脉冲信号;

39、步骤6105,将目标缓存中被选取部分的元素置0:

40、tb[rc*q:(rc+1)*q-1]=0

41、公式表示令tb中索引为rc*q至(rc+1)*q-1的元素均为0;

42、步骤6106,更新循环计数器rc:

43、rc=(rc+1)%(max(d)+1)。

44、进一步地,步骤6中,当调用的脉冲信号传递算子为event_all2all时,获得当前时刻后神经元簇应接收的脉冲信号具体包括如下步骤:

45、步骤6201,初始化已遍历的前神经元簇的神经元个数并加上1的值m,令m=1;

46、步骤6202,计算待累加给目标缓存tb的向量delta:

47、delta=spm*wm

48、式中,spm表示sp中第m个元素,wm表示w中第m行的数据;

49、步骤6203,计算待更新的tb的元素的索引向量indices:

50、indices=(rc+dm)%(max(d)+1)*q+arange(q)

51、式中,dm表示d中第m行的数据;

52、步骤6204,更新目标缓存tb:

53、tb[indices]+=delta

54、步骤6205,更新m:m=m+1,当m大于前神经元簇的神经元个数p时,执行步骤6206,当m小于或等于前神经元簇的神经元个数p时,执行步骤6202;

55、步骤6206,从目标缓存中选取出目标向量tv:

56、tv=tb[rc*q:(rc+1)*q-1]

57、公式表示选取tb中索引为rc*q至(rc+1)*q-1的元素,作为目标向量tv,获取到tv后,表示已获取到当前时间步传递到后神经元簇的脉冲信号;

58、步骤6207,将目标缓存中被选取部分的元素置0:

59、tb[rc*q:(rc+1)*q-1]=0

60、公式表示令tb中索引为rc*q至(rc+1)*q-1的元素均为0;;

61、步骤6208,更新循环计数器rc:

62、rc=(rc+1)%(max(d)+1)。

63、event_all2all算子在gpu上将步骤6201至步骤6205转换为并行执行。

64、进一步地,步骤6中,当调用的脉冲信号传递算子为event_mat时,获得当前时刻后神经元簇应接收的脉冲信号具体包括如下步骤:

65、步骤6301,初始化已遍历的前神经元簇的神经元个数并加上1的值m,令m=1;

66、步骤6302,计算待累加给目标缓存tb的向量delta:

67、delta=spm*wm*mm

68、式中,spm表示sp中第m个元素,mm表示矩阵m中第m行的数据,wm表示w中第m行的数据;

69、步骤6303,计算待更新的tb的元素的索引向量indices:

70、indices=(rc+dm)%(max(d)+1)*q+arange(q)

71、步骤6304,更新目标缓存tb更新目标缓存tb:

72、tb[indices]+=delta

73、步骤6305,更新m:m=m+1,当m大于前神经元簇的神经元个数p时,执行步骤6306,当m小于或等于前神经元簇的神经元个数p时,执行步骤6302;

74、步骤6306,从目标缓存中选取出目标向量tv:

75、tv=tb[rc*q:(rc+1)*q-1]

76、公式表示选取tb中索引为rc*q至(rc+1)*q-1的元素,作为目标向量tv,获取到tv后,表示已获取到当前时间步传递到后神经元簇的脉冲信号;

77、步骤6307,将目标缓存中被选取部分的元素置0:

78、tb[rc*q:(rc+1)*q-1]=0

79、公式表示令tb中索引为rc*q至(rc+1)*q-1的元素均为0;

80、步骤6308,更新循环计数器rc:

81、rc=(rc+1)%(max(d)+1)。

82、event_mat算子在gpu上将步骤6301至步骤6305转换为并行执行。

83、进一步地,步骤6中,当调用的脉冲信号传递算子为event_coo时,获得当前时刻后神经元簇应接收的脉冲信号具体包括如下步骤:

84、步骤6401,依据当前时间步前神经元簇脉冲发放情况,生成一个标记pre_ids中每个元素对应神经元脉冲发放情况的向量unroll_sp;

85、步骤6402,计算待累加给目标缓存tb的向量delta:

86、delta=unroll_sp*w

87、步骤6403,计算待更新的tb的元素的索引向量indices:

88、indices=(rc+d)%(max(d)+1)*q+post_ids

89、其中,post_ids为前神经元簇与后神经元簇间所有突触对应的后神经元簇神经元的id;

90、步骤6404,更新目标缓存tb:

91、tb[indices]+=delta;

92、步骤6405,从目标缓存中选取出目标向量tv:

93、tv=tb[rc*q:(rc+1)*q-1]

94、公式表示选取tb中索引为rc*q至(rc+1)*q-1的元素,作为目标向量tv,获取到tv后,表示已获取到当前时间步传递到后神经元簇的脉冲信号;

95、步骤6406,将目标缓存中被选取部分的元素置0:

96、tb[rc*q:(rc+1)*q-1]=0

97、公式表示令tb中索引为rc*q至(rc+1)*q-1的元素均为0;

98、步骤6407,更新循环计数器rc:

99、rc=(rc+1)%(max(d)+1)。

100、进一步地,当调用的脉冲信号传递算子为event_csr时,获得当前时刻后神经元簇应接收的脉冲信号具体包括如下步骤:

101、步骤6501,初始化已遍历的前神经元簇的神经元个数并加上1的值m,令m=1;

102、步骤6502,初始化已遍历的第m个神经元在前神经元簇与后神经元簇间连出的突触连接个数并加上1的值n,令n=1;

103、步骤6503,依据n判断是否遍历完第m个神经元连出的所有突触连接,如果没有遍历完,执行6504,如果已遍历完,执行6507;

104、步骤6504,计算脉冲通过第n条突触连接传递时待更新的tb的元素的索引k:

105、k=(rc+dmn)%(max(d)+1)*q+post_ids[pre_indptrm+n-1]

106、式中,dmn表示第m个神经元连出的第n条突触连接对应的时延值,pre_indptrm表示向量pre_indptr中第m个元素;

107、步骤6505,更新目标缓存tb,更新公式为:

108、tb[k]+=spm*wmn

109、式中,wmn表示第m个神经元连出的第n条突触连接对应的权重值;

110、步骤6506,更新n:n=n+1,执行步骤6503;

111、步骤6507,更新m:m=m+1,当m大于前神经元簇的神经元个数p时,执行步骤6508,当m小于或等于前神经元簇的神经元个数p时,执行步骤6502;

112、步骤6508,从目标缓存中选取出目标向量tv:

113、tv=tb[rc*q:(rc+1)*q-1]

114、公式表示选取tb中索引为rc*q至(rc+1)*q-1的元素,作为目标向量tv,获取到tv后,表示已获取到当前时间步传递到后神经元簇的脉冲信号;

115、步骤6509,将目标缓存中被选取部分的元素置0:

116、tb[rc*q:(rc+1)*q-1]=0

117、公式表示令tb中索引为rc*q至(rc+1)*q-1的元素均为0;

118、步骤6510,更新循环计数器rc:

119、rc=(rc+1)%(max(d)+1)。

120、event_csr算子在gpu上将步骤6501至步骤6507转换为并行执行。

121、本发明还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现如上所述的一种支持独立时延的脉冲信号传递方法中的步骤。

122、本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现如上所述的一种支持独立时延的脉冲信号传递方法中的步骤。

123、本发明的脉冲信号传递系统和方法可以实现在不同硬件上,解决了上述现有技术中脉冲信号传递方法只能实现在1种硬件上,通用性差的缺陷;本发明的脉冲信号传递系统和方法还支持用户为每条突触连接独立地设置时延,解决了上述现有技术中不支持该功能的缺陷,使得突触时延的设置与大脑中的真实情况保持一致。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1