神经网络模型压缩的方法、装置、存储介质和芯片与流程

文档序号:24159794发布日期:2021-03-05 14:56阅读:138来源:国知局
神经网络模型压缩的方法、装置、存储介质和芯片与流程

[0001]
本申请涉及人工智能领域,尤其涉及一种神经网络模型压缩的方法及装置。


背景技术:

[0002]
人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能
[0003]
计算机视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分,它是一门关于如何运用照相机/摄像机和计算机来获取我们所需的,被拍摄对象的数据与信息的学问。形象地说,就是给计算机安装上眼睛(照相机/摄像机)和大脑(算法)用来代替人眼对目标进行识别、跟踪和测量等,从而使计算机能够感知环境。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。总的来说,计算机视觉就是用各种成象系统代替视觉器官获取输入信息,再由计算机来代替大脑对这些输入信息完成处理和解释。计算机视觉的最终研究目标就是使计算机能像人那样通过视觉观察和理解世界,具有自主适应环境的能力。
[0004]
卷积神经网络模型通常会存在大量的冗余参数。为了将cnn网络应用于智能手机等算力有限的终端设备,可以对现有的卷积神经网络模型进行压缩和加速。神经网络模型压缩技术需要提供大量训练数据才能使网络收敛到较好的结果,然而让用户上传大量数据到云端是非常费时的,会造成用户体验的下降。部分神经网络模型压缩技术仅适用少量训练数据来进行模型压缩,但压缩后的神经网络模型难以达到令人满意的效果。


技术实现要素:

[0005]
本申请提供一种神经网络模型压缩的方法、装置、存储介质和芯片,以减小传输的数据量,提高用户体验。
[0006]
第一方面,提供一种神经网络模型压缩的方法,包括:服务器获取用户设备上传的第一神经网络模型和所述第一神经网络的训练数据;所述服务器根据所述第一神经网络的训练数据和所述服务器存储的未标记数据,利用正类与未标记pu学习算法得到pu分类器;所述服务器使用所述pu分类器,从所述服务器存储的未标记数据中选择出扩展数据,所述扩展数据为与所述第一神经网络模型的训练数据具有相似属性与分布的数据;所述服务器根据所述扩展数据,利用知识蒸馏kd方法训练第二神经网络模型,所述第一神经网络模型作为所述kd方法的教师网络模型,所述第二神经网络模型作为所述kd方法的学生网络模型。
[0007]
利用第一神经网络的训练数据和未标记数据,训练得到pu分类器,对未标记数据
进行分类,得到与第一神经网络模型的训练数据具有相似属性与分布的数据。根据这些与所述第一神经网络模型的训练数据具有相似属性与分布的数据,能够实现神经网络模型的压缩,在保证神经网络模型压缩准确性的同时,减小了传输的数据量。
[0008]
结合第一方面,在一些可能的实现方式中,所述服务器根据所述第一神经网络的训练数据、所述服务器存储的未标记数据和比例信息,利用正类与未标记pu学习算法得到pu分类器,所述pu学习算法的损失函数为所述第一神经网络的训练数据和所述服务器存储的未标记数据的训练损失的期望,所述比例信息用于指示所述扩展数据在所述服务器存储的未标记数据中的占比,所述比例信息用于计算所述期望。
[0009]
根据第二数据中正样本数据的比例信息,计算第一数据和所述第二数据的训练损失的期望,作为pu学习算法的损失函数,从而训练pu分类器。
[0010]
结合第一方面,在一些可能的实现方式中,所述第一神经网络模型的训练数据为用于训练所述第一神经网络模型的训练数据中的部分训练数据。
[0011]
用户设备上传用于训练所述第一神经网络模型的训练数据中的部分训练数据,减小上传数据的数量,提高用户体验。
[0012]
结合第一方面,在一些可能的实现方式中,所述部分训练数据包括所述第一神经网络输出的多个类别中每个类别的数据。
[0013]
用户上传的第一神经网络模型的训练数据包括第一神经网络能够处理的多类数据中每一类的数据,使得训练得到的第二神经网络能够对该多类数据进行处理,提高对第一神经网络模型压缩的准确性。
[0014]
结合第一方面,在一些可能的实现方式中,所述pu分类器是根据第一特征和所述比例信息得到的,所述第一特征是基于多个第三特征融合获得的,所述多个第三特征是利用所述第一神经网络模型对所述第一神经网络的训练数据和所述服务器存储的未标记数据进行特征提取得到的,所述多个第三特征与所述第一神经网络的多个层一一对应,所述服务器使用所述pu分类器,从所述服务器存储的未标记数据中选择出扩展数据,包括:所述服务器利用所述第一神经网络模型对所述服务器存储的未标记数据进行特征提取,以得到第二特征;所述服务器将所述第二特征,输入所述pu分类器,以确定所述扩展数据。通过第一神经网络模型对训练pu分类器的数据进行特征的提取网络,减少对pu分类器进行训练的时间,提高效率。
[0015]
结合第一方面,在一些可能的实现方式中,所述第一特征是利用经过第一权重调整之后的多个第三特征融合获得的,所述第一权重调整是基于根据所述比例信息进行的,所述第二特征是利用所述第一权重对多个第四特征融合得到的,所述多个第四特征与所述第一神经网络的多个层一一对应。
[0016]
通过对第一神经网络模型不同层输出的特征进行权重的调整,根据调整后的权重对提取的特征进行融合,提高pu分类器分类结果的准确性。
[0017]
结合第一方面,在一些可能的实现方式中,所述服务器根据所述扩展数据,利用kd方法训练第二神经网络模型,包括:所述服务器将所述扩展数据输入所述第一神经网络模型,以对所述扩展数据进行分类,得到多类扩展数据以及所述多类扩展数据中每类扩展数据的第二权重;所述服务器最小化所述kd算法的损失函数,以得到训练后的第二神经网络模型,其中,所述kd算法的损失函数为所述多类扩展数据中的各类扩展数据的训练误差与
所述各类扩展数据的第二权重的乘积之和。
[0018]
根据未标记数据中的正样本数据在第一神经网络模型能够处理的类别中的数量,调整kd算法的损失函数中每一个类的数据对应的权重,在正样本数据在不同的类别中分布不平衡的情况下,对于每一个类的数据,训练得到的神经网络模型均能够得到较好的分类结果。
[0019]
结合第一方面,在一些可能的实现方式中,所述各类扩展数据的第二权重包括对所述各类扩展数据的初始权重进行随机扰动后得到的多个扰动后的权重,所述kd算法的损失函数包括所述多个扰动后的权重一一对应多个损失函数,其中,所述各类扩展数据的初始权重与所述各类扩展数据的数量负相关,所述服务器最小化所述kd算法的损失函数,以得到训练后的第二神经网络模型,包括:所述服务器最小化所述多个损失函数的最大值,以得到训练后的第二神经网络模型。
[0020]
通过对kd算法的损失函数中的权重进行随机扰动,计算神经网络模型在不同扰动情况下的kd算法的损失函数,将使得所述多个损失函数的最大值最小的神经网络模型作为训练得到的神经网络模型。减小了教师网络模型分类误差对训练得到的神经网络模型准确性的影响,提高训练得到的神经网络模型的准确性。
[0021]
第二方面,提供一种神经网络模型压缩装置,该装置包括用于执行上述第一方面中的方法中的各个模块。
[0022]
第三方面,提供一种计算机设备,包括存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行上述第一方面中的方法。
[0023]
应当理解,计算机设备可以是服务器,该服务器可以部署在云端。计算机设备具有一定的运算能力。
[0024]
第四方面,提供一种计算机存储介质,该计算机可读存储介质存储有程序代码,该程序代码包括用于执行第一方面中的方法中的步骤的指令。
[0025]
第五方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面中的方法。
[0026]
第六方面,提供一种芯片,所述芯片包括至少一个处理器,当程序指令在所述至少一个处理器中执行时,使得所述芯片执行第一方面所述的方法。
[0027]
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面中的方法。
[0028]
上述芯片具体可以是现场可编程门阵列fpga或者专用集成电路asic。
[0029]
应理解,本申请中,第一方面的方法具体可以是指第一方面以及第一方面中各种实现方式中的任意一种实现方式中的方法。
附图说明
[0030]
图1是本申请实施例提供的系统架构的结构示意图
[0031]
图2是一种卷积神经网络模型的示意图。
[0032]
图3是一种神经网络模型压缩的方法的示意图。
[0033]
图4是本申请一个实施例提供的一种神经网络模型压缩的方法的示意性流程图。
[0034]
图5是本申请另一个实施例提供的一种神经网络模型压缩的方法的示意性流程图。
[0035]
图6是本申请一个实施例提供的一种扩展正样本数据的方法的示意性流程图。
[0036]
图7是本申请一个实施例提供的一种带注意力机制的多特征融合模型的示意图。
[0037]
图8是本申请一个实施例提供的一种知识蒸馏的方法的示意图。
[0038]
图9是本申请又一个实施例提供的一种神经网络模型压缩的方法的示意性流程图。
[0039]
图10是本申请一个实施例提供的一种神经网络模型压缩的装置的示意性结构图。
[0040]
图11是本申请一个实施例提供的一种神经网络模型压缩的装置的硬件结构示意图。
具体实施方式
[0041]
下面将结合附图,对本申请中的技术方案进行描述。
[0042]
由于本申请实施例涉及大量神经网络模型的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络模型等相关概念进行介绍。
[0043]
(1)神经网络模型
[0044]
神经网络模型可以是由神经单元组成的,神经单元可以是指以x
s
和截距b为输入的运算单元,该运算单元的输出可以为:
[0045][0046]
其中,s=1、2、
……
n,n为大于1的自然数,w
s
为x
s
的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络模型中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络模型是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
[0047]
(2)深度神经网络模型
[0048]
深度神经网络模型(deep neural network,dnn),也称多层神经网络模型,可以理解为具有很多层隐含层的神经网络模型,这里的“很多”并没有特别的度量标准。从dnn按不同层的位置划分,dnn内部的神经网络模型可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。例如,全连接神经网络模型中层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,则系数w和偏移向量的数量也就很多了。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到
第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结就是:第l-1层的第k个神经元到第l层的第j个神经元的系数定义为需要注意的是,输入层是没有w参数的。在深度神经网络模型中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络模型的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络模型的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。
[0049]
(3)卷积神经网络模型
[0050]
卷积神经网络模型(convolutional neuron network,cnn)是一种带有卷积结构的深度神经网络模型。卷积神经网络模型包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络模型中对输入信号进行卷积处理的神经元层。在卷积神经网络模型的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
[0051]
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络模型的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络模型各层之间的连接,同时又降低了过拟合的风险。
[0052]
(4)损失函数
[0053]
在训练深度神经网络模型的过程中,因为希望深度神经网络模型的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络模型的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络模型中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络模型能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络模型的训练就变成了尽可能缩小这个loss的过程。
[0054]
(5)残差网络
[0055]
在不断加神经网络模型的深度时,会出现退化的问题,即随着神经网络模型深度的增加,准确率先上升,然后达到饱和,再持续增加深度则会导致准确率下降。普通直连的卷积神经网络模型和残差网络(residual network,resnet)的最大区别在于,resnet有很
多旁路的支线将输入直接连到后面的层,通过直接将输入信息绕道传到输出,保护信息的完整性,解决退化的问题。残差网络包括卷积层和/或池化层。
[0056]
残差网络可以是:深度神经网络模型中多个隐含层之间除了逐层相连之外,例如第1层隐含层连接第2层隐含层,第2层隐含层连接第3层隐含层,第3层隐含层连接第4层隐含层(这是一条神经网络模型的数据运算通路,也可以形象的称为神经网络模型传输),残差网络还多了一条直连支路,这条直连支路从第1层隐含层直接连到第4层隐含层,即跳过第2层和第3层隐含层的处理,将第1层隐含层的数据直接传输给第4层隐含层进行运算。公路网络可以是:深度神经网络模型中除了有上面所述的运算通路和直连分支之外,还包括一条权重获取分支,这条支路引入传输门(transform gate)进行权重值的获取,并输出权重值t供上面的运算通路和直连分支后续的运算使用。
[0057]
(6)反向传播算法
[0058]
卷积神经网络模型可以采用误差反向传播(back propagation,bp)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
[0059]
(7)注意力机制
[0060]
注意力机制模仿了生物观察行为的内部过程,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制,能够利用有限的注意力资源从大量信息中快速筛选出高价值信息。注意力机制可以快速提取稀疏数据的重要特征,因而被广泛用于自然语言处理任务,特别是机器翻译。而自注意力机制(self-attention mechanism)是注意力机制的改进,其减少了对外部信息的依赖,更擅长捕捉数据或特征的内部相关性。注意力机制的本质思想可以改写为如下公式:
[0061][0062]
其中,lx=||source||代表source的长度,公式含义即将source中的构成元素想象成是由一系列的<key,value>数据对构成,此时给定目标target中的某个元素query,通过计算query和各个key的相似性或者相关性,得到每个key对应value的权重系数,然后对value进行加权求和,即得到了最终的attention数值。所以本质上attention机制是对source中元素的value值进行加权求和,而query和key用来计算对应value的权重系数。从概念上理解,把attention可以理解为从大量信息中有选择地筛选出少量重要信息并聚焦到这些重要信息上,忽略大多不重要的信息。聚焦的过程体现在权重系数的计算上,权重越大越聚焦于其对应的value值上,即权重代表了信息的重要性,而value是其对应的信息。自注意力机制可以理解为内部attention(intra attention),attention机制发生在target的元素query和source中的所有元素之间,自注意力机制指的是在source内部元素之间或者target内部元素之间发生的attention机制,也可以理解为target=source这种特殊情况下的注意力计算机制,其具体计算过程是一样的,只是计算对象发生了变化而已。
[0063]
(8)像素值
[0064]
图像的像素值可以是一个红绿蓝(rgb)颜色值,像素值可以是表示颜色的长整数。例如,像素值为256
×
red+100
×
green+76
×
blue,其中,blue代表蓝色分量,green代表绿色
分量,red代表红色分量。各个颜色分量中,数值越小,亮度越低,数值越大,亮度越高。对于灰度图像来说,像素值可以是灰度值。
[0065]
(9)知识蒸馏
[0066]
较大、较复杂的网络虽然通常具有很好的性能,但是也存在很多的冗余信息,因此运算量以及资源的消耗都非常多。神经网络模型的知识蒸馏(distilling the knowledge in a neural network)是将复杂网络中的有用信息提取出来迁移到一个更小的网络上,这样学习来的小网络可以具备和大的复杂网络想接近的性能效果,并且也大大的节省了计算资源。这个复杂的网络可以称为教师网络模型,而小的网络则可以称为学生网络模型。
[0067]
(10)正类与未标记学习
[0068]
正类与未标记学习(positive-unlabeled learning,pu learning)是一种半监督的机器学习方式。通过该方法,在给定的数据中,只有部分正样本数据被标记,其余正样本数据与所有的负样本数据均未被标记。在这种情况下通过学习,训练一个二类分类器,对未标记数据进行分类,确定其中的正样本数据和负样本数据。
[0069]
以上对神经网络的一些基本内容做了简单介绍,下面针对图像数据处理时可能用到的一些特定神经网络进行介绍。
[0070]
下面结合图1对本申请实施例的系统架构进行详细的介绍。
[0071]
图1是本申请实施例的系统架构的示意图。如图1所示,系统架构100包括执行设备110、训练设备120、数据库130、客户设备140、数据存储系统150、以及数据采集系统160。
[0072]
另外,执行设备110包括计算模块111、i/o接口112、预处理模块113和预处理模块114。其中,计算模块111中可以包括目标模型/规则101,预处理模块113和预处理模块114是可选的。
[0073]
数据采集设备160用于采集训练数据。本申请实施例中训练数据包括:第一神经网络的训练数据、第一神经网络模型和服务器存储的未标记数据。并将训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
[0074]
下面对训练设备120基于训练数据得到目标模型/规则101进行描述。上述目标模型/规则101能够用于实现本申请实施例的神经网络模型压缩的方法,即,将第一神经网络的训练数据、第一神经网络模型输入该目标模型/规则101,即可得到训练得到的第二神经网络模型。本申请实施例中的目标模型/规则101具体可以为神经网络。需要说明的是,在实际应用中,数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图3所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr),车载终端等,还可以是服务器或者云端等。在图3中,执行设备110配置输入/输出(input/output,i/o)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向i/o接口112输入数据,所述输入数据在本申请实施例中可以包括:第一神经网络的训练数据、第一神经网络模型。这里的客户设备140具体可以是用户设备。
[0075]
预处理模块113和预处理模块114用于根据i/o接口112接收到的输入数据(如待处理图像)进行预处理,在本申请实施例中,可以没有预处理模块113和预处理模块114或者只有的一个预处理模块。当不存在预处理模块113和预处理模块114时,可以直接采用计算模块111对输入数据进行处理。
[0076]
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
[0077]
最后,i/o接口112将处理结果,如将目标模型/规则101计算得到的训练后的第二神经网络模型呈现给客户设备140,从而提供给用户。
[0078]
具体地,经过计算模块111中的目标模型/规则101处理得到的训练后的第二神经网络模型可以通过预处理模块113(也可以再加上预处理模块114的处理)的处理后将处理结果送入到i/o接口,再由i/o接口将处理结果送入到客户设备140中。
[0079]
应理解,当上述系统架构100中不存在预处理模块113和预处理模块114时,计算模块111还可以将处理得到的训练后的第二神经网络模型传输到i/o接口,然后再由i/o接口将处理结果送入到客户设备140中显示。
[0080]
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
[0081]
在图3中所示情况下,用户可以手动给定输入数据,该手动给定可以通过i/o接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向i/o接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由i/o接口112直接将如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果,作为新的样本数据存入数据库130。
[0082]
值得注意的是,图1仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
[0083]
如图3所示,根据训练设备120训练得到目标模型/规则101,可以是本申请实施例中的神经网络,具体的,本申请实施例提供的神经网络可以是cnn以及深度卷积神经网络(deep convolutional neural networks,dcnn)等等。
[0084]
由于cnn是一种非常常见的神经网络,下面结合图2重点对cnn的结构进行详细的介绍。如前文的基础概念介绍所述,卷积神经网络模型是一种带有卷积结构的深度神经网络模型,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,cnn是一种前馈(feed-forward)人工神经网络模型,该前馈人工神经网络模型中的各个神经元可以对输入其中的图像作出响应。
[0085]
如图2所示,卷积神经网络模型(cnn)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络模型层230。
[0086]
卷积层/池化层220:
[0087]
卷积层:
[0088]
如图2所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
[0089]
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
[0090]
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素
……
这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行
×
列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行
×
列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
[0091]
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络模型200进行正确的预测。
[0092]
当卷积神经网络模型200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络模型200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
[0093]
池化层:
[0094]
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图1中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素
作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
[0095]
神经网络模型层230:
[0096]
在经过卷积层/池化层220的处理后,卷积神经网络模型200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络模型200需要利用神经网络模型层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络模型层230中可以包括多层隐含层(如图1所示的231、232至23n)以及输出层240,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等
……
[0097]
在神经网络模型层230中的多层隐含层之后,也就是整个卷积神经网络模型200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络模型200的前向传播(如图1由210至240方向的传播为前向传播)完成,反向传播(如图1由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络模型200的损失,及卷积神经网络模型200通过输出层输出的结果和理想结果之间的误差。
[0098]
需要说明的是,如图2所示的卷积神经网络模型200仅作为一种卷积神经网络模型的示例,在具体的应用中,卷积神经网络模型还可以以其他网络模型的形式存在。cnn网络在计算机视觉领域中被广泛使用,并在图片分类、目标检测、语义分割等多个实际应用中获得了成功。为了得到更高的分类精度,cnn网络通常会存在大量的冗余参数,许多研究证明了可以在不影响网络分类性能的前提下去除这些冗余的参数。同时,为了将cnn网络应用于智能手机等算力有限的终端设备,我们需要对现有的cnn网络进行压缩和加速。考虑到云端存在有大量的计算资源,我们可以为用户提供云上模型压缩的服务。
[0099]
通过cnn网络压缩和加速技术,例如可以利用知识蒸馏(knowledge distillation,kd)、剪除相似神经元、权值离散化、哈希法等方法对神经网络模型进行压缩,能够在云端为用户提供模型压缩与加速服务。
[0100]
图3是一种神经网络模型压缩的方法的示意图。
[0101]
将训练数据输入教师网络模型和学生网络模型,根据教师网络模型的输出和学生网络模型的输出,确定交叉熵损失(cross entropy loss),即kd算法的损失函数l
kd
。kd算法的损失函数l
kd
可以用于衡量教师网络模型和学生网络模型对于训练数据的处理结果的相似度。调整学生网络模型的参数,以使得kd算法的损失函数l
kd
最小:
[0102][0103]
其中,n为训练数据的个数,和分别为给定输入x
i
后教师网络模型和学生网络模型的输出;为训练数据中第i个数据的训练损失。
[0104]
kd算法也可以称为cnn模型压缩与加速算法。通过调整学生网络模型的参数以使
得损失函数l
kd
最小,即学生网络模型的输出尽可能的和教师网络模型的输出一致,这样,学生网络模型学习到了教师网络模型的相关特性。
[0105]
教师网络模型是根据原始训练数据得到的,教师网络模型对于原始训练数据的输出较为准确。可以根据原始训练数据完成对学生网络模型的训练。
[0106]
训练学生网络模型时,需要获取训练教师网络模型所需的全部训练数据,才能够使压缩后的网络具有好的分类性能。但相比于教师网络模型,训练数据通的文件大小很大。例如resnet-50网络仅仅占用95mb的空间来存储模型参数,然而训练resnet-50网络所需的训练数据集(image net)有超过120万张训练图片,并且需要超过120gb的空间来存放。因此在传输速度有限的情况下,用户需要花费很长的时间才能够将训练数据上传到云端。提供大量训练数据才能使网络收敛到较好的结果,然而让用户上传大量数据到云端是非常费时的,因此会带来很糟糕的用户体验。
[0107]
教师网络模型对于与原始数据相同的类的图片能够获得较为准确的输出结果。通过与原始数据相同的类的图片,对学生网络模型进行训练,可以有效地利用教师网络模型,得较为准确的学生网络模型。
[0108]
一种获取与原始训练数据的类别分布相同的图像的方式,可以参见《data-free learning of student networks》(chen h,wang y,xu c,et al.2019.),通过生成对抗网络生成图像。
[0109]
生成式对抗网络(generative adversarial networks,gan)是一种深度学习模型。该模型中至少包括两个模块:一个模块是生成模型(generative model),另一个模块是判别模型(discriminative model),通过这两个模块互相博弈学习,从而产生更好的输出。gan的基本原理如下:以生成图片的gan为例,假设有两个网络,g(generator)和d(discriminator),其中g是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做g(z);d是一个判别网络,用于判别一张图片是不是“真实的”。在理想的状态下,g可以生成足以“以假乱真”的图片g(z),而d难以判定g生成的图片究竟是不是真实的,即d(g(z))=0.5。这样就得到了一个优异的生成模型g,它可以用来生成图片。
[0110]
将教师网络模型作为判别模型。生成模型根据随机信号生成一组图像,将这些图像输入教师网络模型,得到这些图片所属的类别。例如,教师网络模型的输出是图片属于每种类别的概率,且图片属于所有类别的概率之和为1。
[0111]
教师网络模型仅能够对特定的类别的图像进行处理,将不属于教师网络模型能够处理的类别的图像输入教师网络模型,教师网络模型的输出结果依然是该图像属于教师网络模型能够处理的所有类别的概率。
[0112]
图像属于某一类别的概率大于预设值,认为该图像属于该类别。如果预设值较高,图像属于该类的可能较高,将不属于该类的图像归为该类的可能性较小,但很多属于该类的图像因为教师网络模型判断属于该类的可能小于该预设值,而被认为不属于该类。也就是说,预设值较高,获得的用于训练学生网络模型的图像仅仅是教师网络模型能够处理的部分图像,通过这些图像训练的学生网络模型,不能反映教师网络模型的全部性能。
[0113]
如果预设值较低,图像属于该类的可能较低,将不属于该类的图像归为该类的可能性较大。将教师网络模型不能够处理的图像用于学生网络模型的训练,不能准确地获得能够对特定类别的图像进行处理的学生网络模型。
[0114]
因此,通过教师网络模型对图像的处理结果判断该图像是否属于教师网络模型能够处理的类别,判断结果并不准确,从而对学生网络模型的训练产生不利影响,压缩后的神经网络模型效果难以令人满意。
[0115]
图4是本申请实施例提供的一种神经网络模型压缩方法的示意性流程图。
[0116]
在步骤s301,服务器获取用户设备上传的第一神经网络模型和所述第一神经网络的训练数据。
[0117]
所述第一神经网络的训练数据也可以称为第一数据。第一数据包括第一神经网络模型的训练数据中的全部或部分数据。
[0118]
用户设备上传用于训练所述第一神经网络模型的训练数据中的部分训练数据,减小上传数据的数量,提高用户体验。
[0119]
所述部分训练数据包括所述第一神经网络输出的多个类别中每个类别的数据。
[0120]
所述第一神经网络模型用于将输入的数据分为n类中的至少一类。所述第一数据可以包括所述n类中每类的数据。也就是说,第一数据可以包括第一神经网络模型能够处理的类别中每个类别的数据。第一神经网络模型是需要进行压缩的神经网络模型。第一神经网络模型可以用于数据的分类。第一数据可以包括用于训练第一神经网络模型的所有数据所属的类别中的每个类别的数据。在本申请实施例中,正样本数据属于第一神经网络模型能够处理的类别。
[0121]
用户上传的第一神经网络模型的训练数据包括第一神经网络能够处理的多类数据中每一类的数据,使得训练得到的第二神经网络能够对该多类数据进行处理,提高对第一神经网络模型压缩的准确性。
[0122]
第一神经网络模型可以实现对输入数据的分类。例如,第一神经网络模型可以对文本、语音、图像、特征等进行分类,如可以对输入的一句话里每个词的词性进行分类(名词、动词

),或可以根据输入一段人的语音判断其此人说话时的情绪,或可以对输入的图片确定图片中的人或物体的类别,或对已经提取的特征进行分类等等。
[0123]
在步骤s302,服务器根据所述第一神经网络的训练数据和所述服务器存储的未标记数据,利用正类与未标记(positive-unlabeled,pu)学习算法得到pu分类器。
[0124]
与所述第一神经网络模型的训练数据具有相似属性与分布的数据可以称为正类数据或正样本数据。第一神经网络模型可以用于处理正样本数据。第一数据为正样本(positive samples)数据。与所述第一神经网络模型的训练数据具有相似属性与分布的数据可以称为正样本数据。
[0125]
所述服务器存储的未标记数据也可以称为第二数据。第二数据可以包括正样本数据和正样本数据之外的数据,即负样本(negative samples)数据。未标记数据即尚不确定该数据是否为正样本数据。
[0126]
服务器获取pu分类器,服务器可以接收用户设备或其他服务器发送的pu分类器,服务器也可以从存储器中获取pu分类器。参见图9,pu分类器的训练可以由其他装置进行。pu分类器的训练也可以由对第一神经网络模型进行压缩的服务器进行。
[0127]
服务器可以根据所述第一数据、所述第二数据、所述第二数据中正样本数据的比例信息,训练所述pu分类器。
[0128]
服务器可以通过pu学习算法训练pu分类器。pu学习算法的损失函数可以是所述第
一数据和所述第二数据的训练损失的期望,所述比例信息用于计算所述期望。
[0129]
服务器可以获取第二数据中正样本数据的比例信息,该比例也可以称为先验概率信息,用于指示第二数据中正样本数据的比例。
[0130]
pu学习算法提供了一种半监督学习的方式,服务器能够根据已标记的正样本数据,对未标记数据进行分类,确定未标记数据中的正样本数据和负样本数据。其中,正样本数据可以是第一神经网络模型可以处理的数据,负样本数据是第一神经网络模型可以处理的数据之外的数据。正样本数据属于第一神经网络模型可以处理的类别,负样本数据不属于第一神经网络模型可以处理的类别。
[0131]
利用pu学习算法,服务器可以将第一数据和第二数据输入待训练的pu分类器,调整待训练的pu分类器的参数,以使得pu分类器对第二数据的分类结果满足第二数据中正样本数据的比例信息,从而得到调整后的pu分类器。调整后的pu分类器即训练得到的pu分类器。pu学习算法的原理可以参见图6的说明。
[0132]
在步骤s303,服务器使用所述pu分类器,从所述服务器存储的未标记数据中选择出扩展数据。
[0133]
扩展数据为与所述第一神经网络模型的训练数据具有相似属性与分布的数据,即扩展数据为正类数据。
[0134]
用于得到扩展数据的未标记数据与用于训练pu分类器的未标记数据可以相同,用于得到扩展数据的未标记数据也可以包括与训练pu分类器的未标记数据不同的数据。用于得到扩展数据的未标记数据可以称为第三数据。第三数据可以包括所述第二数据中的全部或部分数据,或者也可以是第二数据之外的其他数据。服务器存储的数据量有限,训练pu分类器和使用pu分类器时,输入pu分类器的数据相同,可以增加用于训练第二神经网络的数据量,提高训练第二神经网络的准确性。
[0135]
将第三数据输入pu分类器,pu分类器对第三数据进行分类,确定其中的正样本数据和负样本数据。扩展数据即第三数据中的正样本数据。
[0136]
pu分类器可以对数据进行分类,也可以对数据的特征进行分类。pu分类器的分类的对象与pu分类器的训练过程有关。
[0137]
可以将第一数据和第二数据输入待训练的特征提取网络,以得到第一特征。特征提取网络可以用于对输入的数据进行特征的提取,以得到第一特征。将第一特征输入待训练的pu分类器。根据第二数据中正样本数据的比例信息和提取的第一特征,对待训练的特征提取网络和待训练的pu分类器的参数进行调整,以得到特征提取网络和pu分类器。
[0138]
第一特征包括特征提取网络提取的第一数据中每个数据的特征和第二数据中每个数据的特征。
[0139]
根据pu分类器,可以确定所存储的第三数据中的正样本数据,即扩展数据。可以将第三数据输入特征提取网络,以得到第二特征。可以将第二特征输入pu分类器,以确定扩展数据。
[0140]
第一特征可以是对特征提取网络多个层的输出多个第三特征进行融合得到的。多个第三特征与特征提取网络多个层一一对应。所述第一权重调整是基于根据所述比例信息进行的。
[0141]
第三特征包括特征提取网络提取的第一数据中每个数据的特征和第二数据中每
个数据的特征。
[0142]
特征提取网络可以是cnn网络。
[0143]
特征提取网络中的参数较多,对特征提取网络进行参数的调整需要较多的数据,占用较长的时间。
[0144]
可以将第一神经网络作为特征提取网络。可以将第一数据和第二数据输入第一神经网络模型以提取第一神经网络模型的多个层输出的多个第三特征,对多个第三特征进行融合以得到第一特征。根据第一特征和第二数据中正样本数据的比例信息,得到pu分类器。
[0145]
也就是说,pu分类器是根据第一特征和第二数据中正样本数据的比例信息得到的。第一特征是基于多个第三特征融合获得的。多个第三特征是利用所述第一神经网络模型对第一数据和第二数据进行特征提取得到的。多个第三特征与所述第一神经网络的多个层一一对应。
[0146]
可以利用所述第一神经网络模型对所述第三数据进行特征提取,以得到第二特征。第二特征是利用所述第一权重对多个第四特征融合得到的。所述多个第四特征与所述第一神经网络的多个层一一对应。将所述第二特征输入所述pu分类器,以确定所述扩展数据。
[0147]
第一神经网络模型是训练得到的神经网络模型,用于处理正样本数据,因此能够提取对于正样本数据的分类有效的特征。将第一神经网络模型可以作为特征提取网络,可以减小pu学习算法中需要调整的参数的数量,提高云端存储的未标记数据中得到正样本数据的效率。
[0148]
根据所述第一神经网络模型输出的特征,利用正类与未标记pu学习算法,可以训练pu分类器。
[0149]
对文字、图像等数据进行分类,可以通过特征提取网络提取数据的特征。通过将第一神经网络模型作为特征提取网络,无需再对特征提取网络进行训练,减少对未标记的数据进行分类的时间,提取提高效率。
[0150]
特征提取网络的多个层输出的多个特征。可以对特征提取网络的多个层输出的多个特征进行融合,将融合的结果输入pu分类器。可以将特征提取网络多个层输出的特征以相同的权重输入pu分类器。也可以通过注意力机制的多特征网络对多个层的特征的权重进行调整。
[0151]
第一特征是利用经过第一权重调整之后的多个第三特征融合获得的,所述第一权重调整是基于根据第二数据中正样本数据的比例信息进行的。多个第三特征与特征提取网络的多个层一一对应。
[0152]
也就是说,可以将多个第三特征进行融合,将融合后的特征输入待训练的pu分类器。调整多个第三特征中每个第三特征的权重,并调整待训练的pu分类器的参数,以使得pu分类器的分类结果满足第二数据中正样本数据的比例信息。也就是所,根据第二数据中正样本数据的比例信息,确定第一权重,得到pu分类器。
[0153]
将扩展数据输入特征提取网络,特征提取网络的多个层输出多个第四特征。根据第一权重,对特征提取网络的多个层输出的多个第四特征进行融合。多个第四特征与特征提取网络的多个层一一对应。
[0154]
第三特征与特征提取网络的层的对应关系,和第四特征与特征提取网络的层的对
应关系相同。或者说,特征提取网络的多个层的输出与第一权重中的多个权重值一一对应。
[0155]
融合的方式有多种。
[0156]
组合(combine)是一种融合的方式。采用combine的方式进行融合,可以将待融合的特征直接相加,或者加权相加。加权相加,即乘以一定系数即权重值之后相加。也就是说,采用combine的方式,可以将通道维度(channel wise)进行线性组合。
[0157]
可以将特征提取网络的多个层输出的多个特征相加,例如,可以将特征提取网络的多个层输出的多个特征直接相加,也可以将特征提取网络的多个层输出的多个特征按照一定权重相加。t1和t2分别表示特征提取网络的两个层输出的特征,可以用t3表示融合后的特征,t3=a
×
t1+b
×
t2,其中,a和b分别为计算t3时t1和t2乘的系数,即权重值,a≠0,且b≠0。
[0158]
级联(concatenate)和通道融合(channel fusion)是另一种融合的方式。采用concatenate&channel fusion的方式,可以将待融合的特征的维数直接拼接,或者乘以一定系数即权重值之后进行拼接。
[0159]
以特征提取网络为第一神经网络模型为例进行说明。可以在所述第一神经网络模型中添加带注意力机制的多特征网络,以得到第三神经网络模型。带注意力机制的多特征网络利用所述注意力机制用于对所述第一神经网络模型的不同层输出的多个特征进行选择。将所述已标记数据和所述未标记数据输入所述第三神经网络模型,并利用所述pu学习算法得到所述正样本数据。图7示出了一种特征融合的方式。
[0160]
通过带注意力机制的多特征网络,对第一神经网络模型不同层提取的特征进行选择,提高对未分类数据进行分类的准确性。
[0161]
在pu分类器的训练过程中,可以调整多特征网络和pu分类器的参数,以得到较为准确的pu分类器,从而得到从第三数据中准确选择扩展数据。也就是说,可以在半监督学习的过程中,对多特征网络和pu分类器的参数进行调整。
[0162]
在步骤s304,服务器根据所述扩展数据,利用kd方法训练第二神经网络模型。
[0163]
所述第一神经网络模型作为所述kd方法的教师网络模型,所述第二神经网络模型作为所述kd方法的学生网络模型。kd方法也可以称为kd算法。
[0164]
服务器还可以根据所述扩展数据和用户上传的第一神经网络的训练数据,利用知识蒸馏kd方法训练第二神经网络模型。
[0165]
将第一神经网络的训练数据作为用于训练第二神经网络模型的训练数据,增加训练的数据量,提高训练得到的第二神经网络模型的准确性。
[0166]
扩展数据可以包括第一神经网络模型能够处理的多个类别。每个类别中的数据的数量可能差异较大。
[0167]
将扩展数据输入所述第一神经网络模型和第二神经网络模型,根据kd方法的损失函数,调整第二神经网络模型的参数,以使得所述损失函数满足预设条件。例如,调整第二神经网络模型的参数,以使得kd方法的损失函数最小化。调整后的第二神经网络模型即对第一神经网络模型进行压缩的结果。
[0168]
第一神经网络将所述训练数据分为n类数据,n为正整数,所述n类数据中的第一类数据中的每个数据在所述第一神经网络模型和所述原始神经网络模型的所述损失函数中的第二权重与所述第一类数据的数量负相关。
[0169]
如果kd方法的损失函数中每个数据的第二权重相等,可能出现这样的情况:对应于第一神经网络模型分类结果的某个类别的数据很少,对于该类别的数据,第一神经网络模型和训练得到的第二神经网络模型的输出差异较大,但损失函数满足预设要求。这种情况,训练得到的第二神经网络模型不能有效处理该类别的数据,分类不准确,即对于第一神经网络模型的压缩结果并不准确。
[0170]
在根据扩展数据对第一神经网络模型进行压缩时,可以考虑已标记数据和未标记数据中的正样本数据中,每个类别的数据的数量。对损失函数进行调整,使得损失函数中的各类扩展数据的第二权重与第三数据中不同类的数据的数量负相关。通过对kd方法的损失函数的调整,使得压缩后的神经网络模型即训练得到的第二神经网络模型能够对每个类别的数据均与第一神经网络模型相似,实现对第一神经网络模型的较好压缩效果。
[0171]
将扩展数据输入所述第一神经网络模型,以对所述扩展数据进行分类,得到多类扩展数据以及所述多类扩展数据中每类扩展数据的第二权重。服务器最小化所述kd算法的损失函数,以得到训练后的第二神经网络模型。
[0172]
服务器根据所述第三数据和所述第一神经网络模型,利用知识蒸馏kd方法,得到训练后的第二神经网络模型,其中,所述kd方法的损失函数为所述多类扩展数据中的各类扩展数据的训练误差与所述各类扩展数据的第二权重的乘积之和。
[0173]
每类扩展数据的训练误差可以理解为该类扩展数据中每个数据的训练误差之和。
[0174]
根据未标记数据中的正样本数据在第一神经网络模型能够处理的类别中的数量,调整kd方法的损失函数中每一个类的数据对应的第二权重,在正样本数据在不同的类别中分布不平衡的情况下,对于每一个类的数据,压缩后的神经网络模型均能够得到较好的分类结果。
[0175]
由于第一神经网络模型对于数据的分类可能并不准确,第一神经网络模型对于数据的分类结果存在误差。因此,可以对损失函数中的不同类的第二权重进行随机扰动。调整第二神经网络模型的参数,以使得所述损失函数在不同扰动情况下满足预设条件。调整后的第二神经网络模型即压缩后的神经网络模型。
[0176]
将扩展数据输入所述第一神经网络模型和第二神经网络模型,所述第一神经网络将第三数据分为n类扩展数据,n为正整数,所述n类扩展数据中的各类扩展数据在kd方法的损失函数中的第二权重与各类扩展数据的数量负相关;对kd方法的损失函数中的各类扩展数据对应的第二权重进行随机扰动;调整所述第二神经网络模型的参数,以使得所述损失函数在不同扰动情况下满足预设条件,以得到调整后的第二神经网络模型。
[0177]
各类扩展数据的第二权重包括对所述各类扩展数据的初始权重进行随机扰动后得到的多个扰动后的权重,kd方法的损失函数包括所述多个扰动后的权重一一对应多个损失函数。所述各类扩展数据的初始权重与所述各类扩展数据的数量负相关。最小化所述多个损失函数的最大值,以得到训练后的第二神经网络模型。训练后的第二神经网络模型使得所述多个损失函数的最大值最小。对于损失函数中第二权重的确定和扰动,可以参见图8的说明。
[0178]
通过对kd方法的损失函数中的初始权重进行随机扰动,扰动后的权重在所述已标记数据和所述正样本数据中不同类的数据的数量负相关的数值周围随机波动,调整原始神经网络模型的参数,以使得在多个扰动后的权重情况下损失函数均满足预设条件。将使得
所述多个损失函数的最大值最小的调整后的原始神经网络模型作为压缩后的第二神经网络模型,减小了第一神经网络模型分类结果中的误差对压缩后的神经网络模型准确性的影响,提高压缩后的神经网络模型对数据的分类结果的准确性。
[0179]
通过步骤s301-s304,利用pu分类器,根据用户上传的第一神经网络的训练数据,对服务器存储的未标记数据进行分类,可以从云端存储的未标记数据中得到第一神经网络模型能够处理的扩展数据,即与所述第一神经网络模型的训练数据具有相似属性与分布的数据。根据扩展数据,能够实现神经网络模型的压缩,从而降低神经网络模型压缩对已标记数据的数量的要求,在保证神经网络模型压缩准确性的同时,减少传输的数据量,提高用户体验。
[0180]
图5是本申请实施例提供的一种神经网络模型压缩方法的示意图。以对图像进行分类的神经网络模型为例进行说明。
[0181]
用户设备向云服务设备发送第一数据和第一神经网络模型。云服务设备也可以称为云服务器或服务器。发送第一神经网络模型,也可以理解为发送第一神经网络模型的参数。云服务设备可以将第一神经网络模型作为教师网络模型,对第一神经网络模型进行压缩。第一神经网络模型用于处理正样本数据。第一神经网络模型能够确定第一数据中每个图像的类别。第一数据可以是第一神经网络模型的原始训练数据中的部分数据。第一数据可以是是已标记数据,第一数据可以是正样本数据。第一数据可以包括第一神经网络模型的原始训练数据中每个类别中的至少一个图像。第一神经网络模型用于将输入的数据分为n类中的至少一类,n为正整数。第一数据包括所述n类中每类的数据。
[0182]
云服务设备根据用户设备发送的第一数据和第一神经网络模型,以及云服务设备存储的云上数据,将第一神经网络模型作为教师网络模型,对第一神经网络模型进行压缩,以获取作为压缩后的第二神经网络模型。云上数据即云端存储的数据,包括至少一个图像。
[0183]
云服务设备根据用户设备上传的第一数据、云上数据,训练第一神经网络模型对应的pu分类器。
[0184]
云服务设备可以根据云上数据中的正样本数据,压缩第一神经网络。云服务设备使用pu分类器,确定云上数据中的正样本数据。
[0185]
云服务设备可以采用kd方法,进行第一神经网路模型的压缩。云服务设备可以将第一神经网路模型作为教师网络模型,利用kd方法对学生网络模型进行训练。云服务设备可以将经过训练的学生网络模型作为压缩后的第二神经网路模型。训练之前的学生网络模型也可以称为原始神经网络模型或原始模型。
[0186]
云服务设备将云上数据中的正样本数据输入第一神经网络模型和学生网络模型,根据第一神经网络模型和学生网络模型的输出,确定kd方法的损失函数l
kd
。kd方法的损失函数l
kd
可以表示为
[0187][0188]
其中,n为云上数据中的正样本数据的个数,和分别云上数据中的正样本数据中第i数据对应的第一神经网络模型和学生网络模型的输出;为训练数据中第i个数据的训练损失,即和之间的交叉熵损失。
[0189]
第一神经网络模型的输出的取值范围可能在负无穷到正无穷。可以对第一神经网络模型和学生网络模型的输出结果取值范围进行相同方式的调整,从而减小输出结果的位宽,从而减小计算交叉熵损失的计算量。例如,可以通过进行softmax变换,将第一神经网络模型和学生网络模型的输出进行标准化。标准化,就是将输出结果调整在0和1之间。参见《distilling the knowledge in a neural network》(hinton g,vinyals o,dean j.computer science,2015,14(7):38-39.),可以将第一神经网络模型和学生网络模型的输出除以相同的温度参数,并通过归一化指数函数softmax进行变换,以得到软化的概率,根据这两个软化的概率分布,计算kd方法的损失函数。通过温度参数,可以调整输出结果在0和1之间的分布情况。
[0190]
云服务设备可以通过调整学生网络模型,最小化损失函数kd方法的损失函数l
kd
,从而得到调整后的学生网络模型。调整后的学生网络模型即第二神经网络模型。
[0191]
云服务设备可以将将压缩后的第二神经网络模型发送至用户设备。
[0192]
用户设备根据压缩后的神经网络模型对图像进行处理,从而减小处理时间,并减小资源占用,提高处理效率。
[0193]
第一神经网络模型对云上数据中的正样本数据进行分类,分类结果的多个类中,某一类的图像的数量可能很少,而其他类的图像的数量较多。对于最小化的kd方法的损失函数,如果分类结果的多个类中某一类的数据数量很少,对于该类数据,第二神经网络模型与第一神经网络模型的输出差异较大,则第二神经网络模型不能有效处理该类数据,神经网络压缩的准确性较低。参见图8,可以对kd方法的损失函数进行调整,以获得鲁棒的知识蒸馏方法。
[0194]
图6是本申请实施例提供的一种扩展正样本数据的方法的示意图。
[0195]
属于原始训练数据的类别的图像,为正样本数据。不属于原始训练数据的类别的图像,为负样本数据。正样本数据可以用于对第一神经网络模型进行压缩以得到第二神经网络模型。第一神经网络模型即教师网络模型,第二神经网络模型即学生网络模型,对第一神经网络模型进行压缩,以得到第二神经网络模型,可以理解为训练第二神经网络模型。因此,第一神经网络模型也可以称为预训练网络模型。
[0196]
云服务设备获取第一数据。第一数据包括至少一个图像,至少一张图像中的每张图像均为正样本数据。第一数据可以包括用于训练第一神经网络模型的所有图像所属类中的每一个类的图像。第一数据可以是第一神经网络模型原始训练数据中的部分数据。
[0197]
云服务设备基于第一数据和第一神经网络模型,以及第二数据,对正样本数据进行扩展。第二数据为云上的大量的未标记数据,第二数据包括多个图像。
[0198]
通过pu学习算法,根据第一数据、第二数据以及第二数据中正样本数据的比例信息,进行半监督的学习,并通过此学习过程生成pu分类器,以便为大量未标记数据进行标注。正类与未标记(positive-unlabeled,pu)分类器的训练数据包括第一数据、第二数据以及第二数据中正样本数据的比例信息。第一数据为正样本数据,第二数据为未标记数据。贝叶斯决策论在相关概率已知的情况下利用误判损失来选择最优的类别分类。
[0199]
将第一数据和第二数据输入第一神经网络模型。第一神经网络模型对第一数据和第二数据中每张图像进行特征的提取,待训练的pu分类器根据第一神经网络模型提取的特征对图像进行分类,将输入的图像分类为正样本数据或负样本数据。
[0200]
可以根据第二数据中正样本数据的比例信息对pu分类器的参数进行调整,以保证输出结果的准确性。根据第二数据中正样本数据的比例信息可以确定pu学习算法的损失函数。也就是说,可以根据pu学习算法的损失函数对pu分类器的参数进行调整。
[0201]
第一数据中的每张图像的标签均为正样本数据,假设未标记数据中的每张图像的标签均为负样本数据。
[0202]
x
i
为pu分类器的训练样本,其中,x表示x
i
的训练样本的集合,r
d
表示图像的表示方式。y
i
为x
i
对应的标签,例如,y
i
∈y={-1,1},y表示标签的集合,“+1”表示正样本数据,
“-
1”表示负样本数据。x
i
∈t,t表示训练样本的集合,t可以表示为:
[0203][0204]
其中,l为已标记数据集,即第一数据;u为未标记数据集,即第二数据;n
l
为第一数据的数量,n
u
为第二数据的数量。第一数据均为正样本数据,标签为“+1”,第二数据种的未标记数据的标签可以表示为y
u
,y
u
∈y={-1,1},即y
u
为未标记数据的真实标签。
[0205]
定义决策函数f和判别式函数f。决策函数f用于表示输入的图像x
i
与pu分类器的输出z
i
之间的关系,即f:x
i

z
i
。根据pu分类器的输出z
i
,可以确定图像x
i
对应的标签y
i
,例如,y
i
与z
i
的对应关系可以是,当z
i
>0时y
i
=1,当z
i
≤0时y
i
=-1。判别式函数f用于表示输入的图像x
i
与标签y
i
的关系,即f:x
i

y
i

[0206]
对于传统二分类问题,考虑训练数据中正样本数据和负样本数据的比例,损失函数可以表示为训练数据的训练损失的期望(mean)。期望也可以称为数学期望,是试验中每次可能结果的概率乘以其结果的总和。可以根据通过如下损失函数对二分类器的输出进行调整:
[0207][0208]
其中,表示传统二分类器将训练数据中正样本数据分类为负样本数据带来的损失,表示传统二分类器将训练数据中负样本数据分类为正样本数据带来的损失,π
p
表示正样本数据的先验概率,π
n
表示负样本数据的先验概率,π
p
与π
n
具有如下关系:
[0209]
π
p

n
=1
[0210]
在传统二分类中,若训练数据是从自然数据中完全随机挑选出来的,则可以用训练数据中正样本数据的比例代表正样本数据的先验概率,用负样本数据的比例代表负样本数据的先验概率。也就是说,π
p
和π
n
可以是统计概率。当然,π
p
和π
n
也可以是对第二数据中正类样本的比例进行估计得到的。
[0211]
输入pu分类器的数据中,我们假设第二数据即未标记数据是从自然数据中完全随机挑选出来的,因此可以估计未标记数据中正样本数据的比例,该比例也可以称为正样本数据的先验概率,用π
p
表示。但由于输入pu分类器的数据中不存在标记的负样本数据,因此无法直接得到r
pn
(f)表达式中的第二项。
[0212]
pu分类器也可以根据图像中提取的特征对图像进行分类。pu分类器将第二数据中正样本数据分类为负样本数据的可能性与pu分类器将第一数据中正样本数据分类为负样本数据的可能性相同。相同也可以是近似相同。
[0213]
第一数据中均为正样本数据。根据pu的输出确定的第一数据中的图像的标签与标
签“+1”进行比较,确定pu分类器对第一数据的分类结果带来的损失。标签“+1”为正样本数据的标签。
[0214]
因此,可以表示为:
[0215][0216]
其中,l为损失函数,l(f(x),+1)用于确定根据pu分类器得到的一个正样本数据的标签带来的损失;e
p
为风险函数,用于确定pu分类器对第一数据的整体分类结果带来的损失,e
p
可以是根据pu分类器得到的第一数据中每一个数据的标签带来的损失的和。
[0217]
定义r
x
(f)为第二数据即未标记数据对应的损失。假设未标记数据为负样本数据。则pu分类器将未标记数据中的图像分为正样本数据,就存在损失。r
x
(f)表示pu分类器将未标记数据中的图像分类为正样本数据的损失。将根据pu分类器的输出确定的未标记数据的标签与标签
“-
1”进行比较,确定pu分类器对未标记数据的分类带来的损失r
x
(f)。标签
“-
1”为负样本数据的标签。
[0218]
r
x
(f)可以表示为:
[0219]
r
x
(f)=e
x
[l(f(x),-1)]
[0220]
其中,e
x
为风险函数,用于确定pu分类器对未标记数据的整体分类结果带来的损失,e
x
可以是根据pu分类器得到的每一个图像的标签带来的损失的和。e
p
与e
x
的下标p、x仅仅表示损失的来源,e
p
与e
x
的计算方式相同,即e
p
与e
x
表达式可以相同。
[0221]
未标记数据包括正样本数据和负样本数据。因此,r
x
(f)包括将未标记数据中正样本数据分类为正样本数据带来的损失,以及将未标记数据中负样本数据分类为正样本数据带来的损失。r
x
(f)可以表示为
[0222][0223]
其中,
[0224][0225]
表示pu分类器将未标记数据中正样本数据分类为正样本数据带来的损失,表示pu分类器将未标记数据中负样本数据分类为正样本数据带来的损失。仅在未标记数据中存在负样本数据,因此,pu算法的损失函数可以表示为:
[0226][0227]
考虑实际情况中,实际的分类结果中正样本数据的比例可能与未标记数据中正样本数据的比例π
p
存在误差,可能小于0,而对进行调整,保证用于表示的项的取值大于0,得到:
[0228][0229]
根据pu算法的损失函数对pu分类器的参数进行调整,从而改变决策函数f。
[0230]
表达式中,第一项可以通过决策函数f在已标记数据集l上的分类损失表示,第二项可以通过决策函数f在未标记数据集u上的分类损失以及决策函数f在已标记数据集u上的分类损失表示。第一项可以表示决策函数f在已标记数据集l上的分类损失,第二项可以表示决策函数f在未标记数据集u上的分类损失。两项之和即为决策函数f在训练样本的集合t上的整体损失。
[0231]
假设t代表了真实数据的分布,因此最小化决策函数f在t上的损失,就代表了最小化决策函数f在真实数据上的损失,就意味着学习到了最优的决策函数f。
[0232]
通过调整pu分类器的参数,以使得最小,通过pu学习算法,得到pu分类器。根据pu分类器,可以确定第三数据中的扩展数据,即未标记数据中的正样本数据,对正样本数据进行扩展。
[0233]
可以将扩展数据作为对第一神经网络模型压缩的训练数据的一部分。
[0234]
图7是本申请实施例提供的一种带注意力机制的多特征融合模型的示意图。
[0235]
pu分类器根据第一神经网络模型提取的特征对输入第一神经网络模型的数据进行分类。第一神经网络模型提取的特征可以包括第一神经网络模型的一个或多个层的输出,例如可以是最后一个层的输出,也可以是对多个层的输出进行融合或其他变换的结果。
[0236]
在训练pu分类器时,可以将第一数据和第二数据输入第一神经网络模型。将第一神经网络模型多个层提取的特征输入多特征模型。多特征模型对第一神经网络模型多个层提取的特征进行处理,得到变换后的特征。将变换后的特征输入pu分类器。pu分类器对融合后的特征进行处理,以获取图像的标签。
[0237]
根据pu分类器的输出以及第二数据中正样本数据的比例信息,计算通过对pu分类器和多特征模型的参数进行调整,减小从而完成对pu分类器的训练。
[0238]
融合的方式可以有多种。
[0239]
组合(combine)是一种融合的方式。采用combine的方式进行融合,可以将待融合的特征直接相加,或者加权相加。加权相加,即乘以一定系数即权重值之后相加。也就是说,采用combine的方式,可以将通道维度(channel wise)进行线性组合。特征中的每一位乘以的权重值可以相同或不同。
[0240]
级联(concatenate)和通道融合(channel fusion)是另一种融合的方式。采用concatenate&channel fusion的方式,可以将待融合的特征的维数直接拼接,或者乘以一定系数即权重值之后进行拼接。特征中的每一位乘以的权重值可以相同或不同。
[0241]
可以通过注意力机制,对多个层提取的特征进行调整,将调整后的特征作为pu分类器的输入。
[0242]
根据训练样本的集合中每个图像的标签,对进行融合模型、pu分类器的参数进行调整,以使得最小。对进行融合模型、pu分类器的参数的调整,即调整决策参数f。
[0243]
可以对第一神经网络多个层的输出进行全局平均池化,以得到与该多个层的输出一一对应的多个特征值。可以将该多个特征值进行拼接,得到特征描述子o。
[0244]
池化(pooling)也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减小过拟合,同时提高模型的容错性。全局平均池化不以窗口的形式取均值,而是以一
个层的输出为单位求平均值。即一个层的输出转换为一个值。全局平均池化的计算结果为一个层的输出矩阵中每个点的平均值。
[0245]
对特征描述子o进行注意力机制变化机制,得到对应的特征o'。
[0246]
例如,特征描述子o的权重参数w可以表示为:
[0247]
w=attention(o,w)=σ(w2δ(w1o))
[0248]
其中,δ、σ为非线性变换函数,w1、w2为两个全连接的参数。w1、w2是两个通过机器学习得到的参数矩阵,通过w1、w2进行线性变化。δ例如可以是线性整流单元(rectified linear unit,relu)。
[0249]
通过线性变化与非线性变换的组合,使用注意力机制挑选特征。对于给定的输入数据,网络在多层之间输出了不同的特征,这些特征分别代表了原始数据在不同层面上的表达。例如,输入一辆汽车的图片,底层网络输出的特征为比较通用的像是边缘线条、轮廓等基本的特征,高层网络输出的则是和该图片高度相关的例如车轮、车牌等特征。通过注意力机制,可以挑选哪些层的特征对输出结果更加重要。
[0250]
对于特征描述子中的第j个特征值o
j
,其权重参数为w
j
,多特征模型的输出中与特征值o
j
对应的字段o
j
'为:
[0251]
o
j
'=w
j
o
j
[0252]
其中,w
j
的值的大小表示了对应特征的重要性。参数w
j
数值越大代表对应的特征越重要。
[0253]
图8是本申请实施例提供的一种知识蒸馏的方法的示意图。
[0254]
该知识蒸馏的方法可以称为鲁棒的知识蒸馏(robust knowledge distillation,rkd)的方法。
[0255]
通过pu分类器对第三数据进行分类,得到扩展数据。扩展数据存在数据量不平衡的问题。第一神经网络模型对扩展数据进行分类。扩展数据即服务器存储的未标记数据中与所述第一神经网络模型的训练数据具有相似属性与分布的数据。扩展数据可以包括云上的未标记数据中部分数据,也可以包括用户设备上传的第一神经网络模型的训练数据。扩展数据中,某一类的图像的数量可能很少,而其他类的图像的数量较多。对于图像的数量较少的类,应当尽可能保证第二神经网络模型与第一神经网络模型的输出相同,从而使得第二神经网络模型更好的学习到第一神经网络模型的相关特性,即第二神经网络模型与第一神经网络模型能够实现更加接近的功能。
[0256]
例如,在扩展后的正样本数据的5005个训练图像中,对于其中的3个图像,训练得到的第二神经网络模型的输出和第一神经网络模型的分类结果不同,对于其他图像,训练得到的第二神经网络模型的输出和第一神经网络模型的分类结果相同。在这5005个训练图像中,有5张属于第一类,5000张属于第二类。如果这3张图像均属于第一类,则训练得到的第二神经网络模型对于第一类图像有60%的结果与第一神经网络模型的分类结果不同,训练得到的第二神经网络模型与第一神经网络模型相关特性差异较大,对于这类图像的分类的准确性较低,即神经网络模型压缩的准确性较低。而如果这3张图像均属于第二类,则训练得到的第二神经网络模型对于第二类图像有0.06%的结果与第一神经网络模型的分类结果不同,训练得到的第二神经网络模型与第一神经网络模型相关特性差异很小,神经网络模型压缩的准确性较高。
[0257]
为了解决由于正样本数据在不同的类中的数据不平衡造成的神经网络模型压缩不准确的问题,可以利用第一神经网络模型对扩展数据进行分类。根据分类结果,可以对kd方法的损失函数中数据进行权重的调整,使得数量越少的类别中的每个数据对应的权重越大,即kd方法的损失函数中第k类的权重与所述已标记数据和所述正样本数据中不同类的数据的数量负相关。
[0258]
另外,在数据量较大的某一类别中,数据量的少量增加或减小,对神经网络模型压缩准确性的影响较小。而在数据量较小的某一类别中,数据量的少量增加或减小,对神经网络模型压缩准确性可能也会产生很大的影响。因此,可以对kd方法的损失函数中数据进行权重的调整,使得数据量越少的类别中数据量的变化使得权重的变化越大,而数据量越多的类别中数据量的变化使得权重的变化较小。
[0259]
可以定义权重
[0260][0261]
其中,k为第一神经网络对扩展数据进行分类得到的类别的个数,y
k
表示k类第一数据中第k类图像的数量。应当理解,上述权重的表达式仅为是示例性的,也可以根据其他函数确定。
[0262]
k个类的中每个类的权重形成权重向量:
[0263][0264]
kd方法的损失函数可以表示为:
[0265][0266]
其中,l
c
表示第i数据的损失,n为输入的数据量,
[0267][0268]
w
i
表示是第i数据所属的类别对应的权重,
[0269][0270]
其中,k为中最大元素的位置,即该图片所属的类别。w
i
可以是根据第一神经网络模型对输入图片的处理结果确定的。
[0271]
可以是第一神经网络模型输出的向量,向量中的每一位与一个第一神经网络模型能够处理的类别对应,表示输入图片属于该类别的概率。或者,可以是软化的概率分布,即可以是对第一神经网络模型输出的向量进行标准化得到的,即,
[0272][0273]
其中,z
i
为第一神经网络模型输出的向量,向量中的每一位与第一神经网络模型能够处理的一个类别对应,t为温度参数。根据第一神经网络模型的输出z
i
或软化的概率分布可以确定z
i
或对应的输入图片所属的类。
[0274]
与传统的知识蒸馏方法的不同,在本申请实施例中,计算kd方法的损失函数时添加了参数w
i
,对于每个训练数据添加对应的权重来区分不同数据的重要性。其中,数据如果越稀少,它的权重就越大,表示它的重要性越高。一旦这种稀少的数据被分类错误,就会给分类器施加一个较大的惩罚。相应的,数量越多的数据,对于分类器的重要性也就越低。
[0275]
可以表示第一神经网络模型对输入图像的分类结果,与输入图像实际属于的类可能存在差异。也就是说,中存在噪声。因此,根据第一神经网络模型的分类结果确定的权重可能并不是最优结果。
[0276]
对权重或数据量y
k
进行随机扰动,得到多个扰动后的权重。第一神经网络模型对扩展数据的分类结果中各类的数据量与扩展数据实际所属的各类的数据量差异较小。因此,权重与实际的权重情况差异不会太大。设定一个预设范围,对y
k
的数量进行调整的范围小于该预设范围,例如,对于每个y
k
,增加或减少的数量或比例小于预设值,或权重增加或减少的数量或比例小于预设值。
[0277]
扰动后的权重向量组成权重向量矩阵:
[0278]
w={w
kd_1
,w
kd_2
,...,w
kd_n
}
[0279]
其中,w
kd_1
,w
kd_2
,...,w
kd_n
分别为对应于n种扰动情况的权重向量。
[0280]
基于这个权重矩阵,对原始神经网络模型的参数进行调整,训练第二神经网络模型。通过求解如下方程,可以得到最终优化后的第二神经网络模型n
st

[0281][0282]
权重向量为w时,第二神经网络模型n
st
与第一神经网络模型输出结果之间的损失函数为:
[0283]
l
kd
(n
st
,w)
[0284]
对于n种扰动情况,即n中不同的w,损失函数的最大值可以表示为:
[0285][0286]
调整第二神经网络模型的参数,以使得不同的扰动情况下损失函数的最大值尽可能的减小,即最小化kd方法损失函数的最大值。可以将调整后的学生网络模型n
st
作为压缩后的第二神经网络模型。
[0287]
对于不同的扰动情况,kd方法的损失函数的最大值小于预设值,即对于不同的扰动,第二神经网络模型与第一神经网络模型对图像的处理结果均不会出现较大的差异。因此,通过上述方式,可以降低正样本数据扩展引起的噪声对神经网络模型压缩的影响,提高压缩后的神经网络模型的准确性。
[0288]
图9是本申请实施例提供的一种神经网络压缩的方法的示意性流程图。
[0289]
第一服务器获取用户设备上传的第一数据。第一数据为第一神经网络模型的训练数据。第一服务器可以根据所述第一数据、所存储的第二数据,训练pu分类器。
[0290]
第二服务器使用pu分类器对所存储的第三数据进行选择,以得到扩展数据。
[0291]
第二服务器获取用户设备上传的第一神经网络模型,根据扩展数据,利用kd方法,训练第二神经网络模型。第一神经网络模型作为kd方法的教师网络模型,以得到压缩后的作为kd方法的教师网络模型。
[0292]
第二服务器可以向用户设备发送第二神经网络模型。
[0293]
第一数据是第一神经网络模型的全部或部分训练数据。第一数据包括第一神经网络模型输出的多个类别中每个类别的数据。第一服务器可以根据pu算法,训练pu分类器,pu算法的原理可以参见图5的说明。
[0294]
属于第一神经网络模型输出的类别的数据可以称为正样本数据。第二数据包括未标记数据。第二数据包括正样本数据和正样本数据之外的数据。正样本数据具有与与所述第一神经网络模型的训练数据具有相似属性与分布。
[0295]
神经网络模型压缩过程可以由两个专用服务器进行。两个服务器中的一个服务器可以专用于集中化处理pu分类器的训练,另一个服务器可以专用于根据获取神经网络模型和对应的pu分类器,进行正样本数据的选择和知识蒸馏过程。对pu分类器的训练和知识蒸馏过程进行集中化处理,可以提高神经网络模型压缩的速度。
[0296]
对本申请实施例提供的神经网络模型压缩方法进行验证。在数据集imagenet、flicker1m和修改后的国家标准技术研究数据集(modified national institute of standards and technology database,mnist)上进行了测试。
[0297]
表1是对imagenet数据集中的图片进行分类得到的测试结果。
[0298]
resnet-34网络作为用户上传的第一神经网络模型,对于resnet-34网络能够处理的每个类别,随机在加拿大前沿研究院公布的数据集(canadian institute for advanced research,cifar-10)中选择n
l
张图片,将选择的所有类的图片作为用户上传的第一数据,并将imagenet数据集作为云上的未标记数据集,resnet-18网络作为学生网络模型。
[0299]
表1
[0300][0301][0302]
其中,教师网络模型为未压缩的第一神经网络模型,kd为使用知识蒸馏方法在完整的cifar-10上训练得到的分类结果。人工分类方法,通过人工分类,从imagenet数据集上选取正样本数据,并将数据送入rkd训练第二神经网络模型。pu-s1为通过pu方法选取正样
本数据,并将全部数据送入rkd训练第二神经网络模型。pu-s2为通过pu方法选取正样本数据,并随机挑选和原始训练集cifar-10数量相同的训练数据,并送入rkd训练第二神经网络模型。结果显示,本申请实施例提供的方法对图片分类的准确率甚至高于手工挑选数据的方法。
[0303]
表2是对flicker1m数据集中的图片进行分类得到的测试结果。
[0304]
resnet-34网络作为用户上传的第一神经网络模型,对于resnet-34网络能够处理的每个类别,随机在imagenet数据集中选择n
l
张图片,将选择的所有类的图片作为用户上传的第一数据,并将flicker1m数据集作为云上的未标记数据集,resnet-18网络作为学生网络模型。
[0305]
表2
[0306]
方法n
t
数据来源top-1acc(%)top-5acc(%)教师网络模型1,281,167原始数据73.2791.26kd-all1,281,167原始数据68.6788.76kd-500k500,000原始数据63.9085.88pu-s1690,978pu数据61.9286.00pu-s1500,000pu数据61.2185.33
[0307]
其中,教师网络模型为未压缩的第一神经网络模型,kd-all为使用知识蒸馏方法在完整的imagenet数据集上训练得到的分类结果,kd-500k为使用知识蒸馏方法并在imagenet数据集上随机挑选50万数据训练得到的分类结果。pu-s1和pu-s2同上。top-1acc(%)表示在预测的标签向量中取概率最大的1个作为预测结果,若结果和真实标签相同则为正确。top-5acc(%)表示在预测的标签向量中取概率最大的5个作为预测结果,若结果中的任意一个和真实标签相同则为正确。结果显示,本申请实施例提供的方法确定的正样本数据相比于使用原始数据集中的训练数据得到的第二神经网络模型的分类结果的top5准确率更高。
[0308]
表3是对emnist数据集中的图片进行分类得到的测试结果。
[0309]
卷积神经网络模型lenet-5网络作为教师网络模型,从mnist数据集中教师网络模型能够处理的每类数据中分别随机挑选1,2,5,10,20张图片,组成第一数据。emnist数据集作为云上未标记数据。将lenet-5网络所有层的通道层减少一半作为第二神经网络模型。
[0310]
表3
[0311]
方法1251020pu-s198.598.798.798.898.9pu-s198.398.598.598.698.6
[0312]
结果显示,随着第一数据中每一类的图片数量增加,神经网络模型压缩的准确率提高。即使在第一数据中每一类的图片数量很小(仅使用1张)的情况下,神经网络模型压缩也能够达到较好的效果(准确率高于98%)。
[0313]
图10是本申请实施例提供的一种电子装置的示意性结构图。装置800包括获取模块801,处理模块802。
[0314]
获取模块801,用于获取用户设备上传的第一神经网络模型和所述第一神经网络的训练数据;
[0315]
处理模块802,用于根据所述第一神经网络的训练数据和所述服务器存储的未标记数据,利用正类与未标记pu学习算法得到pu分类器。
[0316]
处理模块802还用于,使用所述pu分类器,从所述服务器存储的未标记数据中选择出扩展数据,所述扩展数据为与所述第一神经网络模型的训练数据具有相似属性与分布的数据。
[0317]
处理模块802还用于,根据所述扩展数据,利用知识蒸馏kd方法训练第二神经网络模型,所述第一神经网络模型作为所述kd方法的教师网络模型,所述第二神经网络模型作为所述kd方法的学生网络模型。
[0318]
可选地,处理模块802还用于,根据所述第一神经网络的训练数据、所述服务器存储的未标记数据和比例信息,利用正类与未标记pu学习算法得到pu分类器,所述pu学习算法的损失函数为所述第一神经网络的训练数据和所述服务器存储的未标记数据的训练损失的期望,所述比例信息用于指示所述扩展数据在所述服务器存储的未标记数据中的占比,所述比例信息用于计算所述期望。
[0319]
可选地,所述pu分类器是根据第一特征和所述比例信息得到的,所述第一特征是基于多个第三特征融合获得的,所述多个第三特征是利用所述第一神经网络模型对所述第一神经网络的训练数据和所述服务器存储的未标记数据进行特征提取得到的,所述多个第三特征与所述第一神经网络的多个层一一对应。
[0320]
处理模块802还用于,利用所述第一神经网络模型对所述服务器存储的未标记数据进行特征提取,以得到第二特征;
[0321]
处理模块802还用于,将所述第二特征,输入所述pu分类器,以确定所述扩展数据。
[0322]
可选地,所述第一特征是利用经过第一权重调整之后的多个第三特征融合获得的,所述第一权重调整是基于根据所述比例信息进行的,所述第二特征是利用所述第一权重对多个第四特征融合得到的,所述多个第四特征与所述第一神经网络的多个层一一对应。
[0323]
可选地,所述第一神经网络模型的训练数据为用于训练所述第一神经网络模型的训练数据中的部分训练数据。
[0324]
可选地,所述部分训练数据包括所述第一神经网络输出的多个类别中每个类别的数据。
[0325]
可选地,处理模块802还用于,将所述扩展数据输入所述第一神经网络模型,以对所述扩展数据进行分类,得到多类扩展数据以及所述多类扩展数据中每类扩展数据的第二权重。
[0326]
处理模块802还用于,最小化所述kd方法的损失函数,以得到训练后的第二神经网络模型,其中,所述kd方法的损失函数为所述多类扩展数据中的各类扩展数据的训练误差与所述各类扩展数据的第二权重的乘积之和。
[0327]
可选地,所述各类扩展数据的第二权重包括对所述各类扩展数据的初始权重进行随机扰动后得到的多个扰动后的权重,所述kd方法的损失函数包括所述多个扰动后的权重一一对应多个损失函数,其中,所述各类扩展数据的初始权重与所述各类扩展数据的数量负相关,
[0328]
处理模块802还用于,最小化所述多个损失函数的最大值,以得到训练后的第二神
经网络模型。
[0329]
图11是本申请实施例提供的一种电子装置的硬件结构示意图。图10所示的电子装置1000(该装置1000具体可以是一种计算机设备)包括存储器1001、处理器1002、通信接口1003以及总线1004。其中,存储器1001、处理器1002、通信接口1003通过总线1004实现彼此之间的通信连接。
[0330]
存储器1001可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器1001可以存储程序,当存储器1001中存储的程序被处理器1002执行时,处理器1002和通信接口1003用于执行本申请实施例的神经网络模型压缩的方法的各个步骤。
[0331]
处理器1002可以采用通用的中央处理器(central processing unit,cpu),微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的神经网络模型压缩的装置中的单元所需执行的功能,或者执行本申请方法实施例的神经网络模型压缩的方法。
[0332]
处理器1002还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络模型压缩的方法的各个步骤可以通过处理器1002中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1002还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、专用集成电路(asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1001,处理器1002读取存储器1001中的信息,结合其硬件完成本申请实施例的神经网络模型压缩的装置中包括的单元所需执行的功能,或者执行本申请方法实施例的神经网络模型压缩的方法。
[0333]
通信接口1003使用例如但不限于收发器一类的收发装置,来实现装置1000与其他设备或通信网络之间的通信。例如,可以通过通信接口1003获取第一数据、第二数据、所述第二数据中正样本数据的比例信息、第一神经网络模型的参数、pu分类器中的一种或多种。
[0334]
总线1004可包括在装置1000各个部件(例如,存储器1001、处理器1002、通信接口1003)之间传送信息的通路。
[0335]
本申请实施例还提供一种神经网络模型压缩装置,其特征在于,包括:至少一个处理器和通信接口,所述通信接口用于所述神经网络模型压缩装置与其他装置进行信息交互,当程序指令在所述至少一个处理器中执行时,使得所述神经网络模型压缩装置执行上文中的方法。
[0336]
本申请实施例还提供一种计算机可读介质,其特征在于,所述计算机可读介质具有程序指令,当所述程序指令被直接或者间接执行时,使得前文中的方法得以实现。
[0337]
本申请实施例还提供一种芯片,其特征在于,所述芯片包括至少一个处理器,当程
序指令在所述至少一个处理器中执行时,使得前文中的方法得以实现。
[0338]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0339]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0340]
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0341]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0342]
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0343]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0344]
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1