结构化卷积和相关联加速的制作方法

文档序号:33172751发布日期:2023-02-04 02:54阅读:21来源:国知局
结构化卷积和相关联加速的制作方法
结构化卷积和相关联加速
1.相关申请的交叉引用
2.本技术要求于2020年6月2日提交的美国临时专利申请no.63/033,746、于2020年6月2日提交的美国临时专利申请no.63/033,751、以及于2021年6月1日提交的美国专利申请no.17/336,048的权益和优先权,其中每一件申请的全部内容通过援引纳入于此。
3.引言
4.本公开的各方面涉及机器学习模型。
5.机器学习可以产生经训练模型(例如,人工神经网络、树或其他结构),其表示对先验已知的训练数据集合的广义拟合。将经训练模型应用于新数据产生推断,这可被用于获得关于新数据的洞察。在一些情形中,将模型应用于新数据被描述为对新数据“运行推断”。
6.机器学习模型被越来越多地用于各种领域,包括用于分类、检测和识别任务。例如,机器学习模型正被用于基于由电子设备上的一个或多个机载传感器所提供的传感器数据在这些设备上执行复杂任务,诸如自动检测图像内的特征(例如,面部)。
7.广泛部署和采用机器学习模型的关键挑战在于其计算复杂度,这通常要求高功率计算系统。不太强大的计算系统(诸如移动设备、可穿戴设备、物联网(iot)设备、边缘处理设备等等)可能没有实现机器学习模型所必需的资源。
8.相应地,需要更高效的机器学习模型。
9.简要概述
10.某些方面提供了一种执行机器学习的方法,包括:生成用于机器学习模型的卷积层的基核集合,其中每个基核包括掩码和缩放因子;基于多个基核来生成复合核;以及基于该复合核来执行卷积运算。
11.进一步方面提供了一种用于执行机器学习的方法,包括:生成用于机器学习模型的卷积层的基核集合,其中每个基核包括二进制掩码;确定缩放因子集合,其中该缩放因子集合中的每个缩放因子对应于该基核集合中的基核;基于该机器学习模型的该卷积层的输入数据来生成经求和池化输出;以及基于该经求和池化输出和该缩放因子集合来生成卷积层输出。
12.其他方面提供了:处理系统,其被配置成执行前述方法以及本文中所描述的那些方法;非瞬态计算机可读介质,其包括在由处理系统的一个或多个处理器执行时使该处理系统执行前述方法以及本文中所描述的方法的指令;计算机程序产品,其被实施在计算机可读存储介质上,该计算机可读存储介质包括用于执行前述方法以及本文中进一步描述的那些方法的代码;以及处理系统,其包括用于执行前述方法以及本文中进一步描述的那些方法的装置。
13.以下描述和相关附图详细阐述了一个或多个实施例的某些解说性特征。
14.附图简述
15.附图描绘了该一个或多个实施例的某些方面,并且因此不被认为限制本公开的范围。
16.图1a-图1d描绘了从基核形成二维复合核的示例。
17.图2a-图2b描绘了从结构化基核形成结构化核的示例。
18.图3描绘了跨步幅求和共享的示例。
19.图4描绘了使用求和池化对具有结构化核的卷积运算的示例分解。
20.图5a描绘了对结构化卷积的三维结构分解。
21.图5b描绘了对结构化卷积的二维结构分解。
22.图6描绘了使用求和池化运算来分解全连通层的示例。
23.图7a描绘了交叠求和矩阵的示例。
24.图7b描绘了用于生成图7a的交叠求和矩阵的示例算法。
25.图8描绘了用于使用结构正则化项在训练期间实现结构分解的示例流程。
26.图9描绘了用于执行结构化卷积的硬件加速器的示例。
27.图10描绘了可以用图9的硬件加速器实现的示例处理流水线。
28.图11描绘了根据本文所描述的各个方面的执行机器学习的示例方法。
29.图12描绘了根据本文所描述的各个方面的执行机器学习的示例方法。
30.图13描绘了根据本文所描述的各个方面的用于执行机器学习的示例处理系统。
31.为了促成理解,在可能之处使用了相同的附图标记来指定各附图共有的相同要素。构想一个实施例的要素和特征可有益地纳入其他实施例而无需进一步引述。
32.详细描述
33.本公开的各方面提供了用于执行并加速结构化卷积的装置、方法、处理系统和计算机可读介质。
34.深度神经网络跨各种用例递送优异的性能,但往往无法满足日常设备的计算预算要求。因此,模型效率对于在各种上下文中实现基于深度神经网络的机器学习模型的能力起着关键作用。
35.用于减小深度神经网络模型大小和复杂度的常规办法已包括模型压缩技术,该技术依赖于深度网络过度参数化(意味着深度神经网络模型的参数的显著比例是冗余的)的关键假设。基于该假设,已提出了若干模型修剪方法,这些模型修剪方法系统地去除深度神经网络模型中的冗余组件以提高运行时效率。用于利用冗余和减小复杂度的其他办法包括基于权重矩阵的奇异值的张量分解,诸如空间奇异值分解(svd)和权重svd。
36.深度神经网络模型中的冗余还可以被视为拥有不必要自由度(dof)的网络权重。从优化角度而言,较高的dof会导致过拟合,这可以通过使用各种正则化方法约束网络权重来解决。
37.减小dof的另一方式是通过减少可学习参数的数目。例如,可以使用基表示来代替权重张量。在此类方法中,基向量是固定的,并且仅这些基向量的系数是可学习的。因此,通过使用比权重张量中的实际参数数目少的系数,可以限制dof。然而,注意,这仅在训练期间有用,因为在推断期间使用实际(较高)数目的参数。也就是说,系统地选择基(例如,傅里叶-贝塞尔基)可以导致模型参数减少和每秒浮点运算(flops)减少,即使在推断时间期间亦如此。
38.本文所描述的各实施例通过限制卷积核(或滤波器)的自由度并对其施加显式结构来提高深度神经网络模型效率。该结构可被认为是通过叠加若干较低分辨率的核来构造卷积核,这些较低分辨率的核可被称为基核,每一者由基掩码和缩放因子来定义。
39.值得注意的是,本文所描述的方法利用乘法运算一般比加法更加计算昂贵(例如,贵20倍或更多倍)的事实。由此,本文所描述的方法以极大减少的乘法运算、以及一般减少的加法运算来达成数学上等效的输出。值得注意的是,这些方法在训练和推断期间处理模型时产生模型大小减小(例如,通过减少参数计数)和提高模型计算效率(例如,通过减少运算次数)的一般益处。
40.本文所描述的各实施例在各个方面实现了优于常规模型压缩方法的益处。例如,本文所描述的各实施例可利用复合核结构,其在核形成时接受任意基,从而导致高效的卷积运算。
41.此外,本文所描述的各实施例可利用结构化卷积作为复合核结构的实现。具体而言,结构化卷积可以被分解为求和池化运算继之以显著更小的卷积运算,这减小了模型参数的数目(并且由此减小了模型大小),并减少了在模型处理期间所需的乘法运算次数,这降低了计算复杂度。有益地,该分解方法可以被应用于深度神经网络模型的卷积层以及此类模型中的全连通层/线性层。
42.此外,本文所描述的各实施例可在训练期间使用结构正则化方法来提升卷积权重以具有期望的结构,这促成本文所描述的分解方法。由此,本文所描述的结构正则化方法有益地导致具有最小精度损失的更有效分解。
43.此外,本文所描述的各实施例可利用基于硬件的加速器来实现高效的求和池化运算,包括跨核求和共享和跨步幅求和共享。
44.2d和3d复合核
45.一般而言,复合核的结构可通过底层的基掩码集合(其可被称为复合基掩码)来确定。例如,对于基掩码集合可被构造成使得每个基掩码βi(i∈{1,...,m})是维度为n
×
n的掩码(例如,二进制掩码),并且集合是线性独立的,以使得:
46.并且
[0047][0048]
每个单独的基元素针对m∈{1,...,m}可被进一步表示为其中i∈{1,...,n},j∈{1,...,n},并且
[0049]
值得注意的是,复合基掩码中的每个基掩码βi不必与其他基掩码正交。另外,线性独立条件自动暗示m≤n2。因此,基集合仅跨越的子空间。
[0050]
此外,给定缩放因子集合和(部分)激活(其中i,j∈{1,...,n}),相关联中心特征的卷积被计算为其中
“⊙”
表示逐元素相乘的总和,并且是n
×
n核。
[0051]
相应地,如果维度为n
×
n的核w能够被构造为复合基的线性组合,则该核w被认为是二维(2d)复合核,以使得:
[0052]
对于某一α=[α1,..,αm],
[0053]
其中αm是第m个基掩码βm的缩放因子,并且αmβm形成基核。
[0054]
图1a-图1c描绘了使用不同的基核集合构造的3
×
3复合核的示例。具体而言,图1a-图1c中的复合核102a-102c分别是经由m个基核104a-104c的分别叠加构造的,其中在图1a和图1b中m=4并且在图1c中m=6。基核104a-104c中的每一者是通过将恒定缩放因子αm(其中m∈{1...m})应用于二进制基掩码βm来形成的,从而导致复合核102a-102c的m自由度。
[0055]
图1d将图1a中所示的相同复合核102a描绘为二进制基掩码106a-106d(例如,βm)和相关联缩放因子108a-108d(例如,αm)的线性组合。
[0056]
图2a描绘了其中基于九个基核204(在没有相关联缩放因子的情况下示出)来构造5
×
5复合核202的另一示例。
[0057]
一般而言,底层基核可具有与图1a-图1d和图2a-图2b的示例中所展现的结构不同且较不规则的结构。具体而言,如果核大小为n,则存在无数种可能的分解。即使对于例如n=5,5
×
5核也可以按许多方式来分解,包括:多个2
×
2基核,多个3
×
3基核,或2
×
2和3
×
3基核的混合,仅举一些选项。
[0058]
复合核可以同样用于三维(3d)情形中。例如,可以为定义复合基掩码其中每个基掩码βm,是维度为c
×n×
n的掩码(例如,二进制掩码)。如果维度为c
×n×
n的核w是此类基核的线性组合,则该核w是三维复合核。由此,二维复合核可以被视为三维复合核在c=1情况下的特例。图2b描绘了以八个基核208来构造4
×3×
3复合核206的示例,每个基核具有3
×2×
2的维度。
[0059]
具有复合核的卷积
[0060]
考虑具有复合核w的卷积层,该复合核w具有c
×n×
n的大小,其中n是空间大小(例如,核的接受野中的垂直和水平像素数目)并且c是用于卷积层的输入通道(例如,图像中的色彩层)数目。一般而言,复合核w可使用m个基核来构造,诸如图1a-图1d和图2a-图2b的示例中所描绘的。
[0061]
为了计算卷积层的输出,复合核被应用于容量为c
×n×
n的输入特征图x。因此,此时输出y为:
[0062][0063]
[0064]
在式1的先前推导中,
‘⊙’
指示逐元素相乘的总和(例如,卷积运算),

·’指示逐元素相乘,并且em=sum(x
·
βm)。
[0065]
现在,在每个βm是0和1的二进制掩码的情形中,则sum(x
·
βm)等效于在βm=1情况下对x的元素进行求和。
[0066]
由此,具有复合核的卷积运算可以被分解为以下步骤:
[0067]
步骤1:使用βm作为矩阵掩码来提取x中与βm的非零条目相对应的条目并丢弃其他条目。
[0068]
步骤2:通过对βm
·
x的所有非零条目进行求和来计算x的所有非零条目进行求和来计算如本文所使用的,em可以被称为基和(basis sum)。与上面一样,在该示例中,βm的元素是0或1。
[0069]
步骤3:计算y=w

x=(∑mαmβm)

x=∑mα
mem
=α

e,其中α={α1,α2,...,αm}和都是向量,并且
“⊙”
缩减为内积。注意,α
mem
可被称为基于基核m的部分卷积输出。
[0070]
常规地,该卷积将涉及cn2次乘法和cn
2-1次加法。然而,根据式1,显然仅需要m次乘法,并且总的加法次数变成:
[0071][0072]
乘法次数由此已被减少,因为m≤cn2。有益地,基于使用复合核而得到的乘法减少导致复杂度的成比例降低,这进而意味着底层模型在训练和推断运算期间将运行得更快。此外,在执行任一类型的运算时将使用较少的功率,这对于在低功率设备(诸如移动设备)中部署机器学习模型尤其有益。
[0073]
根据式2,加法有时可以变得大于cn
2-1。例如,在图1b中,其中c=1,n=3,m=4,∑
m sum(βm)-1=4+4+4+4-1=15>cn
2-1=8。
[0074]
除了减少在卷积运算中执行的运算次数,复合核还有益地减小模型大小。利用常规卷积核,需要存储c*n2个参数,而利用复合核,仅需要存储m个参数,其中根据构造m<c*n2。因此,模型大小按因子减小。大小的这种减小有益地减小了存储器要求、存储器读和写操作以及相关联的功率和等待时间,以及跨本地总线和跨网络的通信成本。
[0075]
2d和3d结构化核
[0076]
结构化核是复合核的特例,并且使用结构化核执行的卷积可被称为“结构化卷积”。
[0077]
在二维示例中,如果n
×
n核是复合核(如上所述)并且m=k2(对于某个1<k≤n),并且如果每个基核βm由1的大小为(n-k+1)
×
(n-k+1)的区块(patch)组成而其剩余元素为0,则该n
×
n核可被称为“结构化”。因此,2d结构化核由其维度n和其底层参数k表征。
[0078]
例如,图2a描绘了使用九个基核204(再次,缩放因子未描绘)构造的5
×
5复合核202的示例情形。由此,在该示例中,n=5并且k=3,这意味着n-k+1=3并且m=k2=9个基核。每个基核具有1的大小为(n-k+1)
×
(n-k+1)=3
×
3的区块(例如,二进制掩码)。类似地,图1b也描绘了3
×
3结构化核的示例,其中m=4并且每个基核具有1的大小为2
×
2的区块。
[0079]
结构化核有益地减小复杂度和模型大小。在具有二维核的常规卷积中,乘法次数和加法次数分别是n2和n
2-1。相比之下,利用结构化二维核,乘法次数从n2减小到k2,并且加法次数变成:
[0080]
((n-k+1)
2-1)*k2+k
2-1=(n-k+1)2*k
2-1。
[0081]
类似地,虽然常规二维卷积核需要存储n2个值,但结构化二维核仅需要存储k2个值,其中1<k≤n。因此,模型大小按k2/n2因子减小。
[0082]
类似地,如果c
×n×
n核(即,三维核)是具有m=dk2(对于某个1<k≤n,1<d≤c)的复合核,并且每个基核βm由1的大小为(c-d+1)
×
(n-k+1)
×
(n-k+1)的区块(或掩码)组成而其剩余元素为0,则该c
×n×
n核可被视为“结构化”。因此,三维结构化核由其维度c,n和其底层参数d,k来表征。
[0083]
图2b描绘了其中c=4,n=3,d=2并且k=2的示例,这意味着c-d+1=3并且n-k+1=2。因此,如图所示,存在m=dk2=8个基核208a-208h,这些基核用于构造结构化核206,并且每个基核208a-208h具有1的大小为(c-d+1)
×
(n-k+1)
×
(n-k+1)=3
×2×
2的区块。此处,再次未描绘与每个基核208a-208h相关联的缩放因子。
[0084]
结构化核由此相比于复合核可以进一步减少数学运算并进一步提高模型处理效率(因为结构化核是复合核的特例)。
[0085]
例如,使用常规卷积,具有三维核的乘法次数和加法次数分别是c*n2和c*n
2-1。相比之下,利用三维结构化核,乘法次数从c*n2减少到d*k2,并且加法次数在最差情形中变成((c-d+1)(n-k+1)
2-1)*d*k
2-1,但在实践中加法次数会甚至更小。此外,每个结构化核仅需要存储d*k2个值,而不是常规情形中的c*n2个值,这意味着模型大小按因子减小。模型大小的这种减小意味着减小的存储器要求,减小的功率使用(例如,用于将值移入和移出存储器),以及更快的处理,这是因为大大减少的运算(包括乘法和加法)次数。
[0086]
值得注意的是,标准卷积核、逐深度卷积核和逐点卷积核可以被构造为三维结构化核,这意味着来自这些核的效率增益可以广泛地应用于现有的深度神经网络模型架构。
[0087]
跨核求和共享
[0088]
复合核(包括结构化核)实现卷积运算(包括求和池化运算)期间的各种附加效率增益。求和池化(sum-pooling)一般是指跨卷积运算的多个核和/或步幅重用求和而无需在多个相继运算中重新计算求和的能力。在数学上,对输入x的求和池化运算可以被定义为计算输出{x*β1,...,x*βm}。跨核求和共享是执行求和池化的一种方法。
[0089]
例如,如图1a-图1d和图2a-图2b中所描绘的,基核可作用于相同的输入数据,并且由此不必重复某些计算。通过避免冗余计算,提高了计算效率。
[0090]
为了解说这一概念,考虑具有c
out
个核并且由此具有c
out
个输出通道的卷积层。值得注意的是,这些核中的每个核对相同的特征图x进行运算。由于相同的基(例如,)用于一层中的所有核,因此考虑一层中的两个卷积核:
和具有这些核的卷积运算如下:
[0091][0092]
由此,对于核w1和w2中的每一者,βm⊙
x计算是共用的并且可以存储到缓冲器中以供重用以避免重新计算。换言之,该求和可以跨核共享。
[0093]
值得注意的是,对于结构化卷积,由于基核βm的显式结构,计算βm⊙
x是求和池化运算。
[0094]
跨核求和共享可以在处理硬件中用各种方式来实现。例如,处理系统可计算针对整个输入x的所有经求和池化输出,并将这些输出存储在缓冲器中。该缓冲器随后可由所有c
out
个核消耗。
[0095]
作为另一示例,处理系统可计算经求和池化输出的一个步幅,并且随后针对所有c
out
个核消耗该步幅,并针对所有步幅重复该流式计算,如下面关于图10更详细描述的。值得注意的是,该流式办法可以有益地要求更少的激活缓冲器存储器,并且还可减少等待时间以及数据输入和输出(例如,写入激活缓冲器和从激活缓冲器读取)的功率成本。
[0096]
跨步幅求和共享
[0097]
与避免在对相同输入数据进行运算的基核之间的冗余计算的概念类似,在向步幅式输入数据应用结构化核时可以避免冗余计算。
[0098]
图3描绘了跨步幅求和共享的示例。具体而言,显见的是,输入数据302的中间两列304在第一步幅和第二步幅中由结构化核306处理。因此,运算的子集308不需要在各步幅之间重复,这有益地节省了乘法和加法运算。
[0099]
跨步幅求和共享是求和池化运算的另一示例。
[0100]
对具有结构化核和求和池化的卷积运算的分解
[0101]
具有结构化核的卷积运算可以被分解为求和池化运算和较小的卷积运算。
[0102]
考虑具有k=2的3
×
3结构化核的卷积。图4示出了常规3
×
3卷积402可如何被拆解为2
×
2求和池化运算继之以具有由αi组成的核的2
×
2卷积,其一般可被称为经分解卷积404。
[0103]
从上面的式1可知x

w=∑mαm(x

βm)。由于在该示例中基掩码βm由1的连贯区块组成,因此具有基掩码βm(m∈(1...m})的卷积是求和池化运算,因为每个βm在c
×n×
n网格的特定位置中具有1的区块,并且x

βm对应于求和池化运算的特定步幅。
[0104]
考虑卷积x

w的单个步幅,该卷积可以被拆分为两个部分。首先计算所有经求和池化输出:(注意:m=dk2)。这基本上是对输入x执行(c-d+1)
×
(n-k+1)
×
(n-k+1)求和池化(其中步幅为1)。接着,使用d
×k×
k核(其是使用对应来形成的)来对经求和池化输出执行卷积。
[0105]
尽管前述示例仅考虑卷积运算x

w的单个步幅,但该分解即使在整个卷积运算一起考虑时、或者换言之在一起考虑所有步幅且一起考虑卷积层的所有c
out
个核时也成立。
[0106]
例如,图5a将具有c
×n×
n核的c
×h×
w输入的常规卷积502与具有底层参数{d,k}和c
out
个输出通道的经分解结构化卷积504进行比较。值得注意的是,每个运算的输出在数
学上是等效的,但经分解结构化卷积504在计算上以及在存储器使用方面显著更加高效。
[0107]
随后使用图5a作为参考,可以比较分解前和分解后的参数和运算数目,如下表1中所示:
[0108][0109]
表1
[0110]
由于二维结构化核是三维结构化核在c=d=1情形中的特例,因此图5b示出了可如何基于常规二维卷积506来类似地实现二维结构分解508。
[0111]
值得注意的是,参数数目和乘法次数两者都已按dk2/cn2因子减小。这是因为求和池化组件不涉及任何乘法。此外,分解后的加法次数可以被改写为:
[0112][0113]
因此,如果c
out
足够大,则括号内的第一项将被分摊,并且加法次数变成≈(dk
2-1)
×couth′w′
。结果,加法次数也按大致相同比例≈dk2/cn2被减少。由此,dk2/cn2可被称为结构分解压缩比。
[0114]
线性或全连通层中的结构分解
[0115]
对于数个图像分类网络,最后线性(或全连通)层在参数数目上占主导,尤其是在类别数目较高的情况下。有益地,如上所述的结构分解可以通过认识到对输入执行矩阵乘法与对输入执行数个1
×
1或逐点卷积相同而被扩展到线性层。
[0116]
考虑矩阵和输入向量线性运算y=wx与逐点卷积运算y=unsqueezed(x)

unsqueezed(w)相同,其中unsqueezed(x)使用相同的输入数据x但具有维度q
×1×
1,并且unsqueezed(w)使用相同的权重w但具有维度p
×q×1×
1。换言之,w的每一行可以被视为大小为q
×1×
1的逐点卷积核。
[0117]
因此,如果(大小为q
×1×
1的)这些核中的每一者是具有某个底层参数r(其中0<r≤q)的结构化核,则矩阵乘法/逐点卷积运算602可以被分解为求和池化运算604和较小的卷积606,如图6中所描绘的。
[0118]
与之前一样,作为该分解的结果,在参数数目和乘法次数两方面都有r/q因子的有益减少,并且加法次数按因子减少。
[0119]
对卷积核施加结构约束
[0120]
如上文讨论的,如果卷积核是结构化的(例如,是具有特定结构化基核的复合核),则卷积运算可以被分解为求和池化运算继之以较小的卷积运算。可使用若干方法在训练期间对深度神经网络模型中的卷积核施加结构化属性。
[0121]
第一种方法是将结构分解视为将由αi组成的较小d
×k×
k核映射到原始较大c
×n×
n核w的线性运算。
[0122]
初始地,令使得可以定义大小为cn2×
dk2的矩阵a,其中a的第i列是基掩码βi的向量化形式。随后,vectorized(w)=a
×
α,其中是由缩放因子α组成的较小d
×k×
k核的向量化形式。图7a中描绘了一示例。值得注意的是,这对于所有复合核均成立,而不是仅结构化核。此外,根据结构分解,可知结构化卷积可以被分解为求和池化运算继之以较小的卷积运算。注意,求和池化也可以被视为具有由全1组成的核的卷积。这一特定的核可被称为1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
,其中(c-d+1)
×
(n-k+1)
×
(n-k+1)是求和池化的核大小。现在,结构分解可被写为如下:
[0123]
x*w=x*1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
*αd×k×k[0124]
由此,w=1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
*αd×k×k,并且结构分解中所涉及的求和池化的步幅为1。因此,该卷积运算可以用toeplitz矩阵的矩阵乘法形式被写为如下:
[0125]
vectorized(w)=toeplitz(1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
)
×
vectorized(αd×k×k)
[0126]
相应地,上面引述的a矩阵为:
[0127]
toeplitz(1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
).
[0128]
图7b中描绘了用于生成该a矩阵的示例算法。
[0129]
第二种方法是使用结构正则化项来训练该模型。
[0130]
例如,如果大小为c
×n×
n的核w是使用参数d和k来构造的,则应当存在dk2长度的向量α以使得w=a
×
α,其中a是toeplitz(1
(c-d+1)
×
(n-k+1)
×
(n-k+1)
)。对应的α可以被计算为α
*
=a
+
w,其中a
+
表示a的伪逆。这意味着结构化核w满足属性:w=aa
+
w。
[0131]
基于此,可以使用结构正则化损失项,其在训练期间将该结构化属性逐渐施加到深度神经网络层上。以下是结构正则化项的示例损失函数:
[0132][0133]
在上面的式(3)中,表示任务损失(例如,在图像分类的情形中为交叉熵),||
·
||f表示frobenius范数,并且l是层索引。
[0134]
式(i-aa
+
)w=0在w=0处具有平凡解。因此,如果仅||(i-aa
+
)w||f被用作正则化项,则优化将不成比例地将较大层的权重推向0。为避免该情况,在正则化项的分母中使用||w||f,这稳定了最终深度网络相对于λ选择的性能。
[0135]
图8中描绘了示例训练方法800。如果对于所有核(i-aa
+
)w=0,则分解α=a
+
w是“精确的”,这意味着经分解架构(具有α作为权重)在数学上等效于分解前的原始架构。
[0136]
结构正则化项在训练时还施加限制性dk2自由度,但以可配置的方式(取决于λ)来这样做。例如,如果λ=0,则与未施加结构的正常训练相同。因此,在训练结束时,核将不会具有结构化核属性并且结构分解将不是精确的,从而使模型性能降级。如果λ非常高,则优
化过程将尝试在开始对任务损失进行优化之前尽量最小化结构正则化损失。因此,这变成等效于下文讨论的第三种和第四种方法。相应地,选择适中的λ给出结构与模型性能之间的最佳折衷。
[0137]
第三,原始常规架构可在没有任何结构正则化的情况下进行训练,即,在具有任务损失情况下的正常训练。然而,在正常训练结束时,深度神经网络模型的各层可使用α=a
+
w来分解,并且经分解架构随后可进行微调。
[0138]
第四,经分解架构(由d
×k×
k核组成)可从头开始训练。
[0139]
在第三种方法和第四种方法中,在微调期间,核拥有dk2自由度(而非cn2)。因此,优化过程在自由度方面受约束,并且权重在的dk2维子空间中被优化。这会导致经分解架构比使用结构正则化项方法要低的性能。
[0140]
针对结构化卷积的硬件加速
[0141]
先前的描述阐述了用于通过使用结构化卷积减少数学运算次数来显著改进计算复杂度的理论基础。为了确保在硬件中实现这些理论改进,可以使用加速器来实现高效的求和池化运算。一般而言,这种加速器可例如以专用集成电路(asic)芯片的专用处理单元的形式来实现,或者作为软件可编程神经处理单元(npu)、神经信号处理器(nsp)、人工智能核(aic)、数字信号处理器(dsp)、中央处理单元(cpu)、图形处理单元(gpu)、或其他处理单元(诸如在片上系统(soc)上)的指令或扩展单元来实现。
[0142]
图9描绘了被配置成高效地执行求和池化运算的硬件加速器900的示例。由于求和池化运算在传统处理单元上可能未被高度优化,而其他卷积运算可能被高度优化,因此可实现硬件加速器900以确保在实际处理硬件中达成本文(例如,相对于复合核和求和池化运算)所描述的理论模型复杂度和效率改进。
[0143]
在所描绘的示例中,硬件加速器900包括高效的提取求和单元(esu),该esu获取输入数据(例如,激活)x和基掩码(例如,二进制掩码)βm并生成经求和池化输出(或基和)e={em},m∈{1,2,...,m}。
[0144]
硬件加速器900进一步包括高效的可变长度向量乘法单元(vmu)704,该vmu 704向经求和池化输出e应用缩放因子的向量α={α1,α2,...,αm}以生成标量输出y。
[0145]
值得注意的是,加速器900被配置成支持esu 902和vmu 904两者中的可变长度向量输入。例如,esu 902可基于基掩码(例如,βm)的结构来配置,并且vmu 904可基于基核的数目(m)来配置。这些配置支持具有复合核的高效卷积以及具有显式正方形或长方体结构的结构化卷积。图1a中描绘了任意复合核的示例,并且图1b中描绘了结构化复合核的示例。
[0146]
esu 902和vmu 904两者都是被配置成使用复合核来执行经硬件加速卷积(包括结构化卷积)的专用处理单元的示例。
[0147]
图10描绘了可使用图9的硬件加速器900实现的示例处理流水线1000。具体而言,处理流水线1000被配置成利用求和池化运算,包括跨步幅和跨核求和共享,如本文所述。
[0148]
对于结构化卷积的每一步幅i中的运算,诸如图9中所描绘的esu在前进至下一步幅之前计算所有经求和池化输出ei。随后,经求和池化输出ei可以由vmu(例如,图9中的904)在下一步幅期间用于生成针对i∈{1...s}的卷积层输出yi,其中s是步幅总数。
[0149]
值得注意的是,esu运算1002和vmu运算1004能够被并行执行,其中与多个步幅相关联的数据在相同时间段中被处理。这允许跨不同运算使用求和池化输出而不会因必需将
它们存储在缓冲器或其他类型的存储器中而引入总体卷积处理的等待时间。相反,值可以存储在本地寄存器中。用于处理卷积数据的该流式办法节省等待时间、存储器使用和功率,这是由于向存储器写入和从存储器检索是功率敏感型操作。
[0150]
示例方法
[0151]
图11描绘了根据本文所描述的各个方面的执行机器学习的示例方法1100。
[0152]
方法1100开始于步骤1102:生成用于机器学习模型的卷积层的基掩码集合(例如,βi,i∈{1,...,m})。在一些方面,每个基掩码包括二进制掩码。
[0153]
方法1100随后行进至步骤1104:确定缩放因子集合(例如,αi,i∈{1,...,m}),其中该缩放因子集合中的每个缩放因子对应于该基掩码集合中的基掩码。
[0154]
方法1100随后行进至步骤1106:基于该基掩码集合和该缩放因子集合来生成复合核。例如,该复合核可包括由该基掩码集合和对应缩放因子定义的基核,诸如在图1a-图1d的示例中所描绘的示例中。
[0155]
方法1100随后行进至步骤1108:基于该复合核来执行卷积运算,诸如图3中所描绘的示例。
[0156]
在一些方面,基于复合核来执行卷积运算包括:接收输入数据;对于与复合核相关联的基掩码集合中的每个相应基掩码:基于相应基掩码来提取输入数据的子集以供处理;基于该输入数据的针对该相应基掩码的该子集来计算该相应基掩码的基和;以及通过向该基和应用对应于该相应基掩码的缩放因子来计算部分卷积层输出;以及通过对与该基掩码集合中的每个基掩码相关联的每个部分卷积层输出进行求和来生成卷积层输出。
[0157]
在一些方面,复合核包括结构化核;并且卷积运算包括结构化卷积。
[0158]
在一些方面,卷积运算包括:接收输入数据;对输入数据执行求和池化运算以生成经求和池化输出数据;以及使用具有比输入数据的空间维度小的空间维度的卷积核来对经求和池化输出数据执行卷积运算。
[0159]
在一些方面,方法1100进一步包括:使用结构正则化项来训练机器学习模型,诸如关于图8所描述的。
[0160]
在一些方面,方法1100进一步包括:基于基掩码集合使用toeplitz矩阵来训练机器学习模型。
[0161]
在一些方面,方法1100进一步包括:向卷积层应用结构分解以生成经分解卷积层;以及使用经分解卷积层和任务损失函数来训练机器学习模型。在一些方面,任务损失函数是式3。
[0162]
图12描绘了根据本文所描述的各个方面的执行机器学习的另一示例方法1200。
[0163]
方法1200开始于步骤1202:生成用于机器学习模型的卷积层的基掩码集合。在一些实施例中,每个基掩码包括二进制掩码。
[0164]
方法1200随后行进至步骤1204:确定缩放因子集合,其中该缩放因子集合中的每个缩放因子对应于该基掩码集合中的基掩码。
[0165]
方法1200随后行进至步骤1206:基于该机器学习模型的该卷积层的输入数据来生成经求和池化输出。
[0166]
方法1200随后行进至步骤1208:基于该经求和池化输出和该缩放因子集合来生成卷积层输出。
[0167]
在一些方面,基于卷积层的输入数据来生成经求和池化输出包括:对于基掩码集合中的每个基掩码:基于相应基掩码来提取输入数据的子集以供处理;以及基于输入数据的针对相应基掩码的子集来计算相应基掩码的经求和池化输出。
[0168]
在一些方面,基于经求和池化输出和包括缩放因子的核来生成卷积层输出包括:将包括缩放因子的核与经求和池化输出相乘。
[0169]
在一些方面,基于卷积层的输入数据来生成经求和池化输出是由提取求和单元(esu)来执行的,并且基于经求和池化输出和包括缩放因子的核来生成卷积层输出是由向量乘法单元(vmu)来执行的,诸如关于图9和图10所描述的。
[0170]
在一些方面,经求和池化输出与结构化卷积的第一步幅相关联,卷积层输出与结构化卷积的第一步幅相关联,并且该方法进一步包括:与vmu生成与结构化卷积的第一步幅相关联的卷积层输出并发地通过esu来生成与结构化卷积的第二步幅相关联的第二经求和池化输出,诸如关于图10所描述的。
[0171]
在一些方面,方法1200进一步包括:基于基掩码集合中的每个基掩码的结构来配置esu。
[0172]
在一些方面,方法1200进一步包括:基于基掩码集合中的基掩码数目来配置vmu。
[0173]
在一些方面,生成经求和池化输出包括:执行跨核求和共享运算。
[0174]
在一些方面,生成经求和池化输出包括:执行跨步幅求和共享运算。
[0175]
用于执行机器学习的示例电子设备
[0176]
图13描绘了根据本文所描述的各个方面的用于执行机器学习的示例处理系统1300,诸如本文关于图1a-图12所描述的。
[0177]
电子设备1300包括中央处理单元(cpu)1302,其在一些示例中可以是多核cpu。在cpu 1302处执行的指令可例如从与cpu 1302相关联的程序存储器加载或可从存储器分区1324加载。
[0178]
电子设备1300还包括为特定功能定制的附加处理组件,诸如图形处理单元(gpu)1304、数字信号处理器(dsp)1306、神经处理单元(npu)1308、多媒体处理单元1310、以及无线连通性组件1312。
[0179]
npu(诸如1308)一般是被配置成用于实现用于执行机器学习算法(诸如用于处理人工神经网络(ann)、深度神经网络(dnn)、随机森林(rf)等的算法)的所有必要的控制和算术逻辑的专用电路。npu有时可被替换地称为神经信号处理器(nsp)、张量处理单元(tpu)、神经网络处理器(nnp)、智能处理单元(ipu)、视觉处理单元(vpu)或图形处理单元。
[0180]
npu(诸如1308)被配置成加速常见机器学习任务(诸如图像分类、机器翻译、对象检测以及各种其他预测模型)的执行。在一些示例中,多个npu可被实例化在单个芯片(诸如片上系统(soc))上,而在其他示例中,多个npu可以是专用神经网络加速器的一部分。
[0181]
npu可被优化以用于训练或推断,或者在一些情形中可被配置成平衡训练与推断之间的性能。对于能够执行训练和推断两者的npu,这两个任务可能通常仍然是独立执行的。
[0182]
被设计成加速训练的npu一般被配置成加速对新模型的优化,这是涉及输入现有数据集(常常是被标记的或含标签的)、在数据集上进行迭代、以及接着调节模型参数(诸如权重和偏置)以便改进模型性能的高度计算密集的操作。一般而言,基于错误预测进行优化
涉及往回传递通过模型的各层并确定梯度以减少预测误差。
[0183]
被设计成加速推断的npu一般被配置成在完整模型上操作。此类npu因而可被配置成输入新的数据片段以及通过已经训练好的模型来快速处理该数据片段以生成模型输出(例如推断)。
[0184]
在一种实现中,npu 1308可被集成为cpu 1302、gpu 1304和/或dsp 1306中的一者或多者的一部分。
[0185]
在一些示例中,无线连通性组件1312可包括例如用于第三代(3g)连通性、第四代(4g)连通性(例如,4g lte)、第五代连通性(例如,5g或nr)、wi-fi连通性、蓝牙连通性、以及其他无线数据传输标准的子组件。无线连通性处理组件1312进一步连接到一个或多个天线1314。
[0186]
电子设备1300还可包括与任何方式的传感器相关联的一个或多个传感器处理单元1316、与任何方式的图像传感器相关联的一个或多个图像信号处理器(isp)1318、和/或可包括基于卫星的定位系统组件(例如,gps或glonass)以及惯性定位系统组件的导航处理器1320。
[0187]
电子设备1300还可包括一个或多个输入和/或输出设备1322,诸如屏幕、触敏表面(包括触敏显示器)、物理按钮、扬声器、话筒等等。
[0188]
在一些示例中,电子设备1300的一个或多个处理器可基于arm或risc-v指令集。
[0189]
电子设备1300还包括提取求和单元(esu)1326和向量乘法单元(vmu)1328,这些单元可以共同包括用于执行具有复合核的卷积(包括结构化卷积)的硬件加速器,如上面关于图1a-图12所描述的。
[0190]
电子设备1300还包括存储器1324,该存储器1324代表一个或多个静态和/或动态存储器,诸如动态随机存取存储器、基于闪存的静态存储器等等。在该示例中,存储器1324包括计算机可执行组件,其可由电子设备1300的前述处理器中的一个或多个处理器执行。
[0191]
具体而言,在该示例中,存储器1324包括基核组件1324a、复合核组件1324b、分解组件1324c、训练组件1324d、推断组件参数1324e、求和池化组件1324f、卷积组件1324g、以及模型数据1324h。所描绘的组件以及未描绘的其他组件可被配置成执行本文所描述的方法的各个方面。
[0192]
一般而言,电子设备1300和/或其组件可被配置成执行本文所描述的方法。
[0193]
值得注意的是,在其他情形中,处理系统1300的各方面可被略去,诸如在处理系统1300是服务器计算机等的情况下。例如,在其他方面,多媒体组件1310、无线连通性1312、传感器1316、isp 1318和/或导航组件1320可被略去。此外,处理系统1300的各方面可以分布在多个设备之间。
[0194]
值得注意的是,处理系统1300仅是一个示例,并且其他示例也是可能的。
[0195]
示例条款
[0196]
在以下经编号条款中描述了各实现示例。
[0197]
条款1:一种执行机器学习的方法,包括:生成用于机器学习模型的卷积层的基掩码集合,其中每个基掩码包括二进制掩码;确定缩放因子集合,其中该缩放因子集合中的每个缩放因子对应于该基掩码集合中的基掩码;基于该基掩码集合和该缩放因子集合来生成复合核;以及基于该复合核来执行卷积运算。
[0198]
条款2:如条款1的方法,其中,基于该复合核来执行该卷积运算包括:接收输入数据;对于与该复合核相关联的该基掩码集合中的每个相应基掩码:基于该相应基掩码来提取输入数据的子集以供处理;基于该输入数据的针对该相应基掩码的该子集来计算该相应基掩码的基和;以及通过向该基和应用对应于该相应基掩码的缩放因子来计算部分卷积层输出;以及通过对与该基掩码集合中的每个基掩码相关联的每个部分卷积层输出进行求和来生成卷积层输出。
[0199]
条款3:如条款1-2中任一者的方法,其中:该复合核包括结构化核;并且该卷积运算包括结构化卷积。
[0200]
条款4:如条款3的方法,其中,该卷积运算包括:接收输入数据;对该输入数据执行求和池化运算以生成经求和池化输出数据;以及使用具有比该输入数据的空间维度小的空间维度的卷积核来对该经求和池化输出数据执行卷积运算。
[0201]
条款5:如条款1-4中任一者的方法,进一步包括:使用结构正则化项来训练该机器学习模型。
[0202]
条款6:如条款1-5中任一者的方法,进一步包括:基于该基掩码集合使用toeplitz矩阵来训练该机器学习模型。
[0203]
条款7:如条款1-6中任一者的方法,进一步包括:向卷积层应用结构分解以生成经分解卷积层;以及使用经分解卷积层和任务损失函数来训练机器学习模型。
[0204]
条款8:一种用于执行机器学习的方法,包括:生成用于机器学习模型的卷积层的基掩码集合,其中每个基掩码包括二进制掩码;确定缩放因子集合,其中该缩放因子集合中的每个缩放因子对应于该基掩码集合中的基掩码;基于该机器学习模型的该卷积层的输入数据来生成经求和池化输出;以及基于该经求和池化输出和该缩放因子集合来生成卷积层输出。
[0205]
条款9:如条款8的方法,基于该卷积层的该输入数据来生成该经求和池化输出包括:对于该基掩码集合中的每个相应基掩码:基于相应基掩码来提取输入数据的子集以供处理;以及基于该输入数据的针对该相应基掩码的该子集来计算该相应基掩码的经求和池化输出。
[0206]
条款10:如条款9的方法,其中,基于经求和池化输出和包括缩放因子的核来生成卷积层输出包括:将包括缩放因子的核与经求和池化输出相乘。
[0207]
条款11:如条款10的方法,其中:基于卷积层的输入数据来生成经求和池化输出是由提取求和单元(esu)来执行的,并且基于经求和池化输出和包括缩放因子的核来生成卷积层输出是由向量乘法单元(vmu)来执行的。
[0208]
条款12:如条款11的方法,其中:经求和池化输出与结构化卷积的第一步幅相关联,卷积处输出与该结构化卷积的该第一步幅相关联,并且该方法进一步包括:与vmu生成与结构化卷积的第一步幅相关联的卷积层输出并发地通过esu来生成与该结构化卷积的第二步幅相关联的第二经求和池化输出。
[0209]
条款13:如条款11的方法,进一步包括:基于该基掩码集合中的每个基掩码的结构来配置该esu。
[0210]
条款14:如条款13的方法,进一步包括:基于该基掩码集合中的基掩码数目来配置该vmu。
[0211]
条款15:如条款8-14中任一者的方法,其中,生成经求和池化输出包括:执行跨核求和共享运算。
[0212]
条款16:如条款8-14中任一者的方法,其中,生成经求和池化输出包括:执行跨步幅求和共享运算。
[0213]
条款17:一种处理系统,包括:包括计算机可执行指令的存储器;一个或多个处理器,该一个或多个处理器被配置成执行计算机可执行指令并使该处理系统执行根据条款1-16中任一者的方法。
[0214]
条款18:一种处理系统,包括用于执行根据条款1-16中任一者的方法的装置。
[0215]
条款19:一种包括计算机可执行指令的非瞬态计算机可读介质,这些计算机可执行指令在由处理系统的一个或多个处理器执行时使该处理系统执行根据条款1-16中任一者的方法。
[0216]
条款20:一种实现在计算机可读存储介质上的计算机程序产品,该计算机可读存储介质包括用于执行根据条款1-16中任一者的方法的代码。
[0217]
附加考虑
[0218]
提供先前描述是为了使本领域任何技术人员均能够实践本文中所描述的各个实施例。本文所讨论的示例并非是对权利要求中阐述的范围、适用性或者实施例的限定。对这些实施例的各种修改将容易为本领域技术人员所明白,并且在本文中所定义的普适原理可被应用于其他实施例。例如,可以对所讨论的要素的功能和布置作出改变而不会脱离本公开的范围。各种示例可恰适地省略、替代、或添加各种规程或组件。例如,可以按与所描述的次序不同的次序来执行所描述的方法,并且可以添加、省略、或组合各种步骤。而且,参照一些示例所描述的特征可在一些其他示例中被组合。例如,可使用本文中所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各个方面的补充或者不同于本文中所阐述的本公开的各个方面的其他结构、功能性、或者结构及功能性来实践的此类装置或方法。应当理解,本文中所披露的本公开的任何方面可由权利要求的一个或多个元素来实施。
[0219]
如本文所使用的,术语“示例性”意指“用作示例、实例或解说”。本文中描述为“示例性”的任何方面不必被解释为优于或胜过其他方面。
[0220]
如本文所使用的,引述一列项目“中的至少一者”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一者”旨在涵盖:a、b、c、a-b、a-c、b-c、和a-b-c,以及具有多重相同元素的任何组合(例如,a-a、a-a-a、a-a-b、a-a-c、a-b-b、a-c-c、b-b、b-b-b、b-b-c、c-c、和c-c-c,或者a、b和c的任何其他排序)。
[0221]
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或另一数据结构中查找)、查明及诸如此类。而且,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”可包括解析、选择、选取、建立及诸如此类。
[0222]
本文中所公开的各方法包括用于实现方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。此外,上述方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置
可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(asic)、或处理器。一般而言,在存在附图中解说的操作的场合,这些操作可具有带相似编号的相应配对装置加功能组件。
[0223]
以下权利要求并非旨在被限定于本文中示出的实施例,而是应被授予与权利要求的语言相一致的全部范围。在权利要求内,对单数元素的引用不旨在意指“有且只有一个”(除非专门如此声明),而是“一个或多个”。除非特别另外声明,否则术语“一些/某个”指的是一个或多个。权利要求的任何要素都不应当在35u.s.c.
§
112(f)的规定下来解释,除非该要素是使用短语“用于......的装置”来明确叙述的或者在方法权利要求情形中该要素是使用短语“用于......的步骤”来叙述的。本公开通篇描述的各个方面的要素为本领域普通技术人员当前或今后所知的所有结构上和功能上的等效方案通过引述被明确纳入于此,且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不旨在捐献于公众,无论此类公开内容是否明确记载在权利要求书中。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1