深度神经网络模型的压缩方法及装置、终端、存储介质与流程

文档序号:15801336发布日期:2018-11-02 21:27阅读:150来源:国知局
深度神经网络模型的压缩方法及装置、终端、存储介质与流程

本发明涉及信息处理技术领域,尤其涉及一种深度神经网络模型的压缩方法及装置、终端、存储介质。

背景技术

随着深度神经网络相关技术研究的迅速发展,相关领域内涌现了大批与深度神经网络相关的技术,如应用于视觉领域的卷积神经网络和应用于语音识别或自然语言处理领域的递归神经网络等,这些神经网络技术均极大地提高了相应领域的处理精度。

深度神经网络与浅层学习相比,深度神经网络的开发潜力巨大。通过深度神经网络模型的多层处理结构可以提取和分析样本的表征特征,由浅入深地逐层变换和计算样本特征并计算处理结果。通过对深度神经网络模型进行增宽增长处理,可以使深度神经网络模型获得相对更优的处理结果。

然而,深度神经网络模型的参数通常在百万、千万或上亿数量级,因此对计算和存储设备的要求较高。由于深度神经网络模型存储及计算时深度神经网络模型的参数传输等问题,限制了深度神经网络模型在移动设备上的应用。

目前,通常采用减少深度神经网络模型的参数、节点数目以及改变多样性类方法,达到压缩深度神经网络模型的目的。虽然,这样可以对神经网络模型进行一定的压缩,然而,精简后的深度神经网络模型的精度及有效性较低。



技术实现要素:

本发明解决的技术问题是在对深度神经网络模型压缩时如何兼顾深度神经网络模型的精度及有效性。

为解决上述技术问题,本发明实施例提供一种深度神经网络模型的压缩方法,包括:获取已训练的深度神经网络模型;基于所获取的所述深度神经网络模型中精简单元的贡献度的信息,对所述深度神经网络模型进行精简,直至精简后的深度神经网络模型满足预设的精度需求。

可选地,所述基于所获取的所述深度神经网络模型中精简单元的贡献度的信息,对所述深度神经网络模型进行精简,包括:采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值;将当前次精简前的深度神经网络模型中所有精简单元按照精度改变数值进行排序;从当前次精简前的深度神经网络模型中删除预设数量的精度改变数值最小的精简单元,得到当前次精简后的深度神经网络模型;判断当前次精简后的深度神经网络模型是否满足所述精度需求;当确定当前次精简后的深度神经网络模型满足所述精度需求时,停止精简操作;当确定所述当前次精简后的深度神经网络模型不满足所述精度需求时,对当前次精简后的深度神经网络模型执行下一次精简操作,直至精简后的深度神经网络模型满足所述精度需求。

可选地,所述采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值,包括:sm,n=||c(t)||f-||c(t)'||f;且f={1,2};其中,sm,n为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除前后对应的精度改变数值,为第t次精简深度神经网络模型前的精度,为第t次压缩深度神经网络模型前的精度,f分别对应l1范数和l2范数,1指代l1范数,2指代l2范数。

可选地,当深度神经网络的输出经过softmax激活函数并使用交叉熵计算损失时,c(t)采用如下的公式计算得到:其中,v为验证集样本的个数,xv表示验证集样本中的第ν个样本,表示验证集样本中的第ν个样本k位置的标签,为第t次精简前的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为第t次精简后的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为t次精简后深度神经网络第m层的第k个输出响应。

可选地,所述精度需求满足预设的精度需求包括以下至少一种:精简后的深度神经网络模型满足预设的精度阈值;精简后的深度神经网络模型满足预设的压缩体积阈值。

可选地,所述精简单元为深度神经网络模型中的权连接、节点、层、模块和子网络。

可选地,所述方法还包括:对精简后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种深度神经网络模型的压缩装置,包括:获取单元,适于获取已训练的深度神经网络模型;简化单元,适于基于所获取的所述深度神经网络模型中精简单元的贡献度的信息,对所述深度神经网络模型进行精简,直至精简后的深度神经网络模型满足预设的精度需求。

可选地,所述简化单元,适于采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值;将当前次精简前的深度神经网络模型中所有精简单元按照精度改变数值进行排序;从当前次精简前的深度神经网络模型中删除预设数量的精度改变数值最小的精简单元,得到当前次精简后的深度神经网络模型;判断当前次精简后的深度神经网络模型是否满足所述精度需求;当确定当前次精简后的深度神经网络模型满足所述精度需求时,停止精简操作;当确定所述当前次精简后的深度神经网络模型不满足所述精度需求时,对当前次精简后的深度神经网络模型执行下一次精简操作,直至精简后的深度神经网络模型满足所述精度需求。

可选地,所述简化单元,适于采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值,包括:sm,n=||c(t)||f-||c(t)'||f;且f={1,2};其中,sm,n为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除前后对应的精度改变数值,为第t次精简深度神经网络模型前的精度,为第t次压缩深度神经网络模型前的精度,f分别对应l1范数和l2范数,1指代l1范数,2指代l2范数。

可选地,所述简化单元,适于当深度神经网络的输出经过softmax激活函数并使用交叉熵计算损失时,采用如下的公式计算得到c(t)其中,v为验证集样本的个数,xv表示验证集样本中的第ν个样本,表示验证集样本中的第ν个样本k位置的标签,为第t次精简前的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为第t次精简后的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为t次精简后深度神经网络第m层的第k个输出响应。

可选地,所述精度需求满足预设的精度需求包括以下至少一种:精简后的深度神经网络模型满足预设的精度阈值;精简后的深度神经网络模型满足预设的压缩体积阈值。

可选地,所述精简单元为深度神经网络模型中的权连接、节点、层、模块和子网络。

可选地,所述装置还包括:训练单元,适于对精简后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述任一种的深度神经网络模型的压缩方法的步骤。

本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令;所述处理器运行所述计算机指令时执行上述任一种的深度神经网络模型的压缩方法的步骤。

与现有技术相比,本发明实施例的技术方案具有以下有益效果:

上述的方案,基于所有精简单元在所述深度神经网络模型中的整体贡献度,对深度网络模型进行精简,全局性地衡量各个精简单元在深度神经网络模型中的整体贡献度,可以提高精简后的深度神经网络模型的精度和有效性。

进一步地,对精简后的深度神经网络模型进行重新训练,可以进一步提高精简后的深度神经网络模型的性能。

附图说明

图1是本发明实施例的一种深度神经网络模型的压缩方法的流程示意图;

图2是本发明实施例的另一种深度神经网络模型的压缩方法的流程示意图;

图3是本发明实施例的一种深度神经网络模型的压缩装置的结构示意图。

具体实施方式

如背景技术所述,目前的深度神经网络模型的精简压缩方法主要分为两类:改变深度神经网络模型密度类方法及改变深度神经网络模型的参数的多样性类方法。

改变深度神经网络模型密度类方法,通过改变神经网络的稀疏程度达到压缩的目的。在一些算法中,通常给定一个比较小的阈值来删除深度神经网络模型中的小幅值参数,主观性较大,对不同结构的神经网络需要进行过多的参数调整才可能获得理想的精简效果。另一些算法针对输入节点与输出响应间的贡献关系,对输入节点进行筛选,此类算法只针对单隐藏层神经网络且没有对隐藏层参数进行足够的处理,不适合网络结构较深的深度神经网络。

上述方法仅针对单层内或部分网络层间的关系进行精简,没有对深度神经网络进行整体性地考虑,因此难以保证模型精简的有效性。此外,对于较大的深度神经网络或多个深度神经网络组成的模型,难以在有限的时间内获得期望的精简结果。

为解决上述问题,本发明实施例的技术方案基于所有精简单元在所述深度神经网络模型中的整体贡献度,对深度网络模型进行精简,全局性地衡量各个精简单元在深度神经网络模型中的整体贡献度,可以提高精简后的深度神经网络模型的精度和有效性。

为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

图1示出了本发明实施例中的深度神经网络模型的压缩方法的流程图。请参见图1,本实施例的深度神经网络模型的压缩方法可以包括如下步骤:

步骤s101:获取已训练的深度神经网络模型。

在具体实施中,所获取的已训练的深度神经网络模型为待进行压缩的深度神经网络模型。

步骤s102:基于所获取的所述深度神经网络模型中精简单元的贡献度的信息,对所述深度神经网络模型进行精简,直至精简后的深度神经网络模型满足预设的精度需求。

在具体实施中,基于所有精简单元在所述深度神经网络模型中的整体贡献度,对深度网络模型进行精简,可以全局性地衡量各个精简单元在深度神经网络模型中的整体贡献度,故可以提高精简后的深度神经网络模型的精度和有效性。

下面将结合图2对本发明实施例中的深度神经网络的压缩方法进行进一步详细的描述。

步骤s201:获取已训练的深度神经网络模型。

步骤s202:采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值。

在具体实施中,可以将当前次精简前的深度神经网络模型中的各个权连接、各个节点、各个层、各个子网络分别作为一个单独的精简单元。在采用验证集样本对当前次精简前的深度神经网络模型进行测试时,可以逐个权连接、逐个节点、逐个网络层、逐个子网络的方式遍历深度神经网络模型中的所有精简单元,并采用验证集样本对深度神经网络模型进行测试,通过将对应的精简单元删除前的深度神经网络模型的验证结果,与该精简单元删除后深度神经网络模型的验证结果进行比较,得到该精简单元对应的验证结果。

在本发明一实施例中,对于有标签的验证样本集{(x(1),y(1)),…,(x(v),y(v))},对于深度神经网络模型中第m层的第n个节点,采用如下的公式对该节点对深度神经网络模型的贡献进行衡量,也即计算得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值:

sm,n=||c(t)||f-||c(t)'||f;f={1,2}(1)

其中,sm,n为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除前后对应的精度改变数值,为第t次精简深度神经网络模型前的精度,为第t次压缩深度神经网络模型前的精度,f分别对应l1范数和l2范数,1指代l1范数,2指代l2范数。

在本发明一实施例中,当深度神经网络的输出经过softmax激活函数并使用交叉熵计算损失时,公式(1)中的c(t)采用如下的公式计算得到:

且:

其中,v为验证集样本的个数,xv表示验证集样本中的第ν个样本,表示验证集样本中的第ν个样本k位置的标签,为第t次精简前的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为第t次精简后的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为t次精简后深度神经网络第m层的第k个输出响应。其中的softmax激活函数为激活函数的一种,用于多于一个输出的神经元,它保证所有的输出神经元之和为1.0,所以一般输出的是小于1的概率值,可以很直观地比较各输出值。

上述仅仅给出了采用验证集样本对当前次精简前的深度神经网络模型进行测试的一个特例,本领域的技术人员人员可以理解的是,也可以采用其他的方式采用验证集样本对当前次精简前的深度神经网络模型进行测试。

在本发明一实施例中,采用如下的公式对精简后的深度神经网络模型进行测试:

其中,为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除前对应的精度数值,为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除后对应的精度数值,γ为精度改变的判断阈值,f分别对应l1范数和l2范数,1指代l1范数,2指代l2范数。

步骤s203:将当前次精简前的深度神经网络模型中所有精简单元按照精度改变数值进行排序。

在具体实施中,因当前次精简前的深度神经网络模型中的各个权连接、各个节点、各个层、各个子网络均作为一个单独的精简单元。当计算得到当前次精简前深度神经网络模型中所有精简单元的精度改变数值时,可以按照精度改变数值对同一类型的精简单元的精度改变数值进行排序。其中,当前次精简前的深度神经网络模型中的所有权连接的精度改变数值形成一个排序列表,当前次精简前的深度神经网络模型中的所有节点的精度改变数值形成一个排序列表,当前次精简前的深度神经网络模型中的所有网络层的精度改变数值形成一个排序列表,当前次精简前的深度神经网络模型中的各个节点的精度改变数值形成一个排序列表,也即总计形成4个,或者4种类型的精度改变数值排序列表。其中,排序的方式可以为升序,也可以为降序。

步骤s204:从当前次精简前的深度神经网络模型中删除预设数量的精度改变数值最小的精简单元,得到当前次精简后的深度神经网络模型。

在具体实施中,当精简单元对应的精度改变数值越大时,表明该精简单元在深度神经网络模型中的贡献度越大;反之,则该精简单元在深度神经网络模型中的贡献度越小,通过删除在深度神经网络模型中的贡献度小的精简单元,可以确保深度神经网络模型的精度。

在本发明一实施例中,当获取到上述的4个精度改变数值列表时,可以按照预设的规则从上述的4个精度改变数值列表删除预设数量的精度改变数值最小的精简单元,从而对当前次精简前的深度神经网络模型进行一次精简,得到当前次精简后的深度神经网络模型。

本领域的技术人员可以理解的是,一次删除的精简单元对于深度神经网络模型的贡献度最小的精简单元,也即精度改变数值最小的精简单元的数量可以根据实际的需要进行设置。例如,一次删除一个即精度改变数值最小的精简单元,以确保精简后的深度神经网络模型的精度。当然,为了提高精简的效率,也可以一次性删除多个精度改变数值最小的精简单元,以提高精简的效率。

步骤s205:判断当前次精简后的深度神经网络模型是否满足预设的精度需求;当判断结果为是时,可以停止精简操作;反之,可以执行步骤s206。

在本发明一实施例中,当前次精简后的深度神经网络模型满足的精度需求为满足预设的精度阈值;在本发明另一实施例中,当前次精简后的深度神经网络模型满足的精度需求为满足预设的压缩体积阈值;在本发明又一实施例中,当前次精简后的深度神经网络模型满足的精度需求,为满足预设的压缩体积阈值或预设的压缩体积阈值;在本发明其他的实例中,当前次精简后的深度神经网络模型满足的精度需求,为满足预设的压缩体积阈值和预设的压缩体积阈值。

在具体实施中,当确定所述当前次精简后的深度神经网络模型满足所述精度需求时,可以停止对前次精简后的深度神经网络模型进行精简的操作,并将当前次精简后的深度神经网络模型,作为精简后的深度神经网络模型。

步骤s206:将当前次精简后的深度神经网络模型作为下一次精简前的深度神经网络模型,并从步骤s202重新开始执行下一次的精简操作。

在具体实施中,当确定所述当前次精简后的深度神经网络模型不满足所述精度需求时,可以继续对当前次精简后的深度神经网络模型进行执行下一次的精简的操作,直至精简后的深度神经网络模型不满足所述精度需求。

在本发明一实施例中,为了提高深度神经网络模型的性能,本发明实施例中的深度神经网络模型的压缩方法还可以包括:

步骤s208:对精简后的深度神经网络模型进行重新训练。

在具体实施中,对当精简后的深度神经网络模型满足预设的精度需求是,可以对精简后的深度神经网络模型进行重新训练,如采用批均衡化的方法来缩放、平移规范化网络,以提高训练得到的深度神经网络模型的性能。

上述对本发明实施例中的方法进行了详细的描述,下面将对上述的方法对应的装置进行介绍。

参见图3,本发明实施例中的一种深度神经网络模型的压缩装置300,可以包括获取单元301和简化单元302,其中:

获取单元301,适于获取已训练的深度神经网络模型;

简化单元302,适于基于所获取的所述深度神经网络模型中精简单元的贡献度的信息,对所述深度神经网络模型进行精简,直至精简后的深度神经网络模型满足预设的精度需求。

在本发明一实施例中,所述简化单元302,适于采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值;将当前次精简前的深度神经网络模型中所有精简单元按照精度改变数值进行排序;从当前次精简前的深度神经网络模型中删除预设数量的精度改变数值最小的精简单元,得到当前次精简后的深度神经网络模型;判断当前次精简后的深度神经网络模型是否满足所述精度需求;当确定当前次精简后的深度神经网络模型满足所述精度需求时,停止精简操作;当确定所述当前次精简后的深度神经网络模型不满足所述精度需求时,对当前次精简后的深度神经网络模型执行下一次精简操作,直至精简后的深度神经网络模型满足所述精度需求。

在本发明一实施例中,所述简化单元302,适于采用验证集样本对当前次精简前的深度神经网络模型进行测试,得到当前次精简前的深度神经网络模型中各个精简单元删除前后对应的深度神经网络模型的精度改变数值,包括:sm,n=||c(t)||f-||c(t)'||f;且f={1,2};其中,sm,n为第t次精简前的深度神经网络模型中第m层的第n个精简单元删除前后对应的精度改变数值,为第t次精简深度神经网络模型前的精度,为第t次压缩深度神经网络模型前的精度,f分别对应l1范数和l2范数,1指代l1范数,2指代l2范数。

在本发明一实施例中,所述简化单元302,适于当深度神经网络的输出经过softmax激活函数并使用交叉熵计算损失时,采用如下的公式计算得到c(t)其中,v为验证集样本的个数,xv表示验证集样本中的第ν个样本,表示验证集样本中的第ν个样本k位置的标签,为第t次精简前的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为第t次精简后的深度神经网络模型中第k个输出响应相连的深度神经网络子图,为t次精简后深度神经网络第m层的第k个输出响应。

在具体实施中,所述精度需求满足预设的精度需求包括以下至少一种:精简后的深度神经网络模型满足预设的精度阈值;精简后的深度神经网络模型满足预设的压缩体积阈值。

在具体实施中,所述精简单元为深度神经网络模型中的权连接、节点、层、模块和子网络。

在具体实施中,为了提高精简后的深度神经网路的性能,所述装置300还可以包括训练单元303,其中:

训练单元303,适于对精简后的深度神经网络模型进行重新训练。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述实施例中的深度神经网络模型的压缩方法的步骤,不再赘述。

本发明实施例还提供了一种终端,包括存储器和处理器,所述存储器上存储有能够在所述处理器上运行的计算机指令;所述处理器运行所述计算机指令时执行上述实施例的深度神经网络模型的压缩方法的步骤,不再赘述。

采用本发明实施例中的上述方案,基于所有精简单元在所述深度神经网络模型中的整体贡献度,对深度网络模型进行精简,全局性地衡量各个精简单元在深度神经网络模型中的整体贡献度,通过改变参数密度对深度神经网络模型进行精简,可以提高精简后的深度神经网络模型的精度。

进一步地,对精简后的深度神经网络模型进行重新训练,可以进一步提高精简后的深度神经网络模型的性能。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

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