信息处理装置和方法以及存储信息处理程序的记录介质
文献发布时间:2023-06-19 10:16:30
技术领域
本文讨论的实施方式涉及信息处理装置、信息处理方法以及存储信息处理程序的记录介质。
背景技术
与使用浮点数进行算术运算的情况相比,通过量化在神经网络中使用的变量并对其执行算术运算,减少了算术运算的量,并且减少了所使用的存储器的量。例如,提出了一种方法,其中基于通过预训练生成的浮点变量的每个通道的统计部分来确定每个通道的变量的定点表示(例如,参见日本公开特许公报第2019-32833号)。另外,提出了一种方法,其中累积用于神经网络的算术运算的定点权重的更新值,并且当累积值等于或大于阈值时,通过使用累积的更新值来更新权重(例如,参见日本公开特许公报第2019-79535号)。
提出了一种方法,其中,对神经网络的卷积运算之后的池化处理的处理结果进行整合以计算平均值和标准偏差,并且通过使用所计算的平均值和标准偏差,使池化处理的结果经受下一层的算术运算中的归一化处理(例如,参见日本公开特许公报第2017-156941号)。
例如,公开了日本公开特许公报第2019-32833号、第2019-79535号、第2017-156941号等。
发明内容
[技术问题]
当量化在神经网络中使用的变量时,减少了算术运算的量和所使用的存储器的量,并且缩短了计算时间。然而,神经网络的计算的准确度降低。当计算的准确度降低时,神经网络的学习的准确度降低,并且例如,在学习之后使用神经网络的推断处理中,识别率可能劣化。
在一个方面,本公开内容的目的是减少在使用量化的变量进行神经网络的计算的情况下识别率的劣化。
[问题的解决方案]
根据实施方式的一方面,一种信息处理装置包括:位范围确定单元,其被配置成针对在神经网络中使用的多种类型的变量中的至少一种类型的变量在量化之后确定多个位范围;识别率计算单元,其被配置成通过使用多个变量组中的每一个来计算神经网络的多个识别率,所述多个变量组包括多种类型的变量并且其中多种类型的变量中的至少一种类型的变量的位范围不同;以及变量确定单元,其被配置成确定使用多个变量组中的下述变量组来计算神经网络,所述变量组具有多个所计算的识别率中的最大识别率。
附图说明
图1是示出根据实施方式的信息处理装置的示例的框图;
图2是示出神经网络的概要的说明图;
图3是示出通过使用定点的数值表示的示例的说明图;
图4是示出图1中的位范围确定单元的操作的示例的说明图;
图5是示出通过图1所示的信息处理装置进行的神经网络的学习的概要的说明图;
图6是示出通过图1所示的信息处理装置进行的神经网络的学习的示例的流程图;
图7是示出当执行神经网络的学习时识别率的转变的示例的说明图;
图8是示出根据另一实施方式的信息处理装置的示例的框图;
图9是示出图8中的统计信息获取单元和位范围确定单元的操作的示例的说明图;
图10是示出通过图8所示的信息处理装置进行的神经网络的学习的概要的说明图;
图11是示出通过图8所示的信息处理装置进行的神经网络的学习的示例的流程图;
图12是示出根据另一实施方式的信息处理装置的示例的框图;以及
图13是示出由图12中的量化误差计算单元计算量化误差的示例的说明图。
[本发明的有利效果]
在一个方面,可以减少在使用量化的变量进行神经网络的计算时识别率的劣化。
具体实施方式
在下文中,参照附图描述实施方式。
图1示出了根据实施方式的信息处理装置的示例。图1所示的信息处理装置100用于例如使用神经网络进行的图像处理等的学习或推断。
信息处理装置100包括经由通信总线40彼此耦接的中央处理单元(CPU)10、存储器20以及加速器30。信息处理装置100可以包括另一处理器来代替CPU 10。信息处理装置100可以包括除了附图中所示的那些元件之外的元件,并且信息处理装置100可以不包括加速器30,并且可以使CPU 10执行要由加速器30执行的计算处理。
CPU 10包括位范围确定单元12、识别率计算单元14和变量确定单元16。CPU 10还包括算术单元(未示出)。在图1中,位范围确定单元12、识别率计算单元14和变量确定单元16通过CPU 10执行存储在存储器20中的信息处理程序来实现。
位范围确定单元12、识别率计算单元14和变量确定单元16中的至少一个可以由硬件实现。在这种情况下,位范围确定单元12、识别率计算单元14和变量确定单元16可以不包括在CPU 10中,而是包括在现场可编程门阵列(FPGA)、专用集成电路(ASIC)等(未示出)中。
位范围确定单元12针对在神经网络中使用的多种类型变量中的至少一种变量在量化时确定多个位范围。例如,多种类型的变量包括权重、激励(activity)和梯度。
识别率计算单元14通过使用包括多种类型的变量并且变量具有不同的位范围的多个变量组中的每一个来使加速器30执行神经网络的学习,并且计算神经网络中的每个识别率。多个变量组中的每一个包括针对其确定了多个位范围的确定目标变量的多个位范围中的任一个。例如,多个变量组的每一个中所包括的确定目标变量中的至少一个具有彼此不同的位范围。
变量确定单元16确定使用具有由识别率计算单元14计算的多个识别率中的最大识别率的变量组以用于神经网络的后续学习。稍后将描述位范围确定单元12、识别率计算单元14和变量确定单元16的操作的示例。
存储器20存储各种程序,例如操作系统(OS)、应用程序和信息处理程序,并且还存储要在神经网络处理中使用的数据、变量等。当位范围确定单元12、识别率计算单元14和变量确定单元16通过由CPU 10执行的信息处理程序实现时,存储器20存储该信息处理程序。
加速器30是例如图形处理单元(GPU)、数字信号处理器(DSP)或用于深度学习的专用处理器,并且能够执行神经网络的计算。例如,加速器30可以包括大量定点算术单元(未示出),并且可以不包括浮点算术单元。加速器30可以包括未示出的大量定点算术单元和大量浮点算术单元。
图2示出了神经网络的概要。图2所示的神经网络是在输入层与输出层之间包括多个隐藏层的深度神经网络。隐藏层的示例包括卷积层、池化层、全连接层等。在每层中示出的圆圈指示节点,每个节点执行预定计算。
例如,信息处理装置100将包括在小批量中的多个学习数据(输入数据)中的每一个输入至输入层,并且顺序地执行卷积层、池化层等的计算,从而执行前向传播处理,其中,通过算术运算获得的信息被顺序地从输入侧传送至输出侧。小批量通过将用于学习的数据集(批量)划分成多个获得,并且小批量包括预定数量的输入数据(图像数据等)。例如,在卷积层中,作为来自前一层的输出数据(中间数据)的激励和预先准备的作为学习数据的权重经受卷积算术运算,并且作为通过卷积算术运算获得的输出数据的激励被输出作为下一层的输入数据。
在通过小批量执行前向传播处理之后,执行后向传播处理以计算梯度,以减小从输出层输出的输出数据与正确答案数据之间的差(例如,误差的平方和)。随后,基于后向传播处理的执行,进行更新变量例如权重的更新处理。例如,使用梯度下降法作为用于确定要用于后向传播处理的计算的权重的更新宽度的算法。例如,在更新变量之后,通过使用用于确定的数据操作神经网络来计算识别率(正确答案率)。
在下文中,在神经网络的计算中使用的权重、激励和梯度也被称为变量。通过在多个小批量的每一个中执行前向传播处理、后向传播处理和变量的更新处理,识别率逐渐增加,并且深度神经网络被优化。
图3示出了通过使用定点的数值表示的示例。在图3中,附图标记S指示符号位,并且黑色圆圈指示小数点位置。对于图3中左列中所示的,“a”指示定点数的位数,“b”指示小数部分的位数(例如,小数点位置)。
<8,3>指示定点数具有8位,其中,在除过符号位S的情况下,小数部分使用较低的3位,而整数部分使用较高的4位。<8,4>指示定点数具有8位,其中,在除过符号位S的情况下,小数部分使用较低的4位,而整数部分使用较高的3位。
<16,10>指示定点数具有16位,其中,在除过符号位S的情况下,小数部分使用较低的10位,而整数部分使用较高的5位。<16,12>指示定点数具有16位,其中,在除过符号位S的情况下,小数部分使用较低的12位,而整数部分使用较高的3位。
图4示出图1中的位范围确定单元12的操作的示例。图4中的(a)示出了要被输入至图2所示的神经网络的多个节点/从图2所示的神经网络的多个节点输出的任何变量(权重、激励和梯度)的位位置(有效位范围)。在图4的(a)中,所述变量取正值,并且示出为没有符号位。在定点数数据(正值)中,最高有效位是在符号位S侧(图3)“1”首次出现的位。
图4中的(a)可以是要被输入至由图2中的圆圈所指示的多个节点/从由图2中的圆圈所指示的多个节点输出的变量(权重、激励和梯度)中的任一个,或者可以是要被输入至节点之一/从节点之一输出的变量(权重、激励和梯度)中的任一个。图4的左侧指示高位侧,而图4的右侧指示低位侧。因此,认为其最高有效位位于左侧更远位置的变量具有较大的值。
从某个节点输出的中间数据(通过学习优化的激励、梯度或权重)是例如定点算术单元的算术运算结果,并且每当执行该节点的算术运算时,就将该中间数据存储在定点算术单元的累加器(例如,40位)中。假设初始权重具有预定的位数(8位、16位等)。
当初始权重或中间数据是浮点数数据时,浮点数数据被转换为40位或较少的定点数数据,导致图4中的(a)中所示的状态。到定点数数据的转换可以由CPU 10执行,或者可以由加速器30执行。
图4中的(b)是示出由位范围确定单元12确定的位范围的示例的图。例如,位范围确定单元12从具有大的值的变量的最高有效位侧起确定多个位范围(位范围1、位范围2和位范围3)。例如,每个位范围包括8位,但是可以包括其他数量的位,诸如6位、7位或10位。
此外,位范围确定单元12可以基于变量的最高有效位的分布来从分布的最高有效位侧起确定位范围1至位范围3。此时,位范围确定单元12可以基于变量的最高有效位的分布来从包括在分布的有效范围中的最高有效位侧起确定位范围1至3。
在图4的(b)中,位范围确定单元12确定三个位范围1至3,但是要确定的位范围的数量可以等于或大于二。尽管位范围1至3各自都偏移一个位,但是位范围的偏移的位的数量不限于一个。
例如,通过以值的大小的降序从分布中排除相对于变量的总数的预定比率的变量来设置分布的有效范围。与不使用最高有效位的分布的情况相比,通过基于变量的最高有效位的分布来确定多个位范围,可以减少相对于量化前的原始变量(例如,浮点型)的量化误差。作为结果,可以减少通过神经网络的学习获得的识别率的劣化。
通过在最高有效位的分布的有效范围内从分布的最高有效位侧起确定多个位范围,可以通过使用在分布中变量的出现频率高的区域来确定多个位范围。作为结果,在神经网络的计算中,可以减少使用量化的变量的情况与使用量化前的原始变量的情况之间的误差,并且还可以在抑制准确度降低的同时执行学习。这使得可以减少识别率的劣化。
当将变量量化到位范围中时,信息处理装置100进行饱和处理和舍入处理,在饱和处理中,相对于位范围的最高有效位的较高侧的位被取到位范围中,在舍入处理中,相对于位范围的最低有效位的较低侧的位被取到位范围中。
当位范围确定单元12基于变量的最高有效位的分布来确定位范围时,信息处理装置100可以包括被配置成获取变量的最高有效位的分布的统计信息获取单元。在这种情况下,统计信息获取单元可以获取多个位范围中的仅确定目标变量的最高有效位的分布。
当变量被量化到多个位范围中时,位范围确定单元12可以按照量化误差的升序来确定多个位范围。在这种情况下,信息处理装置100可以包括量化误差计算单元,量化误差计算单元被配置成计算当变量被量化到多个位范围中时的量化误差。量化误差计算单元可以针对多个位范围中的仅确定目标变量计算量化误差。
图5示出了由图1所示的信息处理装置100进行的神经网络的学习的概要。在图5中,位范围确定单元12基于预先获取的定点数类型变量的最高有效位的分布针对在神经网络中使用的权重、激励和梯度中的每一个确定多个位范围。
在图5所示的示例中,权重被确定为在位范围1和位范围2中,激励被确定为在位范围1和位范围2中,并且梯度被确定为在位范围1、位范围2和位范围3中。权重、激励和梯度的位范围1可以彼此相同,或者可以彼此不同。类似地,权重、激励和梯度的位范围2可以彼此相同或不同。
识别率计算单元14通过组合由位范围确定单元12确定的每个变量的位范围生成多个变量组。图5中所示的变量组的权重、激励和梯度的编号是指示位范围的位范围编号。可以由CPU 10的另一个功能单元执行变量组的生成。识别率计算单元14针对多个变量组中的每一个使用在该变量组中所选择的位范围的变量在CPU 10的控制下基于由加速器30执行的学习来计算识别率。可以通过使用用于评估的数据来计算识别率。变量确定单元16将具有在由识别率计算单元14计算的多个识别率中的最大识别率的变量组确定为要用于后续学习的变量组。
图5示出了其中位范围确定单元12基于分别在神经网络中包括的多个层中使用的多个权重(或激励、梯度)的整体分布来确定位范围的示例。然而,位范围确定单元12可以基于在预定数量的层中使用的多个权重(或激励、梯度)的分布来确定位范围。例如,当存在两个权重分布时,针对两个分布中的每一个确定多个位范围。在这种情况下,变量组的数量变为24,这是图5中的数量的两倍。变量组的数量随着分布的数量的增加而增加。
图6示出了由图1所示的信息处理装置100进行的神经网络的学习的示例。图6中所示的处理通过CPU 10执行信息处理程序来实现。例如,图6示出了用于信息处理装置100的控制方法和用于信息处理装置100的控制程序的示例。在图6中,重复执行包括组确定时段中的操作(步骤S12至S18)和学习执行时段中的操作(步骤S20和S22)的学习周期,直到预定数据集的学习完成(直到获得预定识别率)。
学习执行时段是计算执行时段的示例,在该计算执行时段中使用在组确定时段中确定的变量组来执行神经网络的计算。执行组确定时段中的操作和学习执行时段中的操作的学习周期是计算周期的示例,并且对应于例如预定的时期数。一个时期指示对应于由用户输入的数据集的一次学习。
首先,在步骤S10中,信息处理装置100针对每个变量确定多个位范围。步骤S10中的处理由位范围确定单元12执行。接下来,在步骤S12中,信息处理装置100选择包括针对每个变量的多个位范围中的任一个的一个变量组。步骤S12中的处理由识别率计算单元14或CPU 10的另一功能单元执行。
接下来,在步骤S14中,信息处理装置100使用根据与所选择的变量组相对应的位范围量化的每个变量来执行神经网络的学习,并且计算识别率。由识别率计算单元14执行步骤S12中的处理。
接下来,在步骤S16中,信息处理装置100确定使用所有变量组的变量的神经网络的学习是否完成。当使用所有变量组的变量的学习完成时,处理进行至步骤S18。当存在尚未用于学习的变量组时,处理返回至步骤S12,以使用尚未用于学习的变量组的变量来执行学习。
在信息处理装置100预先识别出在多个变量组中存在具有相似识别率的若干变量组的情况下,信息处理装置100可以通过使用具有相似识别率的变量组中的任一个作为代表来执行学习。在这种情况下,可以减少学习的次数,使得可以减少学习时间。
如图5中所描述的,当基于在预定数量的层中使用的多个权重(或激励、梯度)的分布来确定位范围时,变量组的数量随着分布的数量增加而增加。因此,随着分布的数量增加,在多个变量组的学习中消耗的学习时间增加。因此,当分布的数量变得大于预设数量时,信息处理装置100可以限制用于学习的变量组的数量。可以通过随机选择分布来进行变量组的数量的限制,或者可以通过基于通过过去的学习所获得的识别率从学习中排除其识别率预计低于其他组的变量组来进行变量组的数量的限制。
接下来,在步骤S18中,信息处理装置100确定使用具有在步骤S14中计算的多个识别率中的最大识别率的变量组以用于随后的学习。步骤S18中的处理由变量确定单元16执行。接下来,在步骤S20中,信息处理装置100使用在步骤S18中确定的变量组的变量来在学习执行时段中执行学习。
接下来,在步骤S22中,例如,当信息处理装置100已经执行了与由用户输入的数据集对应的学习(一个时期)达预定次数时,图6中所示的处理结束。在学习没有执行预定次数的情况下,信息处理装置100使处理返回至步骤S12,并且执行下一学习周期(组确定时段+学习执行时段)的操作。
在本实施方式中,在学习周期的前半部分中设置的组确定时段中,确定使用多个变量组中带来最大识别率的变量组,并且所确定的变量组用于在学习周期的后半部分中设置的学习执行时段的学习。作为结果,与学习周期被固定至一个变量组的同时重复执行学习周期的情况相比,可以提升提高识别率的可能性。另外,在多个学习周期中的每一个中,通过在学习执行时段之前确定具有最大识别率的变量组,与在每个学习执行时段中使用具有非最大识别率的变量组的情况相比,可以提升提高识别率的可能性。
图7示出了当执行神经网络的学习时识别率的转变的示例。例如,图7示出了通过使用作为数据集的类型的ImageNet来执行作为学习网络类型的resnet-50的学习的示例,其中,横轴指示学习次数的数量,而纵轴指示识别率。
如参照图5所描述的,信息处理装置100在每个学习周期的组确定时段中使用具有多种类型的变量的位范围的不同组合的多个变量组来执行学习,并且在学习执行时段中使用具有最大识别率的变量组来执行学习。作为结果,可以获得与在使用浮点型变量执行神经网络学习的情况下的识别率的转变(实线)接近的识别率的转变(粗实线),并且可以降低识别率劣化的可能性。即使当定点类型被用于变量时,也可以通过继续学习来逐渐提高识别率。
由于通过量化将浮点类型数据转换为定点类型数据,并且然后执行学习,所以缩短了计算时间,并且减少了存储器使用。因此,通过在使用其中多种类型的变量的位范围的组合不同的多个变量组(定点类型)的同时执行学习,可以在减少识别率的劣化的同时减少计算时间。
与之相比,如比较示例(虚线)所示,当针对每个定点类型变量使用一个位范围来执行神经网络的学习时(例如,使用一个变量组),即使当重复学习时,识别率也不会提高。当使用一个变量组执行神经网络的学习时,尽管存在学习周期(例如,预定时期学习次数),但是组确定时段和学习执行时段都不存在。
如上所述,在本实施方式中,信息处理装置100确定要用于神经网络的学习的每个变量的多个位范围,并且使用包括针对每个变量的多个位范围中的任一个的多个变量组来执行神经网络的学习。信息处理装置100通过使用具有在通过使用多个变量组中的每一个执行的神经网络的学习获得的多个识别率中的最大识别率的变量组来执行后续学习。通过使用具有比其他变量组的识别率高的识别率的变量组来执行神经网络的学习,与使用每个定点型变量的一个位范围来执行学习的情况相比,可以减少识别率的劣化。即使当定点类型被用于变量时,也可以通过继续学习来逐渐提高识别率。
信息处理装置100在学习周期的前半部分中设置的组确定时段中执行的学习中确定使用多个变量组中的带来最大识别率的变量组。信息处理装置100在学习周期的后半部分中设置的学习执行时段中使用所确定的变量组用于学习。作为结果,与在学习周期中学习被固定至一个变量组的同时执行学习的情况相比,可以提升提高识别率的可能性。
另外,在多个学习周期中的每一个中,通过在学习执行时段之前确定具有最大识别率的变量组,与在每个学习执行时段中使用具有非最大识别率的变量组的情况相比,可以提升提高识别率的可能性。如上所述,通过在使用包括定点型变量的多个变量组的同时执行学习,可以在减少识别率的劣化的同时减少计算时间。
与不使用最高有效位的分布的情况相比,通过基于定点型变量的最高有效位的分布从分布的最高有效位侧起确定多个位范围(量化位置),可以减少相对于量化前的原始变量的量化误差。作为结果,可以减少通过神经网络的学习获得的识别率的劣化。
通过在最高有效位的分布的有效范围内从分布的最高有效位侧起确定多个位范围,可以通过使用在分布中变量的出现频率高的区域来确定多个位范围。作为结果,在神经网络的计算中,可以减少使用量化的变量的情况与使用量化前的原始变量的情况之间的误差,并且还可以在抑制准确度降低的同时执行学习。这使得可以减少识别率的劣化。
图8示出了根据另一实施方式的信息处理装置的示例。与图1中所示的构成元件类似的构成元件由相同的附图标记表示,并且省略其详细描述。与图2至图7中的内容类似的内容的详细描述将被省略。图8所示的信息处理装置100A用于例如通过使用神经网络进行图像处理等的学习或推断,或者用于学习和推断两者。
例如,信息处理装置100A是服务器,并且包括经由通信总线40彼此耦接的CPU10A、存储器20、加速器30、辅助存储装置50、通信接口60以及输入和输出接口70。信息处理装置100A可以包括除了图示的构成元件之外的构成元件。
CPU 10A除了图1所示的CPU 10的配置之外,还包括统计信息获取单元11。统计信息获取单元11获取在图2所示的神经网络的计算中使用的每个变量(权重、激励、梯度)的统计信息。位范围确定单元12基于由统计信息获取单元11获取的统计信息来确定针对每个变量的多个位范围。
统计信息获取单元11、位范围确定单元12、识别率计算单元14以及变量确定单元16通过CPU 10A执行存储在存储器20中的信息处理程序来实现。统计信息获取单元11、位范围确定单元12、识别率计算单元14以及变量确定单元16中的至少一个可以由硬件实现。
辅助存储装置50存储CPU 10A要执行的各种程序,例如操作系统(OS)和信息处理程序,并且还存储数据和各种变量,例如用于神经网络的计算的权重等。例如,存储在辅助存储装置50中的程序被传送至存储器20并由CPU 10A执行。当执行神经网络的学习时,存储在辅助存储装置50中的用于神经网络的计算的数据和各种变量被从辅助存储装置50传送至存储器20。
通信接口60具有例如经由网络与其他信息处理装置等进行通信的功能。因此,可以使用多个信息处理装置来并行地执行神经网络的计算。输入和输出接口70具有从要耦接至信息处理装置100A的记录介质80输入数据和向记录介质80输出数据的功能。
例如,记录介质80是压缩盘(CD:注册商标)、数字多功能盘(DVD:注册商标)、通用串行总线(USB)存储器等,并且其中可以记录信息处理程序。记录在记录介质80中的信息处理程序经由输入和输出接口70被传送至辅助存储装置50,并且然后在存储器20上展开并由CPU 10A执行。
图9是示出图8所示的统计信息获取单元11和位范围确定单元12的操作的示例。图9的左侧指示高位侧,而图9的右侧指示低位侧。图9的左右两侧的虚线指示存储了定点运算单元的算术运算结果的累加器的位范围(例如,40位)。与图4中的(a)类似,图9中的(a)示出了向神经网络的多个节点输入/从神经网络的多个节点输出的变量(权重、激励和梯度)中的任一个。
图9中的(b)是示出作为由统计信息获取单元11获取的统计信息的示例的变量的最高有效位的分布的图。例如,针对在神经网络中使用的每个变量(权重、激励、梯度)获取变量的分布。在图9中,每个附图标记a(a1至a11)指示位位置(例如,变量的最高有效位的位置)。每个附图标记b(b1至b11)指示在每个位位置处变量的最高有效位的bin号。
位范围确定单元12基于变量的最高有效位的分布将多个位范围确定为量化范围(图9中的(c))。位范围确定单元12可以通过使用由统计信息获取单元11获取的每个变量的最大值的分布从分布的最高有效位侧起容易地确定多个位范围(量化位置)。
在该示例中,小数点设置在由附图标记a6指示的位位置与由附图标记a7指示的位位置之间。位范围1的量化范围被设置为<7,1>,位范围2的量化范围被设置为<7,2>,位范围3的量化范围被设置为<7,3>。位范围确定单元12可以从包括在有效范围中的最高有效位侧起确定位范围,该有效范围是通过按照值的大小的降序从分布中排除了相对于变量的总数的预定比率的变量而设置的。
例如,在分布中的最高有效位与位范围的最高有效位一致的位范围1中,CPU 10A对相对于位范围1的最低有效位的低侧的位进行舍入处理,并量化变量。另一方面,在位范围被包括在分布内的位范围2和位范围3中,CPU 10A对相对于位范围的最高有效位的高侧的位进行饱和处理,并对相对于位范围的最低有效位的低侧的位进行舍入处理,并量化变量。
图10示出了由图8所示的信息处理装置100A进行的神经网络的学习概要的图。本文将省略对与图5的内容相同的内容的详细说明。在图10中,为了便于理解说明,假定神经网络通过使用两个变量1和2(定点数数据)来执行学习,并且针对变量1和2中的每一个确定两个位范围1和2。
首先,在图10的(a)中,统计信息获取单元11获取变量1和2中的每一个的最高有效位的分布。接下来,在图10的(b)中,位范围确定单元12针对变量1和2的每一个从分布的最高有效位侧起确定位范围1和2。例如,对于变量2,位范围确定单元12在预先设置的分布的有效范围内从分布的最高有效位侧起确定位范围1和2。
接下来,在图10的(c)中,识别率计算单元14通过组合已由位范围确定单元12确定的变量1和2中的每一个的位范围1和2来生成多个变量组Gr(Gr1至Gr4)。接着,识别率计算单元14基于在使用变量组Gr的变量的同时执行的学习来计算每个变量组Gr的识别率。如图5所示,数值越小,识别率越高。
接下来,在图10的(d)中,变量确定单元16将具有由识别率计算单元14计算的多个识别率中的最大识别率(识别率1)的变量组Gr3确定为用于后续学习的变量组。
图11示出了由图8的信息处理装置100A进行的神经网络的学习的示例。本文将省略对与图6中示出的处理相同的处理的详细说明。图11类似于图6,除了在图6中的步骤S10之前增加了步骤S8。
在步骤S8中,信息处理装置100A获取在神经网络中使用的每种类型的变量(例如,权重、激励和梯度)的最高有效位的分布。步骤S8中的处理由统计信息获取单元11执行。在步骤S10中,信息处理装置100基于在步骤S8中获取的每种类型的变量的最高有效位的分布针对每个变量确定多个位范围。
当执行神经网络的学习时识别率的转变的示例与图7中的类似,并且在本实施方式中,还可以获得与当使用浮点型变量执行神经网络的学习时识别率的转变接近的识别率的转变。即使当定点类型被用于变量时,也可以通过继续学习来逐渐提高识别率。
因此,同样根据参照图8至图11描述的实施方式,可以获得与在参照图1至图7描述的实施方式中获得的效果类似的效果。例如,通过使用具有比其他变量组高的识别率的变量组来执行学习,可以减少在使用量化的变量执行神经网络的学习时识别率的劣化。
此外,在参照图8至图11描述的实施方式中,位范围确定单元12可以通过使用由统计信息获取单元11获取的每个变量的最大值的分布从分布的最高有效位侧起容易地确定多个位范围(量化位置)。
图12示出了根据另一实施方式的信息处理装置的示例。与图1和图8中所示的构成元件类似的构成元件由相同的附图标记表示,并且省略其详细描述。对与图2至图7和图9至图11中的内容类似的内容的详细描述将被省略。图12所示的信息处理装置100B例如用于通过使用神经网络进行图像处理等的学习或推断,或者用于学习和推断两者。
信息处理装置100B包括CPU 10B来代替图8中的CPU 10A。除了量化误差计算单元13被添加至CPU 10A之外,信息处理装置100B与图8中的信息处理装置100A相同。例如,CPU10B包括统计信息获取单元11、位范围确定单元12、识别率计算单元14、变量确定单元16以及量化误差计算单元13。统计信息获取单元11、位范围确定单元12、识别率计算单元14、变量确定单元16以及量化误差计算单元13通过CPU 10B执行存储在存储器20中的信息处理程序来实现。统计信息获取单元11、位范围确定单元12、识别率计算单元14、变量确定单元16以及量化误差计算单元13中的至少一个可以由硬件实现。
基于由统计信息获取单元11获取的每个变量的最高有效位的分布,量化误差计算单元13计算当在神经网络的学习中使用的每个变量的多个位范围中进行量化时的量化误差。例如,多个位范围的数量优选地大于由位范围确定单元12确定的多个位范围的数量。
位范围确定单元12针对在神经网络的学习中使用的每个变量按照由量化误差计算单元13计算的量化误差的升序从由统计信息获取单元11获取的最高有效位的分布的最高有效位侧起确定多个位范围。因此,位范围确定单元12不一定必须按顺序从分布的最高有效位侧起确定多个位范围。
图13是示出由图12中的量化误差计算单元13计算量化误差的示例。图13的左侧指示高位侧,而图13的右侧指示低位侧。本文将省略对与图4和图9中的内容类似的内容的详细描述。
与图4中的(a)和图9中的(a)类似,图13中的(a)示出了向神经网络的多个节点输入/从神经网络的多个节点输出的变量(权重、激励和梯度)中的任一个。与图9中的(b)类似,图13中的(b)示出了由统计信息获取单元11获取的变量的任一个的最高有效位的分布。
基于变量的最高有效位的分布,量化误差计算单元13计算在变量的位范围被设置成预定量化范围时的量化误差(图13中的(c))。在该示例中,量化范围被设置为<7,3>,但是量化误差计算单元13针对图9中所示的至少多个量化范围中的每一个来计算量化误差。
例如,通过对位于量化范围的最高有效位的左侧的位执行饱和处理并且对位于量化范围的最低有效位的右侧的位执行舍入处理来计算量化误差。在图13中的(c)所示的示例中,通过等式(1)来计算量化误差。量化误差=(a1·b1+a2·b2)-(a3·b1+a3·b2)+(a10·b10+a11·b11)-(a9·b10+a9·b11)(1)
在等式(1)中,“·”指示相乘,第一项和第二项指示饱和误差,并且第三项和第四项指示舍入误差。然后,例如,计算针对每个变量的所计算的量化误差的平均值,并且将其确定为要与阈值进行比较的量化误差。
在图13中的(c)中,使用图13中的(b)中的分布的图示来便于理解计算量化误差的方法,但是实际上,在图13中的(a)中的每个变量中,量化范围之外的位经受饱和处理和舍入处理。在图13中,量化误差计算单元13通过执行饱和处理和舍入处理二者来计算量化误差,但是也可以通过执行饱和处理或舍入处理来计算量化误差。
当执行神经网络的学习时识别率的转变的示例与图7中的类似,并且在本实施方式中,还可以获得与当使用浮点型变量执行神经网络的学习时识别率的转变接近的识别率的转变。即使当定点类型被用于变量时,也可以通过继续学习来逐渐提高识别率。
如上所述,同样在本实施方式中,以与上述实施方式同样的方式,通过使用具有比其他的变量组高的识别率的变量组来执行学习,可以降低在使用量化的变量执行神经网络的学习时识别率的劣化。此外,在本实施方式中,量化误差计算单元13计算量化误差,使得位范围确定单元12可以按照量化误差的升序来确定多个位范围。因此,在神经网络的计算中,可以减少使用量化的变量(定点型)的情况与使用量化前的原始变量(浮点型)的情况之间的误差,并且还可以在抑制准确度降低的同时执行学习。作为结果,可以进一步减少由于神经网络的学习而导致的识别率的劣化。
在上述实施方式中,描述了其中使用多个变量组来执行组确定时段中的学习并且使用具有通过学习获得的最大识别率的变量组来执行学习执行时段中的学习的示例。然而,在组学习时段中,也可以基于在使用多个变量组进行学习时的损失函数(训练损失或测试损失)来确定用于在学习执行时段中的学习的多个变量组。
在上述实施方式中,描述了使用包括针对每个变量的多个位范围中的任一个的多个变量组来执行组确定时段中的学习并且使用具有通过学习获得的最大识别率的变量组来执行学习执行时段中的学习的示例。然而,可以使用包括针对每个变量的多个位范围中的任一个的多个变量组来进行神经网络的推断,并且可以使用具有通过推断获得的最大识别率的变量组来进行后续的推断。
在这种情况下,例如,图6、图7和图11中的学习周期被改为推断周期,并且图6、图7和图11中的学习执行时段被改为推断执行时段。推断周期的长度根据要由推断系统执行的推断的对象设置成任何长度。此外,图1、图5、图6、图7、图10和图11中的“学习”被改为“推断”。
作为结果,同样在使用神经网络的推断中,可以获得与在使用具有通过使用多个变量组在组确定时段中执行学习获得的最大识别率的变量组在学习执行时段中执行学习的情况的效果相同的效果。例如,与使用浮点型变量来执行推断的情况相比,通过使用具有比其他变量组高的识别率的变量组来执行推断,可以减少在使用量化的变量执行神经网络的推断时的识别率的劣化。即使当定点类型被用于变量时,也可以通过继续推断来逐渐提高识别率。
在上述实施方式中,描述了针对在神经网络中使用的每种类型的变量确定多个位范围的示例。例如,描述了确定神经网络中使用的所有权重(或激励或梯度)所共有的多个位范围的示例。然而,例如,可以以神经网络的预定数量的层为单位针对每种类型的变量确定多个位范围。例如,可以针对在某一层中使用的权重(或激励或梯度)和在另一层中使用的权重(或激励或梯度)中的每一个来确定多个位范围。
可以针对在某一层中使用的权重(或激励或梯度)确定多个位范围,并且可以针对在另一层中使用的权重(或激励或梯度)确定一个位范围。例如,可以针对在神经网络中使用的权重和激励确定多个位范围,并且可以针对在神经网络中使用的梯度确定一个位范围。考虑计算负荷和过去学习对识别率的提高的效果来确定将多个位范围给予哪个变量。
进一步公开与图1至图13中描述的实施方式相关的以下补充附录。
(附录1)
一种包括处理器的信息处理装置,其中,
该处理器被配置成:
针对在神经网络中使用的多种类型的变量中的至少一种类型的变量在量化之后确定多个位范围;
通过使用多个变量组中的每一个来计算神经网络的识别率,所述多个变量组包括多种类型的变量并且其中多种类型的变量中的至少一种类型的变量的位范围不同;以及
确定使用具有多个计算出的识别率中的最大识别率的变量组来进行神经网络的计算。
(附录2)
根据附录1所述的信息处理装置,其中,
处理器以在多个计算周期中执行计算的方式执行神经网络的计算,所述多个计算周期中的每个计算周期包括组确定时段和计算执行时段,
在组确定时段内操作计算识别率并且确定具有最大识别率的变量组,以及
在多个计算周期中的每一个中使用在组确定时段中确定的变量组来执行计算执行时段中的计算。
(附录3)
根据附录1或2所述的信息处理装置,其中,
位范围的确定基于当多个位范围的确定目标变量由定点数表示时的最高有效位的分布从分布的最高有效位侧起确定多个位范围。
(附录4)
根据附录3所述的信息处理装置,其中,
位范围的确定在最高有效位的分布的有效范围内从分布的最高有效位侧起确定多个位范围。
(附录5)
根据附录3或4所述的信息处理装置,其中,
处理器计算当在多个位范围中量化多个位范围的确定目标变量时的量化误差中的每一个,以及
位范围的确定按照所计算的量化误差的升序从分布的最高有效位侧起确定多个位范围。
(附录6)
根据附录3至5中的任一项所述的信息处理装置,其中,
处理器获取在通过神经网络的计算而计算出的多种类型的变量中多个位范围的确定目标变量的最高有效位的分布。
(附录7)
根据附录1至6中的任一项所述的信息处理装置,其中,
处理器通过使用所确定的具有最大识别率的变量组来执行神经网络的学习。
(附录8)
根据附录7所述的信息处理装置,其中,
多种类型的变量包括权重、激励和梯度。
(附录9)
根据附录1至6中的任一项所述的信息处理装置,其中,
处理器通过使用所确定的具有最大识别率的变量组来执行神经网络的推断。
(附录10)
一种用于使包括在信息处理装置中的处理器执行处理的信息处理方法,所述处理包括:
针对在神经网络中使用的多种类型的变量中的至少一种类型的变量在量化之后确定多个位范围;
通过使用多个变量组中的每一个来计算神经网络的识别率,所述多个变量组包括多种类型的变量并且其中多种类型的变量中的至少一种类型的变量的位范围不同;以及
确定使用具有多个所计算的识别率中的最大识别率的变量组来进行神经网络的计算。
(附录11)
一种用于使包括在信息处理装置中的处理器执行处理的信息处理程序,所述处理包括:
针对在神经网络中使用的多种类型的变量中的至少一种类型的变量在量化之后确定多个位范围;
通过使用多个变量组中的每一个来计算神经网络的识别率,所述多个变量组包括多种类型的变量并且其中多种类型的变量中的至少一种类型的变量的位范围不同;以及
确定使用具有多个所计算的识别率中的最大识别率的变量组来进行神经网络的计算。
根据前述详细描述,实施方式的特征和优点将变得明显。在不脱离权利要求的精神和范围的情况下,权利要求的范围旨在覆盖如上所述的实施方式的特征和优点。本领域的任何普通技术人员可以容易地想到任何改进和改变。因此,不旨在将本发明的实施方式的范围限于上述内容,并且其可以从包含在实施方式所公开的范围内的适当修改和等同内容中得到。
- 信息处理装置、信息处理系统、信息处理方法、以及存储了信息处理程序的记录介质
- 信息处理系统、信息处理方法、信息处理程序、存储信息处理程序的计算机可读记录介质、数据结构、信息处理服务器和信息处理终端