CN112949834A - 一种概率计算脉冲式神经网络计算单元和架构 - Google Patents
一种概率计算脉冲式神经网络计算单元和架构 Download PDFInfo
- Publication number
- CN112949834A CN112949834A CN202110327829.2A CN202110327829A CN112949834A CN 112949834 A CN112949834 A CN 112949834A CN 202110327829 A CN202110327829 A CN 202110327829A CN 112949834 A CN112949834 A CN 112949834A
- Authority
- CN
- China
- Prior art keywords
- value
- array
- calculation
- output
- unit
- 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.)
- Granted
Links
Images
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/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- 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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Complex Calculations (AREA)
Abstract
本申请提出一种概率计算脉冲式神经网络计算单元和架构。所述计算单元包括输入单元、输出单元。输入单元在每一个活动周期,根据当前活动周期的输入值和权重值,通过概率计算产生脉冲序列;输出单元,对所述脉冲序列中的脉冲进行计数,并累加一个基础值,生成当前活动周期的输出值。所述计算阵列包含所述计算单元,呈矩阵排列。所述架构,使用所述计算单元的组合构成计算阵列。本申请解决脉冲神经网络计算量大、需要实现高速计算的问题。
Description
技术领域
本发明涉及集成电路、电路与系统及其类脑计算领域,尤其涉及基于概率计算的双神经元脉冲神经网络硬件架构设计方法及装置。
背景技术
在现有的脉冲神经网络硬件加速器设计中,往往采用模拟电路实现对生物神经元发送与接收尖峰脉冲(模拟量)的仿生设计,虽具有较佳的计算能效优势,但模拟电路不易于实现可重构设计,较难达到神经网络通用加速的目的,且由于易受噪声影响,计算可靠性不佳。
数字电路有利于实现脉冲神经网络的通用硬件加速器设计,但神经元间的通信通过传递尖峰脉冲实现,而尖峰脉冲是在时间轴上连续变化的模拟量,现有的数字电路神经元建模中,为了得到某一时刻的膜电位运算,需要记录每个神经元从不应期结束开始直到当前时刻的所有输入脉冲,并且根据脉冲对膜电位增量的变化曲线得到各个脉冲在这一时刻对各神经元的增量值,并受权重加权,累加得到膜电位。这样的计算方式需要大量的存储,也导致了庞大的运算量,在效率上具有较大的劣势。
当计算神经元在t时刻的膜电位时,要对多个输入到神经元的尖峰脉冲波形进行时域累积。尤其是,当输入输出数量较大时,电路规模大,设计困难、计算速度不易提高。
发明内容
为解决脉冲神经网络计算量大、需要提高计算速度的问题,本申请提出一种基于概率计算脉冲式神经网络计算单元和架构。
第一方面,本申请提出一种概率计算脉冲式神经网络计算单元,包括输入单元、输出单元。
所述输入单元,在每一个活动周期,根据当前活动周期的输入值和权重值,通过概率计算产生脉冲序列。
所述输出单元,用于对所述脉冲序列中的脉冲1进行计数,并累加一个基础值,生成当前活动周期的输出值。
优选地,所述输入单元包含激活阈值判定模块、脉冲发生模块、随机数生成器。所述激活阈值判定模块,用于比较输入值和门限值,当所述输入值大于门限值时,产生激活脉冲,使能所述脉冲发生模块。所述随机数生成器,用于在设定的位数范围内生成随机数。所述脉冲发生器,用于比较每一个随机数与权重值的大小,生成所述脉冲序列,其中的脉冲1呈随机分布,在每一个脉冲序列重复周期内,脉冲1的数量为所述权重值。
优选地,所述输出单元包含脉冲计数器、移位寄存器。当神经元状态值为1时,使能所述脉冲计数器。所述脉冲计数器,用于在上一活动周期的输出值的衰减值的基础上,对当前活动周期中生成的所述脉冲序列中的脉冲1进行计数并累积,生成当前活动周期的输出值。所述移位寄存器,用于对当前活动周期的输出值二进制移位,使输出值相对减小1/2,生成当前活动周期的输出值的衰减值,用作下一活动周期脉冲计数器的基础值。
第二方面,本申请实施例提出一种基于概率计算脉冲式神经网络架构,包含本申请任意一项实施例所述计算单元组成计算阵列,所述计算阵列中的计算单元呈矩阵排列。
所述计算阵列包含至少1个输出神经元,每1个输出神经元对应numin个计算单元。所述numin个计算单元构成一个子阵列。所述子阵列,用于在每一个活动周期计算numin个权重值和numin个输入值条件下的膜电位输出;每个计算单元分别输入一个输入值和对应的权重值,其中:
第i个计算单元的输出单元生成的当前活动周期的输出值,作为第i+1个计算单元的输出单元的基础值,i=1~numin-1;
第numin个计算单元的输出单元生成的当前活动周期的输出值,对当前活动周期的输出值二进制移位,使输出值相对减小1/2,用作下一活动周期第1个计算单元的输出神经元的基础值。
优选地,所述计算阵列包括并行排列的多个所述子阵列,第j个子阵列的第i个计算单元,权重值wij数据保持在阵列内。在每1个活动周期,第i个激活脉冲广播至每一个子阵列的第i个计算单元。
优选地,每1个子阵列的numin个计算单元位于一个矩阵中或分别在多个矩阵中组合排列。
优选地,在每1个子阵列中,经numin步串行移位计算得到当前活动周期的膜电位值,第i步计算时,使用状态值1启动第i个计算单元。
进一步优选地,在多个子阵列中,第j+1个子阵列的第i个计算单元和第j个子阵列的第i+1个计算单元同步计算。
第三方面,本申请还提出一种概率计算脉冲式神经网络处理方法,用本申请任意一项实施例所述计算单元的组合构成计算阵列,生成膜电位值二进制数据。
优选地,通过阵列控制系统导入排布数据,所述排布数据包含所述计算单元的排列关系,在所述计算单元构成的矩阵结构中,建立全连接形式的脉冲神经网络。
本申请实施例采用的上述技术方案能够达到以下有益效果:
本发明基于对数字电路可实现的脉冲神经元进行建模,并提出一种可重构的脉冲神网络硬件架构,结合脉动阵列技术,在保证计算效率的前提下,降低了可重构设计的复杂程度,实现了对全连接形式脉冲神经网络的通用计算功能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为概率计算脉冲式神经网络计算单元电路结构;
图2为全连接形式脉冲式神经网络架构的阵列重构方式;
图3为多输出神经元并行计算时脉冲式神经网络架构的阵列重构方式;
图4为输入数据的脉冲编码电路;
图5为另一概率计算脉冲式神经网络架构实施例。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明为解决脉冲神经元在数字电路中计算量庞大,存储需求高问题,对脉冲神经元的运算公式进行化简,提出了基于概率计算的脉冲神经元模型及对应的计算单元。进而解决现有脉冲神经网络硬件加速器通用性差的问题,结合脉动阵列技术,提出了一种可重构的脉冲神经网络硬件架构。最后,本申请提出神经网络处理方法,基于计算单元的阵列结构,建立全连接形式的脉冲神经网络。
为实现以上目的,本发明对时间域离散的脉冲神经元进行建模并基于概率计算思想进一步优化。
脉冲神经元的膜电位变化所遵循的原始表达式为:
其中g(t)为一个尖峰脉冲对膜电位所产生增量;numin为输入神经元数量;uout,j(t)为第j个输出膜电位;pin,i(t)表示第i个输入神经元发送的尖峰脉冲波形,由uin,i(tn)得到;sout,j(t)为第j个输出神经元t时刻的状态,取值为0或1,为0时神经元处于不应期,膜电位将置零且接收脉冲时膜电位不会产生增量;wij为第i个输入神经元与第j个输出神经元的连接权重;t0表示神经元最近一次不应期结束的时刻。公式1~4中的j的范围为1~numout。其中numout为输出神经元数量。
根据上述公式1,本发明的方案首先对时间域离散的数字脉冲神经元建模,将尖峰脉冲替换为方波。若设T为采样间隔,可以得到下述表达式:
将每两个采样点之间的时间段划分为一个活动周期,一个活动周期内的神经元活动(收发脉冲)视为同时进行的,pin,i(t)在每一个活动周期中取值为0或1。每经过一个活动周期,膜电位根据g(t)进行衰减;tn表示第n个活动周期结束的时刻,即tn=nT;tk、tn-1同理;tn-k则表示tn、tk的时间间隔,用于计算tk时接收的脉冲对tn的膜电位的影响。
由于对公式2进行计算涉及从上一个不应期结束到当前时刻的所有数据,计算量庞大,计算效率低,本发明对计算方法实施以下改进:
令g(nT-kT)=2-(n-k),也就是g(tn-k)=2k-n,得到表达式如下:
根据公式3,当前活动周期结束时的膜电位仅与上一活动周期结束时的膜电位uout,j(tn-1)以及当前活动周期的接收脉冲pin,i(tn)以及自身状态sj(tn)有关,且上一活动周期的膜电位衰减系数取为1/2。
基于概率计算,离散表达式的公式3可以进一步转换为:
其中,Wij(m)为由wij所产生的概率计算脉冲序列的第m位,取值为0或1;α为一常数,与概率脉冲序列的编码长度有关,并且有wij≈2α∑Wij(m),随编码长度增大该近似产生的误差越小。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为概率计算脉冲式神经网络计算单元电路结构。
根据公式3~4设计双神经元结构的计算单元,采用双神经元结构实现计算,两个神经元分别具备脉冲神经元的部分计算功能。其中,输入神经元具有激活阈值判定功能,对输入值uin,i(tn)的大小进行判断,与阈值电压uth比较,产生pin,i(t),若达到激活阈值则产生使能信号。输入神经元还能够基于概率编码产生脉冲序列Wij(m),序列长度N为预先设定的值。输出神经元能够对脉冲序列Wij(m)中的脉冲数量进行累加计算,将脉冲序列恢复成二进制的膜电位数据并存储;输出神经元还具有膜电位衰减功能,完成uout,j(tn-1)/2运算,在电路中采用二进制序列向右移位方式实现。
为此,本申请提出的一种概率计算脉冲式神经网络计算单元,如图1所示,包括输入单元10、输出单元20。所述输入单元,在每一个活动周期,根据当前活动周期的输入值和权重值,通过概率计算产生脉冲序列。所述输出单元,用于对所述脉冲序列中的脉冲1进行计数,并累加一个基础值,生成当前活动周期的输出值。
优选地,所述输入单元包含激活阈值判定模块11、脉冲发生模块12、随机数生成器13。所述激活阈值判定模块,用于比较输入值uin,i(tn)和门限值uth,当所述输入值大于门限值时,产生激活脉冲,输出信号为1,否则输出信号为0。输出信号为1则使能所述脉冲发生模块。所述随机数生成器,用于在设定的位数范围内生成随机数。所述脉冲发生器,用于比较每一个随机数与权重值的大小,生成所述脉冲序列,其中的脉冲1呈随机分布,在每一个脉冲序列重复周期内,脉冲1的数量为所述权重值。
所述输出单元包含脉冲计数器21,所述脉冲计数器以输入的复位值为基础值,对当前活动周期中生成的所述脉冲序列中的脉冲1进行计数并累积在所述基础值上,生成当前活动周期的输出值。
优选地,所述输出单元包含脉冲计数器21、移位寄存器22。所述脉冲计数器,用于在上一活动周期的输出值的衰减值的基础上,对当前活动周期中生成的所述脉冲序列中的脉冲1进行计数并累积,生成当前活动周期的输出值。所述移位寄存器,用于对当前活动周期的输出值二进制移位,使输出值相对减小1/2,生成当前活动周期的输出值的衰减值,用作下一活动周期脉冲计数器的基础值。
进一步地,所述输入单元或者输出单元根据神经元状态(sout,j(tn)为0时处于不应期,不接受脉冲)使能,也就是说,由状态信号启动所述计算单元。
当所述输入单元根据状态信号使能时,根据状态信号确定是否生成脉冲序列,当神经元状态值为1时,启动所述脉冲发生器。最佳地,所述状态信号和所述阈值判定模块的输出信号通过与门电路连接到输入单元的脉冲发生器。
当所述输出单元根据状态信号使能时,根据状态信号确定是否接收脉冲序列、进行累加运算,当神经元状态值为1时,使能所述脉冲计数器。
因此,不同于完整的脉冲神经元结构,双神经元结构的两个神经元分别具备脉冲神经元的部分功能。其中,输入神经元包含激活阈值判定模块,基于概率编码的脉冲发生模块,根据激活情况对二进制权重数据进行脉冲编码并发放;输出神经元包含脉冲接收模块,将脉冲序列恢复成二进制的膜电位数据并存储。
图2为全连接形式脉冲式神经网络架构的阵列重构方式。
本申请实施例提出一种概率计算脉冲式神经网络架构,包含本申请任意一项实施例所述计算单元(图中用“I-W-O”符号表示一个计算单元,其中I表示输入单元、O表示输出单元,W表示权重存储器),所述计算单元组成计算阵列,所述计算阵列中的计算单元呈矩阵排列。
所述计算阵列包含至少1个输出神经元,每1个输出神经元对应numin个计算单元,所述numin个计算单元构成一个子阵列;
需要说明的是,所述输出神经元,指的是输出膜电位值的输出单元。当一个子阵列包含多个计算单元时,最后一个(第numin个)计算单元中的输出单元,输出当前活动周期的膜电位值;其他计算单元(第i个,其中i<numin)中的输出单元,输出值为部分和,该输出值作为下一个(第i+1个)计算单元中的输出单元的基础值,也就是说,用作下一个(第i+1个)计算单元中脉冲计数器的复位值。
所述子阵列,用于计算每一个活动周期的numin个权重值和numin个输入值pin,i(tn)条件下的膜电位输出。为此,每个计算单元分别输入一个输入值pin,i(tn)和对应的权重值,其中:
第i个计算单元的输出单元生成的当前活动周期的输出值,作为第i+1个计算单元的输出单元的基础值,i=1~numin-1;
第numin个计算单元的输出单元生成当前活动周期的输出值,对当前活动周期的输出值二进制移位,使输出值相对减小1/2,用作下一活动周期第1个计算单元的输出单元的基础值。
每1个子阵列的numin个计算单元位于一个矩阵中或分别在多个矩阵中组合排列。图2作为进行全连接形式网络计算时,阵列重构方法的一个示例,其中包含的可重构的二维脉动阵列结构,由计算单元在二维平面上按矩阵排布而成。箭头表示数据的传输方向。
例如,计算阵列共有3行,对于一个输入神经元数为5,输出神经元数为1的全连接网络,超过了可支持的权重尺寸上限,故需分解为两阶段计算:
第一阶段运算,输入数为3,完成计算:ustep1=uout,1(tn-1)/2+pin,1(tn)W1+pin,2(tn)W2+pin,3(tn)W3,ustep1为膜电位运算的中间结果,即部分和;
第二阶段运算,输入数为2,完成计算:uout,1(tn)=ustep1+pin,4(tn)W4+pin,5(tn)W5两次计算后可得完整计算结果uout,1(tn)=uout,1(tn-1)/2+pin,1(tn)W1+...+pin,5(tn)W5,上述两阶段运算并非并行执行,而是先执行第一阶段运算,再复用阵列执行第二阶段的运算。如图2所示,每一阶段计算占用的阵列均为3行3列,其中第一阶段运算有6个计算单元未启用,第二阶段运算有7个未启用(如图2中灰色标识的计算单元,为未启用的计算单元)。
在排布权重时,部分计算单元的运行并不会对输出产生影响,这些未启用的计算单元可以并行执行同一层其他输出神经元的运算,实现更高的运算效率,由于同一层网络不同输出神经元的计算具有高度的相似性,所需的阵列尺寸以及数据排布规律均相同,仅数据不同,控制阵列中数据排布的难度较低,易于实现。
图3为多输出神经元并行计算时脉冲式神经网络架构的阵列重构方式。
当numout>1时,所述计算阵列包括并行排列的numout个所述子阵列。计算阵列由双神经元结构的计算单元在二维平面上按矩阵形式排布而成,计算单元具有如下的数据连接通路,其中Wi保持在阵列中,pin,i(tn)向下广播,uout,j(tn)向右下传递:保存在阵列中的数据为wij,用于产生脉冲序列Wij[m],对于不同的输入神经元i、输出神经元j,均有一个对应的权重数据wij;
pin,i(tn)对于所有uout,j(tn)的计算均有贡献,但是每个子阵列对应的sout,j(tn)不同,在送入阵列前,pin,i(tn)须先与sout,j(tn)作与逻辑运算后再送入,其中i=1~numin(输入神经元个数),j=1~numout(输出神经元个数),广播指sout,j(tn)pin,i(tn)这一数据将在计算过程中,遵循特定的规律移动至不同的计算单元中参与运算,在本设计中,对于一个子阵列而言,sout,j(tn)pi(tn)从上方送入,向正下方移动,在移动的过程依次参与了一个纵列的计算单元的运算;
而在阵列上方的pin,i(tn)移位寄存器组,是为了给不同子阵列送入数据而设置的,一个子阵列包含的是阵列中斜着传输uout,j(tn)的三个计算单元,右侧的子阵列的运算也需要使用这numin个pin,i数据,但是在空间上,送入的位置向右移动一个计算单元;数值上需要与对应的sout,j(tn)作与逻辑运算,所以用移位寄存器组的方式整体右移后,经过与门,才送入阵列中,供右一个子阵列的运算,以此类推直至最后一个子阵列。
uout,j(tn)的累加运算不是在一个时钟周期内完成的,其数值在计算阵列中移动时,每进入一个新的计算单元就会进行一次累加运算,累加值为该计算单元的权重数据wij与移动到该计算单元的输入脉冲数据pin,i的乘积,运算用概率计算的方式实现,传递指的是uout,j(tn)数据在一个计算单元中进行累加运算后,将累加后的结果依据特定的规律移动入另一个计算单元进行下一个累加运算,直至数据移动出阵列得到完整的累加结果。在本设计中为从上方送入阵列,向右向下移动,并从下方移出阵列,得到累加后的膜电位数值。
数据连接通路为包括:输入权重数据通路:权重(W)根据网络结构信息,由网络重构单元排布入阵列,并在计算过程中保持于阵列内,例如,第j个子阵列的第i个计算单元,输入的权重值wij数据保持在阵列内,通过权重存储器接入各个计算单元;
输入激活值通路:输入(sout,j(tn)pin,i(tn))表示各输入神经元当前活动周期的脉冲发放情况以及输出神经元是否处于不应期,在每1个活动周期,numin个激活值sout,j(tn)pin,i(tn)广播至阵列的第一行,之前各活动周期送入的各numin个激活值也同时向下移动一行。在矩阵结构中,通过移位寄存器的方式向下广播,此处“广播”指数据在阵列中移位时数值不变,例如,当sout,1(tn)pin,i(tn)移动到第一行时,sout,1(tn)pin,1(tn)位于第一个子阵列的第一个计算单元,进行计算得到uout,1(tn)第一步累加结果,其余sout,1(tn)pin,i(tn)位于第i个子阵列的第一个计算单元,计算无效;下一步pin,i(tn)先右移,然后和sout,2(tn)进行与逻辑运算,再移动到阵列第一行,同时之前的sout,2(tn)pin,i(tn)整体向下移动到第二行,此时sout,1(tn)pin,2(tn)位于第一个子阵列的第二个计算单元,进行uout,1(tn)第二次累加运算,sout,2(tn)pin,1(tn)位于第2个子阵列的第1个计算单元,进行uout,2(tn)第一次累加运算;以此类推,每广播一行前,pin,i(tn)都需先右移,然后和下一个sout,j(tn)进行与逻辑运算。此处,“向下”是指沿矩阵的列方向依次移位传送。
输出值通路:子阵列中各个计算单元的输出不断累积,最终输出值(u)表示各输出神经元接受了脉冲后的膜电位,各个计算单元的输出值向斜下方传递。此处“传递”指数据将在阵列中随着运算产生变化;此处的“斜下方”,是指X行Y列计算单元构成的阵列中,坐标为(x,y)的计算单元的输出值接入坐标为(x+1,y-1)的计算单元作为基础值。在每1个子阵列中,经numin步串行移位计算得到当前活动周期的膜电位值,优选地,第i步计算时,使用状态值1激活第i个计算单元,也就是说,当第i个计算单元位于(x,y),则第i+1个计算单元位于(x+1,y-1)。
上述的输入与输出数据通路,每移动1次需完成对应的概率计算脉冲接收运算。(此处“移动1次”即1步计算,并非经过一个活动周期。一个活动周期内一个输出神经元需接收完所有输入神经元当前活动周期内发送的脉冲;每移动1次仅完成一个输入神经元发送脉冲的接收),输入数据、输出数据的移动是同时进行的。进一步优选地,在多个子阵列中,第j+1个子阵列的第i个计算单元和第j个子阵列的第i+1个计算单元同步计算。此时,第j+1个子阵列的第i个计算单元和第j个子阵列的第i+1个计算单元位于相同的列。
如图3所示,是多个输出神经元并行运算时,阵列重构方法的一个示例:在3行的计算阵列中,输出神经元数为2;每1个输出神经元对应的输入神经元数为3,则权重有两组,每组包含3个数据。
具体过程如下:
依据图3方式进行权重数据排布,并且将P1至P3存入输入寄存器;第1步计算时从输入寄存器取P1至P3送入第一行计算单元(对应存入第一行的1至3列),第1列神经元状态值为1(其中,仅有Pi输入的计算单元启动其输入单元,如图3中第1行第1列的计算单元被启用);同时将寄存器内的数据整体右移一个地址;第2次仍然将寄存器的数据送入第一行计算单元(对应存入第一行的2至4列),并且右移位,同时将原先第一行计算单元内的P数据送入第二行,第2列神经元状态值为1(其中,仅有Pi输入的计算单元启动其输入单元,如图3中第1行第2列和第2行第2列的2个计算单元被启用)……总共经过3次的移位与计算后,最终在阵列底部,得到u1(tn)=u1(tn-1)/2+P1w1,1+P2w2,1+P3w3,1,再经过一次移位与计算后得到u2(tn)=u2(tn-1)/2+P1w1,2+P2w2,2+P3w3,2,若有更多的神经元并行,同样遵循上述规律,从第三次移位(等于阵列的行数)与计算起,每次移位与计算后可得到一个ui(tn)。
上述方式计算具有如下有益的特点:每个权重数据仅从存储单元读取一次;当阵列列数可以支持所有输出神经元的并行运算时(列数+2≥输出神经元数),输入数据Pi也只需读取一次,沿计算单元阵列的列方向移位输入;若阵列的行数可支持每个输出神经元的完整运算不需要分解(行数≥输入神经元数),则在每一个矩阵结构中,膜电位数据u(tn-1)也仅需要读取一次。实现了高度的数据重用功能,有效降低了存储器的访问压力。
需要说明的是,由于本实施例的子阵列计算单元数量是在一个矩阵结构可支持的尺寸范围内,不需要分阶段运算。当出现超出上限情况时,需要分阶段计算,例如图2,第一阶段计算得到的部分和ustep1先写入存储单元,覆盖上一周期的膜电位u1(tn),并在第二阶段计算时重新读入阵列,即读2次,写1次。当出现超出上限情况时,如果让电路自行判断如何分组则会增加额外的资源占用和功耗开销,可在网络结构设置中预先指定分组方式,既不影响电路运行效率,也避免了额外的分组电路。
此外,如图2、3所示,阵列左下角的三个计算单元是必定不参与计算的,因此实际电路中可以去除这三个计算单元,减少硬件开销。
图4为输入数据的脉冲编码电路。
在脉冲神经网络对输入图像进行识别前,需要将输入图像编码为脉冲序列。脉冲神经网络能够接收的信息为脉冲序列,因此对于图像数据,并不能直接进行运算,在送入网络前需进行脉冲编码工作。如图4所示,是图像数据的脉冲编码电路,结合了频率与时间两个属性,像素点的数值越大,则脉冲序列越早开始出现“1”脉冲,并且在开始出现“1”脉冲后,出现“1”的频率也会越高。以灰度图像为例,灰度值的取值范围为0~255,编码后每个数据被转换为长度为256的脉冲序列,过程如下:
比较器比较所处活动周期n和图像数据值data的大小关系,保证前256-data个脉冲为0,实现基于时间的编码;使用8bit LFSR产生0~255范围的随机数序列,与data比较,得到“1”脉冲概率为P=data/256的脉冲序列,实现基于频率的编码。
需要注意的是,这里的图像数据data即为第一层网络的输入神经元膜电位,目的是为了将二进制的图像数据转换为脉冲神经网络可识别的脉冲序列,并尽可能带有更多的信息。除第一层以外,其余层网络的Pi则采用图1所示方式,通过比较uin与阈值电压uth比较大小得到。
图4中P为概率。pin,i(tn)产生方法有两个,其一是uin(tn)和uth比较产生;其二是图4所示方式,仅用于网络第一层的pi(tn)产生。
图4产生的脉冲序列即为脉冲神经网络第一层运算使用的pin,i(tn),n的取值为1~256,由于脉冲神经网络第一层输入为图像的像素数据data,这一数据可视为第一层的输入膜电位uin,i(tn),如果直接用data与阈值比较得到pi(tn),丢失的信息较多,导致网络的识别能力不佳,为了保留更多的图片信息,使用了图4的方法产生带有更多信息的pin,i(tn)脉冲序列,也可以理解为对图像数据data进行了编码,编码为了脉冲序列,序列的频率与开始产生“1”的时间均与data有关。
图5为概率计算脉冲式神经网络计算架构的另一实施例。
为了减少硬件开销,计算单元的部分功能可以共用,包括
通过公用的激活阈值判定模块,输入膜电位uin,i(tn)与阈值比较得到激活脉冲pin,i(tn),并且受神经元状态Sj影响,当处于不应期时,pi(tn)被屏蔽(与门),因此阵列输入为sout,j(tn)pin,i(tn);
共用的膜电位衰减的移位器,实现uout(tn-1)/2运算
在送入阵列前,上述计算以时分复用的方式串行完成,箭头上标注的为输入输出数据及其输入输出顺序。
权重存储器(MemW),用于存储各个计算单元的权重值;
输入脉冲缓存器(MemPin,i),用于将串行输入的pin,i(tn),并行送入计算阵列;
输出膜电位缓存器(Mem uout,j),用于将并行输出的膜电位数据,串行输出阵列。
基于公式3~4及图1~5所示的实施例,本申请还提出一种概率计算脉冲式神经网络处理方法,用本申请任意一项实施例所述计算单元的组合构成计算阵列,生成膜电位值二进制数据。
优选地,通过阵列控制系统导入排布数据,所述排布数据包含所述计算单元的排列关系,在所述计算单元构成的矩阵结构中,建立全连接形式的脉冲神经网络。
通过阵列控制系统导入排布合适的数据,可以令一个大尺寸阵列实现多个小尺寸阵列并行运行的效果,实现多个输出通道并行运算的功能,可支持全连接或卷积连接形式的神经网络结构。
为了实现对不同神经网络结构通用加速的目的,针对网络结构参数,采用了一套专门设计的网络结构记录方式。该记录方式可将一个大阵列结构灵活分组为多个并行小阵列,每层网络的结构信息可用下列参数表示,可支持全连接形式的脉冲神经网络:输入尺寸、输出尺寸、输出分批处理次数、每次处理输出数、输入图像起始地址、输出图像起始地址、权重起始地址。通过上述参数设置,在处理超过阵列可处理尺寸上限的网络层时,可分解为多个小尺寸的阵列可支持的计算,并依次完成,实现对任意大小网络层的运算支持。
本申请的矩阵结构,由计算单元在二维平面上矩形排布而成,具有权重保持、输入正向下广播、部分和斜向下传递的数据流特点(传递指数据将在阵列中随着运算产生变化,广播指数据仅在阵列中移动,不会出现变化);同时还可通过阵列控制系统导入排布合适的数据,转变为多个小尺寸阵列并行运行的结构,以适配不同结构的网络层,并实现多个输出通道并行运算的功能。
在实现多层网络计算时,还可采用时分复用的方法,仅利用一块阵列顺序地完成所有网络层的计算,达到进一步减少硬件资源开销的目的。网络中各层各个神经元的膜电位均有单独的存储地址,并且在结构信息中配置各层的膜电位存储地址,当计算至对应层时,数据路由将根据网络配置的存储地址从对应位置得到所需的上一活动周期膜电位数据,进行膜电位衰减操作,并进行下一活动周期的计算。若计算至最后一层时,输出层没有神经元被激活,即未得到输出结果,则需要开始下一个活动周期的运算,直至得到输出结果。
本申请公开了一种概率计算脉冲神网络(SNN)设计方法及装置,解决了现有神经网络加速器片上存储资源占用多,访问频率高,通用性不足的问题。一种概率计算脉冲神经网络硬件架构的设计方法,包含以下内容:1、基于概率计算实现,低硬件成本的脉冲神经元阵列(由双神经元结构的计算单元组成可重构的二维脉动阵列结构,用于SNN运算);2、网络重构单元(用于配置阵列结构,基于脉动阵列技术,实现对不同脉冲神经网络模型的通用加速功能);3、数据路由(用于存取神经网络运算所需的各项数据)。本发明基于脉动阵列技术,解决了存储资源访问频率高的问题,基于概率计算技术,进一步降低了硬件成本,实现了通用的脉冲神经网络加速功能。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种概率计算脉冲式神经网络计算单元,其特征在于,包括输入单元、输出单元;
所述输入单元,在每一个活动周期,根据当前活动周期的输入值和权重值,通过概率计算产生脉冲序列;
所述输出单元,用于对所述脉冲序列中的脉冲1进行计数,并累加一个基础值,生成当前活动周期的输出值。
2.如权利要求1所述计算单元,其特征在于,所述输入单元包含激活阈值判定模块、脉冲发生模块、随机数生成器;
所述激活阈值判定模块,用于比较输入值和门限值,当所述输入值大于门限值时,产生激活脉冲,使能所述脉冲发生模块;
所述随机数生成器,用于在设定的位数范围内生成随机数;
所述脉冲发生器,用于比较每一个随机数与权重值的大小,生成所述脉冲序列,其中的脉冲1呈随机分布,在每一个脉冲序列重复周期内,脉冲1的数量为所述权重值。
3.如权利要求1所述计算单元,其特征在于,所述输出单元包含脉冲计数器、移位寄存器;
当神经元状态值为1时,使能所述脉冲计数器;
所述脉冲计数器,用于在上一活动周期的输出值的衰减值的基础上,对当前活动周期中生成的所述脉冲序列中的脉冲1进行计数并累积,生成当前活动周期的输出值;
所述移位寄存器,用于对当前活动周期的输出值二进制移位,使输出值相对减小1/2,生成当前活动周期的输出值的衰减值,用作下一活动周期脉冲计数器的基础值。
4.一种概率计算脉冲式神经网络架构,包含权利要求1~3任意一项所述计算单元组成计算阵列,所述计算阵列中的计算单元呈矩阵排列,其特征在于,
所述计算阵列包含至少1个输出神经元,每1个输出神经元对应numin个计算单元,所述numin个计算单元构成一个子阵列;
所述子阵列,用于在每一个活动周期计算numin个权重值和numin个输入值条件下的膜电位输出;
每个计算单元分别输入一个输入值和对应的权重值;
第i个计算单元的输出单元生成的当前活动周期的输出值,作为第i+1个计算单元的输出单元的基础值,其中,i=1~numin-1;
第numin个计算单元的输出单元生成的当前活动周期的输出值,对当前活动周期的输出值二进制移位,使所述输出值相对减小1/2,用作下一活动周期第1个计算单元的输出单元的基础值。
5.如权利要求4所述概率计算脉冲式神经网络架构,其特征在于,包含多个所述子阵列;
第j个子阵列的第i个计算单元,权重值wij数据保持在阵列内;
在每1个活动周期,第i个激活脉冲广播至每一个子阵列的第i个计算单元。
6.如权利要求4所述概率计算脉冲式神经网络架构,其特征在于,
每1个子阵列的numin个计算单元位于一个矩阵中或分别在多个矩阵中组合排列。
7.如权利要求4~6任意一项所述概率计算脉冲式神经网络架构,其特征在于,
在每1个子阵列中,经numin步串行移位计算得到当前活动周期的膜电位值,第i步计算时,使用状态值1启动第i个计算单元。
8.如权利要求7所述概率计算脉冲式神经网络架构,其特征在于,
在多个子阵列中,第j+1个子阵列的第i个计算单元和第j个子阵列的第i+1个计算单元同步计算。
9.一种概率计算脉冲式神经网络处理方法,其特征在于,使用权利要求1~3任意一项所述计算单元的组合构成计算阵列,生成膜电位值二进制数据。
10.如权利要求9所述概率计算脉冲式神经网络处理方法,其特征在于,通过阵列控制系统导入排布数据,所述排布数据包含所述计算单元的排列关系,在所述计算单元构成的矩阵结构中,建立全连接形式的脉冲神经网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110327829.2A CN112949834B (zh) | 2021-03-26 | 2021-03-26 | 一种概率计算脉冲式神经网络计算单元和架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110327829.2A CN112949834B (zh) | 2021-03-26 | 2021-03-26 | 一种概率计算脉冲式神经网络计算单元和架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112949834A true CN112949834A (zh) | 2021-06-11 |
CN112949834B CN112949834B (zh) | 2022-09-06 |
Family
ID=76226881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110327829.2A Active CN112949834B (zh) | 2021-03-26 | 2021-03-26 | 一种概率计算脉冲式神经网络计算单元和架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112949834B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114819121A (zh) * | 2022-03-28 | 2022-07-29 | 中国科学院自动化研究所 | 基于脉冲神经网络的信号处理装置及信号处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993018474A1 (en) * | 1992-03-11 | 1993-09-16 | University College London | Devices for use in neural processing |
WO2018133570A1 (zh) * | 2017-01-20 | 2018-07-26 | 清华大学 | 自适应阈值神经元信息处理方法、自适应泄漏值神经元信息处理方法、系统、计算机设备及可读存储介质 |
CN108846408A (zh) * | 2018-04-25 | 2018-11-20 | 中国人民解放军军事科学院军事医学研究院 | 基于脉冲神经网络的图像分类方法及装置 |
US20200218981A1 (en) * | 2015-05-21 | 2020-07-09 | Google Llc | Neural Network Processor |
-
2021
- 2021-03-26 CN CN202110327829.2A patent/CN112949834B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993018474A1 (en) * | 1992-03-11 | 1993-09-16 | University College London | Devices for use in neural processing |
US20200218981A1 (en) * | 2015-05-21 | 2020-07-09 | Google Llc | Neural Network Processor |
WO2018133570A1 (zh) * | 2017-01-20 | 2018-07-26 | 清华大学 | 自适应阈值神经元信息处理方法、自适应泄漏值神经元信息处理方法、系统、计算机设备及可读存储介质 |
CN108846408A (zh) * | 2018-04-25 | 2018-11-20 | 中国人民解放军军事科学院军事医学研究院 | 基于脉冲神经网络的图像分类方法及装置 |
Non-Patent Citations (2)
Title |
---|
ZHANGKONG XIAN 等: "Weight Isolation-based Binarized Neural Networks Accelerator", 《2020 IEEE INTERNATIONAL SYMPOSIUM ON CIRCUITS AND SYSTEMS》 * |
庄祖江 等: "基于STDP规则的脉冲神经网络研究", 《计算机工程》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114819121A (zh) * | 2022-03-28 | 2022-07-29 | 中国科学院自动化研究所 | 基于脉冲神经网络的信号处理装置及信号处理方法 |
CN114819121B (zh) * | 2022-03-28 | 2022-09-27 | 中国科学院自动化研究所 | 基于脉冲神经网络的信号处理装置及信号处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112949834B (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5214743A (en) | Information processing apparatus | |
US5131072A (en) | Neurocomputer with analog signal bus | |
US5564115A (en) | Neural network architecture with connection pointers | |
CN102541814B (zh) | 用于数据通信处理器的矩阵计算装置和方法 | |
EP0504932A2 (en) | A parallel data processing system | |
CN111738433B (zh) | 一种可重配置的卷积硬件加速器 | |
CN110163338B (zh) | 具有运算阵列的芯片运算方法、装置、终端及芯片 | |
EP0385873A2 (en) | A learning system in a neuron computer | |
CN107766935B (zh) | 多层人造神经网络 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN112949834B (zh) | 一种概率计算脉冲式神经网络计算单元和架构 | |
CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
Cho et al. | An on-chip learning neuromorphic autoencoder with current-mode transposable memory read and virtual lookup table | |
Li et al. | Input-aware dynamic timestep spiking neural networks for efficient in-memory computing | |
CN108921291B (zh) | 面向脑电信号处理的低功耗计算架构 | |
EP0636991A2 (en) | Information processing apparatus for implementing neural network | |
CN113762480B (zh) | 一种基于一维卷积神经网络的时间序列处理加速器 | |
CN111626399A (zh) | 卷积神经网络计算装置、数据计算方法 | |
CN114780151A (zh) | 一种基于归并排序算法实现可变规模数量的数据排序系统 | |
CN112949833B (zh) | 一种概率计算神经元计算单元和构造方法 | |
JP3256553B2 (ja) | 信号処理装置の学習方法 | |
JPH05197707A (ja) | 情報処理システム | |
CN113703837A (zh) | 数据处理装置以及人工智能处理器 | |
JP2765903B2 (ja) | 情報処理装置 | |
SU1517020A1 (ru) | Устройство дл упор дочени @ чисел |
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 |