具有自适应精度的数值的离散化的制作方法

专利2022-06-29  95


本发明涉及用于在数据存储器中存储的数值的离散化,其中精度能针对相应的应用来定制。



背景技术:

人造神经元网络、即knn通常包括多个具有神经元的层,这些具有神经元的层分别将多个具有权重的输入组合成激活。在一个层中形成的激活或从中通过进一步处理来确定的结果分别被输送给下一个相邻的层,直至knn完全被经历。权重、激活以及从中确定的结果通常是浮点数(英文“float”)。

为了降低用于实现knn的存储需求而且同时可以使用价格更加便宜的能耗更低的硬件,常常使用如下硬件,该硬件专门用于利用定点数(英文“fixed-point”)或者整数(英文“integer”)来进行计算。接着,这些浮点数被离散化成定点数或者整数。

wo2018/158043a1公开了一种用于对在knn中的数值进行编码的方法,其中最高有效位专门被保留用于对值零的编码。以这种方式可以特别快地检查该值是否为零。



技术实现要素:

在本发明的范围内,开发了一种用于将数值存储在数据存储器中的编码器,这些数值处在预先给定的最小值与预先给定的最大值之间的值域内。为了该目的,该编码器能与数据存储器连接。

该编码器包含如下分配规则,该值域根据该分配规则被分成多个离散区间。在此,区间尤其是被理解为数集,该数集由如下元素组成,这些元素处在预先给定的上限与预先给定的下限之间。因此,分成离散区间包含:针对每个区间都规定上限和下限。

该编码器被构造为:将所要存储的数值放置到正好一个区间中并且输出该区间的标志符,其中该输出尤其可以输出到数据存储器上。接着,对数值的存储在数据存储器中体现在被存放在那里的标志符。这意味着:每个数值在数据存储器中只占用与标志符一样多的存储空间。因此,例如如果数值被离散化成256个不同的区间,则需要8位来存储对于这些区间中的每个区间来说明确的标志符。这些区间在数值的尺度上不一样宽。

在此,浮点数尤其可以被离散化成定点数或者甚至被离散化成整数。然而,这不是强制必需的。如果整数(例如64位大的“长整数(longinteger)”)被离散化成多个区间,这些区间的标志符占用更少的存储空间(例如22位用于表现65536个区间),则也可以造成存储需求的降低。

离散化成区间是对数值的有损的压缩。也就是说,该离散化总是伴随有精度的损失。已经看出:由于区间不一样宽,该精度损失对其中使用这些数值的应用的影响可以明显降低。这基于如下认识:在很多应用中不是所有数值都一样重要。这样,例如在人造神经元网络、即knn中进行处理时,较高的权重和激活值与较低值相比对最终提供的输出具有强得多的影响。因而合理的是:与较低值相比用更好的精度来映射较高值。尤其是,在较高值之间的精确的差比在较低值之间的差更重要。这确实可以用该编码器来映射。

在此,在一个特别有利的设计方案中,离散区间在数值的尺度上的宽度可以随着分别包含在这些区间中的数值的平均值的增加而单调减小。接着,利用在数据存储器中区间的标志符所需的相同数量的位,可以用较低的精度来存储在数值方面较低的数值并且用更好的精度来存储在数值方面较高的数值。

例如,离散区间在数值的尺度上的宽度可以随着关于区间和/或关于区间的组的连续下标k指数型地发生变化。这种分配规则描绘了适合于多种应用的数值的在数值方面的大小与重要性之间的相关。

例如,如果应用正整数r来规定在0与2r之间的整数值域,则该整数值域应该被离散化成2p(其中p<r)个不同的区间组。在此,所有属于一个区间组的区间分别一样宽,但是属于不同的组的区间不一样宽。接着,例如可以针对每组k将其中该组k开始于的数值的下限uk规定为

而将该组结束于的上限ok规定为

其中该上限ok已经不再应该属于组k。接着,属于组k的区间的数目nk例如可以被规定为

因此,nk与不同的区间标志符的数目同义,这些区间标志符被需要用于表现组k中的所有区间。因此,为了映射整个原来的从0至2r的值域,需要个不同的区间标志符。

这应以r=10和p=3为数例来阐明。因为2rp=27=128,所以23=8个组中的每个组都涉及到原来的值域的128个数值。

对于其中k=1的第一组来说,nk的公式表明:在下限u1=896与o1=1024(其中1024除外)之间的范围应被分成n1=128个区间。借此,整个值域的128个最高的离散数值在没有精度损失的情况下被映射到区间标志符。

对于其中k=2的第二组来说,nk的公式表明:该组只还应该包含n2=64个区间。因此,在该组(在u2=768与o2=896之间,其中896除外)中的128个数值被压缩到64个区间标志符,而且因此被压缩到二分之一。

这一直持续到k=8。对于k=8来说,从u8=0至o8=128(其中128除外)的整个范围被压缩成只还有n8=20=1个唯一的区间,即被压缩到128分之一。

对于可以用8位的存储需求来表现的区间来说,总共需要n=255(128 64 32 22 8 4 2 1)个不同的标志符。与此相应地,最初需要10位,以便存储原来的值域的全部1024个离散数值。因此,总共节省了20%的存储空间。

尤其是在knn中,所存储的数值经常是中间结果,稍后应该再一次利用这些中间结果来继续进行计算。为此需要:将被寄存在数据存储器中的区间的标志符重新翻译回可以用来继续进行计算的数值。因而,本发明也涉及一种用于如下数值的解码器,这些数值利用所描述的编码器被存储在数据存储器中。该解码器被构造为:根据分配规则,给从数据存储器中调用的离散区间的标志符分配属于该区间的固定数值并且输出属于该区间的固定数值。

在此,该解码器例如可以被构造为:给离散区间的至少一个标志符分配属于该区间的数值中的最大值、最小值或者平均值。这些参量至少是原来存储的其最大误差事先已知的数值的近似值。

为了在重构时显著降低平均误差,在另一特别有利的设计方案中,该编码器附加地被构造为:针对离散区间中的至少一个离散区间,进行关于该编码器已经将其分配给该离散区间的被输入的数值的概要统计。根据该概要统计,可以得出更有动机的数值,该解码器可以在稍后的重构中将该更有动机的数值分配给该区间的标志符。

为了该目的,该编码器尤其可以被构造为:在概要统计的框架内,确定该编码器已经将其分配给该离散区间的那些数值的百分位数(比如第75个百分位数)、平均值和/或中位数。

除了区间的标志符之外还对概要统计的存储花费少量额外的存储空间。

根据之前所描述的内容,将数值离散化成不一样宽的区间对于实现人造神经元网络、即knn来说特别有利,因为这里特别是在数值方面较高的数值比在数值方面较低的数值对最终所实现的输出的影响更强烈。因而,本发明也涉及一种具有knn的人工智能模块、即ki模块,该knn包括多个具有神经元的层。这些神经元分别被构造为:将多个具有权重的输入组合成激活。这些激活可以选择性地直接用作knn的下一层的输入要不然可以通过可选的非线性处理级被处理成结果,该结果接着又作为输入被输送给下一层。

这种非线性处理级例如可以包括矫直功能,该矫直功能只输出其自变量的正的部分,而且否则就输出零(修正线性单元(rectifiedlinearunit),relu)。

设置至少一个编码器,用于将至少一个层的权重和/或至少在一个层中形成的激活和/或结果存储在数据存储器中。还设置至少一个解码器,用于从数据存储器中调用这些权重、激活或结果。

如之前所描述的那样,利用该编码器来进行的离散化具有如下效果:在数据存储器中的存储需求显著降低。同时,该离散化也在专门设计用于定点数或整数计算的硬件上完成用于实现knn的准备工作。因而,在一个特别有利的设计方案中,这些神经元在ki模块中利用被构造用于定点数或整数计算的计算单元来实现。

激活、权重和结果的数值波动的量级可能在knn的每一层都不相同。这样,例如分别将神经元的输出处理成结果的非线性处理级可能造成:激活的数量逐层渐次增加。如果例如“修正线性单元(rectifiedlinearunit)”(relu)被用作非线性处理级,则例如激活在knn的第一层可能在0到2个之间,而这些激活在第五层已经在0到40个之间。因而,在一个有利的设计方案中,针对knn的不同的层,设置具有将数值分配到区间的不同的分配规则的编码器。

同样,在另一有利的设计方案中,针对knn的不同的层,设置具有将区间标志符分配到数值的不同的分配规则的解码器。例如,用于knn的不同的层的编码器可以将不同的值域以不同的方式划分成区间,而解码器接着应该分别与此相对应。这些编码器例如也可以针对knn的不同的层创建关于同一离散区间的不同的概要统计,使得这些解码器接着可以给该区间的标志符分别分配适合于进一步的计算的数值。

在ki模块中,编码器和解码器可以安装在任意位置。该编码器和该解码器例如可以切换到用于直接存储器访问(directmemoryaccess,dma)的路径中,或者例如也可以处在任意位置,在该任意位置,该编码器和该解码器仅仅控制对数据存储器的至少一部分的访问。但是,该编码器和该解码器例如也可以在knn的软件实现之内实现而且利用传统的、由硬件和操作系统提供的方法来进行存储器访问。

典型地,knn利用用于其中存在的权重的随机值或者其它初始值来初始化,而且最终的权重接着在训练期间才形成。因此,训练决定了其中激活、权重和结果的数值波动的量级。

因而,本发明也涉及一种用于制造所描述的ki模块的方法。

在该方法的框架内,首先,借助于针对输入数据的学习数据组和所属的学习输出来训练ki模块中的knn的权重。在这种情况下,这些权重尤其是被优化为使得knn针对学习数据组分别提供输出,该输出根据误差函数足够好地对应于所属的学习输出。

现在,依据针对输入数据的数据组来确定:在knn的至少一个层中形成的激活和/或结果处在哪个值域内。以这种方式确定的值域和/或在训练时确定的权重所处的值域被规定为用于ki模块的至少一个编码器的值域。这些数据组例如可以包含用于训练的学习数据组、用于在训练之后确认的测试数据组或者也包含它们的任意组合。

如之前所描述的那样,该规定可以针对knn的每个单个的层单独地进行。但是,例如也可以规定针对整个knn的所有激活、结果或权重的全局值域,该全局值域覆盖所有存在于knn中的数值。

尤其是当knn被用于分类任务时,可能出现在较高的数值之间的精确的差比在较低的数值之间的差更重要的情况。在这种任务的情况下,多个类的高置信度可能彼此接近,而且只有这些类完全有资格用于对最终输出的类的选择。因而,在这些类之间的精确的区分比在其置信度已经低得多的类之间的区分重要得多。因而,所描述的ki模块特别有利地被用于语音识别、对象识别、线估计、自我线估计、欺诈识别、面部识别和/或从以物理方式记录的测量数据中的语义分割。这里,重要的应用例如是驾驶辅助系统、在道路交通中对至少部分自动化的车辆的控制以及也包括访问控制,其中重要的是识别有效的访问介质是否存在。

该编码器和该解码器可以完全或者部分地以软件来实现,该软件尤其也可以事后被加装到现有的ki模块上。因此,该软件是一项具有直接客户利益的独立产品,该产品使装备有该产品的ki模块的性能变得更好。因而,本发明也涉及一种计算机程序,该计算机程序具有机器可读指令,当这些机器可读指令在计算机上和/或在嵌入式系统上被实施时,这些机器可读指令使该计算机和/或该嵌入式系统升级成所描述的编码器和/或升级成所描述的解码器,和/或促使该计算机或该嵌入式系统实施所描述的用于制造ki模块的方法。同样,本发明也涉及一种具有该计算机程序的机器可读数据载体或者下载产品。

附图说明

在下文,其它改善本发明的措施共同利用依据附图对本发明的优选的实施例的描述进一步予以呈现。

实施例

其中:

图1示出了利用示例性的编码器1对数值4的编码和利用示例性的解码器2对数值4的解码;

图2示出了具有编码器1和解码器2的ki模块的实施例;

图3示出了方法100的实施例。

具体实施方式

根据图1,从任意的来源生成数值4,这些数值涉及到在预先给定的最小值41与预先给定的最大值42之间的值域43。这些数值能以离散的、节省空间的形式被寄存在数据存储器3中。

为此,使用示例性的编码器1。按照编码器1中的分配规则11,值域43被分成离散区间12a-12d,这些离散区间的宽度14a-14d不同。根据所要存储的具体的数值4落入到这些区间12a-12d中的哪个区间中,将相应的区间12a-12d的标志符13a-13d寄存在数据存储器3中。

编码器1还进行关于该编码器已经给各个区间12a-12d分别分配的那些数值4的概要统计15a-15d。该概要统计15a-15d同样被输出到数据存储器3中。因为该统计15a-15d是由很多个单个值4构成的压缩,所以在数据存储器3中的额外的空间需求很低。

如果重新需要数值4以便借此继续进行计算,则替代该数值4被寄存在数据存储器3中的区间12a-12d的标志符13a-13d以及可能存在的概要统计15a-15d从数据存储器3中被调用。解码器2的分配规则21给标志符13a-13d分配固定值22a-22d,该固定值替代原来输入的数值4供进一步使用。在此,为了规定属于每个标志符13a-13d的固定值22a-22d,尤其是也可以使用由编码器1针对相应的区间12a-12d进行的并且寄存在数据存储器3中的概要统计。

图2示出了ki模块5的实施例。ki模块5包含人造神经元网络50、即knn50。knn50由多个层组成,在图2中示例性地示出了这些层中的三个层而且用附图标记51-53来表示这三个层。每个层51-53都包含多个神经元,在图2中,这些神经元中的一个神经元示例性地用附图标记54来表示。ki模块5被确定为:将数值4、例如来自物理观测的测量数据翻译成适合于相应的应用的输出7、比如对这些测量数据的分类。

为了训练knn50,给该knn加载学习数据组6a,而且在层51-63中的内部权重51a-53a被优化为使得knn5的输出7根据误差函数足够好地对应于所属的学习输出6b。为了设立结合图3进一步阐述的编码器1,还将数据组输入到knn50中。这些数据组例如可以包含用于训练的学习数据组、用于在训练之后确认的测试数据组或者也包含它们的任意组合。

在此,knn50的神经元54至少在训练完成的状态下利用被构造用于定点数或整数计算的计算单元55来实现。对于训练来说,可以使用如下硬件,该硬件以浮点数来进行工作,以便小的、在训练期间出现的梯度步长没有被舍入作用所抑制。

在knn50的层51-53中形成的激活51b-53b以及从中通过非线性处理来确定的结果51c-53c经由编码器1被存放在数据存储器3中。在训练之后形成的权重51a-53a也以这种方式被存储。如结合图1所描述的那样,针对每个与此相关的数值4,存储该数值落入到其中的区间12a-12d的标志符13a-13d。附加地,关于所有分别被分配给区间12a-12d的数值4的概要统计15a-15d也被存储。

如果重新需要数值4比如用来创建针对下一层51-53的输入,则如结合图1所描述的那样,利用解码器2来给标志符13a-13d分配来自相应的区间12a-12d中的固定值22a-22d。替代最初被提交用于存储的数值4,这些固定值22a-22d供进一步处理。这些固定值例如可以在使用相应的概要统计15a-15d的情况下被规定。

图3示出了方法100的实施例。在步骤110中,ki模块5首先仍处在其未经训练的状态5'下而且如之前所描述的那样被训练。结果是,在ki模块5的knn50中形成层51-53的内部权重51a-53a。ki模块5现在处在其训练状态下。

在该训练状态下,在步骤120中,向ki模块5输送针对输入数据的数据组6c。这些数据组6c例如可以包含用于训练的学习数据组6a、用于在训练之后确认的测试数据组或者也包含它们的任意组合。但是,数据组6c例如也可以与学习数据组6a和/或与测试数据组不相交。被测试的是:在knn50的层51-53中形成的激活51b-53b或从中所确定的结果51c-53c处在哪些值域43内。

在步骤130中,这些值域被规定为用于ki模块5的至少一个编码器1的值域43。在训练110时所确定的权重51a-53a所处的值域43也被规定为用于至少一个这种编码器1的值域43。

尤其是,对编码器1的这些适配也可以与分别所属的解码器2同步。


技术特征:

1.编码器(1),所述编码器能与数据存储器(3)连接并且被构造用于将数值(4)存储在所述数据存储器(3)中,所述数值处在预先给定的最小值(41)与预先给定的最大值(42)之间的值域(43)内,其中所述编码器(1)包含如下分配规则(11),所述值域(43)根据所述分配规则被分成多个离散区间(12a-12d),而且其中所述编码器(1)被构造为:将所要存储的数值(4)放置到正好一个区间(12a-12d)中并且输出所述区间(12a-12d)的标志符(13a-13d),其中所述区间(12a-12d)在所述数值(4)的尺度上不一样宽。

2.根据权利要求1所述的编码器(1),其中所述离散区间(12a-12d)在所述数值(4)的尺度上的宽度(14a-14d)随着分别包含在所述区间(12a-12d)中的数值(4)的平均值的增加而单调减小。

3.根据权利要求1至2中任一项所述的编码器(1),其中所述离散区间(12a-12d)在所述数值(4)的尺度上的宽度(14a-14d)随着关于区间(12a-12d)和/或关于区间(12a-12d)的组的下标k指数型地发生变化。

4.根据权利要求1至3中任一项所述的编码器(1),所述编码器附加地被构造为:针对所述离散区间(12a-12d)中的至少一个离散区间,进行关于所述编码器(1)已经将其分配给所述离散区间(12a-12d)的被输入的数值(4)的概要统计(15a-15d)。

5.根据权利要求4所述的编码器(1),所述编码器被构造为:在所述概要统计(15a-15d)的框架内,确定所述编码器(1)已经将其分配给所述离散区间(12a-12d)的数值(4)的百分位数、平均值和/或中位数。

6.用于数值(4)的解码器(2),所述数值利用根据权利要求1至5中任一项所述的编码器(1)被存储在数据存储器(3)中,所述解码器被构造为:根据分配规则(21),给从所述数据存储器(3)中调用的离散区间(12a-12d)的标志符(13a-13d)分配属于所述区间(12a-12d)的固定数值(22a-22d)并且输出属于所述区间(12a-12d)的固定数值(22a-22d)。

7.根据权利要求6所述的解码器(2),所述解码器被构造为:给离散区间(12a-12d)的至少一个标志符(13a-13d)分配属于所述区间(12a-12d)的数值(4)中的最大值、最小值或者平均值。

8.根据权利要求6至7中任一项所述的解码器(2),所述解码器被构造为:给离散区间(12a-12d)的至少一个标志符(13a-13d)分配通过根据权利要求4至5中任一项所述的编码器(1)利用所述概要统计(15a-15d)来确定的数值(22a-22d)。

9.人工智能模块、即ki模块(5),所述ki模块具有人造神经元网络、即knn(50),其中所述knn包括多个具有神经元(54)的层(51-53),所述层分别将多个具有权重(51a-53a)的输入(50a)组合成激活(51b-53b),其中可选地附加地设置非线性处理级,用于将所述激活(51b-53b)进一步处理成结果(51c-53c),所述ki模块还包括:至少一个编码器(1),用于将至少一个层(51-53)的权重(51a-53a)和/或至少在一个层(51-53)中形成的激活(51b-53b)和/或结果(51c-53c)存储在数据存储器(3)中;以及至少一个解码器(2),用于从所述数据存储器(3)中调用所述权重(51a-53a)、激活(51b-53b)或结果(51c-53c)。

10.根据权利要求9所述的ki模块(5),其中针对所述knn(50)的不同的层(51-53),设置具有将数值(4)分配到区间(12a-12d)的不同的分配规则(11)的编码器(1)。

11.根据权利要求9至10中任一项所述的ki模块(5),其中针对所述knn(50)的不同的层(51-53),设置具有将区间标志符(12a-12d)分配到数值(4)的不同的分配规则(21)的解码器(2)。

12.根据权利要求9至11中任一项所述的ki模块(5),其中所述神经元(54)利用被构造用于定点数或整数计算的计算单元(55)来实现。

13.用于制造根据权利要求9至12中任一项所述的ki模块(5)的方法(100),所述方法具有如下步骤:

•借助于针对输入数据的学习数据组(6a)和所属的学习输出(6b)来训练(110)在所述ki模块(5)中的knn(50)的权重(51a-53a),使得所述knn(5)针对所述学习数据组(6a)分别提供输出(7),所述输出根据误差函数足够好地对应于所属的学习输出(6b);

•依据针对所述输入数据的数据组(6c)来确定(120):在所述knn(50)的至少一个层(51-53)中形成的激活(51b-53b)和/或结果(51c-53c)处在哪个值域(43)内;

•以这种方式确定的值域(43)和/或在所述训练(110)时确定的权重(51a-53a)所处的值域(43)被规定(130)为用于所述ki模块(5)的至少一个编码器(1)的值域(43)。

14.根据权利要求9至12中任一项所述的ki模块(5)用于语音识别、对象识别、线估计、自我线估计、欺诈识别、面部识别和/或从以物理方式记录的测量数据中的语义分割的应用。

15.计算机程序,所述计算机程序包含机器可读指令,当所述机器可读指令在计算机上和/或在嵌入式系统上被实施时,所述机器可读指令使所述计算机和/或所述嵌入式系统升级成根据权利要求1至5中任一项所述的编码器(1)和/或升级成根据权利要求6至8中任一项所述的解码器(2),和/或促使所述计算机或所述嵌入式系统实施根据权利要求13所述的方法(100)。

技术总结
编码器,该编码器能与数据存储器连接并且被构造用于将数值存储在数据存储器中,这些数值处在预先给定的最小值与预先给定的最大值之间的值域内,其中编码器包含如下分配规则,该值域根据分配规则被分成多个离散区间,而且其中编码器被构造为:将所要存储的数值放置到正好一个区间中并且输出区间的标志符,其中区间在数值的尺度上不一样宽。用于数值的解码器,这些数值利用根据权利要求1至5中任一项所述的编码器被存储在数据存储器中,该解码器被构造为:根据分配规则,给从数据存储器中调用的离散区间的标志符分配属于区间的固定数值并且输出属于区间的固定数值。具有KNN、编码器和解码器的KI模块。用于制造KI模块的方法。所属的计算机程序。

技术研发人员:J.M.克勒;R.M.克勒
受保护的技术使用者:罗伯特·博世有限公司
技术研发日:2019.11.29
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-15890.html

最新回复(0)