一种模型压缩方法及装置与流程

文档序号:18756411发布日期:2019-09-24 22:29阅读:172来源:国知局
一种模型压缩方法及装置与流程

本发明涉及金融科技(fintech)技术领域,尤其涉及一种模型压缩方法及装置。



背景技术:

在深度学习技术领域中,用户可以通过训练模型得到预测效果较好的深度学习网络模型,神经网络模型被广泛的应用到图像、语音、自然语言处理等任务上,并且不断取得进步,逐渐成为研究热点。然而,虽然神经网络模型性能强大,但是由于参数庞大、存储消耗、计算耗时,难以应用到资源受限的平台上。为了解决这个问题,通常可以对结构较为复杂的深度网络模型进行压缩,得到网络结构相对简单、预测性能较好的深度学习网络模型。

现有技术中通常采用知识萃取或者结构搜索的技术进行深度网络模型压缩,采用知识萃取进行模型压缩时,通常需要设计一个小的子代模型,用小的子代模型去拟合大的父代模型输出的“知识”。子代模型的设计,所以需要专家知识和人工经验,设计难度较高。而使用结构搜索进行模型压缩时需要利用强化学习来训练循环神经网络,自动搜索性能优良的网络结构,但是这种方法的搜索空间巨大,需要大量的计算资源。

综上,目前亟需一种模型压缩方法,用以提高压缩得到的模型(比如子代模型)的预测效果。



技术实现要素:

有鉴于此,本发明实施例提供一种模型压缩方法及装置,至少解决了现有技术存在的问题。

一方面,本发明实施例提供一种模型压缩方法,包括:

获取父代模型;

对所述父代模型进行变异操作,得到初始子代种群,所述初始子代种群中至少包括两个由所述父代模型进行变异操作后得到的变异模型,所述变异操作至少包括压缩操作;

将所述初始子代种群作为迭代种群,根据所述迭代种群的每个变异模型的适应性函数值确定迭代子群;将所述迭代子群中的每个变异模型进行变异操作,得到迭代后代;将所述迭代后代和所述迭代子群作为所述迭代种群重复进行迭代,直至满足迭代终止条件,所述适应性函数值是根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的;

根据迭代终止时的迭代后代中每个变异模型的适应性函数值确定目标子代模型。

本发明实施例中,通过对父代模型的变异操作,得到初始子代种群,并根据初始子代种群进行迭代,通过迭代后代以及根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的适应性函数值来确定目标子代模型,通过本发明实施例中的模型压缩方法,在每次迭代过程中,子代模型群组中可以继续迭代的都是对父代模型进行压缩后得到的,并能够得到综合考虑模型规模、模型计算时间以及模型性能的子代模型,即这些子代模型在模型性能上又是最接近父代模型的最优模型,所以在达到模型压缩目标的同时,兼顾了计算速度和模型性能。

所述将所述初始子代种群作为遗传父代,根据遗传算法得到遗传子代,并根据所述遗传子代以及所述遗传父代作为新的遗传父代进行遗传操作,包括:

根据所述遗传父代中的每个变异模型的适应性函数值确定迭代遗传父代;

根据所述迭代遗传父代以及所述遗传算法得到所述遗传子代;

根据所述遗传子代以及所述迭代遗传父代作为新的遗传父代进行遗传操作。

在本发明实施例中,在迭代过程中将适应性函数值高的模型作为下次迭代的父代,有利于提高迭代子代的适应性函数,便于得到性能更好的子代模型。

可选的,所述适应性函数值是根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的,包括:

根据所述变异模型的模型规模、所述变异模型的模型计算时间、所述变异模型的模型性能以及所述模型规模的权重、所述模型计算时间的权重以及所述模型性能的权重确定所述适应性函数值。

在本发明实施例中,通过对影响适应性函数的因子设置权重能够动态调整适应性函数值,并进一步影响压缩结果。

可选的,所述根据所述变异模型的模型规模、所述变异模型的模型计算时间、所述变异模型的模型性能以及所述模型规模的权重、所述模型计算时间的权重以及所述模型性能的权重确定所述适应性函数值,包括:

f(n)=-α*s(n)-β*t(n)+γ*p(n)

其中,f(n)为所述适应性函数值,α、β、γ为权重系数,s(n)为模型规模,t(n)为模型计算时间,p(n)为模型性能。

本发明实施例中,由于希望得到规模小、计算时间好切性能优的子代模型,所以赋予模型规模以及计算时间为负权重,以便得到更好的子代模型。

一方面,本发明实施例提供一种模型压缩装置,包括:

获取单元,用于获取父代模型;

迭代单元,用于对所述父代模型进行变异操作,得到初始子代种群,所述初始子代种群中至少包括两个由所述父代模型进行变异操作后得到的变异模型,所述变异操作至少包括压缩操作;将所述初始子代种群作为迭代种群,根据所述迭代种群的每个变异模型的适应性函数值确定迭代子群;将所述迭代子群中的每个变异模型进行变异操作,得到迭代后代;将所述迭代后代和所述迭代子群作为所述迭代种群重复进行迭代,直至满足迭代终止条件,所述适应性函数值是根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的;

压缩模型确定单元,用于根据迭代终止时的迭代后代中每个变异模型的适应性函数值确定目标子代模型。

可选的,所述迭代单元具体用于:

根据所述遗传父代中的每个变异模型的适应性函数值确定迭代遗传父代;

根据所述迭代遗传父代以及所述遗传算法得到所述遗传子代;

根据所述遗传子代以及所述迭代遗传父代作为新的遗传父代进行遗传操作。

可选的,所述迭代单元具体用于:

根据所述变异模型的模型规模、所述变异模型的模型计算时间、所述变异模型的模型性能以及所述模型规模的权重、所述模型计算时间的权重以及所述模型性能的权重确定所述适应性函数值。

可选的,所述迭代单元具体用于:

f(n)=-α*s(n)-β*t(n)+γ*p(n)

其中,f(n)为所述适应性函数值,α、β、γ为权重系数,s(n)为模型规模,t(n)为模型计算时间,p(n)为模型性能。

一方面,本发明实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现模型压缩方法的步骤。

一方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行模型压缩的步骤。

附图说明

图1为本发明实施例提供的一种模型压缩方法的流程示意图;

图2为本发明实施例提供的一种模型压缩方法的流程示意图;

图3为本发明实施例提供的一种模型压缩装置的结构示意图;

图4为本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

为了方便理解,下面对本申请实施例中涉及的名词进行解释。

父代模型:复杂的深度神经网络结构但模型性能较好的模型,会指导子代模型到达在简化参数之后最好的模型效果。

子代模型:轻量级的网络结构,并学习父代模型的性能。

目前模型压缩相关的方法可以归纳为4种:剪枝量化、矩阵分解、知识萃取、结构搜索。

剪枝量化:剪枝是指通过删除模型中冗余参数,比如把接近0的参数规整到0,增加网络的稀疏性;量化是通过减少模型中每个参数的比特数,例如把32比特浮点数变成8比特整数,从而压缩模型。

矩阵分解:模型中大矩阵分解为几个小矩阵相乘,比如将全连接层矩阵使用奇异值分解为几个小矩阵,减少全连接层矩阵参数。

知识萃取:预先训练好的大模型为父代模型(teachermodel),压缩后的小模型为子代模型(studentmodel),将父代模型输出作为真实值,通过衡量子代模型输出和父代模型输出之间的损失,通过梯度下降更新子代模型参数,使得和父代模型更加接近。

结构搜索:原本是期望通过强化学习等方式自动搜索最佳网络结构,使得生成的模型在测试集上达到尽可能高的准确率。在生成的网络结构时,可以限制新生成模型比原始大模型小,此时结构搜索就相当于压缩模型。

在具体实践过程中,知识萃取的方法通常需要设计一个小的子代模型,用小的子代模型去拟合大的父代模型输出的“知识”。子代模型的设计,需要专家知识和人工经验,设计难度较高。而现有的结构搜索方法,通常是利用循环神经网络来生成网络结构的描述,并且利用强化学习来训练循环神经网络,自动搜索性能优良的网络结构。但是,这种方法的搜索空间巨大,需要大量的计算资源。

另外模型在部署时,也会受到计算资源、业务逻辑等应用指标的限制,需要找到模型大小、计算速度、模型性能之间的平衡。比如,尽管一个超大模型性能非常好,但是超过存储限制,或者计算时间超长不满足业务指标,显然不能符合实际需要。同理,一个模型被压缩到超小且计算超快,但是预测精度很差,也是不符合业务需要的。

基于上述部署的缺点,本发明实施例提供一种模型压缩方法,具体如图1所示,包括以下步骤:

步骤s101,获取的父代模型为具有复杂的深度神经网络结构但模型性能较好的模型,父代模型可以为任一具有上述特征的模型中的任一个,也可以是具有上述特征的模型中的至少一个。

步骤s102,对所述父代模型进行变异操作,得到初始子代种群,所述初始子代种群中至少包括两个由所述父代模型进行变异操作后得到的变异模型,所述变异操作至少包括压缩操作。

具体的,本发明实施例使用遗传变异算法以及父代模型得到子代模型。在本发明实施例中,对获得的父代模型进行变异操作,得到可以进行遗传操作的初始种群。

在本发明实施例中,由于最终的目的是对父代模型进行压缩,所以在变异操作中至少包括压缩操作,本发明实施例中的压缩操作可以使用现有技术中一切对模型的压缩操作,具体的,删除层、增加层内稀疏度、层内变窄、删除多层构成的块等一些基本操作都为压缩操作。

可选的,在本发明实施例中,为了避免遗传变异过程中过早收敛,所以本发明实施例中,还可以通过父代模型以及一些增加父代模型复杂度的方法得到初始子代模型,例如增加层、减少层内稀疏度、层内变宽、增加多层构成的块等一些基本操作。

可选的,在本发明实施例中,初始子代种群中的变异模型可以是通过多个压缩操作得到的,也可以是通过一个压缩操作得到的,例如,父代模型a经过第一增加层操作得到变异模型a,父代模型a经过第二增加层操作得到变异模型b,父代模型a经过第三增加层操作得到变异模型c;或者父代模型a经过第一增加层操作得到变异模型a,经过第一减少层内稀疏度操作得到变异模型d,经过第一层内变窄操作得到变异模型e;或者父代模型a经过第一增加层操作得到变异模型a,经过第一减少层内稀疏度操作得到变异模型d,经过第一层内变窄操作得到变异模型e,经过第一增加层操作得到变异模型f。

步骤s103,将所述初始子代种群作为迭代种群,根据所述迭代种群的每个变异模型的适应性函数值确定迭代子群;将所述迭代子群中的每个变异模型进行变异操作,得到迭代后代;将所述迭代后代和所述迭代子群作为所述迭代种群重复进行迭代,直至满足迭代终止条件,所述适应性函数值是根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的。

具体的,在本发明实施例中,在遗传变异操作过程中,以初始子代种群为迭代种群开始进行迭代,最终能够得到目标种群,并从目标种群中确定目标子代模型。

在本发明实施例中,使用上述的变异操作方法,使得迭代种群继续迭代,直至迭代终止条件,具体的,根据迭代种群中每个变异模型的适应性函数值来确定迭代父代,并根据迭代父代确定迭代子代。

在本发明实施例中,为了平衡模型大小、运行时间、模型性能等目标,通过定义模型适应性函数,来衡量子代模型学习父代模型“知识”的能力。可以将变异模型中适应性函数值较优的变异模型作为迭代父代,并根据迭代父代的变异操作得到变异子代,并将迭代子代和迭代父代一起作为下次迭代的迭代种群。在本发明实施例中,模型大小指的是模型神经网络的复杂程度,模型的运行时间是指模型的计算时间,即从输入到输出的时间,模型性能指的模型的准确率(precision)、召回率(recall)等性能指标。

也就是说,将初始子代种群作为迭代种群,并确定迭代种群中每个变异模型的适应性函数值,将适应性函数值较优的变异模型作为迭代子代,然后将迭代子代进行变异操作,得到迭代后代,将迭代后代和迭代子群作为所述迭代种群重复进行迭代,直至满足迭代终止条件。在本发明实施例中,迭代终止条件可以为迭代次数或者迭代收敛。

示例性的,父代模型为1个模型,经过变异操作得到2个变异模型,分别为变异模型a以及变异模型b,变异模型a以及变异模型b构成初始子代种群,初始子代种群中适应性函数较优的变异模型为变异模型a,将变异模型a进行变异操作,得到变异模型c、变异模型d以及变异模型e;将变异模型a、变异模型c、变异模型d以及变异模型e作为下次迭代的迭代种群,即继续确定变异模型a、变异模型c、变异模型d以及变异模型e中适应性函数较优的变异模型进行变异操作。

可选的,在本发明实施例中,根据变异模型的模型规模、变异模型的模型计算时间、变异模型的模型性能以及模型规模的权重、模型计算时间的权重以及模型性能的权重确定适应性函数值,也就是说,为了可以动态调整适应性函数值,可以通过设置权重来实现。

进一步地,可以通过公式1确定适应性函数值:

f(n)=-α*s(n)-β*t(n)+γ*p(n)公式1

其中,f(n)为所述适应性函数值,α、β、γ为权重系数,s(n)为模型规模,t(n)为模型计算时间,p(n)为模型性能。在模型压缩场景下,希望获取更小更快的模型,所以模型规模、模型计算时间两项取反。

步骤s104,迭代终止时的迭代后代可以作为目标种群,确定目标种群中每个变异模型的适应性函数值,并按照适应性函数值由高到低的顺序进行排序,取排序在前n(n大于等于1)个的变异模型为目标子代模型,完成从父代模型转换到子代模型的过程。

为了更好的解释本申请实施例,下面结合具体的实施场景描述本申请实施例提供的一种模型压缩方法,具体包括:

步骤s201,获取父代模型a;

步骤s202,根据父代模型a进行变异操作,得到变异模型a,变异模型b以及变异模型c;

步骤s203,确定变异模型a,变异模型b以及变异模型c的适应性函数值;

步骤s204,将适应性函数值较优的变异模型a,变异模型b进行变异操作,得到变异模型a1,变异模型a2,变异模型b1以及变异模型b2;

步骤s205,将变异模型a1,变异模型a2,变异模型b1以及变异模型b2,变异模型a,变异模型b作为下次迭代的迭代种群,直到迭代终止条件,得到目标种群;

步骤s206,将目标种群中适应性函数值排序靠前的m(m大于等于1)个变异模型作为目标子代模型。

基于相同的技术构思,本申请实施例提供了一种模型压缩装置,如图3所示,该装置300包括:

获取单元301,用于获取父代模型;

迭代单元302,用于对所述父代模型进行变异操作,得到初始子代种群,所述初始子代种群中至少包括两个由所述父代模型进行变异操作后得到的变异模型,所述变异操作至少包括压缩操作;将所述初始子代种群作为迭代种群,根据所述迭代种群的每个变异模型的适应性函数值确定迭代子群;将所述迭代子群中的每个变异模型进行变异操作,得到迭代后代;将所述迭代后代和所述迭代子群作为所述迭代种群重复进行迭代,直至满足迭代终止条件,所述适应性函数值是根据所述变异模型的模型规模、所述变异模型的模型计算时间以及所述变异模型的模型性能确定的;

压缩模型确定单元303,用于根据迭代终止时的迭代后代中每个变异模型的适应性函数值确定目标子代模型。

进一步地,所述迭代单元302具体用于:

根据所述遗传父代中的每个变异模型的适应性函数值确定迭代遗传父代;

根据所述迭代遗传父代以及所述遗传算法得到所述遗传子代;

根据所述遗传子代以及所述迭代遗传父代作为新的遗传父代进行遗传操作。

进一步地,所述迭代单元302具体用于:

根据所述变异模型的模型规模、所述变异模型的模型计算时间、所述变异模型的模型性能以及所述模型规模的权重、所述模型计算时间的权重以及所述模型性能的权重确定所述适应性函数值。

进一步地,所述迭代单元302具体用于:

f(n)=-α*s(n)-β*t(n)+γ*p(n)

其中,f(n)为所述适应性函数值,α、β、γ为权重系数,s(n)为模型规模,t(n)为模型计算时间,p(n)为模型性能。

基于相同的技术构思,本申请实施例提供了一种计算机设备,如图4所示,包括至少一个处理器401,以及与至少一个处理器连接的存储器402,本申请实施例中不限定处理器401与存储器402之间的具体连接介质,图4中处理器401和存储器402之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。

在本申请实施例中,存储器402存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,可以执行前述的模型压缩方法中所包括的步骤。

其中,处理器401是计算机设备的控制中心,可以利用各种接口和线路连接终端设备的各个部分,通过运行或执行存储在存储器402内的指令以及调用存储在存储器402内的数据,从而获得客户端地址。可选的,处理器401可包括一个或多个处理单元,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。在一些实施例中,处理器401和存储器402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器401可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

基于相同的技术构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行模型压缩方法的步骤。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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