改进的贝叶斯神经网络及其操作方法和装置与流程

文档序号:29789796发布日期:2022-04-23 17:16阅读:236来源:国知局
改进的贝叶斯神经网络及其操作方法和装置与流程

1.本公开概括而言涉及机器学习,更具体而言,涉及改进的贝叶斯神经网络及其操作方法和装置。


背景技术:

2.近年来,机器学习和/或人工智能已越来越流行。例如,可利用神经网络来实现机器学习和/或人工智能。神经网络是受人脑的神经网络启发的计算系统。神经网络可接收输入并且生成输出。神经网络可基于反馈而被训练(例如,可以学习),从而使得输出对应于期望的结果。一旦经过训练,神经网络就可基于任何输入来做出决策以生成输出。神经网络被用于人工智能和/或机器学习的新兴领域。贝叶斯神经网络是一种特定类型的神经网络,它包括生成可变权重而不是固定权重的神经元。该可变权重落在由在贝叶斯神经网络的训练期间确定的平均值和方差定义的概率分布内。


技术实现要素:

3.根据本公开的实施例,提供了一种装置,包括:振荡器,用于生成第一时钟信号;电阻性元件,用于调整第二时钟信号的上升沿的斜率;电压采样器,用于基于以下各项中的至少一者来生成采样:(a)当所述第二时钟信号的第二电压满足阈值时所述第一时钟信号的第一电压,或者(b)当所述第一时钟信号的第四电压满足所述阈值时所述第二时钟信号的第三电压;以及电荷泵,用于基于所述采样来调整权重,所述权重用于调整模型中的数据。
4.根据本公开的实施例,提供了一种神经网络中的神经元,该神经元包括:c-2c梯子,用于生成与在训练期间确定的平均权重值相对应的输出电压;电压采样器,用于在第二时钟信号的第二电压满足阈值时对第一时钟信号的第一电压进行采样;以及电荷泵,用于基于所述采样来调整所述输出电压。
5.根据本公开的实施例,提供了一种神经网络,包括:存储器,用于存储平均值和方差值;参考时钟,用于输出参考时钟信号;以及与所述存储器和所述参考时钟相耦合的神经元,该神经元用于:利用c-2c梯子生成与所述平均值相对应的输出电压;并且利用振荡器、电荷泵和所述参考时钟信号来调整与所述方差值相对应的所述输出电压。
6.根据本公开的实施例,提供了一种方法,包括:生成第一时钟信号;调整第二时钟信号的上升沿的斜率;基于以下各项中的至少一者来生成采样:(1)当所述第二时钟信号的第二电压满足阈值时所述第一时钟信号的第一电压,或者(b)当所述第一时钟信号的第四电压满足所述阈值时所述第二时钟信号的第三电压;以及基于所述采样来调整权重,所述权重用于调整模型中的数据。
附图说明
7.图1是示例贝叶斯神经网络的示意性图示。
8.图2是图1的贝叶斯神经网络的示例神经元的框图。
9.图3是图2的神经元的示例c-2c梯子、示例熵源以及电荷泵的硬件实现方式。
10.图4是图2的示例c-2c梯子和图1的示例存储器的一部分的硬件实现方式。
11.图5a和5b图示出了表示可被执行来实现图1、图2和/或图3的示例神经元的示例机器可读指令的流程图。
12.图6是与关于图3的示例熵源的信号相对应的时序图。
13.图7是被构造来执行图5a-5b的指令以实现图1-图3的示例神经元的示例处理平台的框图。
14.附图不是按比例绘制的。一般而言,相同的标号将在各幅图和伴随的书面描述的各处用于指代相同或相似的部件。提及连接(例如,附接、耦合、连接、以及接合)应被宽泛解释,并且可包括元素的集合之间的中间构件和元素之间的相对运动,除非另有指示。因此,提及连接不一定推断出两个元素是直接连接并且彼此之间有固定关系的。虽然附图中示出了具有清晰线条和边界的层和区域,但这些线条和/或边界中的一些或者全部可能是理想化的。在现实中,边界和/或线条可能是难以察觉的、混合的和/或不规则的。
15.本文中在识别可被分开提及的多个元素或组件时使用描述语“第一”、“第二”、“第三”等等。除非另有指明或者基于其使用上下文另有理解,否则这种描述语并不打算灌输优先级、物理顺序或者列表中的排列或者时间上的排序的任何含义,而只是被用作用于分开提及多个元素或组件的标签,以便容易理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可被用于提及某一元素,而同一元素在权利要求中可被用不同的描述语来提及,例如“第二”或“第三”。在这种情况中,应当理解,这种描述语只是为了容易引用多个元素或组件而使用的。
具体实施方式
16.使用机器学习模型(例如神经网络)能够执行任务(例如,对数据进行分类)。机器学习可包括训练阶段来使用地面真实数据(例如,用特定分类来正确标记的数据)训练模型。训练传统的神经网络能调整神经网络的神经元的权重。在经过训练后,数据被输入到经训练的神经网络中,并且神经元的权重被应用于输入数据,以便能够处理输入数据以执行某个功能(例如,对数据进行分类)。
17.过度拟合和对恶意攻击的敏感性对传统神经网络的性能和/或可靠性有负面影响。当模型被训练得误差太小时,就会出现过度拟合。如果训练的结果是误差太小,则模型就很难对新情形进行归纳。恶意攻击可利用过度拟合和/或关于底层神经网络模型的知识的组合。对恶意攻击的敏感性是经训练的模型对其输出过于自信的结果。如果模型过于自信,则对输入的微小扰动可能会导致输出的不希望和/或不可预测的变化。上述两个问题都是由于传统的神经网络未能在有限的训练数据集中包括不确定性信息而造成的。
18.贝叶斯神经网络(bayesian neural network,bnn)引入了不确定性信息,以克服过度拟合和对恶意攻击的敏感性的问题。bnn没有使用固定的权重,而是引入了与条件概率分布相关联的权重(例如,输出权重可以是由均值(本文也称为mu或者u)和标准偏差和/或方差定义的概率分布内的值)。因为bnn引入了一定量的随机性,所以可以用更小的训练数据来训练bnn,而不牺牲准确性。然而,具有如下神经元的传统bnn要求大量的功率和/或硬件来实现:所述神经元生成与概率分布相对应的权重。因此,这种传统bnn是昂贵的、复杂的
和能量效率低的。本文公开的示例对应于一种bnn,与传统bnn相比,其可以用更少的硬件来实现(从而不那么昂贵),并且能量效率更高。
19.本文公开的示例利用了与模拟域中的随机抖动电荷相对应的高斯分布。本文公开的示例使用以下各项来生成bnn:(1)将平均权重转换为电荷水平的c-2c梯子;(2)提供可编程随机性的基于抖动振荡器采样的熵源;以及(3)由熵源控制的电荷泵,用于抖动(例如,调整)由c-2c梯子生成的电荷以给出最终的、可编程的、高斯分布的输出权重。本文公开的示例的结果是神经网络的基于模拟的、存储器内计算(compute-in-memory,cim)bnn实现。
20.一般而言,实现ml/ai系统涉及两个阶段:学习/训练阶段以及推断阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联来操作。一般而言,模型包括指导输入数据如何被变换为输出数据的内部参数,例如通过模型内的一系列节点和连接来将输入数据变换为输出数据。此外,超参数可被用作训练过程的一部分,以控制如何执行学习(例如,学习率、机器学习模型中要使用的层的数目,等等)。超参数被定义为在发起训练过程之前确定的训练参数。
21.基于ml/ai模型的类型和/或预期输出,可执行不同类型的训练。就本文使用的而言,标记(labelling)是指机器学习模型的预期输出(例如,分类、预期输出值,等等)。或者,无监督训练(例如,用于深度学习、机器学习的子集等等中)涉及从输入推断模式,以选择ml/ai模型的参数(例如,没有预期(例如,标记的)输出的益处)。
22.在本文公开的示例中,执行训练,直到预测了阈值数目的动作为止。在本文公开的示例中,训练是在本地(例如在设备中)或者远程(例如,在云中和/或在服务器处)执行的。可利用控制如何执行学习的超参数(例如,学习率、机器学习模型中要使用的层的数目,等等)来执行训练。在一些示例中,可执行重训练。可响应于实现新的程序或者新用户使用设备而执行这种重训练。训练是利用训练数据来执行的。当可以使用监督训练时,训练数据被标记。在一些示例中,训练数据被预处理。
23.一旦训练完成,模型就被部署来用作可执行结构,该结构基于具有模型中定义的节点和连接的网络来处理输入并且提供输出。该模型在本地被存储在存储器中(例如,缓存并且在训练之后被移入存储器中),或者可被存储在云中。然后,该模型可被计算机核心执行。
24.一旦经过训练,部署的模型就可在推断阶段中被操作来处理数据。在推断阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。这个推断阶段可被认为是ai“思考”以基于它从训练中学习到的东西来生成输出(例如,通过执行模型来将学习到的模式和/或关联应用于实况数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前会经历预处理。此外,在一些示例中,输出数据在其由ai模型生成之后可经历后处理,以将输出变换为有用的结果(例如,数据的显示、要由机器执行的指令,等等)。
25.在一些示例中,部署的模型的输出可被捕捉并被作为反馈提供。通过分析反馈,可确定部署的模型的准确度。如果反馈表明部署的模型的准确度低于阈值或其他标准,则可利用反馈和更新的训练数据集、超参数等等来触发更新的模型的训练,以生成更新的部署的模型。
26.图1是示例神经网络(nn)训练器102训练示例bnn 104的示意性图示。示例bnn 104包括示例参考时钟106、示例存储器108、以及示例神经元110。虽然图1中图示的神经元110
包括六个神经元,但可以有采取任何类型的配置的任何数目的神经元。虽然是结合bnn 104来描述图1的示例的,但可在包括权重的任何基于ai的系统或模型中利用本文公开的示例。
27.图1的示例nn训练器102通过为每个神经元110选择平均权重和平均权重的偏差量来训练bnn 104。最初,bnn 104是未经训练的(例如,神经元还没有被用均值和偏差进行加权)。为了训练bnn 104,图1的示例nn训练器102使用训练数据(例如,用已知的分类和/或输出来标记的输入数据)来配置bnn 104,以便能够为具有未知分类的输入数据预测输出分类。nn训练器102可以用第一训练数据集合来训练模型,并且用第二训练数据集合来测试该模型。如果基于测试的结果,模型的准确度低于阈值,则nn训练器102可使用额外的训练数据集合来调节(例如,调整、进一步训练,等等)模型的参数,并且继续测试,直到准确度高于阈值为止。在nn训练器102训练了bnn 104之后,示例nn训练器102在示例bnn 104的示例存储器108中为各个神经元110存储相应的均值和偏差。示例nn训练器102可被实现在与bnn 104相同的设备中和/或实现在与示例bnn 104进行通信的单独设备中。例如,nn训练器102可位于远程,在本地开发权重数据,并且将权重数据(例如,各个神经元110的均值和偏差)部署到bnn 104以便实现。
28.图1的示例bnn 104包括示例参考时钟106。参考时钟106生成周期性信号(例如,时钟信号、脉冲信号,等等)。该周期性信号可被示例神经元110中的一个或多个用于对抖动振荡器的电压进行采样,以将随机性注入到由各个神经元110生成的权重中,如下文进一步描述。
29.图1的示例bnn 104还包括示例存储器108。示例存储器108结合特定的神经元存储来自示例nn训练器102的权重数据。例如,存储器108的第一部分专门用于第一神经元的第一平均值和第一方差值,存储器108的第二部分专门用于第二神经元的第二平均值和第二方差值,等等。平均值可作为代表平均值的比特值被存储在专用部分中。如下文进一步描述的,比特值对应于对神经元110之一的c-2c梯子中的特定开关的控制(例如,每个比特值对应于单个比特单元中的一个或多个开关)。以这种方式,比特值控制c-2c梯子的比特单元,以确保输出电压等同于平均值。方差值被用来控制可变电阻器以调整来自参考时钟106的时钟信号的斜率。因为是基于来自抖动振荡器的抖动时钟信号的上升沿来对参考时钟106进行采样的,所以调整时钟信号的斜率就会调整方差,如下文进一步描述。
30.图1的示例神经元110接收输入数据,生成与概率分布相对应的权重,并且将该权重应用于输入数据以生成输出。例如,如果神经元的概率分布遵循标准正态分布,该神经元的平均权重是0.7,并且该神经元的方差是0.01(例如,标准偏差是0.1),那么该神经元将有68%的机会输出在0.6和0.8之间的权重(例如,离均值一个标准偏差),有95%的机会该神经元将输出在0.5和0.9之间的权重(例如,离均值两个标准偏差),等等。相应地,由输出生成的权重在每次生成权重时可能是不同的,但会遵循该概率分布。从而,示例神经元110提供随机性,这种随机性可抵消过度拟合和对恶意攻击的敏感性。下面结合图2和图3进一步描述示例神经元110之一的结构。
31.图2是图1的示例神经元110之一的框图。示例神经元110包括示例存储器接口202、示例c-2c梯子204、示例方差到电阻转换器206、示例时钟接口208、示例熵源210、示例电压采样器212、示例电荷泵214、示例权重应用器216、以及示例休眠控制器218。
32.图2的示例存储器接口202与图1的示例存储器108相接口,以访问与神经元110相
对应的均值和方差的比特值。存储器接口202将代表输出权重的均值的比特值发送给示例c-2c梯子204(例如,每个比特有一条线)。例如,如果均值由8比特值表示,则存储器接口202将八个信号发送给c-2c梯子(例如,串联或并联地传送),对于8比特平均值的每个比特有一个信号。存储器接口202将方差发送到示例方差到电阻转换器206。
33.图2的示例c-2c梯子204从示例存储器接口202获得与平均权重值(也称为平均值或者平均权重)相对应的比特值,并且生成与平均权重相对应的电压。例如,c-2c梯子可包括与均值的x比特值相对应的x个比特单元。c-2c比特单元包括用于存储电荷的电容器和用于对电容器放电和/或充电的开关(例如,通过接地和/或对电容器施加电压供应)。通过控制开关,比特单元中的一个或多个可充电和/或放电,以生成与平均值相对应的输出电压。例如,如果所有比特单元的开关都被使能以允许供应电压对各个电容器充电,则输出电压将等同于1(例如,供应电压的100%),如果一半比特单元的开关被使能并且一半比特单元的开关被禁用,则输出电压将等同于0.5(例如,供应电压的50%),等等。下面将结合图2进一步描述c-2c梯子204的硬件实现方式。示例c-2c梯子204将与平均值相对应的电压输出到示例电荷泵214。
34.图2的示例方差到电阻转换器206经由示例存储器接口202获得存储在存储器108中的方差值,并且将方差转换为电阻值。示例方差到电阻转换器206将电阻转换为信号(例如,电压),该信号被用于调整熵源210的电阻元件(例如,可变电阻器)的电阻。示例方差到电阻转换器206可由一个或多个复用器和/或查找表来实现,这些查找表将方差值转换为代表电阻的信号,以将可变电阻器调节至相应的电阻。以这种方式,熵源210的可变电阻器可以调整电阻,以调整当被基于来自抖动振荡器的抖动时钟信号的上升沿进行采样时与方差量相对应的无抖动参考时钟信号的斜率,如下文进一步描述。
35.图2的示例时钟接口208与图1的示例参考时钟106相接口,以从参考时钟106获得周期性信号(例如,无抖动的参考时钟信号)。示例时钟接口208将来自参考时钟106的时钟信号传递给示例熵源210的缓冲器。
36.图2的示例熵源210从时钟接口208获得时钟信号,并且从方差到电阻转换器206获得对应于电阻的信号。示例熵源210包括缓冲器以延迟时钟信号的上升沿。该缓冲器包括基于来自方差到电阻转换器206的信号而被控制(例如,以调整电阻)的可变电阻器。以这种方式,示例熵源210基于来自方差到电阻转换器206的信号来调整时钟信号的上升沿的斜率。示例熵源210将缓冲的时钟信号输出到示例电压采样器212。此外,熵源210包括抖动振荡器,该振荡器生成包括一定量抖动的时钟信号。振荡器的抖动被利用来产生一定量的随机性,该一定量的随机性被添加到平均值,以生成与概率分布相对应的权重。例如,基于振荡器的模拟组件的内在特性,由抖动振荡器生成的时钟信号的上升沿可能略有不同(例如,相对于上升沿发生的时间)。如下文进一步描述的,电压采样器212基于抖动振荡器的抖动输出电压的上升沿,对缓冲的参考时钟信号的无抖动输出的电压输出进行采样。下面结合图3进一步描述熵源210的示例硬件实现方式。
37.图2的示例电压采样器212在抖动时钟信号达到阈值电压时对由示例熵源210的缓冲器输出的电压进行采样。示例电压采样器212输出所采样的电压,直到获得后续采样为止。示例电压采样器212可由一个或多个比较器和/或一个或多个锁存器来实现。由于抖动振荡器的抖动,示例电压采样器212可为每个对应于概率分布的样本采样不同的电压。缓冲
的时钟信号的斜率(例如,基于可变电阻器的电阻)导致了添加到示例c-2c梯子204的输出电压的方差量。示例电压采样器212将采样的电压输出到图4的示例电荷泵214。
38.图2的示例电荷泵214通过在两个相邻的时钟周期(例如,时钟信号的两个上升沿)期间调整权重输出电压来调整c-2c梯子的权重输出(例如,与所确定的均值相对应的电压)以在电荷泵214的输出节点处对权重输出电压进行充电和放电,从而生成可被应用于输入数据的经调整的权重。例如,电荷泵214可在第一个周期(例如,对应于来自参考时钟106的时钟信号)期间使用来自电压采样器212的第一采样电压对c-2c梯子204的输出进行放电,并且在随后的第二周期期间使用来自电压采样器212的第二采样电压对c-2c梯子204的输出进行充电。由此得到的电荷泵214的电压输出将是平均值加上第一周期的采样电压和第二周期的采样电压之间的差值。从而,在第一和第二周期(例如,对应于一次放电和一次充电)之后所得到的电压输出对应于基于由熵源210的抖动振荡器引起的方差的沿着关于均值的概率分布的某个电压。在一些示例中,电荷泵214使用第一周期来对输出节点处的电压充电,并且使用第二周期来对输出节点处的电压放电,以生成经调整的权重。电荷泵214将所得到的经调整的权重(例如,平均值加上或减去方差(例如,第一采样电压和第二后续采样电压之间的差值))输出到示例权重应用器216。
39.图2的示例权重应用器216接收输入数据(例如,图像数据、视频数据、音频数据、文件、word文档、应用、代码,等等),并且将生成的权重(例如,由电荷泵214输出)应用于输入数据以生成输出数据。例如,权重应用器216可将输入数据乘以所生成的权重。在一些示例中,电荷泵214可生成多个权重以应用于输入数据。
40.示例休眠控制器218监视数据何时被输入到示例权重应用器216中以实现休眠/唤醒协议。例如,在权重应用器216输出输出数据之后,示例休眠控制器218可控制神经元110的一个或多个组件,以使得该一个或多个组件断电和/或进入休眠或低功率模式(例如,为了节约电力)。当在权重应用器216处接收到新的输入数据时,示例休眠控制器218向神经元110的一个或多个组件发送信号以唤醒和/或退出休眠和/或低功率模式。在一些示例中,休眠控制器218可控制神经元110的组件来在不同的模式中操作。例如,休眠控制器218可将熵源210和/或电荷泵214断电或断开连接。在这样的示例中,神经元110可像传统的神经网络一样操作,其中c-2c梯子204生成恒定的输出权重(例如,未被调整的)。
41.图3图示了图2的示例c-2c梯子204、示例熵源210以及示例电荷泵214的硬件实现方式。示例c-2c梯子204包括示例比特单元300a-n、示例开关301、以及示例电容器302,示例熵源210包括示例环形振荡器303、示例参考时钟缓冲器304、以及示例可变电阻器306。示例电荷泵214包括示例充电侧可变电流源308、示例开关310,312、以及示例放电侧可变电流源314。
42.图3的示例c-2c梯子204包括用于mu值(例如,权重的平均值)的x比特的x个比特单元300a-n。每个比特单元300a-n包括(一个或多个)开关301,这些开关可被控制来对相应电容器302进行充电和/或对相应电容器302进行放电。如上所述,mu的比特值被用来控制开关301。例如,如果mu的比特值对应于0、1、1、0,那么第一开关和最末开关将被控制为操作第一状态(例如,接地),并且中间的开关将被控制为操作第二状态(例如,参考电压vref)。存储在示例比特单元300a-n处的电荷之和对应于与mu相对应的输出电压(例如,在图3的图示示例中为0.7)。在一些示例中,每个开关301可由四个晶体管实现,如下文结合图4进一步所
示。因此,可以用3*x个电容器和4*x个电容器来实现示例c-2c梯子204,其中x是表示mu的比特的数目。
43.图1的示例熵源210包括示例环形振荡器303。示例环形振荡器303包括三个反相器(例如,模拟组件)。然而,可以用任何奇数的级来实现环形振荡器303。环形振荡器303是抖动振荡器。从而,环形振荡器303的上升沿在某一周期内的发生时间可能不同于其他周期内。抖动的分布对应于概率分布。因此,环形振荡器303的抖动可被利用来经由电荷泵214向c-2c梯子204的输出电压添加随机性。示例熵源210还包括示例参考时钟缓冲器304。参考时钟缓冲器304从图2的时钟接口208获得输入参考时钟。参考块缓冲器将时钟信号延迟某个时间t,并且使用示例可变电阻器306来调整时钟的上升沿的斜率。虽然图3的示例包括可变电阻器306,但可以用任何类型的电阻性元件(例如,具有被调节的栅极电压的晶体管)来替代可变电阻器306。示例可变电阻器306的电阻越高,参考时钟缓冲器304输出的时钟信号的斜率就越慢,而示例可变电阻器306的电阻越低,参考时钟缓冲器304输出的时钟信号的斜率就越快。如上所述,示例方差到电阻转换器206向示例可变电阻器306输出信号以调整电阻,从而使得采样电压的概率分布与存储在图1的示例存储器108中的目标方差相对应。虽然示例熵源210包括缓冲器来调整时钟信号并且包括抖动振荡器,但示例熵源210可包括两个抖动振荡器(例如,第一振荡器用于与阈值比较,第二振荡器用于在第一振荡器的电压满足阈值时进行采样)。然而,在这样的示例中,为了将这种熵源210的输出编程为对应于期望的概率分布,可能需要额外的硬件和/或操作开销以实现期望的概率分布。
44.如上所述,图2的示例电压采样器212获得示例环形振荡器303的抖动输出时钟信号和来自示例参考时钟缓冲器304的无抖动输出缓冲时钟信号。示例电压采样器212监视示例环形振荡器303的抖动输出的电压,直到该电压上升到阈值电压以上为止(例如,在上升沿期间)。当电压采样器212确定环形振荡器303的抖动输出电压高于阈值时,电压采样器212对参考时钟缓冲器304的无抖动缓冲输出电压的电压进行采样并且输出采样电压。由于环形振荡器303的抖动,环形振荡器303的输出电压将高于阈值的时间点可能会随着不同的周期而变化。因此,采样电压同样也会变化,从而对应于要被添加到由示例c-2c梯子204生成的权重的随机性。在一些示例中,电压采样器212使用下降沿而不是上升沿来触发采样(例如,当电压低于阈值电压时,触发采样)。在一些示例中,电压采样器212可监视参考时钟缓冲器304的无抖动输出电压,当无抖动电压达到阈值电压时对环形振荡器303的抖动输出电压进行采样,并且将采样电压输出到电荷泵214。
45.图3的示例电荷泵214是锁相环(phase-locked loop,pll)电荷泵。然而,电荷泵214可以是任何类型的电荷泵。电荷泵214基于来自示例电压采样器212的两个采样(例如,两个相邻周期的采样)之间的差值来增大或减小c-2c梯子204的输出电压。电荷泵214包括(一个或多个)第一示例开关312,该开关312在电压采样器212向可变电流源314输出第一采样电压之后,在第一持续时间(例如clk[n],基于来自图1的参考时钟106的时钟信号)中被使能。可变电流源314将电流泵向地,以释放c-2c梯子204的输出处的电荷,从而减小c-2c梯子204的输出处的电压。泵出的电流量(例如,对应于c-2c梯子204的输出处的电压减小量)取决于第一采样电压,该电压控制可变电流源314。
[0046]
在随后的周期期间,在电压采样器向可变电流源308输出第二采样电压之后,(一个或多个)电压第二示例开关310在第二持续时间(例如,clk[n+1])中被使能。可变电流源
308将电流泵入c-2c梯子204的输出节点中,以对c-2c梯子204的输出充电,从而增大c-2c梯子204的输出处的电压。泵入的电流量取决于第二采样电压,该电压控制可变电流源308。因此,在两个周期之后,电荷泵减小、然后增大示例c-2c梯子204输出的电压。从而,电荷泵214的输出对应于平均权重值加上与第一电压采样和第二电压采样相对应的差值。可以用50个晶体管和12个电阻器来实现熵源210和电荷泵214的组合。下面结合图6进一步描述一示例时序图,该时序图进一步描述了熵源210和电荷泵214的功能。
[0047]
图4图示了示例存储器108的存储mu的逐比特值的部分以及示例c-2c梯子204的相应比特单元300a-d的示例硬件实现方式。如上所述,比特单元300a-d的操作生成与所存储的mu值相对应的输出电压。存储器108的示例部分包括与四个比特单元300a-d相对应的示例的四个6晶体管(6t)存储单元400a-d。虽然图4的示例包括四个比特单元300a-d和四个6t存储单元400a-d(例如,对应于4比特mu值),但图4可包括任何数目的比特单元和/或6t存储单元,对应于任何数目的比特来表示mu。如图4所示,为了实现x比特mu值,可以使用10*x个晶体管(6个晶体管来实现6t sram单元,加上4个晶体管来实现比特单元300a-d中的开关301),其中x是表示mu的比特的数目,并且使用3*x个电容(例如,对于每个单元,有具有第一电容的第一电容器和具有两倍于第一电容的第二电容器)。
[0048]
虽然在图1-图4中图示了实现图1的bnn 104的示例方式,但图1-图4中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重布置、省略、消除、和/或以任何其他方式来实现。另外,可以由硬件、软件、固件、和/或硬件、软件和/或固件的任何组合来实现图1-图3的示例参考时钟106、示例存储器108、示例存储器接口202、示例方差到电阻转换器206、示例时钟接口208、示例熵源210、示例电压采样器212、示例电荷泵214、示例权重应用器216、示例休眠控制器218、和/或更一般而言示例bnn 104。从而,例如,可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(graphics processing unit,gpu)、(一个或多个)数字信号处理器(digital signal processor,dsp)、(一个或多个)专用集成电路(application specific integrated circuit,asic)、(一个或多个)可编程逻辑器件(programmable logic device,pld)、和/或(一个或多个)现场可编程逻辑器件(field programmable logic device,fpld)来实现图1-图3的示例参考时钟106、示例存储器108、示例存储器接口202、示例方差到电阻转换器206、示例时钟接口208、示例熵源210、示例电压采样器212、示例电荷泵214、示例权重应用器216、示例休眠控制器218、和/或更一般而言示例bnn 104中的任何一者。当读取本专利的装置或系统权利要求的任何一者来覆盖纯软件和/或固件实现方式时,图1-图3的示例参考时钟106、示例存储器108、示例存储器接口202、示例方差到电阻转换器206、示例时钟接口208、示例熵源210、示例电压采样器212、示例电荷泵214、示例权重应用器216、示例休眠控制器218、和/或更一般而言示例bnn104中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(digital versatile disk,dvd)、致密盘(compact disk,cd)、蓝光盘,等等。此外,图1-图3的示例bnn 104可包括除了图1-图3中所示的那些以外或者取代图1-图3中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。就本文使用的而言,短语“与
……
通信”(包括其变体)涵盖了直接通信和/或通过一个或多个中间组件的间接通信,并且不要求直接物理(例如,有线)通
信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
[0049]
在图5a-5b中示出了表示用于实现图1-图3的示例bnn 104的示例硬件逻辑、机器可读指令、硬件实现状态机和/或其任何组合的流程图。机器可读指令可以是供计算机处理器执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述计算机处理器例如是下文联系图7论述的示例处理器平台700中所示的处理器712。该程序可体现在存储于诸如cd-rom、软盘、硬盘驱动器、dvd、蓝光盘或与处理器712相关联的存储器之类的非暂态计算机可读存储介质上的软件中,但整个程序和/或其一些部分可替换为由除了处理器712以外的设备执行和/或体现在固件或专用硬件中。另外,虽然是参考图5a-5b中所示的流程图来描述示例程序的,但可替换使用实现示例bnn 104的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或组合。额外地或者替换地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,分立和/或集成的模拟和/或数字电路、fpga、asic、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。
[0050]
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可被利用来创建、制造和/或产生机器可执行指令的数据(例如,指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并且存储在一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密并存储在分开的计算设备上,其中这些部分当被解密、解压缩和组合时,形成实现例如本文所述那种的程序的一组可执行指令。
[0051]
在另一示例中,机器可读指令可被存储在如下状态中:在该状态中它们可被计算机读取,但要求添加库(例如,动态链接库(dynamic link library,dll))、软件开发套件(software development kit,sdk)、应用编程接口(application programming interface,api)等等以便在特定的计算设备或其他设备上执行这些指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,公开的机器可读指令和/或相应的(一个或多个)程序打算涵盖这种机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在休息或在途时的特定格式或状态如何。
[0052]
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可利用以下语言中的任何一种来表示机器可读指令:c、c++、java、c#、perl、python、javascript、超本文标记语言(hypertext markup language,html)、结构化查询语言(structured query language,sql)、swift,等等。
[0053]
如上所述,可利用存储在非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图5-图6的示例过程,所述介质例如是硬盘驱动器、闪存、只读存储器、致密盘、数字多功能盘、缓存、随机访问存储器、和/或其中信息可被存储
任何持续时间(例如,存储较长时间段、永久存储、短暂存储、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。就本文使用的而言,术语非暂态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘并且排除传播信号和排除传输介质。
[0054]“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为序言或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。就本文使用的而言,当短语“至少”在例如权利要求的序言中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如a、b和/或c这样的形式使用时,指的是a、b、c的任何组合或子集,例如(1)a单独,(2)b单独,(3)c单独,(4)a与b,(5)a与c,(6)b与c,以及(7)a与b以及与c。就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“a和b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“a或b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“a和b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“a或b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。
[0055]
就本文使用的而言,单数指代(例如,“一”、“第一”、“第二”,等等)不排除多数。就本文使用的而言,术语“一”实体指的是一个或多个该实体。术语“一”、“一个或多个”和“至少一个”在本文中被可互换地使用。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如单个单元或处理器来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
[0056]
图5a和5b是代表示例性机器可读指令500的流程图,这些指令可被执行以实现bnn的图1-图3的神经元110来生成与概率分布相对应的权重以应用到输入数据。虽然是结合图1-图3的示例神经元110来描述指令500的,但可结合任何类型的包括权重生成器、熵源和电荷泵的神经网络中的任何神经元来描述指令500。
[0057]
在块502,示例休眠控制器218确定是否在权重应用器216处接收到了输入数据。如上所述,休眠控制器218监视权重应用器216以确定何时接收到输入数据以唤醒示例神经元110的(一个或多个)组件、给(一个或多个)组件供电和/或退出(一个或多个)组件的低功率模式。如果示例休眠控制器218确定没有接收到输入数据(块502:否),则指令返回到块502,直到接收到输入数据为止(例如,神经元110的(一个或多个)组件保持休眠、关闭、和/或处于低功率模式中)。如果示例休眠控制器218确定接收到了输入数据(块502:是),则示例休眠控制器218为神经元110的处于休眠、关闭或低功率模式的一个或多个组件通电(例如,唤醒和/或指示退出低功率模式)(块504)。
[0058]
在块506,示例存储器接口202从示例存储器108访问比特值,以基于存储在存储器108中的值来控制c-2c开关301,从而根据存储的mu值输出平均电压。在块508,示例方差到电阻转换器206将存储在示例存储器108中的方差值转换为与电阻值相对应的信号。如上所述,该电阻信号被用于调整可变电阻器306或者示例参考时钟缓冲器304的其他电阻性元件的电阻。如上所述,调整电阻会调整时钟信号的上升斜率的边缘,从而调整与环形振荡器303相对应的概率分布,以对应于存储的方差值。
[0059]
在块510,示例方差到电阻转换器206输出信号,该信号被应用到可变电阻器306,以将可变电阻器306的可变电阻调整到特定的电阻(例如,其由方差到电阻转换器206的输出定义并且对应于存储的方差)。在块512,示例熵源210的示例参考时钟缓冲器304从参考时钟106(例如,经由时钟接口208)获得时钟信号。在块514,熵源210的示例参考时钟缓冲器304对无抖动的参考时钟信号进行缓冲(例如,使用偶数个反相器)。此外,示例参考时钟缓冲器304调整无抖动参考时钟信号的上升沿的斜率(例如,利用示例可变电阻器306)。
[0060]
在块516,示例电压采样器212确定来自熵源210的环形振荡器303的抖动输出电压是否满足某个电压(例如,在监视上升沿时高于某个电压或者在监视下降沿时低于某个电压)。当来自环形振荡器303的抖动输出时钟信号的电压满足阈值时,电压采样器212对参考时钟缓冲器304的无抖动输出进行采样。或者,当来自参考时钟缓冲器304的无抖动参考时钟信号的电压满足阈值时,电压采样器212对环形振荡器303的抖动输出进行采样。如果示例电压采样器212确定环形振荡器303的抖动输出电压不满足阈值电压(块516:否),则控制返回到块516,直到抖动输出电压满足阈值电压为止。
[0061]
如果示例电压采样器212确定环形振荡器303的抖动输出电压满足阈值电压(块516:是),则示例电压采样器212对参考时钟缓冲器304(例如,缓冲的时钟信号)的输出电压进行采样(块518)。在块520,示例电压采样器212基于该采样来输出信号到可变电流源314,以向地泵送电流。在块522,示例电荷泵214的示例开关312(例如,基于控制开关312的无抖动参考时钟信号)确定参考时钟是否对应于放电持续时间(例如,图3的clk[n])。放电持续时间可对应于第一周期的时钟信号的高持续时间或者时钟信号的低持续时间。
[0062]
如果示例开关312确定参考时钟信号不对应于放电持续时间(块522:否),则控制返回到块522,直到参考时钟信号对应于放电持续时间为止。如果示例开关312确定参考时钟信号对应于放电持续时间(块522:是),则示例开关312(例如,电荷泵214的放电部分处的开关)闭合(例如,使能)(块524)。在可变电流源向地泵送电流的同时使能开关312,使得c-2c梯子204的输出处的电荷放电,从而减小c-2c梯子204的输出处的输出电压。
[0063]
在块526,示例电荷泵214的示例开关312(例如,基于控制开关312的参考时钟信号)确定参考时钟是否仍然对应于放电持续时间(例如,图3的clk[n])。如果示例开关312确定参考时钟仍然对应于放电持续时间(块526:是),则控制返回到块526,直到参考时钟不再对应于放电持续时间为止。如果示例开关312确定参考时钟不再对应于放电持续时间(块526:否),则示例开关312(例如,在电荷泵214的放电部分处)断开(例如,禁用)(块528),从而停止在示例c-2c梯子204的输出节点处的放电。
[0064]
在块530,示例熵源210的示例参考时钟缓冲器304从参考时钟106(例如,经由时钟接口208)获得时钟信号。在块532,熵源210的示例参考时钟缓冲器304对参考时钟信号进行缓冲(例如,使用偶数个反相器)。此外,示例参考时钟缓冲器304调整参考时钟信号的上升
沿的斜率(例如,利用示例可变电阻器306)。
[0065]
在块534,示例电压采样器212确定来自熵源210的环形振荡器303的抖动输出电压是否满足某个电压(例如,在监视上升沿时高于某个电压或者在监视下降沿时低于某个电压)。当来自环形振荡器303的抖动时钟信号的电压满足阈值时,电压采样器212对参考时钟缓冲器304的无抖动输出进行采样。或者,当来自参考时钟缓冲器304的无抖动时钟信号的电压满足阈值时,电压采样器212可对环形振荡器303的抖动块信号进行采样。如果示例电压采样器212确定环形振荡器303的抖动输出电压不满足阈值电压(块534:否),则控制返回到块534,直到抖动输出电压满足阈值电压为止。
[0066]
如果示例电压采样器212确定环形振荡器303的抖动输出电压满足阈值电压(块534:是),则示例电压采样器212对参考时钟缓冲器304(例如,缓冲的时钟信号)的输出电压进行采样(块536)。在块538,示例电压采样器212基于该采样来输出信号到可变电流源308,以向示例c-2c梯子204的输出泵送电流。在块540,示例电荷泵214的示例开关310(例如,基于控制开关310的参考时钟信号)确定参考时钟是否对应于充电持续时间(例如,图3的clk[n+1])。充电持续时间可对应于第二周期的时钟信号的高持续时间或者时钟信号的低持续时间。
[0067]
如果示例开关310确定参考时钟信号不对应于充电持续时间(块540:否),则控制返回到块522,直到参考时钟信号对应于充电持续时间为止。如果示例开关310确定参考时钟信号对应于充电持续时间(块540:是),则示例开关312(例如,电荷泵214的充电部分处的开关)闭合(例如,使能)(块542)。在可变电流源向输出节点泵送电流的同时使能开关310,使得c-2c梯子204的输出处的电荷增大,从而增大c-2c梯子204的输出处的输出电压。
[0068]
在块544,示例电荷泵214的示例开关310(例如,基于控制开关310的参考时钟信号)确定参考时钟是否仍然对应于充电持续时间(例如,图3的clk[n+1])。如果示例开关310确定参考时钟仍然对应于充电持续时间(块544:是),则控制返回到块526,直到参考时钟不再对应于充电持续时间为止。如果示例开关310确定参考时钟不再对应于充电持续时间(块544:否),则示例开关310断开(例如,禁用)(块546),从而停止在示例c-2c梯子204的输出处的充电。如上所述,电荷泵214在c-2c梯子204的输出处放电,然后充电,以便输出电压对应于平均值加上与第一采样电压和第二采样电压之间的差值相对应的某个电压,从而基于环形振荡器303的抖动的概率分布来添加某种随机性。在块548,示例权重应用器216将输出节点处的经调整的权重输出应用于输入数据(例如,相乘)以生成输出数据。
[0069]
在块550,示例休眠控制器218确定是否要执行额外的迭代(例如,用于与相同和/或额外输入数据相对应的额外权重生成)。如果示例休眠控制器218确定要执行额外的迭代(块550:是),则控制返回到块512。如果示例休眠控制器218确定不执行额外的迭代(块550:否),则示例休眠控制器218将神经元110的一个或多个组件断电(块552)。
[0070]
图6图示了示例输入时钟参考时钟信号602(例如,由图1的示例参考时钟106输出)、示例调制时钟信号604(例如,由图3的示例参考时钟缓冲器304输出)、以及示例抖动信号606(例如,由图3的示例振荡器303输出)的示例时序图600。出于说明的目的,图6还包括图3的示例电荷泵214。
[0071]
如图6的示例调制信号604(例如,就上升/下降沿的时间和斜率进行了调制)所示,该信号是延迟的(例如,由于参考时钟缓冲器304的反相器),并且由于图3的可变电阻器306
而具有较慢的斜率。此外,示例抖动信号606图示了由示例环形振荡器303产生的抖动。因此,当抖动信号606在第一周期期间达到阈值电压时,示例电压采样器212对经调制/缓冲的信号604处的电压(例如,vn)进行采样,并且将第一采样电压(vn)输出到示例电流源vn 314,以便在开关312被使能时(例如,在与输入参考时钟信号602的clk[n]相对应的持续时间期间)向地泵送电流。当抖动信号606在第二周期期间达到阈值电压时,示例电压采样器212对经调制/缓冲的信号604处的电压(例如,vn+1)进行采样,并且将第一采样电压(vn+1)输出到示例电流源vn 308,以便在开关310被使能时(例如,在与输入参考时钟信号602的clk[n+1]相对应的持续期间期间)向c-2c梯子204的输出泵送电流。
[0072]
图7是被构造来执行图5a-5b的指令以实现图1-图4的示例bnn 104的示例处理器平台700的框图。处理器平台700可例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如ipad
tm
之类的平板设备)、个人数字助理(pda)、互联网家电、或者任何其他类型的计算设备。
[0073]
图示示例的处理器平台700包括处理器712。图示示例的处理器712是硬件。例如,处理器712可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或者控制器来实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在这个示例中,处理器712实现示例参考时钟106、示例存储器接口202、示例方差到电阻转换器206、示例时钟接口208、示例熵源210、示例电压采样器212、示例电荷泵214、示例权重应用器216、以及示例休眠控制器218中的至少一者。
[0074]
图示示例的处理器712包括本地存储器713(例如,缓存)。图示示例的处理器712经由总线718与包括易失性存储器714和非易失性存储器716的主存储器进行通信。易失性存储器714可由同步动态随机访问存储器(synchronous dynamic random access memory,sdram)、动态随机访问存储器(dynamic random access memory,dram)、动态随机访问存储器(dynamic random access memory,)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器716可由闪存和/或任何其他期望类型的存储器设备来实现。对主存储器714、716的访问受存储器控制器的控制。示例本地存储器713、示例易失性存储器714和/或示例非易失性存储器716可实现图1的存储器108。
[0075]
图示示例的处理器平台700还包括接口电路720。接口电路720可由任何类型的接口标准来实现,例如以太网接口、通用串行总线(universal serial bus,usb)、接口、近场通信(near field communication,nfc)接口、和/或pci快速接口。
[0076]
在图示示例中,一个或多个输入设备722连接到接口电路720。(一个或多个)输入设备722允许用户向处理器712中输入数据和/或命令。(一个或多个)输入设备可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、和/或语音识别系统来实现。
[0077]
一个或多个输出设备724也连接到图示示例的接口电路720。输出设备724可例如由显示设备(例如,发光二极管(light emitting diode,led)、有机发光二极管(organic light emitting diode,oled)、液晶显示器(liquid crystal display,lcd)、阴极射线管显示器(cathode ray tube,crt)、就地切换(in-place switching,ips)显示器、触摸屏,等等)、触觉输出设备、和/或扬声器来实现。图示示例的接口电路720从而通常包括图形驱动器卡、图形驱动器芯片、和/或图形驱动器处理器。
[0078]
图示示例的接口电路720还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口,来促进经由网络726与外部机器(例如,任何种类的计算设备)的数据交换。通信可经由例如以太网连接、数字订户线(digital subscriber line,dsl)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝系统,等等。
[0079]
图示示例的处理器平台700还包括用于存储软件和/或数据的一个或多个大容量存储设备728。这种大容量存储设备728的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disks,raid)系统、以及数字多功能盘(digital versatile disk,dvd)驱动器。
[0080]
图5a和/或5b的机器可执行指令732可被存储在大容量存储设备728中、易失性存储器714中、非易失性存储器716中、和/或诸如cd或dvd之类的可移除非暂态计算机可读存储介质上。
[0081]
本文公开了用于提供和操作一种改进的贝叶斯神经网络的示例方法、装置、系统和制品。进一步示例及其组合包括以下各项:示例1包括一种装置,包括:振荡器,用于生成第一时钟信号,电阻性元件,用于调整第二时钟信号的上升沿的斜率,电压采样器,用于基于以下各项中的至少一者来生成采样:(a)当所述第二时钟信号的第二电压满足阈值时所述第一时钟信号的第一电压,或者(b)当所述第一时钟信号的第四电压满足所述阈值时所述第二时钟信号的第三电压,以及电荷泵,用于基于所述采样来调整权重,所述权重将调整模型中的数据。
[0082]
示例2包括如示例1所述的装置,其中所述振荡器是抖动环形振荡器。
[0083]
示例3包括如示例1所述的装置,其中所述电阻性元件是可变电阻器,所述装置还包括转换器来基于在训练期间确定的值来调整所述可变电阻器的电阻。
[0084]
示例4包括如示例4所述的装置,其中所述值对应于经调整的权重的方差的量。
[0085]
示例5包括如示例1所述的装置,其中所述第二时钟信号是与参考时钟相对应的无抖动参考信号。
[0086]
示例6包括如示例1所述的装置,还包括c-2c梯子来生成所述权重。
[0087]
示例7包括如示例6所述的装置,其中所述c-2c梯子包括与在训练期间确定的平均值的逐比特值相对应的若干个比特单元,所述比特单元耦合到与所述平均值相对应的相应存储单元。
[0088]
示例8包括如示例1所述的装置,其中所述采样是第一采样,所述电压采样器在第一时钟周期期间生成所述第一采样,并且在第二时钟周期期间生成第二采样,并且所述电荷泵基于所述第一采样和第二采样之间的差值来调整所述权重。
[0089]
示例9包括如示例8所述的装置,其中所述电荷泵通过以下操作来调整所述权重:在第一持续时间期间向地泵送第一量的电流,所述第一量的电流对应于所述第一采样,并且在第二持续时间期间向输出节点泵送第二量的电流,所述第二量的电流对应于所述第二采样。
[0090]
示例10包括如示例1所述的装置,其中经调整的权重遵循与在训练期间确定的平均值和方差值相对应的概率分布。
[0091]
示例11包括一种神经网络中的神经元,该神经元包括:c-2c梯子,用于生成与在训
练期间确定的平均权重值相对应的输出电压,电压采样器,用于在第二时钟信号的第二电压满足阈值时对第一时钟信号的第一电压进行采样,以及电荷泵,用于基于所述采样来调整所述输出电压。
[0092]
示例12包括如示例11所述的神经元,还包括抖动振荡器来生成所述第二时钟信号。
[0093]
示例13包括如示例11所述的神经元,还包括缓冲器来输出所述第一时钟信号,所述第一时钟信号对应于被调制之后的参考时钟信号。
[0094]
示例14包括如示例11所述的神经元,其中所述c-2c梯子包括与所述平均值的逐比特值相对应的若干个比特单元,所述比特单元耦合到与所述平均值相对应的相应存储单元。
[0095]
示例15包括如示例11所述的神经元,其中所述采样是第一采样,所述电压采样器在第一时钟周期期间生成所述第一采样,并且在第二时钟周期期间生成第二采样,并且所述电荷泵基于所述第一采样和第二采样之间的差值来调整所述权重。
[0096]
示例16包括如示例15所述的神经元,其中所述电荷泵通过以下操作来调整所述权重:在第一持续时间期间向地泵送第一量的电流,所述第一量的电流对应于所述第一采样,并且在第二持续时间期间向输出节点泵送第二量的电流,所述第二量的电流对应于所述第二采样。
[0097]
示例17包括如示例11所述的神经元,其中经调整的权重遵循与在训练期间确定的平均值和方差值相对应的概率分布。
[0098]
示例18包括一种神经网络,包括:存储器,用于存储平均值和方差值,参考时钟,用于输出参考时钟信号,以及与所述存储器和所述参考时钟相耦合的神经元,所述神经元利用c-2c梯子生成与所述平均值相对应的输出电压,并且利用振荡器、电荷泵和所述参考时钟信号来调整与所述方差值相对应的所述输出电压。
[0099]
示例19包括如示例18所述的神经网络,还包括电压采样器来基于所述振荡器的输出信号来对与所述参考时钟信号相对应的电压进行采样。
[0100]
示例20包括如示例18所述的神经网络,其中所述电荷泵基于所述采样来调整所述输出电压。
[0101]
从上述内容将会明白,已公开了提供一种改进的贝叶斯神经网络以及操作该网络的方法和装置的示例方法、装置和制品。本文公开的示例利用了与模拟域中的随机抖动电荷相对应的高斯分布。本文公开的示例使用以下各项来生成bnn:(1)将平均权重转换为电荷水平的c-2c梯子,(2)提供可编程的随机性的基于抖动振荡器采样的熵源,以及(3)由熵源控制的电荷泵,用于抖动由c-2c梯子生成的电荷以给出最终的、可编程的、高斯分布的输出。
[0102]
bnn引入了不确定性信息,以克服过度拟合和对恶意攻击的敏感性的问题。bnn没有使用固定的权重,而是引入了与条件概率分布相关联的权重(例如,输出权重可以是由均值和标准偏差定义的概率分布内的值)。因为bnn引入了一定量的随机性,所以可以用更小的训练数据来训练bnn,而不牺牲准确性。然而,具有生成与概率分布相对应的值的神经元的传统bnn要求大量的功率和/或硬件来实现。因此,这种传统bnn是昂贵的、复杂的和能量效率低的。本文公开的示例对应于一种bnn,与传统bnn相比,其可以用更少的硬件来实现
(从而不那么昂贵),并且能量效率更高。因此,公开的方法、装置和制品因此针对的是神经网络的功能的一项或多项改进。
[0103]
虽然本文公开了某些示例方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有方法、装置和制品。
[0104]
特此通过引用将所附权利要求并入到这个“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1