买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】在神经网络中生成随机性_图核有限公司_201811206421.4 

申请/专利权人:图核有限公司

申请日:2018-10-16

公开(公告)日:2024-03-22

公开(公告)号:CN109697048B

主分类号:G06F7/58

分类号:G06F7/58;G06N3/02

优先权:["20171020 GB 1717309.7"]

专利状态码:有效-授权

法律状态:2024.03.22#授权;2019.05.28#实质审查的生效;2019.04.30#公开

摘要:本发明涉及一种执行单元,该执行单元被配置为执行计算机程序指令以基于预定概率分布生成随机数。执行单元包括:硬件伪随机数生成器,其被配置为在执行指令时生成至少随机化位串;和加法电路,其被配置为接收从随机化位串中选择的预定位长的多个位序列并对它们求和以产生结果。

主权项:1.一种处理器中的执行单元,所述执行单元被配置为执行从处理器的指令存储器取出的计算机程序指令以基于预定概率分布来生成随机数,所述执行单元包括:硬件伪随机数生成器,所述硬件伪随机数生成器被配置为在执行单元执行所述计算机程序指令时生成至少随机化位串;和加法电路,所述加法电路被配置为接收从所述随机化位串中选择的预定位长的多个位序列,并对它们求和以产生结果;归一化电路,所述归一化电路被配置为接收所述结果并生成归一化结果以使所述预定概率分布居中在所选择的已知值处并且将所述预定概率分布的方差调整为所选择的已知值。

全文数据:在神经网络中生成随机性技术领域本公开涉及在神经网络中生成随机性。背景技术神经网络使用于机器学习和人工智能的领域中。神经网络包括通过链路互连并彼此交互的节点集的布置。计算中的神经网络的原理基于关于电刺激如何在人脑中传达信息的信息。出于这个原因,通常节点被称为神经元neurons。它们也可以被称为顶点vertices。链路有时被称为边缘edges。网络可以获取输入数据,并且某些节点对数据执行操作。这些操作的结果将被传递给其他节点。每个节点的输出被称为其激活或节点值。每个链路都与权重相关联。权重定义神经网络的节点之间的连接性。已知许多不同的技术,神经网络能够通过这些技术学习,这通过改变权重的值而发生。图1示出了神经网络中一种节点布置的极简化版本。这种类型的布置通常在学习或训练中使用,并且包括节点的输入层、节点的隐含层和节点的输出层。在现实中,在每一层中将有许多节点,并且现在每部分可以有多于一层。输入层Ni的每个节点能够在其输出处产生激活或节点值,该激活或节点值是通过对提供给该节点的数据执行函数而生成的。来自输入层的节点值的矢量由隐含层中的每个节点的输入处的相应权重的矢量来缩放,每个权重定义该特定节点与其在隐含层中的已连接节点的连接性。在实践中,网络可具有数百万个节点并且可以多维地连接,因此矢量往往是张量。在节点Nh的输入处施加的权重被标记为w0……w2。输入层中的每个节点至少最初连接到隐含层中的每个节点。隐含层中的每个节点可以对提供给它们的数据执行激活函数,并且可以类似地生成输出矢量,该输出矢量被提供给输出层0中的每个节点N0。每个节点例如通过执行节点的输入激活与其针对相应传入链路的唯一权重的点积而对其传入数据进行加权。然后,它对已加权数据执行激活函数。激活函数可以例如是S函数sigmoid。参见图1A。网络通过以下方式学习:对输入层处的数据输入进行操作,向来自每个节点的激活分配权重,并且作用于到隐含层中的每个节点的数据输入通过对其进行加权并执行激活函数。因此,隐含层中的节点对已加权数据进行操作并将输出提供给输出层中的节点。输出层的节点还可以分配权重。每个权重的特征在于相应的误差值。而且,每个节点可以与误差条件相关联。每个节点的误差条件给出了节点的权重中的误差是否低于某一可接受程度或水平的度量。存在不同的学习方法,但是在每种情况下,存在图1中通过网络从左到右的前向传播、总误差的计算,以及图1中误差通过网络从右到左的后向传播。在下一个周期中,每个节点都会考虑反向传播的误差并产生修订的权重集。以这种方式,可以训练网络以执行其期望的操作。神经网络可能出现的一个问题是“过拟合”overfitting。拥有数百万或数十亿参数权重的大型网络很容易过拟合。过拟合使网络记住已被提供给它的每个训练样本向输入节点提供数据的训练样本,而不是被训练以提取相关特征,使得神经网在它已被训练之后适合应用于从样本中更普遍地提取特征。已经开发了多种技术来通过使神经网络正则化以避免过拟合记忆,从而解决该问题。当使用神经网处理大型数据集时,存在涉及使用可以改善其性能的随机数的技术。一种技术是所谓的蒙特卡罗采样MonteCarlosampling,其是用于依赖于重复随机采样以获得数值结果的广泛类型的计算算法的术语。蒙特卡罗采样的基本思想是:随机性可能能够解决原则上可能是确定性的问题。当使用蒙特卡罗采样时,随机数的规定概率分布是期望的。蒙特卡罗采样可以使用于例如生成模型中。最近已经设计了用于通过将随机噪声添加到权重或激活来改善神经网的性能的技术。在这方面作为一种可能性已经探索了高斯噪声Gaussiannoise。使用已知计算机技术实现神经网络具有各种挑战。例如使用CPU或GPU实现随机化技术并非易事,并且可能会影响利用高效实施可以实现的全部益处。发明内容本发明人已经开发了一种用于处理器的执行单元,其能够响应于程序指令的执行而有效地提供来自预定的、几乎高斯分布的随机值。根据本发明的一个方面,提供了一种执行单元,其被配置为执行计算机程序指令以基于预定概率分布来生成随机数,该执行单元包括:硬件伪随机数生成器,其被配置为在执行指令时生成至少一个随机化位串;加法电路,其被配置为接收从随机化位串中选择的预定位长的多个位序列,并对它们求和以产生结果。执行单元可以包括归一化电路,其被配置为接收结果并生成归一化结果以使预定概率分布居中在所选择的已知值处和或将分布的方差调整为所选择的已知值。硬件伪随机数生成器可以被配置为在执行指令时生成两个或更多随机化位串,并且加法电路可以被配置为从两个或更多相应的求和中产生两个或更多结果。在一个实施例中,归一化电路包括查找表,该查找表被配置为接收每个结果并提供归一化结果。但是,可以利用任何实现。归一化电路可以执行以下函数:从结果中减去预定数量——该预定数量被计算为由加法电路产生的结果的总计可能数量范围的一半、转换为浮点格式以及除以除数。除数可以是具有预定位长的均匀分布的随机变量的任何可能值的数量。在一个实施例中,位序列的数量是十二。考虑到所需的分布以及针对某些应用的硬件优化,已经发现数量12是对位序列数量的良好折衷。分布可以是欧文-霍尔分布。每个序列可以具有任何合适数量的位。在所描述的实施例中为五,但这仅作为非限制性示例。归一化电路可以被配置为从结果中减去186其中结果的数量范围是372。执行单元可以包括求和电路,该求和电路对来自多个计算机程序指令的结果求和,以更精确地拟合预定概率分布。它还可以包括用于将来自伪随机数生成器的输出与来自计算机程序指令的结果组合的电路。还提供了对应的方法和计算机程序。一个方面提供了一种执行计算机程序指令以基于预定概率分布生成随机数的方法,该方法包括:在执行指令时生成至少一个随机化位串;从随机化位串中选择预定位长的多个位序列并对它们求和以产生结果。另一方面提供了一种包括计算机程序的计算机程序产品,所述计算机程序包括记录在非传输介质上的计算机程序指令,所述计算机程序指令在被执行时执行上述方法。为了更好地理解本发明并示出可以实现本发明,现在将仅通过示例的方式对以下附图进行参考。附图说明图1是神经网的高度简化示意图;图1A是神经元的高度简化示意图;图2是根据本发明实施例的处理单元的示意图;图3在对数和正常图上示出了正态高斯分布和欧文-霍尔Irwin-Hall分布之间的差异。图4是用于实现屏蔽指令的执行单元的框图;图5示出了通过对多个宏指令grandinstruction的结果求和的性能改善;图6图示了从f16值到f32值的转换;图7和图8是比较分布的图表。具体实施方式图2示出了执行单元的示意性框图,该执行单元被布置来执行用于从预定概率分布生成随机值的单个指令。该指令在本文中被称为宏指令。执行单元2形成处理单元中的流水线4的一部分。处理单元包括指令获取单元6,其从指令存储10获取指令。处理单元还包括存储访问阶段8,其负责访问数据存储12以用于从存储加载数据或将数据存储到存储中。提供一组寄存器14以用于保持由流水线4在任何情况下执行的指令的源和目的地操作数。可以容易地理解,流水线4可以包含许多不同类型的执行单元以用于执行各种不同的指令,例如用于执行数学运算。可以与本发明一起使用的一种类型的处理单元是使用桶形线程barrel-threaded时隙的处理单元,在其中监督者线程可以将不同的工作者线程分配给不同的时隙以便于其执行。本文所描述的宏指令可以与任何合适的处理单元架构一起使用。执行单元2包括硬件伪随机数生成器22,其在被指令请求时生成伪随机数。每个数字采用64位随机化序列的形式。执行单元2还包括宏指令执行模块23和用于保持指令执行结果的输出缓冲器27。指令存在两个版本。第一个f16v2grand$aDST将来自随机值的预定概率分布的两个随机16位值返回到寄存器或存储位置DST中。第二个版本的指令f32v2grand$aDST将来自相同分布的两个32位值返回到寄存器或存储位置DST中。由宏指令模块23实现的技术提供了接近欧文-霍尔分布的分布。如本文所解释的,欧文-霍尔分布非常类似于高斯分布。欧文霍尔分布是针对随机变量的概率分布,其被定义为独立随机变量的数量的总和,每个独立随机变量均具有均匀分布。尽管它具有高斯特征,但是它有时被称为均匀总和分布。图3图示出了与量化的正态分布相比较的量化的欧文-霍尔分布,其中被进行求和的独立随机变量的数量是12。这与高斯分布曲线密切相关,其被示出的方差为一,均值为零。图3中的上图是对数刻度,下图是普通刻度。概率密度函数PDF在高斯的20%高达3σ内。累积分布函数CDF概率与高斯的不同小于+-0.0024约1%。就所有意图和目的而言,它是用于上述目的的随机数的分布,用于以非常令人满意的方式改善神经网的性能。在所描述的实施例中,当执行单元执行宏指令时,PRNG22产生两个64位宽的输出res0、res1。应该理解,利用本发明的原理仅产生单个输出将是可能的,但是更有效是产生两个输出以便响应于单个指令而生成两个随机数。中间64位宽的PRNG输出res0、res1通过对12个组成5位字段求和而被压缩为9位,如下所指示。图4示意性地图示出了由两个加法器40a、40a实现的下面表示的加法函数,每个加法器从相应的随机化位串中接收输入序列。每个加法器具有12个输入,并且每个输入为5位宽。每个输入串的前4位被丢弃。分配rsum0[8∶0]=res0[4∶0]+res0[9∶5]+res0[14∶10]+res0[19∶15]+res0[24∶20]+res0[29∶25]+res0[34∶30]+res0[39∶35]+res0[44∶40]+res0[49∶45]+res0[54∶50]+res0[59∶55]+分配rsum1[8∶0]=res1[4∶0]+res1[9∶5]+res1[14∶10]+res1[19∶15]+res1[24∶20]+res1[29∶25]+res1[34∶30]+res1[39∶35]+res1[44∶40]+res1[49∶45]+res1[54∶50]+res1[59∶55]+得到的无符号9位总和RESULT1,RESULT2在0到372包括在内的范围中。可以理解,通过从随机化位串中选择不同数量的位序列,并且还可以通过改变每个位序列内的位数,可以产生不同的数量范围。对于任何特定数量的序列序列长度,加法器将在已定义的数量范围内产生一组结果。为方便起见,示出了两个十二输入加法器,但是应当理解,可以利用其他加法电路配置。对12个均匀分布的随机变量求和的选择是基于以下的优化:1在与正常高斯分布的接近度和硬件成本之间进行合理的权衡;和2这样做恰好产生标准偏差为1的分布,而不是笨拙分数,这简化了将整数缩放到标准偏差为1的浮点值所需的硬件。然后在归一化电路42中处理求和结果——RESULT1,RESULT2,以便提供归一化曲线。如果没有这种归一化,结果的数量范围将从0延伸到372,并且不会围绕0为中心。归一化电路执行减法函数,其从结果中减去186以重新确定中心至0上的范围。这个数字186是372的一半。应当理解,如果存在不同的数量范围,则将存在不同的减法值数量范围的一半。结果应该是浮点格式以对应于所需的精度,如归一化电路42中的转换为f16的块中所示。除法阶段将浮点数除以32以产生具有与标准正态分布非常相似属性的分布特别是近似于尽可能接近1的标准偏差。除以32在二进制算术中很容易实现,因为它是2的幂,它需要固定的移位或指数调整。32是单个5位均匀分布的随机变量的可能值的数量。注意,如果所选序列的n个数不是12,则需要缩放32n12。在所描述的实施例中,归一化电路由查找表42来实现。然而,应当理解,它可以以任何合适的形式来实现。在一种布置中,可以将查找表合成为逻辑门。如上所提及,指令存在两个版本。上面描述的版本是f16v2grand。在另选版本f32v2grand中,输出是两个f32值而不是两个f16值。不需要另一个查找表或类似的,因为根据由转换逻辑44执行的以下操纵就可从相应的f16结果V1、V2中导出所需的f32输出值的位。分配f32result0[31∶0]={fpresult0[15∶14],4′{fpresult0[13]},fpresult0[12∶3],16′b0};分配f32result1[31∶0]={fpresult1[15∶14],4′{fpresult1[13]},fpresult1[12∶3],16′b0};分配aDst[63∶0]-{f32result1,f32result0};也就是说,通过取VIf16结果的位14和15,将位13复制4次,取3到12位并用16个零来完成,从而导出了32位序列。如图6中所示。回到图3,图上的每个点表示通过对12个5位值求和而生成的384个可能值之一。概率分布函数保持高斯高达大约3.5σ,而超过3.5σ,分布的尾部比正态分布中的情况更快地衰落。最极端的输出是+-5.8125σ,但概率极低。最接近的已知分布是连续的非量化12阶欧文-霍尔分布,但是应该理解,下面的特定分布基于其生成方式是唯一的。通过对来自多个宏指令的伪高斯标量求和,更接近地近似于正态分布是可能的。如已经提及的,欧文-霍尔概率分布函数的尾部比理想正态分布的尾部更快地减小幅度。这可以通过对来自多个宏指令的多个标量输出求和来解决。图5中的曲线显示了为了实现概率分布函数或累积分布函数需要对多少标量求和,其中尾部在1%、10%或2x理想正态分布高达最大数量的标准偏差σ内。例如,来自f16v2宏指令的每个标量输出是12个均匀分布的伪随机值的总和,并且尾部在理想正态分布的10%高达2.8σ内。为了对12个宏指令标量输出进行求和144阶欧文-霍尔分布;宏指令应被执行6次,并将所得的全部12个标量值求和。最终总和除以sqrt12以保持标准偏差为1。宏指令的输出可以与其他均匀分布的随机变量的总和结合使用,以生成2σ或3σ截断的正态分布。生成2σ分别地3σ的算法可以操作以生成两个分别地三个‘均匀’uniform,每个均匀是来自均匀分布的随机变量的范围为-1到+1的随机数来自PRNG,并对它们求和。然后,对于2σ分布,使用前面描述的宏指令生成两个正态分布值N1、N2。对于3σ分布,生成单个正态分布值N1。注意,N1、N2对应于前面讨论的输出V1、V2。对于2σ分布,其中|N1|或|N2|大于2时,均匀的总和用作输出。对于3σ分布,其中|N1|如果大于3,则改为使用均匀的总和。两个均匀随机变量的总和具有由图6中的曲线a表示的PDF概率分布函数:仅仅非常粗略的高斯,但明确地限于+-2σ。由曲线b图示出了算法正在试图匹配的截断高斯分布。如果两个高斯变量都超出范围超过2σ,那么改为使用两个均匀的总和。因为两个高斯都不可能超出范围;两个均匀的总和很少使用约1500倍,并且因此它对平均分布的影响非常小。用于生成3σ截断高斯值的算法略有不同。这次只需要一个高斯变量,因为单个值超过3σ范围的可能性已经很小约为1500。三个均匀随机变量的总和具有由图7中的曲线a表示的PDF。它大致是高斯的并且明确地限于+-3σ。由曲线b图示出了算法正在试图匹配的截断高斯分布。如果高斯变量超出范围超过3σ,那么改为使用三个均匀的总和。得到的分布的误差非常小,因为3个均匀的总和已经是3σ截断高斯分布的相当好的近似,并且它仅使用~1500次。本文所使用的术语“随机”可以意指“真随机”或“伪随机”。宏指令可以使用伪随机或真随机位序列生成器。伪随机数由“伪随机数生成器”或“PRNG”生成。PRNG可以用软件或硬件来实现。真随机数由“真随机数生成器”或“TRNG”生成。TRNG的示例是“过渡效应环形振荡器”。PRNG优于TRNG的优点是确定性在相同的起始条件下运行相同的程序两次总是具有相同的结果。TRNG优于PRNG的优点是:输出是真正随机的虽然PRNG的输出满足任意选择的数学属性的有限集合,PRNG的状态和输出总是从当前状态可预测的,因此不是真正随机的。虽然已经描述了特定实施例,但是一旦给出了本公开审理,所公开的技术的其他应用和变化对于本领域技术人员而言将变得显而易见。本公开的范围不由所描述的实施例来限制,而是仅由所附权利要求来限制。

权利要求:1.一种执行单元,所述执行单元被配置为执行计算机程序指令以基于预定概率分布来生成随机数,所述执行单元包括:硬件伪随机数生成器,所述硬件伪随机数生成器被配置为在执行所述指令时生成至少随机化位串;和加法电路,所述加法电路被配置为接收从所述随机化位串中选择的预定位长的多个位序列,并对它们求和以产生结果。2.根据权利要求1所述的执行单元,其中,所述硬件伪随机数生成器被配置为在执行所述指令时生成两个或更多随机化位串,并且其中所述加法电路被配置为从两个或更多相应求和中产生两个或更多结果。3.根据权利要求1或权利要求2所述的执行单元,其中,所述归一化电路包括查找表,所述查找表被配置为接收每个结果并提供归一化结果。4.根据权利要求1或权利要求2所述的执行单元,其中,所述归一化电路从所述结果中减去预定数量,所述预定数量被计算为由所述加法电路产生的结果的总计可能数量范围的一半。5.根据权利要求1或权利要求2所述的执行单元,其中,所述位序列的数量是12。6.根据权利要求5所述的执行单元,其中,所述归一化电路被配置为从所述结果中减去186。7.根据权利要求1或权利要求2所述的执行单元,其中,所述归一化电路被配置为除以一个数,所述数是具有所述预定位长的均匀分布的随机变量的可能值的数量。8.根据权利要求1或权利要求2所述的执行单元,其中,每个序列的位长是5。9.根据权利要求7所述的执行单元,其中,所述归一化电路被配置为除以32。10.根据权利要求1或权利要求2所述的执行单元,其中,所述预定概率分布近似于缩放的、偏移的、量化的欧文-霍尔分布。11.根据权利要求1或权利要求2所述的执行单元,包括求和电路,所述求和电路对来自多个计算机程序指令的结果求和,以更精确地拟合所述预定概率分布。12.根据权利要求1或权利要求2所述的执行单元,被配置为将来自随机化位串的一个或多个位序列与一个或多个归一化结果组合。13.根据权利要求1或权利要求2所述的执行单元,包括归一化电路,所述归一化电路被配置为接收所述结果并生成归一化结果以使所述预定概率分布居中在所选择的已知值处并且将所述分布的方差调整为所选择的已知值。14.一种执行计算机程序指令以基于预定概率分布生成随机数的方法,所述方法包括:在执行所述指令时生成至少一个随机化位串;从所述随机化位串中选择预定位长的多个位序列并对它们求和以产生结果。15.根据权利要求14所述的方法,其中,响应于所述指令,生成两个或更多随机化位串,并且从两个或更多相应求和中产生两个或更多结果。16.根据权利要求14或权利要求15所述的方法,其中,使用查找表来执行归一化步骤。17.根据权利要求14或权利要求15所述的方法,其中,所述位序列的数量是12。18.根据权利要求14或权利要求15所述的方法,其中,每个序列的位长是5。19.根据权利要求14或权利要求15所述的方法,包括对所述结果进行归一化以生成归一化结果,以使所述预定概率分布居中在所选择的已知值处,并将所述分布的方差调整为所选择的已知值。20.一种包括计算机程序的计算机程序产品,所述计算机程序包括记录在非传输介质上的计算机程序指令,所述计算机程序指令在被执行时执行基于预定概率分布来生成随机数的方法,所述方法包括:在执行所述指令时生成至少一个随机化位串;从所述随机化位串中选择预定位长的多个位序列并对它们求和以产生结果。

百度查询: 图核有限公司 在神经网络中生成随机性

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。