用于减少深度学习网络的权重存储位的系统和方法与流程

文档序号:14951141发布日期:2018-07-17 22:34阅读:155来源:国知局

在此公开的主题总体涉及深度学习网络,更具体地讲,涉及一种用于减少深度学习网络的权重存储位的设备和方法。



背景技术:

深度学习是人工智能(ai)和计算机视觉领域中广泛使用的技术。各种深度学习架构(诸如,卷积神经网络(cnn)、深度信念网络(dbn)和自动编码器)已经显示出针对任务(诸如,视觉对象识别、自动语音识别、自然语言处理以及音乐/音频信号处理)产生最先进的结果。深度学习的主要工作已经集中在针对各种网络架构、学习算法和应用的软件实现上。然而,体现更强大的板上(on-board)学习行为的硬件实现仍受限制。对深度学习硬件的主要挑战与模型精度不足有关;更具体地,与网络权重和数据输入的低位分辨率有关。例如,软件实现可享有双精度(64位)计算,但是当考虑到如物理尺寸和功耗的硬件约束时,这样的精度水平变得难以置信。



技术实现要素:

示例实施例提供一种用于减少深度学习网络的权重存储位的系统,其中,所述系统可包括簇初始化器、神经权重量化器、聚类误差确定器和簇数减少器。簇初始化器可初始化用于对深度学习网络的每个层l进行量化的簇的预定数量kl。神经权重量化器可反复地分配质心并关于用于量化的质心对权重进行聚类,直到针对每个量化层l确定了最低平均聚类误差εl为止。聚类误差确定器可从所述多个量化层确定具有作为所述多个量化层的聚类误差εl的最小值的聚类误差εl*的层l*。簇数减少器可将层l*的簇的预定数量减少一而作为用于对层l*进行量化的簇的数量。神经权重量化器还可基于层l*的簇的减少的预定数量对层l*进行重新量化,聚类误差确定器还可从所述多个量化层确定具有作为所述多个量化层的聚类误差εl的最小值的聚类误差εl*的另一个层l*,簇数减少器可将所述另一个层l*的簇的预定数量减少一而作为用于对所述另一个层进行量化的簇的数量,直到深度学习网络的识别性能已降低预定阈值为止。在一个实施例中,神经权重量化器使用k-means++来反复分配质心并关于质心对权重进行聚类(即,量化)。聚类误差εl可包括每个非零权重的平方簇误差,聚类误差εl可包括:

其中,n为用于对层进行量化的簇的预定数量,i为索引变量,wi为非零权重,ci为量化层l的质心。

示例实施例提供一种用于减少深度学习网络的权重存储位的方法,所述方法可包括:针对具有多个层的深度学习网络的每个层l初始化簇的预定数量kl;针对每个层l,反复地分配质心并关于用于量化的质心对权重进行聚类,直到针对层l确定了最低平均聚类误差εl为止;从所述多个层确定具有作为量化的所述多个层的聚类误差εl的最小值的平均聚类误差εl*的层l*;将层l*的簇的预定数量减少一而作为用于对层l*进行量化的簇的数量;基于层l*的簇的减少的预定数量,对层l*进行重新量化;继续从所述多个层确定具有作为所述多个层的聚类误差εl的最小值的聚类误差εl*的另一个层l*,将所述另一个层l*的簇的预定数量减少一而作为用于对所述另一个层进行量化的簇的数量,基于所述另一个层l*的簇的减少的预定数量对所述另一个层l*进行重新量化,直到深度学习网络的识别性能经降低预定阈值为止。

示例实施例提供一种用于减少深度学习网络的权重存储位的系统,所述系统可包括权重量化模块和簇数减少模块。权重量化模块可基于已针对深度学习网络的每个层l初始化的簇的预定数量kl,对每个层l的神经权重进行量化。簇数减少模块可减少层l*的簇的预定数量,其中,层l*可具有作为由权重量化模块量化的所述多个量化层的聚类误差εl的最小值的聚类误差εl*。权重量化模块还可基于层l*的簇的减少的预定数量对层l*进行重新量化并且簇数减少模块还可从所述多个量化的层确定具有作为所述多个量化层的聚类误差εl的最小值的聚类误差εl*的另一个层l*,并可将所述另一个层l*的簇的预定数量减少一而作为用于对所述层进行量化的簇的数量,直到深度学习网络的识别性能已降低预定阈值为止。

附图说明

在以下部分中,将参照附图中示出的示例性实施例来描述在此公开的主题的方面,其中:

图1描绘用作深度学习网络的公知的vgg16架构;

图2描绘根据在此公开的主题的rdq技术的示例实施例;

图3描绘如应用于vgg16架构的根据在此公开的主题的rdq技术的四次迭代的示例结果的表;

图4描绘如应用于vgg16架构的根据在此公开的主题的rdq技术的五次迭代的示例结果的表;

图5描绘阐述针对不同的量化技术获得的vgg16架构的每个层的权重减少的比较的表;

图6描绘基准簇合并(benchmarkclustermerging)技术的示例实施例;

图7描绘根据在此公开的主题的递归深度量化处理器的示例实施例的功能框图;

图8描绘根据在此公开的主题的包括包含递归深度量化处理器的一个或多个集成电路(芯片)的电子装置。

具体实施方式

在下面的详细描述中,阐述了许多具体细节以提供对本公开的彻底理解。然而,本领域的技术人员将理解,可在没有这些具体细节的情况下实践公开的方面。在其他情况下,没有详细描述公知的方法、程序、组件和电路,从而不会使在此公开的主题模糊。

贯穿本说明书的对“一个实施例”或“实施例”的参考表示结合实施例描述的特定特征、结构或特性可包括在在此公开的至少一个实施例中。因此,贯穿本说明书的各个地方中的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似意思的其他短语)的出现可不必都表示同一实施例。此外,可在一个或多个实施例中以任何合适的方式组合特定特征、结构或特性。在这方面,如在此使用的,词语“示例性”表示“用作示例、实例或说明”。在此被描述为“示例性”的任何实施例不应被解释为相对于其他实施例而言必需优选或有优势。此外,根据在此的讨论的上下文,单数术语可包括对应的复数形式,并且复数术语可包括对应的单数形式。还应注意,在此示出和讨论的各种附图(包括组件示图)仅为了说明的目的,并且不是按比例绘制的。类似地,仅为了说明的目的示出各种波形和时序图。例如,为了清楚,一些元件的尺寸可相对于其他元件被夸大。此外,如果认为适当,则已经在附图中重复附图标号,以指示对应的和/或类似的元件。

在此使用的术语仅为了描述特定的示例性实施例的目的,并不意图限制要求保护的主题。如在此使用的,除非上下文清楚地另有指示,否则单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包括”时,指定存在阐述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的组。如在此使用的,术语“第一”、“第二”等被用作它们之后的名词的标签,除非明确这样定义,否则它们并不意味着任何类型的排序(例如,空间的、时间的、逻辑的排序等)。此外,在两个或更多个附图之间可使用相同的参考标号来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这样的用法仅仅是为了说明简单且易于讨论;这并不意味着:这样的组件或单元的构造或架构的细节在所有实施例中都是相同的,或者这样的共同参考的部件/模块是实现在此公开的特定实施例的教导的唯一方式。

除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此清楚地定义,否则术语(诸如,通用字典中定义的术语)应被解释为具有与相关技术领域的上下文中的含义相同的含义,而不被解释为理想化或过于正式的含义。

如在此使用的,术语“模块”表示被配置为提供在此结合模块描述的功能的软件、固件和/或硬件的任意组合。如应用于在此描述的任何实现的术语“软件”可以被实现为软件包、代码和/或指令集或指令。如应用于在此描述的任何实现的术语“硬件”可例如单独或以任何组合的方式包括硬连线电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件。模块可共同地或单独地被实现为形成较大系统(诸如,但不限于,集成电路(ic)、片上系统(soc)等)的部分的软件、固件和/或硬件。

图1描绘公知的vgg16架构100。vgg16架构100包括13个卷积(conv)层、三个完全连接(fc)层和五个池化层(pl)。vgg16架构100的输入被施加到卷积层conv1_1,输出在分类被提供。

由于典型的深度学习神经网络(诸如,vgg16架构100)中的大量的层,针对每个层确定最佳量化位造成高度复杂的任务,这是因为不同层与网络内的其他层相依赖。也就是说,一个层中的神经元权重的量化依赖于其他层的量化,使得用于在每个层达到最小数量的量化位的贪婪逐层量化方法经常被显示为无效,这也导致整体系统精度的显著损失。为了减少搜索复杂性,当前的基准对神经元权重的量化进行约束,以将一种类型的层量化为相同数量的位。例如,一个基准针对vgg16架构的卷积层设置256个量化等级并针对vgg16架构的完全连接层设置32个量化等级。由该基准施加的固定的量化等级由于一些原因而不是最优的。为了达到深度学习神经网络的较低位分辨率,应在每个层以最小量化等级对神经元权重进行量化。

图2描绘根据在此公开的主题的递归深度量化(rdq)技术200的示例实施例。rdq技术200可用于量化深度学习神经网络的层,并提供:(1)层应被量化的顺序,(2)在每个层何时停止量化,(3)整体最佳量化路径,(4)基于其他量化的层的结果是否对层进行反复量化以达到网络的整体最小量化等级。此外,rdq技术200消除了固定或预约束的量化等级,使得可针对每个层来最小化或优化量化等级从而获得网络的零性能损失或最小性能损失的整体结果。因此,rdq技术200可用于提供可用低位分辨率表示并且针对例如图像识别任务保持良好性能的深度学习神经网络。

在图2中,rdq技术200在201开始。在202,针对具有l个层的深度学习网络的每个层l初始化簇的数量kl,其中,l为范围从1到l的层,l为整数。针对每个层初始化的簇的数量kl可针对每个层而不同。可针对每个层任意地选择簇的数量kl,但是可使用用于针对每个单独的层初始化簇的数量的其他更好的策略(诸如,下面在图6中描述的基准簇合并技术600)。应理解,rdq技术200不需要针对深度学习网络的每个层初始化簇的数量kl,并且可在没有在202的簇初始化的情况下对深度学习网络中的权重进行直接操作。然而,用于设置深度学习网络的每个单独的层的簇的数量的初始化处理的使用将加速整体处理。

在203,l被初始化为等于1,并经过所有层直到结束。在204,k-means++算法被用于确定在层l的神经网络权重的质心分配和量化。在205,针对层l确定每个非零权重的平方簇误差(squareclustererror)εl。在一个实施例中,每个非零权重的平方簇误差εl被确定为:

其中,n为用于对层l进行量化的簇的预定数量,i为索引变量,wi为非零权重,cl为层l的质心。针对通过网络的第一次量化迭代,用于对层进行量化的簇的预定数量为例如在202针对层l初始化的簇的数量kl。针对随后的量化迭代,可通过rdq技术200减少用于对层进行量化的簇的数量。

在206,确定是否已对深度学习网络的所有层的权重进行了量化以及是否已针对每个层都确定了平方簇误差εl。如果在206确定还没有对深度学习网络的所有层的所有权重进行量化并且还没有针对每个层都确定平方簇误差εl,则流程继续到207,其中,在207,层l被增加。然后,流程返回到204。

如果在206确定已对深度学习网络的所有层的所有权重进行了量化并且已针对每个层都确定了平方簇误差εl,则流程继续到208,其中,在208,确定深度学习网络的识别性能是否已从基线识别性能降低了阈值量。在一个实施例中,阈值量可以是大约1%。在其他实施例中,阈值量可以与大约1%不同。

如果在208深度学习网络的识别性能还没有从基线识别性能降低阈值量,则流程继续到210,其中,在210,具有最小平方簇误差εl*的层被识别为层l*。在211,用于对层l*的权重进行量化的簇的数量减少一个。即:

kl*=kl*-1(2)

虽然层l*的簇的数量被公开为减少1,但是应理解,层l*的簇的数量可减少得比1多。

在212,k-means++算法被用于确定层l*的神经网络权重的质心分配和聚类(即,量化)。在213,针对层l*确定每个非零权重w的平方簇误差εl。流程返回到208,其中,在208,使用不同层的新确定的量化的权重来操作深度学习网络。特别地,在212针对层l*确定的量化的权重被用于操作深度学习网络。在208,确定深度学习网络的识别性能是否已从基线识别性能降低了阈值量。如果在208,深度学习网络的识别性能还没有降低阈值量,则流程继续到210。如果在208,深度学习网络的识别性能已降低了阈值量,则流程继续到209,其中,在209,处理结束。

图3描绘如应用于图1所示的vgg16架构100的rdq技术200的四次迭代的示例结果的表300。在表300中的301,针对vgg16架构100的每个层示出权重的初始数量。在302,示出针对每个层l初始化的簇的数量kl。这对应于图2中的操作202的结果。表300中的在302示出的特定数字是通过使用下面在图6中描述的基准簇合并技术600而获得的。对于迭代0,针对每个层确定平方簇误差εl,并确定vgg16架构100的识别性能。如在303所示,基于前5的分数累积的识别性能为88.38%,而基于第1分数累积的识别性能为67.73%。为了在此说明的目的,这两种识别性能将被用作基线识别性能。

如在304所示,确定层conv5_1具有0.148的最低平方簇误差εl。这对应于图2中的210。用于对层conv5_1的权重进行量化的簇的数量(即,52)被减少一而成为51(在迭代1中示出)。在迭代1中使用减少的数量的簇减少来对层conv5_1的权重进行重新量化。如在305所示,迭代1之后的深度学习网络的识别性能针对前5的分数累积为88.38%,针对第1分数累积为67.73%。

迭代1之后的深度学习网络的识别性能还没有下降大约1%的阈值量,所以如在306所示,确定层conv4_3具有0.151的最低平方簇误差εl。用于对层conv4_3的权重进行量化的簇的数量(即,51)被减少一而成为50(在迭代2中示出)。层conv4_3的权重在迭代2中被重新量化。如在307所示,迭代2之后的深度学习网络的识别性能针对前5的分数累积为88.32%,针对第1分数累积为67.68%。

迭代2之后的深度学习网络的识别性能还没有下降大约1%的阈值量,所以如在308所示,确定层conv5_1具有0.154的最低平方簇误差εl。用于对层conv5_1的权重进行量化的簇的数量(即,51)被减少一而成为50(在迭代3中示出)。层conv5_1的权重在迭代3中被重新量化。如在309所示,迭代3之后的深度学习网络的识别性能针对前5的分数累积为88.32%,针对第1分数累积为67.68%。该处理持续直到深度学习网络的识别性能下降阈值量为止。

图4描绘如应用于图1中描绘的vgg16架构100的rdq技术200的五次迭代的示例结果的表400。除了示出迭代0的结果之外,通过示出迭代18、迭代100、迭代200和迭代360之后的rdq技术200的结果,表400与图3的表300相似。可在粗体中看到具有权重减少的层。如在401所示,迭代360之后的深度学习网络的识别性能已经下降了大约1%的阈值量,所以rdq技术结束。

图5描绘阐述针对不同的量化技术获得的vgg16架构100的每个层的权重减少的比较的表500。在501,示出每层4096个簇的均匀量化的sun技术。在502,与在501所示的sun技术相比,使用k-means非均匀量化技术的sun技术显示出每个层的簇的减少。在503,示出具有k-means和随机初始化技术的剪枝(pruning)的结果。应注意,在图1的描述中,将在503示出的技术称为基准,其中,该基准针对vgg16架构的卷积层设置256个量化等级并且针对vgg16架构的完全连接层设置32个量化等级。在504,示出使用具有k-means和对数空间初始化技术的剪枝对每层权重的减少的进一步提高。在505,通过使用具有线性初始化的k-means的song技术(song’stechnique),提供进一步的提高。在506,通过使用剪枝和具有线性初始化的k-means以及基准簇合并(图6)的技术,提供持续的提高。

最后,在507示出rdq技术200的结果。虽然未在图5中示出,但是rdq技术200的结果利用了图6的基准簇合并技术600。然而,rdq技术200不需要具有针对深度学习网络的每个层初始化的簇的数量kl,并且可在没有簇初始化的情况下对深度学习网络中的权重直接进行操作。如从表500可看出的,在此公开的rdq技术可用于对提供基于数据的量化初始化、应被量化的网络的层的顺序的自动确定以及优化地结束量化的方式的深度学习神经网络的层进行量化。

图6描绘基准簇合并技术600的示例实施例。在601,处理开始。在602,针对深度学习网络(诸如,图1所示的vgg16架构100)的每个层l初始化簇的数量kl。在602,针对每个层l设置距离阈值tl。相同的距离阈值tl可用于每个层l,或者不同的距离阈值可用于每个层l。在604,初始化层l。在605,在层l中对神经网络权重进行量化;在606,在层l中选择两个邻近的簇。

如果在607,质心到质心的距离dc-c小于该层的距离阈值tl,则流程继续到608,其中,在608,两个邻近的簇被合并以形成新的簇质心cmerge:

其中,c1和c2分别为两个邻近的簇的簇质心,n1和n2分别为属于两个各自的邻近的簇的权重点的数量。

如果在607,两个选择的邻近的簇的质心到质心距离dc-c大于该层的距离阈值tl,则流程绕过608。在609,针对该层确定是否所有的质心到质心距离都大于距离阈值tl。如果不是,则流程返回到610,其中,在610中,在层l中选择两个邻近的簇,否则流程继续到611以确定是否已经处理了所有的层。如果没有,则流程返回到605;否则该处理在613结束。

图7描绘根据在此公开的主题的递归深度量化(rdq)处理器700的示例实施例的功能框图。rdq处理器700可包括权重量化模块701和簇数减少模块702。权重量化模块701和簇数减少模块702可以是被配置为提供在此结合模块描述的功能的软件、固件和/或硬件的任意组合。模块701和模块702可共同地或单独地被实现为形成较大系统(诸如,但不限于,集成电路(ic)、片上系统(soc)等)的部分的软件、固件和/或硬件。

权重量化模块701可包括深度学习网络的所有参数的输入(诸如,但不限于,层的数量和类型以及每层权重的数量)。权重量化模块701使用输入将每层的簇的数量703、每个层的每个非零权重w的平方簇误差εl704以及每次迭代的识别性能705输出到簇数减少模块702。作为输出,簇数减少模块702将层l*和层l*的簇的减少的数量kl*(706)输出到权重量化模块701。权重量化模块701和簇数减少模块702一起操作以提供图2所示的rdq技术200的功能。在一个实施例中,rdq处理器700的输出是权重优化的深度学习网络。

在一个实施例中,图2所示的操作202至操作206可由权重量化模块701提供,操作208至操作213可由簇数减少模块702提供。在另一个实施例中,可在权重量化模块701与簇数减少模块702之间不同地布置或分配功能。

图8描绘根据在此公开的主题的包括包含rdq处理器的一个或多个集成电路(芯片)的电子装置800。电子装置800可用于,但不限于,计算装置、个人数字助理(pda)、膝上型计算机、移动计算机、网络平板、无线电话、蜂窝电话、智能电话、数字音乐播放器或者有线或无线电子装置。电子装置800可包括通过总线850彼此连接的控制器810、输入/输出装置820(诸如,但不限于,小键盘、键盘、显示器或触摸屏显示器)、存储器830以及无线接口840。控制器810可包括例如至少一个微处理器、至少一个数字信号处理、至少一个微控制器等。存储器830可被配置为存储将由控制器810使用的命令代码或用户数据。电子装置800和包括电子装置800的各种系统组件可包括根据在此公开的主题的rdq处理器。电子装置800可使用被配置为使用rf信号将数据发送到无线通信网络或者从无线通信网络接收数据的无线接口840。无线接口840可包括例如天线、无线收发器等。电子系统800还可用于通信系统的通信接口协议(诸如,但不限于,码分多址(cdma)、全球移动通信系统(gsm)、北美数字通信(nadc)、扩展时分多址(e-tdma)、宽带cdma(wcdma)、cdma2000、wi-fi、市政wi-fi(muniwi-fi)、蓝牙、数字增强无绳电信(dect)、无线通用串行总线(wirelessusb)、利用无缝切换正交频分复用的快速低延迟接入(flash-ofdm)、ieee802.20、通用分组无线业务(gprs)、iburst、无线宽带(wibro)、wimax、wimax-advanced、通用移动电信业务-时分双工(umts-tdd)、高速分组接入(hspa)、演进数据优化(evdo)、先进的长期演进(lte-advanced)、多信道多点分配业务(mmds)等)。

如本领域技术人员将认识的,可在广泛的应用中对在此描述的创新构思进行修改和变化。因此,所要求保护的主题的范围不应受限于以上讨论的任何具体的示例性教导,而是由权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1