掌桥专利:专业的专利平台
掌桥专利
首页

用于压缩神经网络中的权重的聚类压缩

文献发布时间:2023-06-19 09:29:07


用于压缩神经网络中的权重的聚类压缩

相关申请

本申请要求2018年3月13日提交的美国临时申请号62/642,578和2018年5月17日提交的美国临时申请号62/672,845的优先权。

技术领域

本发明涉及一种神经网络,并且更特别地涉及通过使用聚类技术来量化并压缩神经网络的参数。

背景技术

如今,神经网络(特别是卷积神经网络)被广泛用于执行图像识别/分类(例如,将整个图像识别属于“狗”类)、对象识别/分类(例如,识别在图像中在特定位置处存在具有特定大小的“狗”)和图像分割(例如,识别图像中的属于“狗”类的对象中的某些像素)。在具有众多应用(例如,自动驾驶汽车的对象识别、社交网络的面部识别等)的同时,神经网络需要密集的计算处理和频繁的存储器访问。本文描述了用于在将神经网络的参数加载到计算引擎中时减少从存储器访问的数据量的技术。

发明内容

在一个实施例中,本发明提供了一种用于在计算系统上将卷积神经网络实例化的方法。所述卷积神经网络包括多个层,并且将所述卷积神经网络实例化包括:使用第一损失函数来训练所述卷积神经网络,直到达到第一分类准确度为止;将所述第一层的一组F×K个内核聚类为一组C个群集;使用第二损失函数来训练所述卷积神经网络,直到达到第二分类准确度为止;创建字典,所述字典将多个质心中的每一个映射到对应质心标识符;量化并压缩所述第一层的F个滤波器;将所述第一层的F个量化并压缩的滤波器存储在所述计算系统的存储器中;将所述第一层的F个偏差存储在所述存储器中;以及对由所述卷积神经网络接收的数据进行分类。

所述第一损失函数计算所述卷积神经网络的分类误差。利用所述第一损失函数来训练所述卷积神经网络包括针对所述层中的第一层优化第一组F个滤波器和第一组F个偏差以便最小化所述第一损失函数,其中所述F个滤波器中的每一个由K个内核形成,其中所述内核中的每一个具有N维,并且其中所述偏差中的每一个是标量的。

所述群集中的每一个由质心表征,因此所述C个群集由C个质心表征。所述质心中的每一个具有N维,并且C小于F×K。

所述第二损失函数是所述分类误差与聚类误差的线性组合。所述聚类误差汇总所述内核中的每一个与所述C个质心中的最接近相应内核的一个质心之间的偏移。利用所述第二损失函数来训练所述卷积神经网络包括优化所述F个滤波器和所述F个偏差以便最小化所述第二损失函数。

量化并压缩所述第一层的所述F个滤波器包括通过针对所述F×K个内核中的每一个将所述内核替换成标识最接近所述内核的质心的质心标识符。所述F个量化并压缩的滤波器包括F×K个质心标识符。

所述分类包括:从所述存储器检索所述第一层的所述F个量化并压缩的滤波器;使用所述字典,通过将所述F×K个质心标识符映射到F×K个对应的量化内核中来将所述第一层的所述F个量化并压缩的滤波器解压缩为F个量化滤波器,所述F×K个对应的量化内核形成所述F个量化滤波器;从所述存储器检索所述第一层的所述F个偏差;以及针对所述第一层,利用所述F个量化滤波器和所述F个偏差来计算所述接收的数据或从所述第一层之前的层输出的数据的卷积。

在一些实施例中,本发明方法还包括:在所述卷积神经网络的所述实例化期间,进一步将所述字典存储在所述存储器中;以及在对所述接收的数据进行分类期间,进一步从所述存储器检索所述字典。

在各种实施例中,C可等于2

附图说明

图1描绘了提供神经网络中的模型训练和模型应用的概述的图解。

图2描绘了卷积运算的输入、模型参数和输出的图解,所述模型参数包括单个2维滤波器。

图3描绘了解释使用2维滤波器进行卷积运算的计算的图解。

图4描绘了卷积运算的输入、模型参数和输出的图解,所述模型参数包括多个2维滤波器。

图5描绘了卷积运算的输入、模型参数和输出的图解,所述模型参数包括单个3维滤波器。

图6描绘了解释使用3维滤波器进行卷积运算的计算的图解。

图7描绘了卷积运算的输入、模型参数和输出的图解,所述模型参数包括多个3维滤波器。

图8描绘了在其中实例化神经网络的计算系统。

图9描绘了根据本发明的一个实施例的包括多个层的卷积神经网络。

图10描绘了根据本发明的一个实施例的使用F×K个内核来构造F个滤波器的图解,以及F×K个内核作为N维空间中的点的可视化。

图11描绘了根据本发明的一个实施例的示意图,其中F×K个内核被聚类为C个群集并且每个C个群集由质心表征。

图12描绘了根据本发明的一个实施例的用来示出对F×K个内核执行的联合优化过程的图解。

图13A描绘了根据本发明的一个实施例的用来示出在卷积神经网络的训练期间量化和压缩F个滤波器的图解。

图13B描绘了根据本发明的一个实施例的用来示出在卷积神经网络的训练期间量化和压缩F个滤波器的图解。

图14描绘了根据本发明的一个实施例的在F个滤波器的压缩和解压缩期间使用的字典。

图15描绘了根据本发明的一个实施例的用来示出在卷积神经网络的应用期间解压缩F个滤波器的图解。

图16描绘了根据本发明的一个实施例的具有卷积神经网络的模型训练和模型应用的概述的流程图。

图17描绘了根据本发明的一个实施例的在卷积神经网络的训练期间执行的过程的流程图。

图18描绘了根据本发明的一个实施例的在卷积神经网络的应用期间执行的过程的流程图。

图19描绘了计算机系统的组件,在其中可存储和执行实例化本发明的方法的计算机可读指令。

具体实施方式

在优选实施例的以下详细描述中,参考了形成其一部分的附图,并且在附图中通过说明的方式示出其中可实践本发明的具体实施例。应理解,在不脱离本发明的范围的情况下,可利用其他实施例并且可进行改变。与任何一个附图相关联的描述可应用于包含相似或类似组件/步骤的不同附图。

多层机器学习模型(例如,神经网络),尤其是用于计算机视觉的模型,具有数千万个参数。这种模型的大小可容易达到数十或数百兆字节。减小这种模型的大小将是有利的存在多种可能的原因。可能的原因之一是最小化模型大小,以使得可使用较小的存储器来存储参数,诸如与卷积器/卷积引擎位于同一芯片上的静态随机存取存储器(SRAM),而不是外部存储卷积器/卷积引擎(例如,动态随机存取存储器(DRAM)或闪存)。更重要的是,在将特定层的所有权重加载到神经网络的计算引擎中时,减少存储器访问量对于低功耗应用至关重要。

图1描绘了提供神经网络中的训练阶段和推理阶段的概述的图解。在训练阶段,可提供输入和已知(或期望)输出对,以训练分类模型104的模型参数(也称为“权重”)。为简洁起见,在图1中仅描绘了一个输入和输出对(102、106),但实际上,许多已知的输入和输出对将用于训练分类模型104。在图1的示例中,输入102是数字矩阵(它可表示图像的像素),并且已知输出106是分类概率的向量(例如,输入图像是猫的概率是1,输入图像是狗的概率是0,并且输入图像是人的概率是0)。在一个可能的训练过程中,分类概率可由人提供(例如,人可识别输入图像描绘了猫并且相应地分配分类概率)。在模型训练过程结束时,将估计模型参数(例如W1=1.2,W2=3.8,W3=2.7)。有时,可能存在直观的方式来解释模型参数,但很多时候可能没有直觉与模型参数相关联,并且模型参数可能仅仅是最小化给定输入集的模型的分类与已知分类之间的误差的参数(同时避免“模型过度拟合”)。

在推理(或预测或前馈)阶段,具有训练参数(即,在训练阶段期间训练的参数)的模型104用于对一组输入进行分类。在本申请中,响应于输入108,训练分类模型104提供概率的向量的分类输出110(例如,输入图像是猫的概率是0.3,输入图像是狗的概率是0.6,并且输入图像是人的概率是0.1)。

分类模型104的一个实施例是卷积神经网络,将在图9中对其进行详细描述。卷积神经网络的基本构建块是卷积运算,在图2至图7中对其进行描述。如下面进一步描述,卷积运算可以指具有2维输入和2维滤波器的2维卷积运算、具有3维输入和3维滤波器的3维卷积运算等。卷积神经网络的其他构建块可包括长短期记忆(LSTM)单元(为简洁起见在本文中不作描述)。

图2描绘了卷积运算的输入、模型参数和输出的图解,所述模型参数包括单个2维滤波器。在图2的示例中,输入包括2维数值矩阵(每个数字值均由“·”抽象地表示)。图2的示例中的矩阵为4×4矩阵,但其他输入可具有不同尺寸(例如,可以是100×100正方形矩阵、20×70矩形矩阵等)。稍后呈现的示例将示出输入甚至可能是3维对象。实际上,输入可以是具有数量的维度的对象。输入可代表图像的像素值,或者可代表前一卷积运算的输出。

模型参数可包括滤波器和偏差。在图2的示例中,滤波器是2×2值矩阵,而偏差是标量值。稍后呈现的示例将示出滤波器的尺寸可变化(例如,可以是3×3正方形矩阵),并且另外,尺寸的数量可大于2(例如,可以是3×3×256对象)。通常,会存在与每个滤波器相关联的一个偏差。图2中的示例包括一个滤波器,因此存在一个对应偏差。然而,在某些实施例中,如果存在5个滤波器,则将存在5个相关联偏差。

卷积运算符208(缩写为“conv”)接收输入202和模型参数204、206,并且生成称为激活图或特征图的输出210。激活图的每个值都生成为输入202和滤波器204(相对于输入202的某一空间位置处)与偏差206相加的点积。下面在图3中更详细地描述将达到激活图210的计算。

图3的第一行描述了激活图210的位置(1,1)处的元素的计算。如第一行所示,滤波器204与输入202的位置(1,1)、(1,2)、(2,1)和(2,2)处的元素“对齐”。在滤波器204与输入202的这四个值之间计算点积。然后将点积与偏差b相加,以达到激活图210的位置(1,1)处的元素。

图3的第二行描述了激活图210的位置(1,2)处的元素的计算。如第二行所示,滤波器204与输入202的位置(1,2)、(1,3)、(2,2)和(2,3)处的元素“对齐”。在滤波器204与输入202的这四个值之间计算点积。然后将点积与偏差b相加,以达到激活图210的位置(1,2)处的元素。

图3的第三行描述了激活图210的位置(1,3)处的元素的计算。如第三行所示,滤波器204与输入202的位置(1,3)、(1,4)、(2,3)和(2,4)处的元素“对齐”。在滤波器204与输入202的这四个值之间计算点积。然后将点积与偏差b相加,以达到激活图210的位置(1,3)处的元素。

图3的第四行描述了激活图210的位置(3,3)处的元素的计算。如第四行所示,滤波器204与输入202的位置(3,3)、(3,4)、(4,3)和(4,4)处的元素“对齐”。在滤波器204与输入202的这四个值之间计算点积。然后将点积与偏差b相加,以达到激活图210的位置(3,3)处的元素。通常,卷积运算包括多个移位(或对齐)、点积和偏差(或求和)步骤。在本示例中,滤波器在点积计算之间移动了1个空间位置(称为步长或步幅),但2、3等其他步长也是可能的。同样,虽然可在输入202周围添加零填充,但为简洁起见,图3中未描述零填充。

图4与图2类似,不同之处在于存在F个滤波器404、F个偏差406和F个激活图410,而不是单个滤波器204、单个偏差206和单个激活图210。F个滤波器404、F个偏差406与F个激活图410之间的关系如下。滤波器f

图5与图2类似,不同之处在于存在3维输入502和3维滤波器504,而不是2维输入202和2维滤波器204。下面在图6中更详细地描述将达到激活图510的计算。尽管输入502和滤波器504是3维的,但是激活图510仍然是2维的,如在图6的相关联描述中将变得显而易见。

图6的第一行描述了激活图510的位置(1,1)处的元素的计算。如第一行所示,滤波器504与输入502的位置(1,1,z)、(1,2,z)、(2,1,z)和(2,2,z)处的元素“对齐”,其中z∈{1,2,3,4}。在滤波器504和输入502的这十六个值之间计算点积。然后将点积与偏差b相加,以达到激活图510的位置(1,1)处的元素。

图6的第二行描述了激活图510的位置(1,2)处的元素的计算。如第二行所示,滤波器504与输入502的位置(1,2,z)、(1,3,z)、(2,2,z)和(2,3,z)处的元素“对齐”,其中z∈{1,2,3,4}。在滤波器504和输入502的这十六个值之间计算点积。然后将点积与偏差b相加,以达到激活图510的位置(1,2)处的元素。

图6的第三行描述了激活图510的位置(1,3)处的元素的计算。如第三行所示,滤波器504与输入502的位置(1,3,z)、(1,4,z)、(2,3,z)和(2,4,z)处的元素“对齐”其中z∈{1,2,3,4}。在滤波器504和输入502的这十六个值之间计算点积。然后将点积与偏差b相加,以达到激活图510的位置(1,3)处的元素。

图6的第四行描述了激活图510的位置(3,3)处的元素的计算。如第四行所示,滤波器504与输入502的位置(3,3,z)、(3,4,z)、(4,3,z)和(4,4,z)处的元素“对齐”,其中z∈{1,2,3,4}。在滤波器504和输入502的这十六个值之间计算点积。然后将点积与偏差b相加,以达到激活图510的位置(3,3)处的元素。如果尚不明显,则滤波器504的深度(或滤波器504的“z”维度的大小)必须与输入502的深度(或输入502的“z”维度的大小)匹配。输入502的深度有时称为输入502的通道数。在图5的本示例中,输入502的深度和滤波器504的深度都是四。

图7与图5类似,不同之处在于存在F个3维滤波器704、F个偏差706和F个激活图710(F>1)。而不是单个3维滤波器504、单个偏差506单个激活图510。F个3维滤波器704、F个偏差706与F个激活图710之间的关系如下。滤波器f

图8描绘了可在其中实例化神经网络的计算系统800。处理器806可从存储器802检索输入数据(类似于图2中的输入202、图2中的输入402等)。处理器806的示例包括通用处理器、中央处理器(CPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、微控制器等。存储器802的示例包括SRAM、DRAM、闪存、电可擦除可编程只读存储器(例如EEPROM)等。处理器806可从存储器804检索模型参数(类似于图2中的滤波器204和偏差206、图4中的滤波器404和偏差406等)。基于检索到的输入和模型参数,处理器806可执行卷积计算、整流线性单元(reLU)计算、最大池计算和其他计算,以便从存储器802生成输入的分类808。

图9描绘了根据本发明的一个实施例的包括多个层(或级)的卷积神经网络904。尺寸为512×512×3的输入在概念上可与图1中描绘的输入102(或108)相对应。在图9的示例中,输入可以是由512×512个像素组成的彩色图像的一部分。输入深度3(即,输入的z维度)可表示彩色图像的红色、绿色和蓝色分量。

尺寸为8×8×200的输出在概念上可与图1中描绘的输出106(或110)相对应。在图9的示例中,输出中的第一8×8矩阵(即,x∈{1,...,8)和y∈{1,...,8}的(x,y,1))可对输入中的对象进行分类。第一8×8矩阵中的每个分类值可指示某一对象(例如,1指示猫,2指示狗,3指示人)。分类值在第一8×8矩阵中的位置可提供输入图像中的已分类对象的空间信息(例如,第一8×8矩阵的元素(1,1)中的值为1可指示一只猫位于输入图像的左上角)。输出的深度(即,z)维度可指明与已分类对象相关联的属性。属性可包括对象是否以竖直方式(例如,站立位置)定向、对象是否以水平方式(例如,躺下位置)定向等。

图9中的卷积神经网络904可以是图1中的分类模型104的示例。卷积神经网络904可使用多个层(例如,卷积层、reLU层、最大池层、LSTM层等)来构造。注意,给定卷积神经网络的特定结构可能会在层的数量和类型、输入和输出的尺寸、滤波器的尺寸等方面发生变化。在图9的示例中,为简单起见仅描述了卷积层。在第1层中,将尺寸为512×512×3的输入与64个滤波器和64个偏差进行卷积,以生成尺寸为256×256×64的激活图。在第2层中,将尺寸为256×256×64的输入与128个滤波器和128个偏差进行卷积,以生成尺寸为128×128×128的激活图。在第2层中,将尺寸为16×16×256的输入与256个滤波器和256个偏差进行卷积,以生成尺寸为16×16×256的激活图。为简洁起见,省略了卷积神经网络904的其他层。

类似于图1的示例,在训练阶段期间训练卷积神经网络904的参数。卷积神经网络904的参数包括作为各种滤波器和偏差的一部分的参数。一旦训练了参数,就可应用卷积神经网络904以对输入图像内的信息内容进行分类。在接下来几张图中描述的量化和数据压缩技术之后将变得更加明显的是,为清楚起见请注意,图9中描绘的卷积神经网络904的结构更具体地与训练阶段期间的卷积神经网络904相对应。在推理阶段期间,从存储器804检索码字,将所述解压缩为层h的256个滤波器的量化版本,并且使用256个量化滤波器(连同256个对应偏差)来执行层h的卷积运算。

在电池供电的装置中,功率通常是有限的。功率有限的原因不仅在于电池中储存的能量有限,而且在于使用高功率会导致装置不合期望的过热。特别地,每当从存储器(诸如存储器804)检索参数时都会消耗功率。本发明的一个目的是通过降低计算系统800的功耗来改善其功能。可通过最小化从诸如存储器804等存储器读取(或存储到所述存储器)的数据量来降低功耗。最小化存储到存储器804和/或从存储器804读取的数据量的一种方式是存储和/或检索滤波器的压缩和量化版本。为解释清楚起见,以下讨论将集中于量化和压缩层h的256个滤波器,但应理解,可应用相同技术以量化并压缩层中的不同层的滤波器。

虽然最小化功率使用可能是本发明的一个益处和/或应用,但是应理解,可能存在其他应用,诸如减少存储到存储器804和从存储器804检索的数据量(这甚至在功率不受限的系统中具有适用性),这转而允许减小存储器804的大小。如上面简要解释,存储器804的减小的大小可允许存储器与卷积器/卷积引擎位于同一芯片(例如,与处理器806相同的芯片)上,从而允许更快速地存储并且检索模型参数。

作为对层A的256个滤波器进行压缩和量化的算法的概述,首先经由反向传播算法(或另一个优化过程,诸如粒子群优化、遗传算法等)来训练256个滤波器。为完整起见,注意,反向传播算法用于优化层h的256个滤波器和其相关联的256个偏差的参数(以及其他层的滤波器和偏差的参数),其目的是最小化分类误差(即,最小化预测分类与训练数据中提供的正确分类不匹配的可能性)。换句话说,常规反向传播算法的损失函数可包括分类误差,而反向传播算法可最小化这种损失函数。反向传播算法在本领域中是众所周知的,并且为简洁起见在本文中不作描述。在训练了256个滤波器直到达到第一分类准确度之后,对256个滤波器进行量化。在对256个滤波器进行量化之后,压缩256个量化滤波器。256个量化滤波器的已压缩版本存储在存储器804中。在模型应用阶段期间,从存储器804检索256个压缩并量化的滤波器。将256个压缩并量化的滤波器解压缩为256个量化滤波器。然后,使用256个量化滤波器(以及相关联的256个偏差)执行来自层h的卷积运算。可以常规方式进行将256个偏差存储到存储器804和从存储器804检索256个偏差的操作,因此这些细节为简洁起见在本文中不作描述。

现参考图10至图15详细描述量化、压缩和解压缩方法。在图10中,假设所描绘的256个(或F个)滤波器是已通过反向传播算法(或其他优化算法)训练以最小化分类误差的滤波器。然后,将每个F滤波器分解为K个内核。在图9和图10的示例中,每个滤波器都是尺寸为3×3×256(或3×3K)的3维对象。图10说明了可将滤波器中的每一个分解为256个(或K个)3×3内核的方式。例如,将滤波器f

注意,图10所示的内核的分解仅仅是一个示例,并且可以不同方式将滤波器分解为内核。作为另一个示例(未示出),每个滤波器可由九个内核构成,其中内核1被构造为具有相应滤波器的位置(1,1,z)处的元素的向量,其中z∈{1,…,256};内核2被构造为具有相应滤波器的位置(1,2,z)处的元素的向量,其中z∈{1,…,256);…并且内核9被构造为具有相应滤波器的位置(3,3,z)处的元素的向量,其中z∈{1,…,256}。如果将滤波器可视化为黄油棒,则可将九个内核(至少对于这种特定分解)可视化为九根细长的黄油棒。

返回到F个滤波器中的每一个被分解为K个3×3内核的所描绘分解,可将F×K个内核中的每一个可视化为9维空间中的点。9维空间的原因在于3×3内核具有9个参数(或分量)。9维空间的每个轴线表示内核的分量。如果使用4×4内核,则可将这些内核可视化为16维空间中的点。

在图11中,F×K个内核使用k-均值算法或其他聚类算法来将内核(每个内核为3×3矩阵)聚类为C个群集。为清楚起见,注意,不希望“k”均值中的k与表示内核的变量k之间有相关联。k-均值算法在本领域中是众所周知的,并且为简洁起见在本文中不作描述。为解释简单起见,假设C=8(即,存在8个群集)。为了便于描绘,仅描绘了8个群集中的3个。可通过Voronoi区域(即,9维空间的分区,每个分区包含相应内核群集)定义8个群集。Voronoi区域1102与群集0相对应;Voronoi区域1104与群集1相对应;Voronoi区域1106与群集2相对应;对于未描绘的其余的Voronoi区域依此类推。在一个实施例中,出于稍后将变得更清楚的原因(即,允许有效地使用位来存储质心标识符),将C选择为2的幂(即,C=2

质心与群集中的每一个相关联,并且可被计算为群集内的内核的质心(center ofmass)。如果将群集的质心表示为数字向量,则质心的第一部分将被计算为群集内所有内核的第一分量的平均值,质心的第二部分将被计算为群集内所有内核的第二分量的平均值,依此类推。已在图11中将三个质心绘制为黑点。质心c

量化F×K个内核的一种方法是,在所述方法的这一点上,将内核中的每一个设置等于其对应质心(即,内核所位于的Voronoi区域的质心)。尽管这种类型的量化是可能的,但是所提议的方法在执行这种量化步骤之前执行另外的优化步骤(在图12中描述)。

图12描述了优化过程背后的直觉,在所述过程中最小化分类误差以及内核中的每一个与其最接近的质心之间的偏移(为简洁起见称为“聚类误差”)。损失函数可公式化为分类误差与聚类误差的线性组合(或将分类误差与聚类误差组合的另一个数学函数)。可应用反向传播算法(或其他优化算法)以最小化瞬时损失函数。为清楚起见,注意,应用反向传播算法以最小化第一损失函数,从而达到图11中描绘的滤波器(和对应内核);使用k-均值算法(如图11中描绘)来计算质心;然后应用后续的反向传播算法以最小化第二损失函数(结合图12描述)。因此,可能存在两个反向传播阶段,即,一个在图11之前,一个在图12期间。

图12描述了在第二反向传播阶段的迭代期间将点(表示内核)可视化为在9维空间中的移动的方式。如果损失函数仅考虑聚类误差,则每个点将向其最接近的质心迁移。然而,由于损失函数除聚类误差外还包含分类误差,因此一些点实际上可朝向除最接近的质心以外的质心移动。为描述和解释简单起见,在图12中仅描绘了F×K个内核中的两个。内核k

执行第二反向传播阶段,直到达到第二分类准确度为止。与第二反向传播阶段相关联的第二分类准确度不一定等于第一分类准确度。随后,通过将每个内核设置为等于其最接近的质心来量化F×K个内核(其中可根据欧几里得距离来使用“最接近”)。在图12的示例中,将内核k

除了描述附加的压缩步骤之外,图13A还总结了训练并且量化层h的F个滤波器的上述步骤。在模型训练过程的开始,使用第一损失函数来训练卷积神经网络,直到达到第一分类准确度为止。在反向传播算法结束时,第一行滤波器表示层h的F个滤波器。然后,使用第二损失函数来训练卷积神经网络,直到达到第二分类准确度为止。这种第二训练步骤在图13A中被称为“联合优化”,它是指形成为分类误差与聚类误差的线性组合的第二损失函数。在联合优化过程结束时,第二行滤波器表示层h的F个滤波器。然后量化层h的F个滤波器。滤波器的每个内核的参数数量在量化过程期间保持不变,如量化过程结束时在内核的未改变几何描绘中示出。然而,在量化过程期间,每个内核都被约束为C个质心中的一个,这就是每个内核都已被质心标记的原因。应理解,质心的特定标记(k

此时,与F个“原始”滤波器(图13A或图13B的顶行)相比,呈现了数字比较以证明存储F个压缩并量化的滤波器所需的位减少了,就像在常规方法中的情况那样。假设存在256个滤波器(即,F=256),并且滤波器中的每一个具有3×3×256的尺寸。进一步假设使用8位来存储滤波器的每一个参数。因此,在常规方法中,存储来自层h的256个滤波器将需要存储3×3×256×256×8位=470万位。

在图13A(或图13B)中概述的方法中,假设将每个滤波器分解为256个内核(即,K=256)。进一步假设内核被量化为8个群集。由于群集数为8,因此每个码字可使用3位(即,=log

图15描述了在模型应用阶段执行的解压缩操作。针对层A,从存储器804检索先前描述的F×K个码字,并且使用图14中的示例字典来解压缩所述码字。解压缩操作涉及用质心代替质心标识符(或码字)。解压缩步骤产生F个量化滤波器,所述量化滤波器然后(连同未描绘的F个偏差)用来执行上述卷积运算。应理解,在存储器804中存储量化和压缩的数据的上述相同效率也适用于从存储器804中读取量化并压缩的滤波器数据。

图16描绘了根据本发明的一个实施例的具有卷积神经网络的模型训练和模型应用的概述的流程图1600。在步骤1602处,在计算系统800上将卷积神经网络实例化。卷积神经网络可包括多个层,所述多个层在某些实施例中包括卷积层、reLU层和最大池化层中的一者或多者。在步骤1604中,可使用卷积神经网络以对由卷积神经网络接收的数据进行分类。

图17描绘了根据本发明的一个实施例的在卷积神经网络的训练期间执行的过程的流程图1700。在步骤1702处,处理器806可使用第一损失函数来训练卷积神经网络,直到达到第一分类准确度为止。卷积神经网络的层中的第一层l

图18描绘了根据本发明的一个实施例的在卷积神经网络的应用期间执行的过程的流程图1800。在步骤1802处,处理器806可从存储器804检索第一层的F个量化并压缩的滤波器。在步骤1804处,处理器806可使用字典来将第一层l

注意,虽然已主要结合卷积运算描述了滤波器的压缩和量化,但应理解,这种算法对于涉及检索滤波器的神经网络中的其他运算可具有类似的适用性(例如,LSTM运算)。更一般地,这种算法可应用于循环网络(例如,正常LSTM或循环神经网络),所述循环网络也利用滤波器(例如,大部分是1维的并且随时间改变,并且不高于“空间”(例如,图像))。此类算法还可应用于1维卷积网络和3维卷积网络,其中可使用3维卷积层来处理图像时间数据,其中第三维度是时间维度(换句话说,数据将是视频数据)。甚至更一般地,可将此类算法应用于如在正常非卷积LSTM单元中存在的参数组,其中每个单元由一组参数描述。可通过许多可能的方式设计机器学习(ML)模型中的参数的分组。

图19描绘了计算机系统的组件,在其中可存储和执行实例化本发明的方法的计算机可读指令。如从前面的讨论显而易见,本发明的方面涉及各种计算机系统和其上存储有计算机可读指令的计算机可读存储介质的使用。图19提供了可表示本文讨论的任何计算系统(例如,计算系统800)的系统1900的示例。系统1900的示例可包括智能电话、台式机、笔记本电脑、大型计算机、嵌入式系统等。注意,并非所有各种计算机系统都具有系统1900的所有特征。例如,上面讨论的某些计算机系统可能不包括显示器,因为显示功能可由以通信方式耦合到计算机系统的客户端计算机提供,或者显示功能可能是不必要的。此类细节对于本发明不是关键的。

系统1900包括用于传达信息的总线1902或其他通信机构,以及与总线1902耦合来处理信息的处理器1904。计算机系统1900还包括主存储器1906,诸如随机存取存储器(RAM),或耦合到总线1902来存储将由处理器1904执行的信息和指令的其他动态存储装置。主存储器1906还可用于在执行要由处理器1904执行的指令期间存储临时变量或其他中间信息。计算机系统1900还包括耦合到总线1902来存储用于处理器1904的静态信息和指令的只读存储器(ROM)1908或其他静态存储装置。提供存储装置1910,例如硬盘、基于闪存的存储介质或处理器1904可从中进行读取的其他存储介质,并将所述存储装置1910耦合到总线1902来存储信息和指令(例如,操作系统、应用程序等)。

计算机系统1900可经由总线1902耦合到诸如平板显示器等显示器1912,来向计算机用户显示信息。输入装置1914(诸如包括字母数字和其他键的键盘)可耦合到总线1902,来将信息和命令选择传达给处理器1904。另一种类型的用户输入装置是光标控制装置1916,诸如鼠标、触控板或类似输入装置,来将方向信息和命令选择传达给处理器1904,并且控制显示器1912上的光标移动。其他用户接口装置(诸如麦克风、扬声器等)未详细示出,但可能涉及用户输入的接收和/或输出的表示。

本文中引用的过程可由执行主存储器1906中所包含的计算机可读指令的适当序列的处理器1904实现。此类指令可从诸如存储装置1910等另一个计算机可读介质读取到主存储器1906中,并且执行主存储器1906中所包含的指令序列使得处理器1904执行相关联动作。在替代实施例中,代替或结合处理器1904和其相关联计算机软件指令或,可使用硬连线电路或固件控制的处理单元以实现本发明。可用任何计算机语言呈现计算机可读指令。

总的来说,所有以上过程描述旨在涵盖为以实现给定目的顺序执行的任何系列的逻辑步骤,这是任何计算机可执行应用程序的标志。除非另有特别说明,否则应了解,在本发明的整个描述中,使用诸如“处理”、“计算”、“运算”、“确定”、“显示”、“接收”、“发射”等术语是指经过适当编程的计算机系统(诸如计算机系统1900或类似的电子计算装置)的动作和过程,所述计算机系统操纵并且将表示为其寄存器和存储器中的物理(电子)量的数据转换为其他以类似方式表示为其存储器或寄存器或其他此类信息存储、传输或显示装置中的物理量的数据。

计算机系统1900还包括耦合到总线1902的通信接口1918。通信接口1918可提供与计算机网络的双向数据通信信道,所述计算机网络提供以上所讨论的各种计算机系统相互之间的连接性。例如,通信接口1918可以是局域网(LAN)卡以提供到兼容LAN的数据通信连接,所述兼容LAN本身通过一个或多个因特网服务提供商网络以通信方式耦合到因特网。此类通信路径的精确细节对于本发明不是关键的。重要的是计算机系统1900可通过通信接口1918发送和接收消息和数据,并且以此方式与可经由互联网访问的主机进行通信。注意,系统1900的组件可位于单个装置中或位于多个物理上和/或地理上分布的装置中。

因此,已经描述了用于压缩神经网络中的权重的聚类压缩应理解,以上描述旨在是说明性的而不是限制性的。在查阅以上描述之后,许多其他实施例对于本领域技术人员将是显而易见的。因此,本发明的范围应参考所附权利要求书以及此类权利要求涵盖的等同物的全部范围来确定。

技术分类

06120112180584