CN213934855U - 一种基于随机计算的神经网络随机数发生器共享电路 - Google Patents
一种基于随机计算的神经网络随机数发生器共享电路 Download PDFInfo
- Publication number
- CN213934855U CN213934855U CN202120065217.6U CN202120065217U CN213934855U CN 213934855 U CN213934855 U CN 213934855U CN 202120065217 U CN202120065217 U CN 202120065217U CN 213934855 U CN213934855 U CN 213934855U
- Authority
- CN
- China
- Prior art keywords
- random number
- random
- bit stream
- module
- circuit
- 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
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本实用新型属于新型计算技术领域,公开了一种基于随机计算的神经网络随机数发生器共享电路,应用于人工神经网络电路;包括随机数模块,比特流生成模块,随机计算模块和数据存储模块。所述随机计算模块包括多个神经计算单元,所述神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,所述带缩放加法电路基于并行累加器,能够降低运算电路对输入比特流非相关性的要求,进而使随机数发生器可以在整个人工神经网络电路中共享,一个完整神经网络仅需使用一个随机数发生器。相比于现有的基于随机计算的神经网络电路,本实用新型极大的节省硬件资源,降低功耗,同时提高运算精度。
Description
技术领域
本实用新型属于新型计算技术领域,尤其涉及一种基于随机计算(StochasticComputing,SC)的神经网络随机数发生器(Random number generator,RNG)共享电路,应用于人工神经网络(Artificial Neural Network,ANN)电路。
背景技术
随着大数据产业和人工智能的发展,数字信号处理系统越来越复杂,其中需要用到大量的浮点数乘加、卷积等特定运算,常规处理器芯片在进行这些运算时效率较低,执行能耗大,无法支撑所需的大规模并行计算需求。
随机计算电路是近年来的研究热点,其使用随机比特流(bit stream)来表示数值参与运算。随机计算中比特流常用单极型(Unipolar)和双极型(Bipolar)表示法。设比特流序列长度为m,其中“1”有n1个,则其概率P=n1/m,当使用单极型表示法时,其表示的数值为P;当使用双极型表示法时,其表示的数值为2P–1。在此数据表征系统中,数据间的运算可以简化为简单的逻辑门运算,使用与门可以完成单极型乘法运算,使用同或门可以完成双极型乘法运算。对于加法运算,传统随机计算加法器一般由双路数据选择器组成,通过在选择端施加概率为0.5的高度随机序列,将两路输入比特流数据A、B重新组合,得到值为(A+B)/2的输出比特流。值得注意的是,在所述的随机计算乘法和加法运算电路中,输入比特流间需具有非相关性,以保证运算结果的准确性。
人工神经网络是新兴的数据处理技术,它从信息处理角度对人脑神经网络进行抽象,建立数学模型。人工神经网络的核心部分是人工神经元,每个神经元接收来自其它网络层神经元的输出,将它们乘以权重参数后求和,并加上偏移量参数,最后将总和应用激活函数后再传递给下一个或多个神经元。多层互联的神经元结构组成完整的人工神经网络,可以应用于图像分类、语音识别等领域。
将随机计算与人工神经网络结合,可以把网络中涉及的大量乘法和加法运算分别用单个逻辑门和数据选择器实现,极大的节省硬件资源占用,降低电路功耗。
然而,现有技术中,基于随机计算的神经网络电路有两个缺陷:
第一,虽然随机计算运算电路成本低,但其转换电路成本高,将传统二进制数据转化为随机比特流需要使用随机数发生器,网络运算结果需要使用计数器将其转换成二进制输出。神经网络计算节点数目庞大,导致其转换电路面积约占整个运算电路的80%,降低了随机计算运算部分的成本优势;
第二,现有技术使用数据选择器完成网络中的加法运算,对选通序列随机性要求以及输入比特流间的非相关性要求较高,同时大量计算节点数据相加需将多个数据选择器级联使用,其求和结果误差不断累积,使整个神经网络的识别率较大幅度降低。
因此,需要使用新的电路结构进一步降低转换电路的资源占用率,并且减小随机计算加法运算的误差,提高网络的识别率。
实用新型内容
针对现有技术存在的问题,本实用新型提供了一种基于随机计算的神经网络随机数发生器共享电路,在优化电路架构的同时减少资源占用。
本实用新型是这样实现的,一种基于随机计算的神经网络随机数发生器共享电路,包括随机数模块,比特流生成模块,随机计算模块和数据存储模块;随机数模块用于产生固定位宽的随机数;比特流生成模块用于将传统二进制数据转化为比特流数据;随机计算模块用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;数据存储模块用于存储网络权重参数以及偏移量参数。
其中,所述随机数模块有两路随机数输出,所述比特流生成模块包括两组比特流生成器阵列;所述随机数模块的两路输出分别与两组比特流生成器阵列相连,电路的输入数据连接至第一组比特流生成器阵列,所述数据存储模块存储的权重参数连接至第二组比特流生成器阵列;两组比特流生成器阵列的输出以及所述数据存储模块存储的偏移量参数共同连接至所述随机计算模块,其运算结果作为电路的输出。
进一步的,所述随机计算模块包括多个神经计算单元,单个神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,在概率域对输入比特流数据进行先乘后求和,再缩放,最后激活的运算;在使用单极型表示法时,所述乘法电路利用与门实现,在使用双极型表示法时,所述乘法电路利用同或门实现;所述带缩放加法电路基于并行累加器,包含多个比特流输入端口,可在同一时钟周期将多路输入数据相加,当累加过程结束后根据运算结果选择合适缩放倍数将运算结果放大或缩小,使其值的范围满足下一级比特流生成模块的输入要求;所述激活函数电路包括但不限于使用线性整流函数(Rectified LinearUnit,ReLU),用于激活人工神经网络中的神经元,向网络添加非线性特性。
进一步的,所述随机数模块包含两路随机数输出,在整个网络中共用,对于多层网络,比特流生成模块、随机计算模块、数据存储模块相应倍增,但随机数模块仍只用一个,其两路输出连接至各层的比特流生成模块。
进一步的,所述随机数模块由一个n位宽随机数发生器和复用电路组成,所述随机数发生器可以是伪随机数发生器(Pseudo random number generator,PRNG),比如线性反馈移位寄存器(Linear feedback shift register,LFSR),也可以是真随机数发生器(Truerandom number generator,TRNG),比如基于电路噪声的随机数发生器、基于电子自旋的多态随机数发生器等;若所述随机数发生器为伪随机数发生器,则使用移位寄存器将伪随机数发生器产生的随机数延迟数个时钟周期后作为随机数模块的一路随机数输出,将未经延时处理的伪随机数发生器产生的随机数作为随机数模块的另一路随机数输出;若所述随机数发生器为真随机数发生器,则将真随机数发生器产生的随机数按奇数时钟周期和偶数时钟周期分为两组,分别作为随机数模块的两路随机数输出。
进一步的,所述比特流生成模块包含两组比特流生成器阵列,每个比特流生成器由一个n位宽数字比较器组成,所述n位宽数字比较器包括两个n位宽输入数据端和一个1位宽数据输出端;所述n位宽输入数据端其一为固定端,连接n位宽传统二进制数据,其二为随机端,连接n位宽随机数据;所述1位宽数据输出端输出两n位宽输入数据的比较结果,若固定端数据大于或等于随机端数据,则输出“1”,否则输出“0”;重复比较m次,m>0,则可将固定端的n位传统二进制数据转化为m位长度的比特流数据。
进一步的,所述比特流生成模块包含两组比特流生成器阵列,第一组将输入数据转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个输入数据,随机端共同连接至所述随机数模块的第一路随机数;第二组将权重参数转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个权重参数,随机端共同连接至所述随机数模块的第二路随机数。
与现有技术方案相比,本实用新型具有以下有益效果:
本实用新型引入带缩放加法电路,利用并行累加器可以同时准确无误的统计多个乘法输出的比特流数据,并且可以对求和结果高效的缩放,在提高运算精度的同时,降低随机计算对于输入比特流非相关性的要求,从而使随机数发生器可以在整个人工神经网络电路中共享,网络运算只需两路非相关随机数。
进一步的,针对随机数发生器的两种不同类型,即伪随机数发生器和真随机数发成器,本实用新型提出将单个随机数发生器的输出处理为两路随机数输出的电路结构,并且其输出的两路随机数之间具有较高非相关性,使整个网络所使用的随机数发生器数量缩至一个,极大的节省了比特流转换电路面积,节省硬件资源,降低电路功耗,并且提高了传统的基于随机计算的神经网络识别精度。
附图说明
图1是基于随机计算的神经网络随机数发生器共享电路框架图
图2是基于伪随机数发生器的随机数模块结构示意图。
图3是基于真随机数发成器的随机数模块结构示意图。
图4是基于随机计算的神经网络全连接层结构示意图。
图5是带缩放加法器结构示意图。
图6是基于随机计算的卷积运算结构示意图。
具体实施方式
为了使本实用新型的目的、技术方案及优点更加清楚明白,以下结合实施例,对本实用新型进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本实用新型,并不用于限定本实用新型。
针对现有技术存在的问题,本实用新型提出了一种基于随机计算的神经网络随机数发生器共享电路,使用带缩放加法器电路代替传统的基于数据选择器的加法电路,提高运算精度,降低非相关性要求,使随机数发生器可以高度共享,并且提出单个随机数发生器产生两路非相关随机数输出的方法,将整个神经网络电路中随机数发生器数量降至一个。
下面结合附图和实施实例对本实用新型作详细的描述。
实施实例:
本实用新型提出的基于随机计算的神经网络随机数发生器共享电路框架如图1所示。图中输入数据In、输出数据Out、权重参数W和偏移量参数b皆为矩阵数据,非单一变量。整个电路包括随机数模块,比特流生成模块,随机计算模块和数据存储模块。随机数模块基于随机数产生器电路,通过复用电路每个时钟周期可以产生两个固定位宽的随机数,且具有良好的非相关性;比特流生成模块基于数字比较器电路,用于将传统二进制数据转化为比特流数据;随机计算模块包含基于随机计算理论的运算单元,用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;数据存储模块用于存储网络权重参数W以及偏移量参数b。
如图所示,比特流生成模块包含两组比特流生成器阵列,随机数模块的两路输出分别与两组比特流生成器阵列相连,电路的输入数据In连接至第一组比特流生成器阵列,权重参数W连接至第二组比特流生成器阵列。两组比特流生成器阵列的输出以及偏移量参数b共同连接至所述随机计算模块,其运算结果作为电路的输出Out。
随机数模块由随机数发生器和复用电路组成,针对不同种类的随机数发生器本实用新型提出了不同的复用方法。附图2为基于伪随机数发生器的随机数模块结构示意图,利用线性反馈移位寄存器,伪随机数发生器可以每时钟周期产生一个n位宽随机数。对其输出添加移位寄存器单元,相当于将其输出随机数延迟若干个时钟周期后再输出,延迟周期取决于移位寄存器数量。设延迟时间为t个周期,伪随机数发生器功能函数为y=f(x),在x1时刻,该随机数模块输出随机数1为f(x1-t),随机数2为f(x1),而经延时后的输出序列与原序列间具有较好的非相关性,因此在t时刻之后,每个时钟周期该随机数模块都能输出两个不同的随机数。
附图3为基于真随机数发成器的随机数模块结构示意图,由于真随机数发生器产生的随机数之间没有任何关系,利用时分复用法可以将一个真随机数发成器的输出随机数序列转化为两路不相关的随机数序列。更具体的,在奇数时钟周期真随机数发成器由图中上支路输出,在偶数时钟周期真随机数发成器由图中下支路输出。当真随机数发成器时钟频率为神经网络运算时钟的两倍时,每个神经网络运行时钟周期该随机数模块都能输出两个不同的随机数。综上所述,仅使用一个随机数发生器就可以让随机数模块产生两路随机数输出,并且输出序列间具有较好的非相关性。
神经网络中常用的计算层有全连接层和卷积层。附图4为基于随机计算的神经网络全连接层结构示意图,该全连接层共有k个神经元,In1~Inj为该层的输入数据;Out1~Outk为该层的输出数据;W11~Wjk为权重参数,分别对应j个输入与k个神经元之间的权重关系;b1~bk为偏移量参数,与k个神经元对应。该全连接层完成的运算可表示为:
图中右侧虚线框中为随机计算模块,其包含多个神经计算单元,完成乘法、求和、移位缩放以及ReLU激活函数运算。In和W分别对应两组比特流生成模块,第一组为输入数据比特流生成模块,其正端(固定端)分别连接网络层中各个输入数据,负端(随机端)共同连接至随机数模块第一路随机数输出;第二组为权重参数比特流生成模块,其正端分别连接网络层中各个权重参数,负端共同连接至随机数模块第二路随机数输出。
输入数据In和权重参数W转化为比特流之后进入随机计算模块,首先是根据上述公式做乘法,由于随机数模块的两路输出随机数序列不相关,满足各个乘法器输入端In和W的比特流不相关的特性。乘法之后是求和电路,值得注意的是,由于前一级运算各个乘法器使用相同的随机数模块,则任意两个乘法结果比特流间具有相关性,若加法器使用数据选择器电路实现,将会产生较大的运算误差,因此需要使用对输入比特流相关性要求不高的加法器电路,使得本实用新型所提出的随机数发生器共享方案成为可能。
附图5为带缩放加法器示意图,其基于累加器,输入比特流中“0”和“1”的位置可以任意,对比特流相关性没有要求,同时能够精确求和,将此种加法器应用于基于随机计算的神经网络后,各个随机计算乘法器可使用同一个随机数模块,进而使整个网络仅使用一个随机数发生器。图中所示加法器基于带符号位的单极型表示法,S为数据的符号位,M为数据的绝对值。若输入比特流符号位为“1”则由三态门将其导向负向累加器,若为“0”则由三态门将其导向正向累加器。待比特流全部累加完毕后,比较器输出求和结果的符号位,两累加器相减得结果的绝对值。缩放功能由数据移位操作实现,将求和结果调整为n位宽的数据,便于下一层网络的比特流生成器进行比较转换。
附图6为基于随机计算的卷积运算结构示意图。本实用新型提出的基于随机计算的神经网络随机数发生器共享电路具有通用性,除全连接层外,卷积层也可使用。图中展示的卷积运算输入特征图In为5*5,滤波器W为3*3,由卷积运算原理可知输出特征图Out大小为3*3。运算中仍将比特流生成器分为两组,第一组转换输入数据,使用随机数模块的第一路输出;第二组转换滤波器数据,使用随机数模块的第二路输出。当卷积运算所用滤波器数目不止1个时,重复除随机数模块之外的运算电路,再分别将随机数模块的两路输出连接至其它各卷积电路的第一组比特流生成器和第二组比特流生成器,达到全网络仅共用一个随机数发生器电路的目的。该随机数发生器共享方式满足随机计算乘法器阵列的输入比特流非相关性要求,同时使用上述带缩放加法器消去乘法器输出比特流间非相关性要求,硬件资源消耗得以降低。
实施例中按照本实用新型提出的随机数发生器共享电路方案,使用Verilog硬件描述语言搭建了基于随机计算的手写数字识别全连接人工神经网络。网络节点参数为784-50-10,使用MNIST手写数字数据集进行训练。本实施例及对比电路的仿真及DC综合结果如表1所示。
表1基于14nm CMOS工艺的仿真及综合结果对比
由表可知,本实施例中基于随机计算的神经网络在使用随机数发生器共享电路后逻辑门的数量仅为传统32位浮点计算的12%,功耗仅为22%,而MNIST手写数字数据集图片识别准确率与浮点计算相比,仅相差0.3%。在与现有的非共享随机计算算法电路对比时,其识别准确率提高1%,逻辑资源占用降低72%,功耗降低86%。因此,无论是与传统浮点运算网络对比,还是与现有的基于随机计算的神经网络对比,本实用新型提出的电路结构都具有更低的资源占用率以及更低的功耗。
以上所述仅为本实用新型的较佳实施例而已,并不用以限制本实用新型,凡在本实用新型的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本实用新型的保护范围之内。
Claims (6)
1.一种基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述基于随机计算的神经网络随机数发生器共享电路包括:
随机数模块,用于产生固定位宽的随机数;
比特流生成模块,用于将传统二进制数据转化为比特流数据;
随机计算模块,用于完成人工神经网络中的矩阵乘法,矩阵卷积和激活函数运算;
数据存储模块,用于存储网络权重参数以及偏移量参数。
2.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述随机数模块有两路随机数输出,所述比特流生成模块包括两组比特流生成器阵列;所述随机数模块的两路输出分别与两组比特流生成器阵列相连,电路的输入数据连接至第一组比特流生成器阵列,所述数据存储模块存储的权重参数连接至第二组比特流生成器阵列;两组比特流生成器阵列的输出以及所述数据存储模块存储的偏移量参数共同连接至所述随机计算模块,其运算结果作为电路的输出。
3.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述随机计算模块包括多个神经计算单元,单个神经计算单元包括乘法电路,带缩放加法电路以及激活函数电路,在概率域对输入比特流数据进行先乘后求和,再缩放,最后激活的运算;
在使用单极型表示法时,所述乘法电路利用与门实现,在使用双极型表示法时,所述乘法电路利用同或门实现;
所述带缩放加法电路基于并行累加器,包含多个比特流输入端口,可在同一时钟周期将多路输入数据相加,当累加过程结束后根据运算结果选择合适缩放倍数将运算结果放大或缩小,使其值的范围满足下一级比特流生成模块的输入要求;
所述激活函数电路包括但不限于使用线性整流函数,用于激活人工神经网络中的神经元,向网络添加非线性特性。
4.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述随机数模块包含两路随机数输出,在整个网络中共用,对于多层网络,比特流生成模块、随机计算模块、数据存储模块相应倍增,但随机数模块仍只用一个,其两路输出连接至各层的比特流生成模块;
所述随机数模块由一个n位宽随机数发生器和复用电路组成,所述随机数发生器可以是伪随机数发生器,也可以是真随机数发生器;若所述随机数发生器为伪随机数发生器,则使用移位寄存器将伪随机数发生器产生的随机数延迟数个时钟周期后作为随机数模块的一路随机数输出,将未经延时处理的伪随机数发生器产生的随机数作为随机数模块的另一路随机数输出;若所述随机数发生器为真随机数发生器,则将真随机数发生器产生的随机数按奇数时钟周期和偶数时钟周期分为两组,分别作为随机数模块的两路随机数输出。
5.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述比特流生成模块包含两组比特流生成器阵列,每个比特流生成器由一个n位宽数字比较器组成,所述n位宽数字比较器包括两个n位宽输入数据端和一个1位宽数据输出端;
所述n位宽输入数据端包括:
固定端,连接n位宽传统二进制数据;
随机端,连接n位宽随机数据。
6.如权利要求1所述的基于随机计算的神经网络随机数发生器共享电路,其特征在于,所述比特流生成模块包含两组比特流生成器阵列,第一组将输入数据转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个输入数据,随机端共同连接至所述随机数模块的第一路随机数;第二组将权重参数转化为比特流序列,各比特流生成器的固定端分别连接网络层中各个权重参数,随机端共同连接至所述随机数模块的第二路随机数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202120065217.6U CN213934855U (zh) | 2021-01-11 | 2021-01-11 | 一种基于随机计算的神经网络随机数发生器共享电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202120065217.6U CN213934855U (zh) | 2021-01-11 | 2021-01-11 | 一种基于随机计算的神经网络随机数发生器共享电路 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN213934855U true CN213934855U (zh) | 2021-08-10 |
Family
ID=77158368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202120065217.6U Active CN213934855U (zh) | 2021-01-11 | 2021-01-11 | 一种基于随机计算的神经网络随机数发生器共享电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN213934855U (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116151340A (zh) * | 2022-12-26 | 2023-05-23 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
-
2021
- 2021-01-11 CN CN202120065217.6U patent/CN213934855U/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116151340A (zh) * | 2022-12-26 | 2023-05-23 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
CN116151340B (zh) * | 2022-12-26 | 2023-09-01 | 辉羲智能科技(上海)有限公司 | 并行随机计算神经网络系统及其硬件压缩方法、系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112698811A (zh) | 神经网络随机数发生器共享电路、共享方法、处理器芯片 | |
CN109902804B (zh) | 一种池化运算方法及装置 | |
CA2125244A1 (en) | Artificial neuron and method of using same | |
CN110163354A (zh) | 一种计算装置及方法 | |
CN111652360B (zh) | 一种基于脉动阵列的卷积运算装置 | |
Zhang et al. | When sorting network meets parallel bitstreams: A fault-tolerant parallel ternary neural network accelerator based on stochastic computing | |
CN113805842B (zh) | 一种基于超前进位加法器实现的存算一体装置 | |
Frasser et al. | Fully parallel stochastic computing hardware implementation of convolutional neural networks for edge computing applications | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
CN105913118A (zh) | 一种基于概率计算的人工神经网络硬件实现装置 | |
CN213934855U (zh) | 一种基于随机计算的神经网络随机数发生器共享电路 | |
Zhang et al. | Design and implementation of LSTM accelerator based on FPGA | |
Xiao et al. | FPGA-based scalable and highly concurrent convolutional neural network acceleration | |
Meher | Unified systolic-like architecture for DCT and DST using distributed arithmetic | |
Su et al. | Increasing network size and training throughput of FPGA restricted Boltzmann machines using dropout | |
Yang et al. | A parallel processing cnn accelerator on embedded devices based on optimized mobilenet | |
CN113128141B (zh) | 一种基于无误差随机计算的中值滤波系统 | |
CN110705196B (zh) | 一种基于随机计算的无误差加法器 | |
Niknia et al. | Nanoscale design of multi-layer perceptrons using floating-point arithmetic units | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
JP6888073B2 (ja) | チップ装置および関連製品 | |
US11475288B2 (en) | Sorting networks using unary processing | |
Solovyev et al. | Real-Time Recognition of Handwritten Digits in FPGA Based on Neural Network with Fixed Point Calculations | |
CN112949830B (zh) | 智能推断网络系统以及加法单元和池化单元电路系统 | |
CN110555519A (zh) | 一种基于符号随机计算的低复杂度卷积神经网络 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |