数据批量标准化方法、计算设备和计算机可读存储介质与流程

文档序号:25366769发布日期:2021-06-08 16:15阅读:119来源:国知局
数据批量标准化方法、计算设备和计算机可读存储介质与流程

1.本发明概括而言涉及深度神经网络计算领域,更具体地,涉及一种数据批量标准化方法、计算设备和计算机可读存储介质。


背景技术:

2.深度神经网络(dnn)是一种包含多个隐藏层(中间层)的神经网络。当前,深度神经网络已经广泛应用于语音识别、图像识别等领域。在这些领域中,可以利用预先获取的语音样本、图像样本等对深度神经网络进行训练,以得到相应的训练后的神经网络模型。该训练后的神经网络模型可以用于对新的语音数据或者图像数据进行识别。
3.深度神经网络的训练是一个复杂的过程,网络的前面层的微小的改变都会累积放大到后面的层,从而前面层训练参数的更新将导致后面层输入数据分布的变化,也称为输入分布漂移(internal covariate shift),这使得模型训练起来特别困难,收敛速度很慢,并且容易出现梯度消失的问题。
4.为此,在深度神经网络中引入了批量标准化(batch normalization,bn)的概念,其中在对每一层的输入数据进行处理之前,首先对这些输入数据进行批量标准化。bn算法可以将输入数据的特征强制性地变换到均值为0、方差为1的数学模型下。这样,一方面,每一层的数据的分布是相同的,训练会比较容易收敛,另一方面,均值为0、方差为1的状态下,在梯度计算时会产生比较大的梯度值,可以加快参数的训练。这样还可以很好的控制梯度爆炸和梯度消失现象。
5.当前的bn算法在每一层处理时,需要遍历每一批次(batch)的所有数据(下文称为批量输入数据),计算该批量输入数据的方差和均值,然后进行批量标准化操作。由于该方法需要遍历每个批次的所有数据,随着机器学习的模型越来越大,单个批次的数据往往超过了显卡缓存的大小(一般仅有几m字节)。因此bn算子运算过程中,缓存的命中率较低,需要从内存中导入数据,这进一步导致了额外的开销。
6.此外,bn操作是训练过程中的主要耗时模块之一,尤其是,中间层的层数越多(例如,对于用于图像识别的深度神经网络来说,中间层的层数经常会超过20层),bn消耗的时间将越多。在一些典型的网络结构(如resnet、densenet等)中,bn操作耗费的时间约为整个训练过程的1/3。


技术实现要素:

7.针对上述问题中的至少一个,本发明提供了一种数据批量标准化方法,其通过对批量输入数据进行通道分组置换,使得仅利用原始的批量输入数据的一个子集即可获得较为准确的均值和方差的估计值,从而对该原始的批量输入数据进行批量标准化。
8.根据本发明的一个方面,提供了一种用于深度神经网络的数据批量标准化方法。该方法包括:接收批量输入数据,其中所述批量输入数据具有多个维度,所述多个维度包括通道维度,用于指示所述批量输入数据的通道数;将所述批量输入数据的通道维度转换为
组维度和子通道维度的组合;对所述组维度和所述子通道维度进行转置以获得所述批量输入数据的转置输入数据;从所述转置输入数据中去除所述组维度以获得所述批量输入数据的降维输入数据;以及基于所述降维输入数据确定所述子通道维度指示的每个子通道的均值和方差。
9.根据本发明的另一个方面,提供了一种计算设备。该计算设备包括:至少一个处理器;以及至少一个存储器,该至少一个存储器被耦合到该至少一个处理器并且存储用于由该至少一个处理器执行的指令,该指令当由该至少一个处理器执行时,使得该计算设备执行根据上述方法的步骤。
10.根据本发明的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码在被运行时执行如上所述的方法。
11.利用本发明的方案,一方面,通过使用批量输入数据的一个子集来获得该批量输入数据的均值和方差的估计值,使得bn操作的数据处理量降低,从而耗时减少。另一方面,通过尽可能利用处于同一位置(如同一显卡缓存)的批量输入数据的子集来对该批量输入数据的均值和方差进行估计,提高了显卡缓存的命中率,进一步降低了资源开销。
附图说明
12.通过参考下列附图所给出的本发明的具体实施方式的描述,将更好地理解本发明,并且本发明的其他目的、细节、特点和优点将变得更加显而易见。
13.图1示出了根据现有技术的深度神经网络的结构示意图。
14.图2示出了根据现有技术的卷积神经网络的结构示意图。
15.图3示出了用于实现根据本发明的实施例的数据批量标准化方法的计算设备的示意图。
16.图4示出了根据本发明实施例的数据批量标准化方法的流程图。
17.图5示出了适合实现本发明的实施例的计算设备的结构方框图。
具体实施方式
18.下面将参照附图更详细地描述本发明的优选实施例。虽然附图中显示了本发明的优选实施例,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
19.在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一些实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。
20.图1示出了根据现有技术的深度神经网络100的结构示意图。如图1中所示,深度神经网络100可以包括输入层110、多个隐藏层120和输出层130。其中每个层与其相邻的层是全连接的,即,该层的任何一个神经元均与其相邻层的任何一个神经元相连。在深度神经网络100中,在每个层的处理之前,可以对该层的输入数据进行批量标准化处理以使得输入数据符合正态分布。
21.图2示出了根据现有技术的卷积神经网络200的结构示意图。卷积神经网络200的结构与深度神经网络100类似,其是深度神经网络100的一种特殊形式。如图2中所示,卷积神经网络200可以包括输入层210、多个由卷积层220、激励层230和池化层240构成的隐藏层,以及一个作为输出层的全连接层250。
22.图3示出了用于实现根据本发明的实施例的数据批量标准化方法的计算设备30的示意图。如图3中所示,计算设备30可以包括至少一个处理器310和与该至少一个处理器310耦合的至少一个存储器320,该存储器320中存储有可由该至少一个处理器310执行的指令330,该指令330在被该至少一个处理器310执行时执行如下所述的方法400的至少一部分。具体地,存储器320中存储的指令330可以包括构建如上结合图1所示的深度神经网络100或者图2所示的卷积神经网络200的指令代码,以在运行时执行如下结合图4所述的数据批量标准化方法400。计算设备30的具体结构例如可以如下结合图5所述。
23.图4示出了根据本发明实施例的数据批量标准化方法400的流程图。
24.如图4中所示,在步骤410,计算设备30接收批量输入数据x。步骤410可以在图1所示的深度神经网络100的输入层110或者隐藏层120处执行,或者在图2所示的卷积神经网络200的输入层210或激励层230处执行。在输入层110或210处,批量输入数据x可以是待训练的原始样本数据(如语音样本数据或图像样本数据)的特征张量,也可以是待识别的语音数据或图像数据(例如在深度神经网络100或卷积神经网络200被训练之后)的特征张量。在每个隐藏层120或激励层230处,批量输入数据x可以是前一层(如前一隐藏层120或卷积层220)处理产生的张量数据,并且用于在隐藏层120或激励层230进行进一步处理。
25.批量输入数据x可以具有多个维度,并且其中一个维度是通道维度,用于指示该批量输入数据x的通道数。
26.在一种实施例中,每一层的输入数据可以表示为高度和宽度分别为h和w(例如以像素为单位)、通道数为c的图像数据,并且每个批次的输入数据(即批量输入数据x)包括n个输入数据,则该批量输入数据x可以使用四个维度(高度h、宽度w、数量n、通道数c)来表示,即批量输入数据x∈r
n
×
h
×
w
×
c
,其中r表示实数空间。
27.例如,对于深度神经网络100或卷积神经网络200来说,其原始输入数据(输入层110或210)可以是rgb格式的图像数据,每个图像数据的特征张量(tensor)可以表示为一个三维张量,其由高度h和宽度w构成的二维坐标以及通道数为3(即红色、绿色、蓝色各一个通道)的通道维度构成。这样,每个图像的张量数据可以表示为高度维度、宽度维度和通道维度表示的三维坐标x=(i
h
,i
w
,i
c
),其中h∈h,w∈w,c∈c。
28.又例如,该原始输入数据也可以是cmyk格式的图像数据,在这种情况下,每个图像数据的特征张量的通道数为4(即青色、洋红色、黄色、黑色各一个通道),该图像的张量数据可以类似地表示为如上所述的三维坐标。
29.在深度神经网络100的隐藏层120或卷积神经网络200的激励层230,取决于网络结构,输入数据的通道数c有可能很大(例如为128),从而造成在该层的每个输入图像数据的数据量很大,并且当输入图像数据的数据量n也很大时,该批量输入数据x的大小将使得直接进行bn操作会消耗非常多的处理时间。
30.接下来,在步骤420,计算设备30可以将该批量输入数据x的通道维度转换为组维度和子通道维度的组合。
31.具体地,计算设备30可以将通道维度的通道数c拆分为多个组,如g个组。在一种实施例中,每个组可以包含不同的子通道数。例如,在预先知道批量输入数据的缓存分布的情况下,可以根据缓存分布将批量输入数据x的通道数c拆分为多个组,每个组的子通道数可以不同。
32.在另一种实施例中,每个组可以包含相同的子通道数,例如表示为k,即c=g*k。通过使得每个组包含相同的子通道数,可以选择其中的一组输入数据来对批量输入数据x的均值和方差进行估计。由于各组输入数据的数据量相同,因此均值和方差的估计值可以几乎不受所选择的输入数据的组的影响。在本发明的以下描述中,在不特别说明的情况下,每个组包含相同的子通道数。
33.在一些实施例中,在步骤420中,计算设备30可以基于组数量g和子通道数k将批量输入数据x的通道维度数据转换为以组维度和子通道维度表示的二维数据。其中,组维度指示该通道维度数据在该g个组中所属的组,子通道维度指示该通道维度数据在所属的组中所属的子通道。
34.通过将通道维度拆分为组维度和子通道维度,该批量输入数据x的维度增加了一,这样,批量输入数据x可以表示为x':
35.x'∈r
n
×
h
×
w
×
g
×
k

36.批量输入数据x中的每个输入数据x可以表示为x'=(i
h
,i
w
,i
g
,i
k
),其中g∈g,k∈k。也就是说,每个输入数据x可以由其高度维度h上的坐标值i
h
、宽度维度w上的坐标值i
w
、组维度g上的坐标值i
g
(即所属的组g)以及子通道维度k上的坐标值i
k
(即在所属的组g中的子通道k)来表示。
37.接下来,在子步骤430,计算设备30对转换后的批量输入数据x'的组维度和子通道维度进行转置以获得该批量输入数据x的转置输入数据x”:
38.x”∈r
n
×
h
×
w
×
k
×
g

39.这样,批量输入数据x中的每个输入数据x可以表示为其转置形式:x”=(i
h
,i
w
,i
k
,i
g
)。
40.在步骤440,计算设备30从转置输入数据x”中去除组维度g以获得批量输入数据x的降维输入数据z:
41.z∈r
n
×
h
×
w
×
k

42.这样,降维输入数据z中的每个输入数据z可以利用高度维度h、宽度维度w和子通道维度k来表示,例如,输入数据z可以表示为:
43.z=(i
h
,i
w
,i
k
)。
44.通过这种方式,得到的降维输入数据z的数据量变为批量输入数据x的数据量的1/g。
45.在一种实施例中,降维输入数据z可以是g个组中的任一组的输入数据。
46.在另一种实施例中,降维输入数据z可以是从g个组中选择的一组输入数据。如前所述,在可以配置缓存分布的情况下,计算设备30可以为批量输入数据x和/或降维输入数据z分配最便于访问的缓存,例如分配在计算设备30本地的同一缓存或相邻缓存上。更具体地,可以选择g个组中的第一组作为该降维输入数据z。例如,在批量输入数据x在系统中顺序存储的情况下,这样选择的降维输入数据z将是常规bn操作时最早访问的输入数据,因此
其数据访问的时间消耗将非常低。
47.接下来,在步骤450,计算设备30可以基于该降维输入数据z确定子通道维度指示的每个子通道的均值和方差。
48.例如,该降维输入数据z在子通道i(i=1,2,
……
k)的均值μ
i
和方差σ
i
可以分别通过如下公式(1)和公式(2)计算得到:
[0049][0050][0051]
其中,m=n*h*w/g,表示降维输入数据z的数据量,并且z
j
∈z,表示降维输入数据z的m个数据中的第j个数据(j=1,2,
……
m)。
[0052]
可以看出,对于每个通道而言,在传统的bn操作中,其需要遍历的数据量为n=n*h*w,而在根据本发明的bn操作中,其需要遍历的数据量为m=n*h*w/g=n/g。
[0053]
至此,通过对批量输入数据x的通道维度数据进行分组置换,使得可以基于该批量输入数据的一个子集确定一个子通道的均值和方差,该均值和方差可以作为批量输入数据x在对应通道的均值和方差的估计值。
[0054]
进一步地,方法400还可以包括标准化步骤,其中计算设备30基于步骤450确定的每个子通道的均值和方差对批量输入数据x进行标准化。
[0055]
例如,可以利用下列公式(3)对批量输入数据x中的输入数据x
j
(j=1,2,
……
n)进行标准化以得到标准化的输入数据x'
j

[0056][0057]
这样,在经过上述批量标准化操作之后,标准化后的批量输入数据x的分布基本上满足均值为0,方差为1,即大部分的标准化的输入数据x'
j
落入非线性函数的线性区内,其对应的导数远离导数饱和区,从而使得后续的激活操作的导数值增大,加速训练收敛过程。
[0058]
然而,上述批量标准化的效果基本相当于把非线性函数替换成线性函数,在多层线性函数变换的情况下这将失去意义,从而网络的表达能力下降。因此,为了保证非线性的获得,可以继续对上述标准化后的输入数据x'
j
进行缩放和平移操作,以产生标准化的输入数据x'
j
的非线性版本作为该批量标准化操作的最终输出数据,即下一隐藏层120或激励层230的实际输入数据。例如,可以通过如下的公式(4)来获得标准化的输入数据x'
j
的非线性版本:
[0059]
y

j
=γx

j
+β,
ꢀꢀꢀ
(4)
[0060]
其中ε是一个很小的正值(例如为1.0e
‑5),用于防止标准化时分母坍塌,γ是缩放变量,β是平移变量,缩放变量γ和平移变量β用于保证每一次数据经过标准化后还保留原有学习来的特征,同时又能完成标准化操作,加速训练,它们是深度神经网络100或卷积神经网络200训练过程中需要学习的参数之一。
[0061]
在对批量输入数据x中的每个输入数据都进行了上述标准化操作之后,可以利用
标准化的批量输入数据或其非线性版本执行深度神经网络100或卷积神经网络200的各个层的处理。例如,在卷积神经网络200的激励层230,可以对上述标准化的批量输入数据或其非线性版本施加激励函数(例如施加sigmoid或relu函数)。
[0062]
和传统的批量标准化方法相比,本发明提出的改进的批量标准化方法仅需读取部分数据,数据的局域性很好,可以在保持精度基本不变的情况下显著减少bn的操作时间。更具体地,通过如步骤420所述的通道分组操作提高了采样数据的局域性,显著减少了bn采样数量,这将大大节省计算时间。例如在分组数为16的情况下,时间复杂度将降低为传统的批量标准化方法的6.7%。并且通过选择合适的分组数,可以让采样数据小于显卡缓存的大小,这样会使得缓存的命中率大幅提高,将进一步减少数据访问的时间。另一方面,通过如步骤430所述的置换操作,可以确保处理精度基本不变,对整个训练和推理过程基本不产生影响。
[0063]
图5示出了适合实现本发明的实施例的计算设备500的结构方框图。计算设备500例如可以是如上所述的计算设备30。
[0064]
如图5中所示,计算设备500可以包括一个或多个中央处理单元(cpu)510(图中仅示意性地示出了一个),其可以根据存储在只读存储器(rom)520中的计算机程序指令或者从存储单元580加载到随机访问存储器(ram)530中的计算机程序指令,来执行各种适当的动作和处理。在ram 530中,还可存储计算设备500操作所需的各种程序和数据。cpu 510、rom 520以及ram 530通过总线540彼此相连。输入/输出(i/o)接口550也连接至总线540。
[0065]
计算设备500中的多个部件连接至i/o接口550,包括:输入单元560,例如键盘、鼠标等;输出单元570,例如各种类型的显示器、扬声器等;存储单元580,例如磁盘、光盘等;以及通信单元590,例如网卡、调制解调器、无线通信收发机等。通信单元590允许计算设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0066]
上文所描述的方法400例如可由计算设备500(如计算设备30)的cpu 510执行。例如,在一些实施例中,方法400可被实现为计算机软件程序,其被有形地包括于机器可读介质,例如存储单元580。在一些实施例中,计算机程序的部分或者全部可以经由rom 520和/或通信单元590而被载入和/或安装到计算设备500上。当计算机程序被加载到ram 530并由cpu 510执行时,可以执行上文描述的方法100的一个或多个操作。此外,通信单元590可以支持有线或无线通信功能。
[0067]
本领域技术人员可以理解,图5所示的计算设备500仅是示意性的。在一些实施例中,计算设备30可以包含比计算设备500更多或更少的部件。
[0068]
以上结合附图对根据本发明的批量标准化方法400以及可用作计算设备30的计算设备500进行了描述。然而本领域技术人员可以理解,方法400的步骤的执行并不局限于图中所示和以上所述的顺序,而是可以以任何其他合理的顺序来执行。此外,计算设备500也不必须包括图5中所示的所有组件,其可以仅仅包括执行本发明中所述的功能所必须的其中一些组件,并且这些组件的连接方式也不局限于图中所示的形式。
[0069]
本发明可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。
[0070]
在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本发明所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码
存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。
[0071]
本文公开的装置的各个单元可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件,如处理器上。例如,可以用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本发明所描述的各种示例性的逻辑块、模块和电路。
[0072]
本领域普通技术人员还应当理解,结合本发明的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。
[0073]
本发明的以上描述用于使本领域的任何普通技术人员能够实现或使用本发明。对于本领域普通技术人员来说,本发明的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本发明的精神和保护范围的情况下应用于其它变形。因此,本发明并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1