神经网络模型的优化处理方法及装置
技术领域
本公开通常涉及计算机技术领域,更具体地,涉及神经网络模型的优化处理方法及装置。
背景技术
神经网络模型比如深度神经网络(Deep Neural Networks,简称DNN)模型由于拟合数据的能力强,在很多领域上都有着广泛的应用。一般而言,DNN的拟合能力与其输入的特征维数、隐藏层神经元的个数和隐藏层的层数正相关,这也意味着存储一个DNN模型需要很多的内存单元。
以7层的DNN模型为例,假设每层的神经元个数分别为[1000,2000,1000,500,100,50,1](假设第1层为输入层,最后一层为输出层),则所需的模型参数为1000*2000+2000*1000+1000*500+500*100+100*50+50*1=4555050,存储该模型参数的空间为4555050*4=18220200,约18M的存储空间。事实上,在图像和语音领域,所需要的神经元宽度、深度通常是例子中的十倍、百倍之多,这同时也意味着在线上系统需要更多的内存单元存储模型。因此,如何有效压缩模型的大小,尤其是在移动设备上内存单元普遍不足的情况下就显得格外重要。
现有的模型的压缩方法主要是把模型参数的数值替换成更小的数据单元存储,比如神经网络模型的权值原来是用4个字节的浮点数存储的,该压缩方法将浮点数压缩到2个字节。这种压缩方法的问题在于2个字节的浮点数不如4个字节的浮点数表示的数据的范围大和精度高,因此模型的性能会受影响。
发明内容
鉴于上述问题,本公开提供了一种神经网络模型的优化处理方法及装置。利用该方法及装置,对神经网络模型进行模型预测性能损失小的压缩。
根据本公开的一个方面,提供了一种神经网络模型的优化处理方法,包括:基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层;针对所述至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,所述虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,所述虚拟层的加入使得该目标优化层和该目标优化层的上层之间的连接数减少;以及对加入虚拟层后的神经网络模型进行训练,以得到优化后的神经网络模型。
可选地,在上述方面的一个示例中,基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层包括:针对所述神经网络模型中的各个层,计算该层的神经元个数与上层的神经元个数的乘积;以及将所计算出的乘积大于预设阈值的层确定为目标优化层。
可选地,在上述方面的一个示例中,所述神经网络模型的优化处理方法还包括:针对所述至少一个目标优化层中的每个目标优化层,确定所加入的虚拟层的神经元个数。
可选地,在上述方面的一个示例中,所述虚拟层的神经元个数是基于所述目标优化层的神经元个数、所述目标优化层的上层的神经元个数以及所采用的压缩比率确定的。
可选地,在上述方面的一个示例中,所采用的压缩比率包括多个预定压缩比率,以及针对所述多个预定压缩比率中的每个压缩比率得到一个优化后的神经网络模型,所述方法还包括:从多个优化后的神经网络模型中选择压缩比率更小并且预测性能损失更小的神经网络模型,作为最终的优化后的神经网络模型。
可选地,在上述方面的一个示例中,为了选择预测性能损失更小的神经网络模型,将多个优化后的神经网络模型按照预测性能损失从小到大排列包括:将相同的数据分别输入未经过优化的神经网络模型和各个优化后的神经网络模型进行预测;比较各个优化预测结果与基准预测结果之差的绝对值并按照从小到大的顺序排列,其中,所述优化预测结果是利用优化后的神经网络模型预测出的,以及所述基准预测结果是利用未优化的神经网络模型预测出的;以及将各个优化后的神经网络模型按照对应的各个优化预测结果的排列顺序进行排列,得到多个优化后的神经网络模型按照预测性能损失从小到大的排列。
可选地,在上述方面的一个示例中,在加入所述虚拟层之前,该目标优化层的神经元与该目标优化层的上层的神经元之间的连接为全连接;在加入所述虚拟层之后,所述虚拟层的神经元与该目标优化层的神经元之间的连接为全连接,并且所述虚拟层的神经元与该目标优化层的上层的神经元之间的连接为全连接。
根据本公开的另一方面,还提供一种神经网络模型的优化处理装置,包括:目标优化层确定单元,被配置为基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层;虚拟层加入单元,被配置为针对所述至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,所述虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,所述虚拟层的加入使得该目标优化层和该目标优化陈的上层之间的连接数减少;以及模型训练单元,被配置为对加入虚拟层后的神经网络模型进行训练,以得到优化后的神经网络模型。
可选地,在上述方面的一个示例中,所述目标优化层确定单元包括:计算模块,被配置为针对所述神经网络模型中的各个层,计算该层的神经元个数与上层的神经元个数的乘积;以及目标优化层确定模块,被配置为将所计算出的乘积大于预设阈值的层,确定为目标优化层。
可选地,在上述方面的一个示例中,所述神经网络模型的优化处理装置还包括:神经元数确定单元,被配置为针对所述至少一个目标优化层中的每个目标优化层,确定所加入的虚拟层的神经元个数。
可选地,在上述方面的一个示例中,所述虚拟层的神经元个数是基于所述目标优化层的神经元个数、所述目标优化层的上层的神经元个数以及所采用的压缩比率确定的。
可选地,在上述方面的一个示例中,所采用的压缩比率包括多个预定压缩比率,以及针对所述多个预定压缩比率中的每个压缩比率得到一个优化后的神经网络模型,所述装置包括:模型选择单元,被配置为从多个优化后的神经网络模型中选择压缩比率更小并且预测性能损失更小的神经网络模型,作为最终的优化后的神经网络模型。
可选地,在上述方面的一个示例中,所述模型选择单元包括:预测模块,被配置为将相同的数据分别输入未经过优化的神经网络模型和各个优化后的神经网络模型进行预测;预测结果比较模块,被配置为比较各个优化预测结果与基准预测结果之差的绝对值并按照从小到大的顺序排列,其中,所述优化预测结果是利用优化后的神经网络模型预测出的,以及所述基准预测结果是利用未优化的神经网络模型预测出的;以及模型排列模块,被配置为将各个优化后的神经网络模型按照对应的各个优化预测结果的排列顺序进行排列,得到多个优化后的神经网络模型按照预测性能损失从小到大的排列。
根据本公开的又一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储有指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的神经网络模型的优化处理方法。
根据本公开的再一方面,还提供一种非暂时性机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的神经网络模型的优化处理方法。
基于数学上证明等价的无损压缩方式,本公开的神经网络模型的优化处理方法和装置能够有效地对神经网络模型的大小进行压缩,减少了神经网络模型在训练和使用过程中的参数量,节省存储空间,降低了计算量,同时模型压缩造成的模型预测性能损失小。由于参数量减少,神经网络模型在达到相同预测精确度的基础上,提高了受到噪声干扰时的鲁棒性。
附图说明
通过参照下面的附图,可以实现对于本公开内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1为神经网络模型的一个示例的结构示意图;
图2为根据本公开的实施例的神经网络模型的优化处理方法的流程图;
图3为根据一个示例对多个优化后的神经网络模型按照预测性能损失从小到大排列的方法的流程图;
图4A为未优化的神经网络模型的一个示例的结构示意图;
图4B为图4A中所示的神经网络模型优化后的结构示意图;
图5为根据本公开一个实施例的神经网络模型的优化处理装置500的结构示意图;
图6为根据本公开另一个实施例的神经网络模型的优化处理装置600的结构示意图;
图7为根据本公开的实施例的用于神经网络模型的优化处理的计算设备的结构框图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本公开内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
神经网络模型是一种高度非线性动力学系统。大量的形式相同的神经元连结在—起就组成了神经网络模型,这些神经元以层为集合单位被关联起来。虽然,每个神经元的结构和功能都不复杂,但是神经网络模型的动态行为是十分复杂的,因此,用神经网络模型可以表达实际物理世界的各种现象。
图1为神经网络模型的一个示例的结构示意图。图1中每个结点都是一个神经元。神经网络模型包括位于输入侧的输入层、位于输出侧的输出层、以及在输入层和输出层之间的中间层。每一层都以前一层为输入,输出的结果传递给下一层,x1、x2和x3是输入值,对于第二层的输出和有:
对于第三层的输出有:
上述神经网络模型从第i层的输出hi往第i+1层的输出hi+1传播的过程可以用矩阵形式表示如下:
f(hi+1)=wi+1f(hi)+b (1)
其中,wi+1为第i+1层的权值矩阵,其维度为Di×Di+1,Di为第i层的神经元个数,Di+1为第i+1层的神经元个数。可见,第i+1层每个神经元的各个权值分别与第i+1层该神经元和第i层至少一个神经元的各个连接对应。
图2为根据本公开的实施例的神经网络模型的优化处理方法的流程图。
如图2所示,在块210,基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层。
针对神经网络模型中的各个层,计算该层的神经元个数N与上层的神经元个数M的乘积,将所计算出的乘积M*N大于预设阈值比如100,000的层确定为目标优化层。可以确定一个神经网络模型中的一层或多层为目标优化层。
在块220,针对至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,该虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,虚拟层的加入使得该目标优化层和该目标优化层的上层之间的连接数减少。作为该实施例的一方面,可以确定神经网络模型中的一个层比如第3层为目标优化层,然后在神经网络模型的第3层和第2层之间加入一个虚拟层。作为该实施例的另一方面,可以确定神经网络模型中的多个层比如第4层和第8层为目标优化层,然后在神经网络模型的第4层和第3层之间加入一个虚拟层,并且在第8层和第7层之间加入一个虚拟层。
全连接是相邻两层中,一层的每一个神经元都与另一层的所有神经元相连。全连接层的每一个神经元都与上一层的所有神经元相连,比如图1中所示的第2层,相对于其他连接形式的层来说,全连接层的权值是最多的。在加入虚拟层之前,该目标优化层的神经元与该目标优化层的上层的神经元之间的连接可以为全连接。在加入虚拟层之后,该虚拟层的神经元与该目标优化层的神经元之间的连接可以为全连接,该虚拟层的神经元与该目标优化层的上层的神经元之间的连接可以为全连接。
作为一种可选实施方式,直接将所加入的虚拟层的神经元个数设置为预定个数。
作为另一种可选实施方式,针对至少一个目标优化层中的每个目标优化层,确定所加入的虚拟层的神经元个数,以使所加入的虚拟层的神经元个数
这里,N为目标优化层的神经元个数,M为目标优化层上一层的神经元个数。进一步来说,虚拟层的神经元个数是基于目标优化层的神经元个数、目标优化层的上一层的神经元个数以及所采用的压缩比率确定的。例如,虚拟层的神经元个数Z可以通过如下公式确定:
这里,x为采用的压缩比率,N为目标优化层的神经元个数,M为目标优化层上一层的神经元个数。
在块230,对加入虚拟层后的神经网络模型进行训练,以得到优化后的神经网络模型。对加入虚拟层后的神经网络模型进行训练后,得到神经网络模型每层的各个神经元与其上一层的至少一个神经元的各个连接对应的权值。
所采用的压缩比率x可以包括多个预定压缩比率比如10%、20%、以及30%等等,针对多个预定压缩比率中的每个压缩比率得到一个优化后的神经网络模型。基于预测性能损失更小的标准和压缩比率更小的标准,从多个优化后的神经网络模型中选择出最终的优化后的神经网络模型。因此,将多个优化后的神经网络模型按照预测性能损失从小到大排列,以从多个优化后的神经网络模型中选择预测性能损失更小的神经网络模型。下面将通过示例对多个优化后的神经网络模型按照预测性能损失从小到大排列的方法进行说明。
图3为根据一个示例对多个优化后的神经网络模型按照预测性能损失从小到大排列的方法的流程图。
如图3所示,在块310,将相同的数据分别输入未经过优化的神经网络模型和各个优化后的神经网络模型进行预测。
在块320,比较各个优化预测结果与基准预测结果之差的绝对值并按照从小到大的顺序排列,其中,优化预测结果是利用优化后的神经网络模型预测出的,基准预测结果是利用未优化的神经网络模型预测出的。
在块330,将各个优化后的神经网络模型按照对应的各个优化预测结果的排列顺序进行排列,得到多个优化后的神经网络模型按照预测性能损失从小到大的排列。
图4A为未优化的神经网络模型的一个示例的结构示意图。图4B为图4A中所示的神经网络模型优化后的结构示意图,其中虚线结点表示加入图4A所示的神经网络模型的第3层和第2层之间的虚拟层的神经元。
图4A所示的未优化的神经网络模型中第3层的输出矩阵f(h3)如下:
f(h3)=w3f(h2)+b (2)
其中,w3为第3层的权值矩阵,其维度为D2×D3,D2为第2层的神经元个数,D3为第3层的神经元个数。
假设权值矩阵w3的维度为M×N,则矩阵w3可以表示如下:
wM×N=aM×ZbZ×N (3)
矩阵w3含有M×N个值,分解成a3、b3两个矩阵后,共含有M×Z+Z×N个值,而且M×Z+Z×N<M×N。
因此,图4B所示的优化后的神经网络模型中第3层的输出矩阵f(h3)可以表达如下:
f(h3)=a3b3f(h2)+b (4)
上述从数学上证明压缩前和压缩后权值矩阵等价,因此理论上矩阵分解不会对模型的预测性能造成影响。
基于数学上证明等价的无损压缩方式,上述实施例的神经网络模型的优化处理方法能够有效地对神经网络模型的大小进行压缩,减少了神经网络模型在训练和使用过程中的参数量,节省存储空间,降低了计算量,同时模型压缩造成的模型预测性能损失小。由于参数量减少,神经网络模型在达到相同预测精确度的基础上,提高了受到噪声干扰时的鲁棒性。
图5为根据本公开一个实施例的神经网络模型的优化处理装置500的结构示意图。如图5所示,该实施例的神经网络模型的优化处理装置500包括目标优化层确定单元510、虚拟层加入单元520和模型训练单元530。
目标优化层确定单元510被配置为基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层。目标优化层确定单元510的操作可以参照上面参考图2描述的块210的操作。目标优化层确定单元510可以包括计算模块和目标优化层确定模块。计算模块被配置为针对神经网络模型中的各个层,计算该层的神经元个数与上层的神经元个数的乘积。目标优化层确定模块被配置为将计算模块所计算出的该层的神经元个数与上层的神经元个数的乘积大于预设阈值比如1000,000的层,确定为目标优化层。
虚拟层加入单元520被配置为针对至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,该虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,该虚拟层的加入使得该目标优化层和该目标优化层的上层之间的连接数减少。虚拟层加入单元520的操作可以参照上面参考图2描述的块220的操作。
模型训练单元530被配置为对加入虚拟层后的神经网络模型进行训练,以得到优化后的神经网络模型。模型训练单元530的操作可以参照上面参考图2描述的块230的操作。
图6为根据本公开另一个实施例的神经网络模型的优化处理装置600的结构示意图。如图6所示,该实施例的神经网络模型的优化处理装置600包括:目标优化层确定单元610、虚拟层加入单元620、模型训练单元630和神经元数确定单元640。
目标优化层确定单元610被配置为基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层。目标优化层确定单元610的操作可以参照上面参考图2描述的块210的操作。
虚拟层加入单元620被配置为针对至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,该虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,该虚拟层的加入使得该目标优化层和该目标优化层的上层之间的连接数减少。虚拟层加入单元620的操作可以参照上面参考图2描述的块220的操作。
模型训练单元630被配置为对加入虚拟层后的神经网络模型进行训练,以得到优化的神经网络模型。模型训练单元630的操作可以参照上面参考图2描述的块230的操作。
神经元数确定单元640被配置为针对至少一个目标优化层中的每个目标优化层,确定所加入的虚拟层的神经元个数。进一步地,虚拟层的神经元个数可以基于目标优化层的神经元个数、目标优化层的上层的神经元个数、以及所采用的压缩比率确定。神经元数确定单元640的操作可以参照上面参考图2描述的块220的操作。
所采用的压缩比率可以包括多个预定压缩比率比如10%、20%、30%、及40%等等,针对这多个预定压缩比率中的每个压缩比率得到一个优化后的神经网络模型。该实施例的神经网络模型的优化处理装置600还可以包括模型选择单元,被配置为从多个优化后的神经网络模型中选择压缩比率更小并且预测性能损失更小的神经网络模型,作为最终的优化后的神经网络模型。
进一步来说,模型选择单元可以包括预测模块、预测结果比较模块、以及模型排列模块。预测模块被配置为将相同的数据分别输入未经过优化的神经网络模型和各个优化后的神经网络模型进行预测。预测模块的操作可以参照上面参考图3描述的块310的操作。预测结果比较模块被配置为比较各个优化预测结果与基准预测结果之差的绝对值并按照从小到大的顺序排列,其中,优化预测结果是利用优化后的神经网络模型预测出的,基准预测结果是利用未优化的神经网络模型预测出的。预测结果比较模块的操作可以参照上面参考图3描述的块320的操作。模型排列模块被配置为将各个优化后的神经网络模型按照对应的各个优化预测结果的排列顺序进行排列,得到多个优化后的神经网络模型按照预测性能损失从小到大的排列。模型排列模块的操作可以参照上面参考图3描述的块330的操作。
图7为根据本公开的实施例的用于神经网络模型的优化处理的计算设备的结构框图。
如图7所示,计算设备700可以包括至少一个处理器710、存储器720、内存730、通信接口740以及内部总线750,该至少一个处理器710执行在计算机可读存储介质(即,存储器720)中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器720中存储有计算机可执行指令,其当执行时使得至少一个处理器710:基于神经网络模型中的各层的神经元个数,确定神经网络模型的至少一个目标优化层;针对至少一个目标优化层中的每个目标优化层,在该目标优化层和该目标优化层的上层之间加入虚拟层,该虚拟层的神经元分别与该目标优化层的神经元和该目标优化层的上层的神经元连接,其中,该虚拟层的加入使得该目标优化层和该目标优化层的上层之间的连接数减少;以及对加入虚拟层后的神经网络模型进行训练,以得到优化后的神经网络模型。
应该理解的是,在存储器720中存储的计算机可执行指令当执行时使得至少一个处理器710进行本公开的各个实施例中以上结合图1-6描述的各种操作和功能。
在本公开中,计算设备700可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种例如非暂时性机器可读介质的程序产品。非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本公开的各个实施例中以上结合图1-6描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。