CN109804384B - 用于维护神经元的脉冲历史的方法和装置 - Google Patents
用于维护神经元的脉冲历史的方法和装置 Download PDFInfo
- Publication number
- CN109804384B CN109804384B CN201780050800.6A CN201780050800A CN109804384B CN 109804384 B CN109804384 B CN 109804384B CN 201780050800 A CN201780050800 A CN 201780050800A CN 109804384 B CN109804384 B CN 109804384B
- Authority
- CN
- China
- Prior art keywords
- neuron
- current
- column
- value
- firing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 210000002569 neuron Anatomy 0.000 title claims abstract description 337
- 238000000034 method Methods 0.000 title claims abstract description 29
- 238000010304 firing Methods 0.000 claims abstract description 169
- 210000004027 cell Anatomy 0.000 claims abstract description 81
- 210000000225 synapse Anatomy 0.000 claims abstract description 63
- 238000013528 artificial neural network Methods 0.000 claims abstract description 38
- 230000001242 postsynaptic effect Effects 0.000 claims description 43
- 230000000946 synaptic effect Effects 0.000 claims description 32
- 239000012528 membrane Substances 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 17
- 210000005215 presynaptic neuron Anatomy 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 7
- 230000003213 activating effect Effects 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 5
- 230000003518 presynaptic effect Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 101100137244 Mus musculus Postn gene Proteins 0.000 description 6
- 230000001537 neural effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000005284 excitation Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002070 nanowire Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000012620 biological material Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 229910010272 inorganic material Inorganic materials 0.000 description 1
- 239000011147 inorganic material Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000011368 organic material Substances 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/049—Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Semiconductor Memories (AREA)
Abstract
提供了用于维护脉冲神经网络中的神经元的脉冲历史的神经形态计算设备、存储器设备、系统和方法。在具有存储器单元行和列的阵列的存储器设备中生成神经网络脉冲历史。存在行中的针对多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列。在存储器单元的针对激发神经元的行中在当前列中指示脉冲被激发。在存储器单元的没有激发的空闲神经元的行中在当前列中指示脉冲没有被激发。阵列中的信息用于确定连接的神经元与激发神经元之间的定时差并且调整连接突触的权重。
Description
技术领域
本文描述的实施例总体上涉及以下计算机产品、方法和系统:其用于在神经形态计算环境中维护神经元的脉冲历史的神经形态计算设备、存储器设备、系统和方法。
背景技术
脉冲神经网络(SNN)硬件已经被证明是对用于处理现实世界智能应用(例如,用于模拟智能和人类识别以及认知活动)的传统Von-Neumann架构的有前景的替代。在SNN中,神经元的数字表示通过连接神经元的突触与相邻神经元交互。当突触后神经元通过突触接收到来自激发突触前神经元的加权脉冲时,突触后神经元的膜电位增加。当神经元的膜电位达到阈值时,则该神经元跨其是突触前神经元的所有突触激发脉冲。突触具有根据一个或多个适应规则来调整其增益/权重的可塑性。用于调整突触权重的不同规则中的一些基于突触的突触后神经元和突触前神经元何时激发脉冲的定时差。权重调整规则中的一些包括脉冲时序相关可塑性(STDP)和脉冲时序相关延迟可塑性(STDDP)。利用这些技术,如果突触前脉冲在突触后脉冲激发之前到达,则用于调整通过突触传输的脉冲的突触权重将增加,并且如果突触前脉冲在突触后脉冲激发之后到达,则该突触权重将降低。权重的变化由两个脉冲的到达时间之间的持续时间确定。
计算SNN维护三组电子存储装置:(1)对于神经元,存储每个神经元的电位;(2)对于突触,包括权重、延迟和连接;以及(3)对于脉冲,跟踪在神经元处何时激发脉冲时的定时信息。
所描述的实施例提供了用于维护关于神经元处的脉冲的定时的脉冲历史信息以供在计算神经网络中在调整突触权重时使用的改进的技术。
附图说明
通过示例的方式参考附图对实施例进行描述,附图未按比例绘制,其中相同的附图标记指代类似的元素。
图1示出了神经网络计算环境的实施例。
图2和图3示出了脉冲历史阵列和现在指针(now pointer)的实施例。
图4示出了突触信息的实施例。
图5示出了神经元膜电位信息的实施例。
图6a、图6b和图6c示出了用于更新关于神经网络中的神经元和突触的信息的操作的实施例。
图7示出了用于存储脉冲历史阵列信息的存储器设备阵列的实施例。
图8示出了其中可以实现实施例的计算机架构的实施例。
具体实施方式
所描述的实施例提供了用于减少维护关于神经元何时激发或发出脉冲的定时信息所要求的操作次数的技术。在所描述的实施例中,脉冲历史阵列提供存储器单元的阵列,其中行提供神经元在表示前几个时隙的列中的定时信息,其中针对神经元中的一个神经元指示上次发生的脉冲的定时。针对当前时隙的列中的单元被清零,并且仅在当前时隙中激发的激发神经元的行中被更新。激发神经元行中的除针对当前时隙的条目之外的其他列被清零,以指示不存在激发。以这种方式,仅当由行表示的神经元激发脉冲时才更新神经元行。这通过仅必须更新激发神经元的一个列和行来优化用于跟踪神经元激发的操作,并且提供用于记录定时信息和基于神经元激发时的定时差来调整突触权重的改进的技术。
在以下描述中,阐述了诸如逻辑实现、操作码、用于指定操作数的单元、资源划分/共享/复制实现、系统组件的类型和相互关系以及逻辑划分/集成选择之类的许多具体细节,以便提供对本发明的更透彻的理解。然而,本领域技术人员将认识到,可以在没有这些具体细节的情况下实践本发明。在其他实例中,没有详细示出控制结构、门级电路和完整软件指令序列,以免模糊本发明。利用所包括的描述,本领域普通技术人员将能够在无需过度实验的情况下实现适当的功能。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以不一定包括该特定特征、结构或特征。此外,这些短语不一定指代同一实施例。特定实施例涉及存储设备电子组件。实施例包括用于形成电子组件的设备和方法两者。
图1示出了包括计算系统100的脉冲神经网络计算环境的实施例,计算系统100具有处理器102和存储器104,存储器104包括操作系统106和脉冲神经网络(SNN)程序108,操作系统106管理计算机硬件资源和软件资源,为计算机程序提供公共服务以及管理程序执行和调度,SNN程序108用于执行神经网络计算。SNN程序108维护:脉冲历史阵列200,其提供关于神经网络中的神经元何时在连接的突触上激发脉冲的定时信息;现在指针300,其包括指示处理神经网络的当前时隙的循环移位寄存器;突触信息400,其提供关于突触前神经元和突触后神经元通过其来通信的每个突触的信息;以及神经元膜电位信息500,其具有针对神经网络中的神经元累积的膜电位信息。计算机100还包括存储装置110,其中诸如操作系统106和SNN程序108之类的程序以及信息200、300和400可以被存储并加载到存储器104中。脉冲历史阵列200、突触信息400和神经元膜电位信息500的组合提供神经网络及其互连的神经元的计算表示。
处理器可以包括神经形态核心或神经形态机器,其包括神经网络实现的组件,例如,200、300、400、108和500。
存储器104可以包括一个或多个非易失性和/或易失性存储器设备,例如,闪速存储器、非易失性双列直插式存储器模块(NVDIMM)、DIMM、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、如闪速存储器单元构成的NAND管芯、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、三维(3D)交叉点存储器、相变存储器(PCM)、包含忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM以及其他电可擦除可编程只读存储器(EEPROM)型设备。
在一个实施例中,存储器104可以包括一个或多个SRAM存储器设备或本领域中已知的其他非易失性存储器设备。在替代实施例中,存储器104可以包括诸如DRAM之类的用于存储正在被执行的程序(例如,106和108)的主存储器,以及诸如SRAM或闪速存储器之类的存储脉冲历史阵列200、现在指针300、突触信息400和神经元膜电位信息500的单独的非易失性存储器。
存储装置110可以包括非易失性存储装置或存储器,例如,闪速存储器单元构成的NAND管芯、NVDIMM、SRAM、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、三维(3D)交叉点存储器、相变存储器(PCM)、包含忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、自旋移矩(STT)-MRAM、单级单元(SLC)闪速存储器和其他电可擦除可编程只读存储器(EEPROM)型设备。存储装置110还可以包括磁存储介质,例如,硬盘驱动器等。
在图1中,SNN程序108在神经形态计算设备中实现,该神经形态计算设备包括计算机系统100,计算机系统100具有处理器102并且在操作系统108的控制下操作。在替代实施例中,实现SNN程序108的神经形态计算设备可以包括硬件设备,例如,专用集成电路(ASIC)或包括硬件逻辑(例如,专用于SNN程序108操作的片上系统(SOC))的其他硬件设备。此外,神经形态计算设备可以包括计算机系统和专用硬件的组合。
图2示出了脉冲历史阵列200和现在指针300的实施例。脉冲历史阵列200包括存储器单元的阵列,其具有针对神经网络中的神经元中的每个神经元的行和针对N个不同时隙的N个列。脉冲历史阵列200中的针对神经元(例如,神经元0、神经元1、神经元m)的每行指示神经元最近期被激发的时隙,其中脉冲历史阵列200的每列对应于现在指针300中的提供与正在发生处理的当前时隙(由现在指针300中的当前条目302表示)的相对时隙的列。
在特定实施例中,在神经网络时钟、定时周期或时隙之后,如果在该时间周期期间激发神经元,则针对现在指针300中的当前时间302的条目或列被设置为指示当前时间,例如,设置为“1”,并且所有其他条目被设置为“0”。现在指针300中的当前列或当前条目302对应于脉冲历史阵列200阵列中的当前列202。如果脉冲神经元在由现在指针300中的当前条目302识别的时隙中激发,则在存储器单元的脉冲历史阵列200阵列中的激发神经元行中,对应的当前列202被设置为“1”以指示在当前时间激发,并且针对未激发的空闲神经元的行中的针对其他时隙的所有其他条目被设置为“0”。以这种方式,阵列200的每个神经元行指示神经元在前N个时隙中激发的最近期的时间。该列中的其他单元被设置为“0”或某个其他值以指示不激发,使得当神经元在当前时隙激发时,不指示除当前时隙之外的其他时隙中的激发事件。
在一个实施例中,现在指针300包括循环移位寄存器,使得对于每个时间周期,或者到下一时隙的改变,针对第一个条目304至倒数第二个条目306的值向右移位,并且最后一个条目308中的值被移位到第一个条目304,其中所有值同时移位。在替代实施例中,针对第一个条目304至最后一个条目306的值可以以不同的方式移位,例如,向左移位等。
在当前条目302左侧的现在指针300中的条目i指示(第当前条目减i个)先前时隙,并且在当前条目202右侧的现在指针300中的条目j指示第(N-(j-当前条目))个先前时隙。
图3提供了在不同时隙1至N+2时隙处现在指针300中的条目针对时隙的定时图示,其中现在指针300中存在N个条目。对于每个时隙行表示,对于时隙=1、2、N、N+1、N+2,存在针对现在指针310中的每个条目的值;针对1至N+2时隙的绝对时间行312;以及相对于当前时隙的针对前N个时隙中的每个条目的相对时间314。相对时间314行中的信息可以用于确定现在指针300中的两个条目以及脉冲历史阵列200中的两个对应列之间的时间差,以基于神经元行中具有“1”(指示其中两个神经元上次激发的时隙)的列之间的差确定激发两个神经元之间的时间差。
图4示出了针对突触信息400中的每个突触维护的突触信息400i实例的实施例,并且包括突触前神经元402标识符;突触后神经元404标识符;神经元402与404之间的突触的突触标识符406;以及应用于从突触前神经元402激发到突触406上的到达突触后神经元404的脉冲的突触权重408。可能存在多个突触连接到一个突触后神经元,即,扇入到突触后神经元,并且一个突触前神经元可以激发到多个突触上以传输到不同的突触后神经元,即,扇出到突触后神经元。针对所有突触的突触信息实例400i提供神经网络中的神经元的布置和映射。
可以使用基于突触前激发脉冲与突触后激发脉冲之间的定时差的脉冲时间相关(STDP)可塑性学习来计算突触权重408。在特定实施例中,对于突触,当在突触前脉冲之后的特定时间窗口中发生突触后脉冲时,可以增加该突触的权重。同样,如果突触后脉冲发生在突触前脉冲之前,则可以降低该突触的权重。权重变化的强度是突触前脉冲事件与突触后脉冲事件之间的时间的函数。用于计算突触权重的另一种算法是脉冲定时相关延迟可塑性(STDDP)算法。STDP和STDDP的这些突触加权算法都基于突触前神经元402和突触后神经元404的激发的定时差。这些技术用于确定要应用于由突触前神经元402在突触406上激发的到达突触后神经元404的脉冲的突触权重408。
图5示出了在膜电位信息500中针对神经网络中的每个神经元维护的神经元膜电位实例500i的实施例,并且包括针对所识别的神经元502的膜电位504。还可以提供附加信息,例如,用于确定膜电位的衰减的信息。神经元的膜电位504累积在对其而言神经元502是突触后神经元的突触上接收的加权脉冲的电位值。当累积的膜电位504达到阈值时,神经元502可以激发,并且膜电位504然后被重置为零。此外,膜电位504中的值可以根据用于膜电位的衰减算法随时隙衰减。
图6a、图6b和图6c示出了由脉冲神经网络(SNN)程序108执行的操作的实施例,该操作用于处理脉冲历史阵列200以确定用于调整突触权重408的当前激发神经元的定时差。关于图6a,在针对神经网络操作发生(在框600处)新的时钟周期时,SNN程序108同时将现在指针300中的第一个条目304至第N-1个条目306中的值向右移位(在框602处)一个单元,并且将第N个条目308中的值移位到第一个条目304。SNN程序108确定(在框604处)当前时隙302(具有“1”)在现在指针300中的条目位置(LocX)或条目编号。脉冲历史阵列200的与指示当前时隙的现在指针当前条目302相对应的当前列202中的所有条目被设置(在框606处)为零,以指示在前N个时隙中没有脉冲激发。
SNN程序108确定(在框608处)所有激发神经元(FNi),如果有的话,包括在其神经元膜电位信息500i中具有比用于确定何时触发脉冲的阈值大的膜电位504的那些神经元502。如果(在框610处)不存在激发神经元608,即,仅存在空闲神经元,则控制结束。如果(在框610处)存在一个或多个激发神经元(FNi),则为了更新脉冲历史阵列200中的定时信息,SNN程序108在脉冲历史阵列200中跨激发神经元的行的N个列写入(在框612处)调整后的现在指针300的N个条目。跨神经元行中的一行的列写入现在指针300,将所有零写入行的不是当前列202的列,并且将一(“1”)写入激发神经元行中的当前列202条目,指示在当前时隙中发生激发。因此,对现在指针300的写入将激发神经元行中的不在当前列202中的所有单元重置为“0”。现在指针300可以跨脉冲历史阵列200的所有激发神经元行同时应用。
关于图6b,针对所确定的激发神经元(FNi)中的每个,包括具有比阈值大的膜电位504的那些神经元,在框614至620处执行操作循环。
在框616处,对突触后扇出神经元404做出确定,突触后扇出神经元404通过其突触前神经元402是激发神经元(FNi)的突触406(Si,j)接收来自激发神经元402的脉冲。针对所确定的突触后扇出神经元404中的每个,SNN程序108基于来自突触权重408的对应脉冲的权重来更新(在框618处)突触后扇出神经元的电位500i,并且将来自突触的该加权电位与针对所确定的突触后扇出神经元404的膜电位504相加。
然后控制前进到图6c中的框622,其中SNN程序108根据突触信息400来确定(在框620处)一个或多个连接的神经元。“连接的神经元”包括对其而言激发神经元(FNi)是突触后神经元404的突触信息400j,i实例中的突触406(Sj,i)的突触前扇入神经元402(PreNj),以及对其而言激发神经元(FNi)是将脉冲传送到扇出神经元的突触前神经元402的突触信息400j,i实例中的突触406(Si,k)的突触后扇出神经元404(PostNk)。针对连接的神经元中的每个,即,所确定的突触前扇入神经元(PreNj)和突触后扇出神经元(PostNk),在框624至636处执行操作循环。如果(在框626处)在针对连接的神经元(PreNj或PostNk)的行中不存在定时指示符,例如,“1”,则针对所确定的激发神经元(FNi)与连接的神经元(PreNj或PostNk)之间的突触406(Sj,i或Si,k)的突触权重408不被更新(在框628处)。如果(在框626处)存在定时指示符,例如,“1”,指示在前N个时间周期中在所确定的突触前神经元(PreNj)的行中的激发,则SNN程序108确定(在框630处)指示上一次被激发的针对连接的神经元(PreNj或PostNk)的行中的条目的位置(LocY),即,具有“1”值的条目的编号。对于连接的神经元,定时指示符(例如,“1”)的位置LocY可以通过在阵列的针对连接的神经元的行上使用独热解码器计算定时指示符或者“1”的位置或条目来确定。
来自当前时隙(LocX)的针对连接的神经元(PreNj或PostNk)的激发时间的相对时间差取决于突触前神经元的列位置(LocY)是在当前时间列202、302的右侧还是左侧。如果LocY在当前列/时间202、302的左侧,则定时差是LocX减LocY。如果当连接的神经元(PreNj或PostNk)激发时条目的LocY在当前时间302的右侧,则当前时间已经覆盖,并且定时差是LocX减(N-(LocY-LocX))。在一个实施例中,可以根据下面的等式(1)来确定(在框632处)时间差,其中N是现在指针300中的条目数,或者脉冲历史阵列200中的列数:
(1)(N+LocX-LocY)对N取模
分别针对所确定的激发神经元作为突触前神经元402或突触后神经元404并且连接的神经元作为突触后神经元404或突触前神经元402,SNN程序108使用(在框634处)所确定的时间差来计算针对突触406的调整后的权重408,并且更新突触信息400i中的突触权重408。SNN程序108可以使用利用STDP类型算法或STDDP类型算法以及其他定时差算法确定的定时差来确定针对到激发神经元的突触的突触权重408。
利用图6a、图6b和图6c的操作,SNN程序108可以更新脉冲历史阵列200,以在阵列的针对激发神经元的行中指示激发神经元在突触上激发脉冲的定时,并且基于针对将激发神经元中的一个激发神经元作为突触后神经元的所有突触的定时差来更新突触权重408。利用所描述的实施例,SNN程序108通过以下操作将对阵列200的存储器单元执行的操作最小化:首先将阵列200的当前列202中的所有位重置为零(例如,通过将它们设置为接地),然后跨激发神经元的所有行写入行指针,这可以通过存储器阵列200中的激发神经元的行在所有字线上同时执行。
图7示出了存储器104的实施例,其中脉冲历史阵列200在SRAM阵列700中实现,该SRAM阵列700具有针对单元的每列的写入位线BL 7021,7022...702N和BL'7041,7042...704N的写入端口,以及包括针对单元的每列的两条位线BL 7061,7062...706N和BL'7081,7082...708N的逐列重置(RESET)端口。在每列中,一条重置位线(BL)7061,7062...706N连接到地(GND)7101,7102...710N,并且另一条位线(BL')7081,7082...708N连接到电压(VCC)7121,7122...712N。阵列700包括阵列700的行上的字线7140(WL0),7141(WL1)和714m(WLm)。
当Loci_RESET 716i为“0”时,NMOS栅极和PMOS栅极(710i和712i都闭合,因此重置位线BL 706i和BL'708i不连接到任何电源或地,导致没有任何内容写入列,即,单元值保持不变。当LOCi_RESET 716i为“1”时,两个门都打开,并且BL 706i下拉到地而BL'708i上拉到VDD,因此沿当前列的所有单元被设置为“0”,即,第二值,这作为图6a中的框606处的操作的一部分。在使用针对当前列的LOC i_RESET 716i将当前列中的所有单元设置为“0”(第二值)之后,现在指针300值在写入位线(BL 7021,7022...702N,并且在BL'7021,7042...7042上为反转的值)上被断言,然后针对激发神经元的WLi 714i将被激活,因此位线上的值可以写入单元的对应行,以执行图6a中的框612处的操作。
以这种方式,对于每列存在两组位线702i/704i和706i/708i,用于正常写入(脉冲信息更新)的写入位线702i/704i以及用于重置目的的另一组位线706i/708i。
由于现在指针300的写入数据对于在该时隙中激发的所有激发神经元是相同的,因此在一个实施例中,可以通过使多个WL解码器以其输出同时驱动WL线来同时激活针对激发神经元的多条字线。在另一实施例中,可以存在一个字线(WL)解码器,并且将针对激发神经元的字线(WL)驱动器信号与M位现在指针300选择信号进行异或。
利用图7的阵列700的实施例,在图6a中的步骤606处,可以通过将当前列202中的单元重置为接地,例如通过在当前列的条目X上使用LocX_RESET,执行将阵列的当前列中的条目设置为零。可以通过在针对阵列700中的、激发神经元的行的所有字线710i(WLi)上断言现在指针300,执行将行指针800的条目写入激发神经元的行的、图6a中的框612处的操作。
所描述的SNN程序108的操作可以实现为使用标准编程和/或工程技术来产生软件、固件、硬件或其任何组合的方法、装置、设备、包括计算机可读存储介质的计算机产品。所描述的操作可以实现为在“计算机可读存储介质”中维护的代码或逻辑。如本文使用的术语“代码”是指软件程序代码、硬件逻辑、固件、微代码等。如本文使用的术语计算机可读存储介质包括有形元件,包括电子电路、存储材料、无机材料、有机材料、生物材料、外壳、壳体、涂层和硬件中的至少一个。计算机可读存储介质可以包括但不限于磁存储介质(例如,硬盘驱动器、软盘、磁带等)、光存储装置(CD-ROM、DVD、光盘等)、易失性和非易失性存储器设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等)、固态设备(SSD)、计算机编码和可读打孔卡等。计算机可读存储介质还可以包括实现固件、微代码等的硬件设备,例如在集成电路芯片、可编程逻辑器件、可编程门阵列(PGA)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等中。此外,实现所描述的操作的代码可以以“传输信号”实现,其中传输信号可以通过空间或通过诸如光纤、铜线等之类的传输介质传播。其中编码有代码或逻辑的传输信号还可以包括无线信号、卫星传输、无线电波、红外信号、蓝牙等。嵌入在计算机可读存储介质上的程序代码可以作为传输信号从发送站或计算机发送到接收站或计算机。计算机可读存储介质不仅包括传输信号,还包括物理组件和有形组件。本领域技术人员将认识到,在不脱离本发明的范围的情况下,可以对该配置进行许多修改,并且制品可以包括本领域已知的合适的信息承载介质。
以这种方式,SNN程序108可以在包括计算机可读存储介质或诸如专用集成电路(ASIC)、片上系统(SOC)或其组合之类的硬件设备的神经形态计算设备中实现。
图8示出了计算机架构800的实施例,例如,包括在计算机系统100中的组件,包括通过总线804与易失性存储器设备806以及非易失性存储设备804(例如,目标系统存储器136)通信的处理器802,易失性存储器设备806中缓存正在执行的程序、操作数和参数。总线804可以包括多条总线。此外,总线804可以包括多代理总线,或者不是多代理总线,而是提供根据PCIe架构的点对点连接。处理器802还可以与输入/输出(I/O)设备812a、812b通信,其可以包括输入设备、显示设备、图形卡、端口、网络接口等。
在特定实施例中,计算机节点架构800可以包括个人计算机、服务器、移动设备或嵌入式计算设备。在芯片上硅(SOC)实现方式中,架构800可以在集成电路管芯中实现。
本文使用的引用字符,例如i、j,用于表示元素的可变数量的实例,其可以表示相同或不同的值,并且在不同描述实例中当与不同元素或相同元素一起使用时可以表示相同值或不同值。
除非另有明确说明,否则术语“一实施例”、“实施例”、“多个实施例”、“该实施例”、“该多个实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”表示“本发明的一个或多个(但不是全部)实施例”。
除非另有明确说明,否则术语“包括”、“包含”、“具有”及其变体意味着“包括但不限于”。
除非另有明确说明,否则列举的项目列表并不暗指项目中的任何项目或所有项目是互斥的。
除非另有明确说明,否则术语“一”、“一个”和“该”意味着“一个或多个”。
除非另有明确说明,否则彼此通信的设备不一定彼此连续通信。另外,彼此通信的设备可以直接地通信或通过一个或多个中介间接地通信。
对其中若干组件彼此通信的实施例的描述并不暗指要求所有这些组件。相反,描述了各种可选组件以说明本发明的各种可能的实施例。
当本文描述单个设备或物品时,显而易见的是,可以使用多于一个设备/物品(无论它们是否协作)来代替单个设备/物品。类似地,在本文描述多于一个设备或物品(无论它们是否协作)的情况下,显而易见的是,可以使用单个设备/物品来代替多于一个设备或物品,或者可以使用不同数量的设备/物品,而不是所示数量的设备或程序。设备的功能和/或特征可以可替代地由未明确地描述为具有这样的功能/特征的一个或多个其他设备体现。因此,本发明的其他实施例不一定包括设备本身。
已经出于说明和描述的目的呈现了本发明的各种实施例的前述描述。并非旨在穷举或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。意图是本发明的范围不受该详细描述的限制,而是受所附权利要求的限制。以上说明书、示例和数据提供了制造和使用本发明的组合物的完整描述。由于可以在不脱离本发明的精神和范围的情况下做出本发明的许多实施例,因此本发明存在于本文所附权利要求中。
示例
以下示例涉及另外的实施例。
示例1是一种实现脉冲神经网络程序以维护关于神经元何时激发的定时信息并且处理要在存储器设备中维护的神经网络信息的神经形态计算设备,用于:在具有存储器单元的行和列的阵列的存储器设备中生成脉冲历史,其中,存在行中的针对脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;响应于神经元的至少一个激发神经元中的每个激发神经元在由列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:在存储器单元的针对激发神经元的该行中在当前列中指示脉冲在当前时隙中被激发;在存储器单元的包括没有激发的神经元的空闲神经元的行中在当前列中指示脉冲没有被激发;使用阵列中的信息来确定连接的神经元与激发神经元之间的定时差,连接的神经元通过突触连接到激发神经元;以及使用所确定的定时差来调整对激发神经元和连接的神经元进行连接的突触的权重。
在示例2中,示例1和3-12的主题可以可选地包括,该神经形态计算设备还用于:生成现在指针,该现在指针包括针对阵列中的列中的每列的条目,其中,现在指针中的条目与时隙相对应并且包括与阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,当前条目被设置为第一值并且非当前条目被设置为第二值;以及使用现在指针在至少一个激发神经元的至少一行中指示当前列中的第一值和除当前列之外的列中的第二值,其中,在行中在列中的一列中的第一值指示在该行中由该列表示的时隙处激发脉冲。
在示例3中,示例1、2和4-12的主题可以可选地包括,使用现在指针包括:在至少一个激发神经元的至少一行中将现在指针的条目中的第一值和第二值写入对应的列,其中,行中的每行包括具有第一值的一个列条目和列条目中的具有第二值的所有其他列条目。
在示例4中,示例1-3和5-12的主题可以可选地包括,存储器设备包括:针对阵列的行中的每行,通过存储器设备的该行中的单元的字线,以及针对阵列的列中的每列,通过阵列的该列中的单元的至少一条位线,该神经形态计算设备还用于:使用针对当前列的位线,将当前列中的所有单元设置为接地以设置为第二值;以及激活针对至少一个激发神经元的每行的字线,以将现在指针的条目写入该行的单元。
在示例5中,示例1-4和6-12的主题可以可选地包括,现在指针包括循环移位寄存器,并且响应于新的时间周期,同时将现在指针中的第一个条目至倒数第二个条目中的值向右移位,并且将最后一个条目中的值移位到第一个条目。
在示例6中,示例1-5和7-12的主题可以可选地包括,确定定时差包括:确定阵列中的针对激发神经元具有第一值的第一列位置编号与阵列中的针对连接的神经元具有第一值的第二列位置编号的差;以及基于第一列位置编号和第二列位置编号来确定激发神经元与连接的神经元之间的定时差。
在示例7中,示例1-6和8-12的主题可以可选地包括,现在指针包括循环移位寄存器,其中,确定定时差包括:使(现在指针中的条目数,加上阵列中的针对激发神经元具有第一值的第一列位置编号,减去阵列中的针对连接的神经元具有第一值的第二列位置编号)对现在指针中的条目数取模。
在示例8中,示例1-7和9-12的主题可以可选地包括,该神经形态计算设备还用于:对针对阵列的当前列的重置端口的重置位线进行设置,以将阵列的与现在指针中的当前条目相对应的当前列中的所有单元设置为第二值;以及在将阵列的当前列中的所有条目设置为第二值之后,沿针对至少一个激发神经元的至少一条字线应用现在指针,以在至少一个激发神经元的行中将现在指针的条目中的第一值和第二值写入对应的列,其中,针对至少一个激发神经元中的每个激发神经元的该行包括具有第一值的当前列和列中的具有第二值的所有其他列。
在示例9中,示例1-8和10-12的主题可以可选地包括,针对激发神经元和连接的神经元的至少一个对中的每个对调整突触的权重包括:响应于在针对连接的神经元的该行中列中的一列指示连接的神经元确实激发,基于所确定的定时差来计算突触的权重,其中,突触的权重响应于在针对连接的神经元的该行中所有列指示神经元没有激发而不改变。
在示例10中,示例1-9和11-12的主题可以可选地包括,响应于至少一个激发神经元中的每个激发神经元激发脉冲,该神经形态计算设备还用于:确定通过至少一个突触连接到激发神经元的至少一个连接的突触后神经元;以及针对至少一个连接的突触后神经元中的每个连接的突触后神经元,进行以下操作:基于在连接的突触后神经元与激发神经元之间的突触的权重来确定电位;使连接的突触后神经元的膜电位增加所确定的电位;以及响应于膜电位超过阈值,由连接的突触后神经元激发脉冲。
在示例11中,示例1-10和12的主题可以可选地包括,连接到激发神经元中的每个激发神经元的连接的神经元包括扇入突触前神经元和扇出突触后神经元,扇入突触前神经元通过突触向激发神经元激发脉冲,扇出突触后神经元接收由激发神经元激发的脉冲。
在示例12中,示例1-11的主题可以可选地包括,该神经形态计算设备包括以下中的至少一个:计算机可读存储介质,其包括实现由处理器执行的脉冲神经网络程序的程序代码;以及集成电路硬件设备,其实现专用于实现脉冲神经网络程序的硬件逻辑。
示例13是一种用于针对脉冲神经网络维护关于神经元何时激发的定时信息的存储器设备,包括:存储器单元的行和列的阵列,其中,存在行中的针对脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列,其中,列中的当前列表示当前时隙,其中,在存储器单元的针对激发神经元的该行中当前列指示脉冲在当前时隙中被激发,其中,在存储器单元的包括没有激发的神经元的空闲神经元的行中当前列指示脉冲没有被激发,其中,阵列中的信息被用于确定连接的神经元与激发神经元之间的定时差,连接的神经元通过突触连接到激发神经元,并且其中,所确定的定时差被用于调整对激发神经元和连接的神经元进行连接的突触的权重。
在示例14中,示例13和15-17的主题可以可选地包括:现在指针,其包括针对阵列中的列中的每列的条目,其中,现在指针中的条目与时隙相对应并且包括与阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,当前条目被设置为第一值并且非当前条目被设置为第二值,其中,现在指针被用于在至少一个激发神经元的至少一行中指示当前列中的第一值和除当前列之外的列中的第二值,其中,在行中在列中的一列中的第一值指示在该行中由该列表示的时隙处激发脉冲。
在示例15中,示例13、14、16和17的主题可以可选地包括:针对阵列的行中的每行,通过存储器设备的该行中的单元的字线,以及针对阵列的列中的每列,通过阵列的该列中的单元的至少一条位线,其中,使用针对当前列的位线,当前列中的所有单元被设置为接地以设置为第二值,并且其中,针对至少一个激发神经元的每行的字线被激活,以将现在指针的条目写入该行的单元。
在示例16中,示例13-15和16的主题可以可选地包括:针对阵列的当前列的重置端口的重置位线,其被设置以将阵列的与现在指针中的当前条目相对应的当前列中的所有单元设置为第二值;以及针对神经元中的每个神经元的字线,其中,在将阵列的当前列中的所有条目设置为第二值之后,现在指针沿针对至少一个激发神经元的至少一条字线被应用,以在至少一个激发神经元的行中将现在指针的条目中的第一值和第二值写入对应的列,其中,针对至少一个激发神经元中的每个激发神经元的该行包括具有第一值的当前列和列中的具有第二值的所有其他列。
示例17是一种实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的系统,包括:存储器设备;以及神经形态计算设备,其实现用于以下操作的脉冲神经网络程序:在具有存储器单元的行和列的阵列的存储器设备中生成脉冲历史,其中,存在行中的针对脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;响应于神经元的至少一个激发神经元中的每个激发神经元在由列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:在存储器单元的针对激发神经元的该行中在当前列中指示脉冲在当前时隙中被激发;在存储器单元的包括没有激发的神经元的空闲神经元的行中在当前列中指示脉冲没有被激发;使用阵列中的信息来确定连接的神经元与激发神经元之间的定时差,连接的神经元通过突触连接到激发神经元;以及使用所确定的定时差来调整对激发神经元和连接的神经元进行连接的突触的权重。
在示例18中,示例17、19和20的主题可以可选地包括,该脉冲神经网络程序还用于:生成现在指针,该现在指针包括针对阵列中的列中的每列的条目,其中,现在指针中的条目与时隙相对应并且包括与阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,当前条目被设置为第一值并且非当前条目被设置为第二值;以及使用现在指针在至少一个激发神经元的至少一行中指示当前列中的第一值和除当前列之外的列中的第二值,其中,在行中在列中的一列中的第一值指示在该行中由该列表示的时隙处激发脉冲。
在示例19中,示例17、18和20的主题可以可选地包括,使用现在指针包括:在至少一个激发神经元的至少一行中将现在指针的条目中的第一值和第二值写入对应的列,其中,行中的每行包括具有第一值的一个列条目和列条目中的具有第二值的所有其他列条目。
在示例20中,示例17-19和20的主题可以可选地包括,存储器设备包括:针对阵列的行中的每行,通过存储器设备的该行中的单元的字线,以及针对阵列的列中的每列,通过阵列的该列中的单元的至少一条位线,脉冲神经网络程序还用于:使用针对当前列的位线,将当前列中的所有单元设置为接地以设置为第二值;以及激活针对至少一个激发神经元的每行的字线,以将现在指针的条目写入该行的单元。
示例21是一种用于在神经形态计算设备中实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的方法,包括:在具有存储器单元的行和列的阵列的存储器设备中生成脉冲历史,其中,存在行中的针对脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;响应于神经元的至少一个激发神经元中的每个激发神经元在由列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:在存储器单元的针对激发神经元的该行中在当前列中指示脉冲在当前时隙中被激发;在存储器单元的包括没有激发的神经元的空闲神经元的行中在当前列中指示脉冲没有被激发;使用阵列中的信息来确定连接的神经元与激发神经元之间的定时差,连接的神经元通过突触连接到激发神经元;以及使用所确定的定时差来调整对激发神经元和连接的神经元进行连接的突触的权重。
在示例22中,示例23-25的主题可以可选地包括:生成现在指针,该现在指针包括针对阵列中的列中的每列的条目,其中,现在指针中的条目与时隙相对应并且包括与阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,当前条目被设置为第一值并且非当前条目被设置为第二值;以及使用现在指针在至少一个激发神经元的至少一行中指示当前列中的第一值和除当前列之外的列中的第二值,其中,在行中在列中的一列中的第一值指示在该行中由该列表示的时隙处激发脉冲。
在示例23中,示例22、24和25的主题可以可选地包括,使用现在指针包括:在至少一个激发神经元的至少一行中将现在指针的条目中的第一值和第二值写入对应的列,其中,行中的每行包括具有第一值的一个列条目和列条目中的具有第二值的所有其他列条目。
在示例24中,示例22、23和25的主题可以可选地包括,存储器设备包括:针对阵列的行中的每行,通过存储器设备的该行中的单元的字线,以及针对阵列的列中的每列,通过阵列的该列中的单元的至少一条位线,该方法还包括:使用针对当前列的位线,将当前列中的所有单元设置为接地以设置为第二值;以及激活针对至少一个激发神经元的每行的字线,以将现在指针的条目写入该行的单元。
在示例25中,示例22-24的主题可以可选地包括,确定阵列中的针对激发神经元具有第一值的第一列位置编号与阵列中的针对连接的神经元具有第一值的第二列位置编号的差;以及基于第一列位置编号和第二列位置编号来确定激发神经元与连接的神经元之间的定时差。
示例26是一种用于实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的装置,包括:用于在具有存储器单元的行和列的阵列的存储器设备中生成脉冲历史的单元,其中,存在行中的针对脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;用于响应于神经元的至少一个激发神经元中的每个激发神经元在由列中的当前列表示的当前时隙处通过突触激发脉冲而执行以下步骤的单元:在存储器单元的针对激发神经元的该行中在当前列中指示脉冲在当前时隙中被激发;在存储器单元的包括没有激发的神经元的空闲神经元的行中在当前列中指示脉冲没有被激发;使用阵列中的信息来确定连接的神经元与激发神经元之间的定时差,连接的神经元通过突触连接到激发神经元;以及使用所确定的定时差来调整对激发神经元和连接的神经元进行连接的突触的权重。
Claims (22)
1.一种实现脉冲神经网络程序以维护关于神经元何时激发的定时信息并且处理要在存储器设备中维护的神经网络信息的神经形态计算设备,用于:
在具有存储器单元的行和列的阵列的所述存储器设备中生成脉冲历史,其中,存在所述行中的针对所述脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;
生成现在指针,所述现在指针包括针对所述阵列中的所述列中的每列的条目,其中,所述现在指针中的条目与时隙相对应并且包括与所述阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,所述当前条目被设置为第一值并且所述非当前条目被设置为第二值;以及
响应于在所述现在指针中指示的、所述神经元的至少一个激发神经元中的每个激发神经元在由所述列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:
在所述存储器单元的针对至少一个激发神经元中的每个激发神经元的该行中在与所述现在指针中具有所述第一值的条目相对应的所述当前列中指示所述脉冲在所述当前时隙中被激发;
在存储器单元的包括没有激发的神经元的空闲神经元的行中在所述当前列中指示所述第二值,所述第二值指示脉冲没有被激发;
使用所述阵列中的信息来确定连接的神经元与所述激发神经元之间的定时差,所述连接的神经元通过突触连接到所述激发神经元;以及
使用所确定的定时差来调整对所述激发神经元和所述连接的神经元进行连接的所述突触的权重。
2.如权利要求1所述的神经形态计算设备,其中,使用所述现在指针包括:
在所述至少一个激发神经元的至少一行中将所述现在指针的所述条目中的所述第一值和所述第二值写入对应的列,其中,所述行中的每行包括具有所述第一值的一个列条目和列条目中的具有所述第二值的所有其他列条目。
3.如权利要求1所述的神经形态计算设备,其中,所述存储器设备包括:针对所述阵列的行中的每行,通过所述存储器设备的该行中的单元的字线,以及针对所述阵列的列中的每列,通过所述阵列的该列中的所述单元的至少一条位线,所述神经形态计算设备还用于:
使用针对所述当前列的所述位线,将所述当前列中的所有单元设置为接地以设置为所述第二值;以及
激活针对所述至少一个激发神经元的每行的所述字线,以将所述现在指针的条目写入该行的所述单元。
4.如权利要求1-3中任一项所述的神经形态计算设备,其中,所述现在指针包括循环移位寄存器,所述神经形态计算设备还用于:
响应于新的时间周期,同时将所述现在指针中的第一个条目至倒数第二个条目中的值向右移位,并且将最后一个条目中的值移位到所述第一个条目。
5.如权利要求1-3中任一项所述的神经形态计算设备,其中,确定所述定时差包括:
确定所述阵列中的针对所述激发神经元具有所述第一值的第一列位置编号与所述阵列中的针对所述连接的神经元具有所述第一值的第二列位置编号的差;以及
基于所述第一列位置编号和所述第二列位置编号来确定所述激发神经元与所述连接的神经元之间的定时差。
6.如权利要求1-3中任一项所述的神经形态计算设备,其中,所述现在指针包括循环移位寄存器,其中,确定所述定时差包括:
使所述现在指针中的条目数,加上所述阵列中的针对所述激发神经元具有所述第一值的第一列位置编号,减去所述阵列中的针对所述连接的神经元具有所述第一值的第二列位置编号对所述现在指针中的所述条目数取模。
7.如权利要求1-3中任一项所述的神经形态计算设备,还用于:
对针对所述阵列的当前列的重置端口的重置位线进行设置,以将所述阵列的与所述现在指针中的所述当前条目相对应的所述当前列中的所有单元设置为所述第二值;以及
在将所述阵列的当前列中的所有条目设置为所述第二值之后,沿针对所述至少一个激发神经元的至少一条字线应用所述现在指针,以在所述至少一个激发神经元的所述行中将所述现在指针的条目中的所述第一值和所述第二值写入对应的列,其中,针对所述至少一个激发神经元中的每个激发神经元的该行包括具有所述第一值的所述当前列和所述列中的具有所述第二值的所有其他列。
8.如权利要求1-3中任一项所述的神经形态计算设备,其中,针对所述激发神经元和所述连接的神经元的至少一个对中的每个对调整所述突触的权重包括:
响应于在针对所述连接的神经元的该行中所述列中的一列指示所述连接的神经元确实激发,基于所确定的定时差来计算所述突触的权重,其中,所述突触的权重响应于在针对所述连接的神经元的该行中所有列指示所述神经元没有激发而不改变。
9.如权利要求1-3中任一项所述的神经形态计算设备,其中,响应于所述至少一个激发神经元中的每个激发神经元激发所述脉冲:
确定通过至少一个突触连接到所述激发神经元的至少一个连接的突触后神经元;以及
针对所述至少一个连接的突触后神经元中的每个连接的突触后神经元,进行以下操作:
基于在所述连接的突触后神经元与所述激发神经元之间的所述突触的权重来确定电位;
使所述连接的突触后神经元的膜电位增加所确定的电位;以及
响应于所述膜电位超过阈值,由所述连接的突触后神经元激发脉冲。
10.如权利要求1-3中任一项所述的神经形态计算设备,其中,连接到所述激发神经元中的每个激发神经元的所述连接的神经元包括扇入突触前神经元和扇出突触后神经元,所述扇入突触前神经元通过所述突触向所述激发神经元激发脉冲,所述扇出突触后神经元接收由所述激发神经元激发的所述脉冲。
11.如权利要求1所述的神经形态计算设备,包括以下中的至少一个:计算机可读存储介质,其包括实现由处理器执行的所述脉冲神经网络程序的程序代码;以及集成电路硬件设备,其实现专用于实现所述脉冲神经网络程序的硬件逻辑。
12.一种用于针对脉冲神经网络维护关于神经元何时激发的定时信息的存储器设备,包括:
存储器单元的行和列的阵列,其中,存在所述行中的针对所述脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;
现在指针,其包括针对所述阵列中的所述列中的每列的条目,其中,所述现在指针中的条目与时隙相对应并且包括与所述阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,所述当前条目被设置为第一值并且所述非当前条目被设置为第二值;
其中,所述列中的当前列表示当前时隙,其中,在所述存储器单元的针对至少一个激发神经元中的每个激发神经元的该行中与所述现在指针中具有所述第一值的条目相对应的所述当前列指示脉冲在所述当前时隙中被激发,其中,在存储器单元的包括没有激发的神经元的空闲神经元的行中所述当前列指示所述第二值,所述第二值指示脉冲没有被激发,其中,所述阵列中的信息被用于确定连接的神经元与所述激发神经元之间的定时差,所述连接的神经元通过突触连接到所述激发神经元,并且其中,所确定的定时差被用于调整对所述激发神经元和所述连接的神经元进行连接的所述突触的权重。
13.如权利要求12所述的存储器设备,还包括:
针对所述阵列的行中的每行,通过所述存储器设备的该行中的单元的字线,以及针对所述阵列的列中的每列,通过所述阵列的该列中的所述单元的至少一条位线,其中,使用针对所述当前列的所述位线,所述当前列中的所有单元被设置为接地以设置为所述第二值,并且其中,针对所述至少一个激发神经元的每行的所述字线被激活,以将所述现在指针的条目写入该行的所述单元。
14.如权利要求12所述的存储器设备,还包括:
针对所述阵列的当前列的重置端口的重置位线,其被设置以将所述阵列的与所述现在指针中的所述当前条目相对应的所述当前列中的所有单元设置为所述第二值;以及
针对所述神经元中的每个神经元的字线,其中,在将所述阵列的当前列中的所有条目设置为所述第二值之后,所述现在指针沿针对所述至少一个激发神经元的至少一条字线被应用,以在所述至少一个激发神经元的所述行中将所述现在指针的条目中的所述第一值和所述第二值写入对应的列,其中,针对所述至少一个激发神经元中的每个激发神经元的该行包括具有所述第一值的所述当前列和所述列中的具有所述第二值的所有其他列。
15.一种实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的系统,包括:
存储器设备;以及
神经形态计算设备,其实现用于以下操作的脉冲神经网络程序:
在具有存储器单元的行和列的阵列的所述存储器设备中生成脉冲历史,其中,存在所述行中的针对所述脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;
生成现在指针,所述现在指针包括针对所述阵列中的所述列中的每列的条目,其中,所述现在指针中的条目与时隙相对应并且包括与所述阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,所述当前条目被设置为第一值并且所述非当前条目被设置为第二值;以及
响应于在所述现在指针中指示的、所述神经元的至少一个激发神经元中的每个激发神经元在由所述列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:
在所述存储器单元的针对至少一个激发神经元中的每个激发神经元的该行中在与所述现在指针中具有所述第一值的条目相对应的所述当前列中指示所述脉冲在所述当前时隙中被激发;
在存储器单元的包括没有激发的神经元的空闲神经元的行中在所述当前列中指示所述第二值,所述第二值指示脉冲没有被激发;
使用所述阵列中的信息来确定连接的神经元与所述激发神经元之间的定时差,所述连接的神经元通过突触连接到所述激发神经元;以及
使用所确定的定时差来调整对所述激发神经元和所述连接的神经元进行连接的所述突触的权重。
16.如权利要求15所述的系统,其中,使用所述现在指针包括:
在所述至少一个激发神经元的至少一行中将所述现在指针的所述条目中的所述第一值和所述第二值写入对应的列,其中,所述行中的每行包括具有所述第一值的一个列条目和列条目中的具有所述第二值的所有其他列条目。
17.如权利要求15所述的系统,其中,所述存储器设备包括:针对所述阵列的行中的每行,通过所述存储器设备的该行中的单元的字线,以及针对所述阵列的列中的每列,通过所述阵列的该列中的所述单元的至少一条位线,所述脉冲神经网络程序还用于:
使用针对所述当前列的所述位线,将所述当前列中的所有单元设置为接地以设置为所述第二值;以及
激活针对所述至少一个激发神经元的每行的所述字线,以将所述现在指针的条目写入该行的所述单元。
18.一种用于在神经形态计算设备中实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的方法,包括:
在具有存储器单元的行和列的阵列的存储器设备中生成脉冲历史,其中,存在所述行中的针对所述脉冲神经网络的多个神经元中的每个神经元的一行,以及针对多个时隙中的每个时隙的列;
生成现在指针,所述现在指针包括针对所述阵列中的所述列中的每列的条目,其中,所述现在指针中的条目与时隙相对应并且包括与所述阵列中的当前列相对应的当前条目和与非当前时隙相对应的非当前条目,其中,所述当前条目被设置为第一值并且所述非当前条目被设置为第二值;以及
响应于在所述现在指针中指示的、所述神经元的至少一个激发神经元中的每个激发神经元在由所述列中的当前列表示的当前时隙处通过突触激发脉冲而进行以下操作:
在所述存储器单元的针对至少一个激发神经元中的每个激发神经元的该行中在与所述现在指针中具有所述第一值的条目相对应的所述当前列中指示所述脉冲在所述当前时隙中被激发;
在存储器单元的包括没有激发的神经元的空闲神经元的行中在所述当前列中指示所述第二值,所述第二值指示脉冲没有被激发;
使用所述阵列中的信息来确定连接的神经元与所述激发神经元之间的定时差,所述连接的神经元通过突触连接到所述激发神经元;以及
使用所确定的定时差来调整对所述激发神经元和所述连接的神经元进行连接的所述突触的权重。
19.如权利要求18所述的方法,其中,使用所述现在指针包括:
在所述至少一个激发神经元的至少一行中将所述现在指针的所述条目中的所述第一值和所述第二值写入对应的列,其中,所述行中的每行包括具有所述第一值的一个列条目和列条目中的具有所述第二值的所有其他列条目。
20.如权利要求18所述的方法,其中,所述存储器设备包括:针对所述阵列的行中的每行,通过所述存储器设备的该行中的单元的字线,以及针对所述阵列的列中的每列,通过所述阵列的该列中的所述单元的至少一条位线,所述方法还包括:
使用针对所述当前列的所述位线,将所述当前列中的所有单元设置为接地以设置为所述第二值;以及
激活针对所述至少一个激发神经元的每行的所述字线,以将所述现在指针的条目写入该行的所述单元。
21.如权利要求18所述的方法,其中,确定所述定时差包括:
确定所述阵列中的针对所述激发神经元具有所述第一值的第一列位置编号与所述阵列中的针对所述连接的神经元具有所述第一值的第二列位置编号的差;以及
基于所述第一列位置编号和所述第二列位置编号来确定所述激发神经元与所述连接的神经元之间的定时差。
22.一种用于实现脉冲神经网络程序以维护关于神经元何时激发的定时信息的装置,包括用于执行根据权利要求18-21中任一项所述的方法的单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/273,505 US10586147B2 (en) | 2016-09-22 | 2016-09-22 | Neuromorphic computing device, memory device, system, and method to maintain a spike history for neurons in a neuromorphic computing environment |
US15/273,505 | 2016-09-22 | ||
PCT/US2017/052965 WO2018057896A1 (en) | 2016-09-22 | 2017-09-22 | A neuromorphic computing device, memory device, system, and method to maintain a spike history for neurons in a neuromorphic computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109804384A CN109804384A (zh) | 2019-05-24 |
CN109804384B true CN109804384B (zh) | 2024-01-05 |
Family
ID=61620463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780050800.6A Active CN109804384B (zh) | 2016-09-22 | 2017-09-22 | 用于维护神经元的脉冲历史的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10586147B2 (zh) |
EP (1) | EP3516594A4 (zh) |
CN (1) | CN109804384B (zh) |
WO (1) | WO2018057896A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360971B1 (en) | 2015-11-02 | 2019-07-23 | Green Mountain Semiconductor, Inc. | Artificial neural network functionality within dynamic random-access memory |
KR20180120511A (ko) * | 2017-04-27 | 2018-11-06 | 에스케이하이닉스 주식회사 | 전달 함수 회로들을 가진 시냅스 어레이를 포함하는 뉴로모픽 소자 |
US11379714B2 (en) | 2018-05-29 | 2022-07-05 | British Cayman Islands Intelligo Technology Inc. | Architecture of in-memory computing memory device for use in artificial neuron |
CN111417963B (zh) * | 2018-11-01 | 2021-06-22 | P·A·范德梅德 | 改进的尖峰神经网络 |
US11586895B1 (en) | 2019-06-17 | 2023-02-21 | Green Mountain Semiconductor, Inc. | Recursive neural network using random access memory |
US11694065B2 (en) * | 2019-08-28 | 2023-07-04 | Micron Technology, Inc. | Spiking neural unit |
US11727252B2 (en) | 2019-08-30 | 2023-08-15 | International Business Machines Corporation | Adaptive neuromorphic neuron apparatus for artificial neural networks |
US11915124B2 (en) | 2019-09-05 | 2024-02-27 | Micron Technology, Inc. | Performing processing-in-memory operations related to spiking events, and related methods, systems and devices |
US12008460B2 (en) | 2019-09-05 | 2024-06-11 | Micron Technology, Inc. | Performing processing-in-memory operations related to pre-synaptic spike signals, and related methods and systems |
CN111325330B (zh) * | 2020-02-19 | 2022-10-11 | 北京大学 | 一种突触对称性时间依赖可塑性算法电路及其阵列结构 |
CN113313240B (zh) * | 2021-08-02 | 2021-10-15 | 成都时识科技有限公司 | 计算设备及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201610A (zh) * | 2010-10-29 | 2013-07-10 | 国际商业机器公司 | 带有使用模拟学习的突触权重的神经形态-突触器脉冲神经网络 |
WO2014080300A1 (en) * | 2012-11-21 | 2014-05-30 | International Business Machines Corporation | Neural network |
US8756183B1 (en) * | 2010-06-14 | 2014-06-17 | Hrl Laboratories, Llc | System for representing, storing, and reconstructing an input signal |
CN104240753A (zh) * | 2013-06-10 | 2014-12-24 | 三星电子株式会社 | 突触阵列、脉冲整形电路和神经形态系统 |
CN104641385A (zh) * | 2012-09-14 | 2015-05-20 | 国际商业机器公司 | 神经核心电路 |
CN105229675A (zh) * | 2013-05-21 | 2016-01-06 | 高通股份有限公司 | 尖峰网络的高效硬件实现 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856055B2 (en) | 2011-04-08 | 2014-10-07 | International Business Machines Corporation | Reconfigurable and customizable general-purpose circuits for neural networks |
US8725662B2 (en) * | 2011-09-21 | 2014-05-13 | Brain Corporation | Apparatus and method for partial evaluation of synaptic updates based on system events |
US9256215B2 (en) | 2012-07-27 | 2016-02-09 | Brain Corporation | Apparatus and methods for generalized state-dependent learning in spiking neuron networks |
US20150046381A1 (en) * | 2013-08-06 | 2015-02-12 | Qualcomm Incorporated | Implementing delays between neurons in an artificial nervous system |
US9886662B2 (en) * | 2014-09-19 | 2018-02-06 | International Business Machines Corporation | Converting spike event data to digital numeric data |
US9830981B2 (en) | 2015-01-14 | 2017-11-28 | International Business Machines Corporation | Neuromorphic memory circuit using a leaky integrate and fire (LIF) line to transmit axon LIF pulse and a conductive denrite LIF line |
US9990580B2 (en) | 2015-03-13 | 2018-06-05 | International Business Machines Corporation | Neuromorphic synapses |
-
2016
- 2016-09-22 US US15/273,505 patent/US10586147B2/en active Active
-
2017
- 2017-09-22 EP EP17853990.4A patent/EP3516594A4/en active Pending
- 2017-09-22 CN CN201780050800.6A patent/CN109804384B/zh active Active
- 2017-09-22 WO PCT/US2017/052965 patent/WO2018057896A1/en unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8756183B1 (en) * | 2010-06-14 | 2014-06-17 | Hrl Laboratories, Llc | System for representing, storing, and reconstructing an input signal |
CN103201610A (zh) * | 2010-10-29 | 2013-07-10 | 国际商业机器公司 | 带有使用模拟学习的突触权重的神经形态-突触器脉冲神经网络 |
CN104641385A (zh) * | 2012-09-14 | 2015-05-20 | 国际商业机器公司 | 神经核心电路 |
WO2014080300A1 (en) * | 2012-11-21 | 2014-05-30 | International Business Machines Corporation | Neural network |
CN105229675A (zh) * | 2013-05-21 | 2016-01-06 | 高通股份有限公司 | 尖峰网络的高效硬件实现 |
CN104240753A (zh) * | 2013-06-10 | 2014-12-24 | 三星电子株式会社 | 突触阵列、脉冲整形电路和神经形态系统 |
Non-Patent Citations (2)
Title |
---|
《Accelerated Simulation of Spiking Neural Networks Using GPUs》;Fidjeland, et al.;《The 2010 International Joint Conference on Neural Networks (IJCNN) (Year: 2010)》;20101231;全文 * |
指数突触电导IF神经元模型及事件驱动模拟策略;蔺想红等;《电子学报》;20080815(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
EP3516594A4 (en) | 2020-05-27 |
WO2018057896A1 (en) | 2018-03-29 |
US10586147B2 (en) | 2020-03-10 |
US20180082176A1 (en) | 2018-03-22 |
CN109804384A (zh) | 2019-05-24 |
EP3516594A1 (en) | 2019-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109804384B (zh) | 用于维护神经元的脉冲历史的方法和装置 | |
US8812414B2 (en) | Low-power event-driven neural computing architecture in neural networks | |
US10628732B2 (en) | Reconfigurable and customizable general-purpose circuits for neural networks | |
TWI515670B (zh) | 用以強化學習之裝置、系統及電腦程式產品 | |
US8676734B2 (en) | Methods and systems for replaceable synaptic weight storage in neuro-processors | |
US20200117398A1 (en) | Results processing circuits and methods associated with computational memory cells | |
EP3710995B1 (en) | Deep neural network processor with interleaved backpropagation | |
US11880226B2 (en) | Digital backed flash refresh | |
US11915124B2 (en) | Performing processing-in-memory operations related to spiking events, and related methods, systems and devices | |
US20230281436A1 (en) | Neuromorphic processor and operating method thereof | |
US20210073623A1 (en) | Performing processing-in-memory operations related to pre-synaptic spike signals, and related methods and systems | |
US20230153584A1 (en) | Parallel Processing in a Spiking Neural Network | |
US20220383080A1 (en) | Parallel processing in a spiking neural network | |
CN112447249A (zh) | 人工智能操作的调试操作 | |
Nasrin et al. | Supported-BinaryNet: Bitcell array-based weight supports for dynamic accuracy-latency trade-offs in SRAM-based binarized neural network | |
US20240086689A1 (en) | Step-ahead spiking neural network | |
US20230229922A1 (en) | Training method, operating method and memory system | |
JP2024035145A (ja) | Imc回路、imc回路を含むニューラルネットワーク装置、及びimc回路の動作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |