一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于提升方法的向量编码方法与流程

2022-07-10 08:00:50 来源:中国专利 TAG:


1.本发明涉及深度向量化模型的加速,尤其是涉及一种基于提升方法的向量编码方法。


背景技术:

2.在机器学习领域,对于数据的向量化一直是非常重要的研究方向。无论是自然语言向量化,还是图片向量化,在各类分类、识别任务中都占有举足轻重的地位。除了要使向量具有更强的表征能力以外,如何使向量化的过程更快,占用资源更小也是一个重要的课题。现有的向量化方法在精度和速度之间较难做到兼顾,实际应用中经常出现效率过低或精度过低的情况。


技术实现要素:

3.本发明主要是解决现有技术所存在的难以兼顾精度和速度的技术问题,提供一种可以并行处理,即有较高的处理速度也有可靠精度的基于提升方法的向量编码方法。
4.本发明针对上述技术问题主要是通过下述技术方案得以解决的:一种基于提升方法的向量编码方法,包括模型训练方法和编码方法,模型训练方法包括以下步骤:
5.s1、将已经训练完成的原始模型作为老师模型t,将若干个轻量模型作为学生模型;
6.s2、训练第一个学生模型s1时,按照老师-学生模式对s1进行蒸馏训练,损失函数为:
[0007][0008]
训练目标是使损失达到最小值,继续训练不再变小;b为训练数据的一个子集,li是第b中的第i条数据,例如在自然语言场景下,b就是一组自然语言的句子,每一句就是一条数据;li是b中的第i条数据,也就是一个句子,s1(li)是指li输入到学生模型s1后的输出,t(li)是指li输入到老师模型t后的输出;并生成第一个遮罩;
[0009]
s3、训练第n个学生模型sn时,生成第n个遮罩,将训练数据输入老师模型所得到的结果和同样的训练数据分别输入前n-1次训练得到的n-1个学生模型后所得的结果的加和作差,再将所得残差加上第n个遮罩作为损失,然后按照老师-学生模式对sn进行蒸馏训练,损失函数为:
[0010][0011]
n》1,maskn为对前n-1个残差添加第n个遮罩;训练目标同样是使损失达到最小值,继续训练不再变小;
[0012]
s4、将训练后的学生模型并联,得到最终模型;
[0013]
编码方法为:将原始数据输入到最终模型中的各个学生模型中,得到k个输出,对
每个输出结果使用对应的遮罩mask进行处理,即第p个学生模型的输出结果使用训练中生成的第p个遮罩,1≤p≤k,得到k个结果,对k个结果加和得到最终的编码后的向量数据,k为最终模型所包含的学生模型数量。
[0014]
最终模型所包含的学生模型数量是根据需求来定的,学生模型越多,向量化效果越好但计算量相对也会更大,消耗更多的硬件资源。
[0015]
老师-学生模式架构主要的目的是用来进行深度学习模型的压缩,属于模型蒸馏领域中的一种比较流行的做法。因为深度学习下为了能够获得更好的准确率,训练出的网络往往结构比价复杂,而对于一些在线预测任务来说,复杂的模型结构不利于线上预测任务的快速响应需求,因此模型压缩的需求应运而生。在该模型框架下,老师模型结构相当于原始的复杂的深度神经网络结构,学生模型则是一种轻量级的网络结构;因此老师模型会有更高的预测准确率,它会指导学生模型到达在简化参数之后最好的模型效果。
[0016]
在以上的老师-学生架构基础上,我们采用了提升方法,使得学生模型不再是单一的一个,而是一组弱模型。在训练时,学生模型是一个一个按顺序串联训练的,第n个学生模型学习的并不是老师模型的输出向量,而是老师模型的输出结果与前n-1个学生模型所组成的模型组的结果的残差。老师模型可以是我们训练的复杂结构深度网络大模型,也可以是开源社区效果优秀的大模型。这类模型通常表现优异,但网络结构复杂,推理速度慢且严重依赖显卡资源。衡量学生模型族和老师模型在输出上的差距的方法可以选择均方误差。
[0017]
作为优选,所述轻量模型由以下三种方式中的任意一种或若干种得到:
[0018]
(1)从老师模型中抽取得到,即从老师模型中,随机的不重复的抽取部分深度网络层,保留其权重;(2)选用开源预训练模型,即选择网络结构简单,推理速度快的bert预训练模型作为学生模型;(3)从0开始训练的语言模型即选择随机参数初始化的bert模型作为学生模型。
[0019]
作为优选,编码时,每个处理器核心运行一个学生模型,m个学生模型同时推理,m为处理器核心数量和最终模型所包含的学生模型数量这两个值中的较小值。
[0020]
作为优选,所述遮罩通过以下方式生成:
[0021]
对于第1个至第k-1个遮罩,随机选择遮罩的一部分位置置1,其余位置置0;对于第k个遮罩,所有位置置为1。
[0022]
作为优选,所述遮罩通过以下方式生成:
[0023]
对于第1个至第k-1个遮罩,随机选择遮罩的一部分位置置1,其余位置置0;对于第k个遮罩,先随机遮罩的一部分位置置1,其余位置置0,然后按位加和所有遮罩,将第k个遮罩中对应加和结果里所有为0的位置置1。
[0024]
作为优选,所述遮罩通过以下方式生成:
[0025]
每次选择向量中连续的q个位置置1,其余位置置0。
[0026]
相邻两个遮罩的置1位置可以是连续或不连续的,可以有或者没有交叉重叠。比如向量的长度是10,那我们可以生成h个连续的遮罩。比如h=3的话,可以生成[1,1,1,0,0,0,0,0,0,0],[0,0,0,1,1,1,0,0,0,0],[0,0,0,0,0,0,1,1,1,1]这样没有重叠的连续遮罩。或者类似[1,1,1,1,1,0,0,0,0,0],[0,0,0,1,1,1,1,1,0,0],[0,0,0,0,0,1,1,1,1,1]这样有位置重叠的连续遮罩。
[0027]
遮罩可以理解为一个和模型输出向量等长的向量。生成遮罩有两种方式,一种是
随机生成遮罩(方法1和方法2),另一种非随机方法生成遮罩(方法3)。
[0028]
作为优选,生成遮罩以后,对遮罩进行随机数替换,具体为:
[0029]
选择遮罩中的一位数字,当此位数字是1时,生成一个大于0.9且小于1的随机数,用这个随机数替换此位数字;当此位数字是0时,生成一个大于0且小于0.1的随机数,用这个随机数替换此位数字;依次逐个替换遮罩中的数字,直至所有数字均被替换。
[0030]
每次替换时都生成一次随机数,这样同一遮罩中各个位上的随机数也不会完全相同。替换掉1和0之后可以尽量使每一个学生模型都学到不同的信息。也可以在生成遮罩时直接生成随机数,而不是生成以后进行替换。
[0031]
本发明带来的实质性效果是,老师-学生(teacher-student)方法与提升方法(boosting)相结合对大模型进行多次蒸馏训练,获得n个较弱的小模型,之后在推理阶段将这些小模型组合成为一个接近原本大模型效果的模型群,来模仿原本的大模型效果。这样每个小模型之间在推理阶段是去耦合的,可以在工程上进行并行处理,达到即使在cpu也可进行快速推理的效果。
附图说明
[0032]
图1是本发明的一种模型训练方法流程图。
具体实施方式
[0033]
下面通过实施例,并结合附图,对本发明的技术方案作进一步具体的说明。
[0034]
实施例:本实施例的一种基于提升方法的向量编码方法,包括模型训练方法和编码方法。如图1所示,模型训练方法包括以下步骤:
[0035]
s1、将已经训练完成的原始模型作为老师模型t,将若干个轻量模型作为学生模型;
[0036]
s2、训练第一个学生模型s1时,按照老师-学生模式对s1进行蒸馏训练,损失函数为训练目标是使损失达到最小值,继续训练不再变小;b为训练数据的一个子集,li是第b中的第i条数据,例如在自然语言场景下,b就是一组自然语言的句子,每一句就是一条数据;li是b中的第i条数据,也就是一个句子,s1(li)是指li输入到学生模型s1后的输出,t(li)是指li输入到老师模型t后的输出;并生成第一个遮罩;
[0037]
s3、训练第n个学生模型sn时,生成第n个遮罩,将训练数据输入老师模型所得到的结果和同样的训练数据分别输入前n-1次训练得到的n-1个学生模型后所得的结果的加和作差,再将所得残差加上第n个遮罩作为损失,然后按照老师-学生模式对sn进行蒸馏训练,损失函数为:
[0038][0039]
n》1,maskn为对前n-1个残差添加第n个遮罩;训练目标同样是使损失达到最小值,继续训练不再变小
[0040]
s4、将训练后的学生模型并联,得到最终模型;
[0041]
编码方法为:将原始数据输入到最终模型中的各个学生模型中,得到k个输出,对每个输出结果使用对应的遮罩mask进行处理,即第p个学生模型的输出结果使用训练中生
成的第p个遮罩,1≤p≤k,得到k个结果,对k个结果加和得到最终的编码后的向量数据,k为最终模型所包含的学生模型数量。
[0042]
以自然语言处理举例。具体来说,首先,我们需要一组语料数据(l0,l1,

,lm)来对学生模型进行训练。这组数据不需要进行标注,只要是所需语种的正常语句即可。每一条数据li即为一句自然语言的句子。除了训练数据以外,我们还需要一个已经训练完成的,效果优秀的老师模型t作为学生模型学习的“标杆”。老师模型可以是我们训练的复杂结构深度网络大模型,也可以是开源社区效果优秀的大模型。这类模型通常表现优异,但网络结构复杂,推理速度慢且严重依赖显卡资源。
[0043]
我们训练的目标是在同样输入条件下,不断减小学生模型族和老师模型在输出上的差距,使得这里,t是老师模型,sj是学生模型,l是输入文本,n是学生模型的个数,t()和s()分别代表老师模型和学生模型的输出向量。衡量学生模型族和老师模型在输出上的差距的方法可以选择均方误差。
[0044]
在训练第一个学生模型s1时,我们按照常规的老师-学生模式进行模型的蒸馏训练。此时计算误差的方法可以表述为:其中,b为训练数据的一个小子集,即一个小批量的训练数据。
[0045]
在训练第n个学生模型sn时,我们已拥有经过前n-1次训练得到的n-1个学生模型(s0,s1,

,s
n-1
)。此时的均方误差可以表述为:
[0046][0047]
即第n个学生模型sn与前n-1个模型(s0,s1,

,s
n-1
)预测结果和老师模型预测结果的残差的均方误差。每个模型学习的是前面所有模型的残差,这正是提升方法的思想。
[0048]
提升方法的一个重点是使每个弱模型尽量的学习到和其他模型不同的内容,为了使每个学生模型尽量学到的内容不同,我们为老师模型和前n-1个学生模型的残差加上了一个随机遮罩,随机将部分残差变为0,这样能大大增强多轮学习后学生模型的学习能力。以上所述的处理过程可以表述为:
[0049][0050]
其中,函数mask()的作用将对应位置上的数字置为0。
[0051]
在选择学生模型的基础模型时,可以采用抽取老师模型的部分模型,使用开源的结构较简单的预训练模型,从0开始训练结构较简单的语言模型,以及以上的集中混合使用的方式。
[0052]
遮罩可以通过随机或非随机的方式生成,随机方式包括方法1:
[0053]
对于第1个至第k-1个遮罩,随机选择遮罩的一部分位置置1,其余位置置0;对于第k个遮罩,所有位置置为1。
[0054]
方法2:
[0055]
对于第1个至第k-1个遮罩,随机选择遮罩的一部分位置置1,其余位置置0;对于第k个遮罩,先随机遮罩的一部分位置置1,其余位置置0,然后按位加和所有遮罩,将第k个遮
罩中对应加和结果里所有为0的位置置1。
[0056]
非随机方式包括方法3:
[0057]
每次选择向量中连续的q个位置置1,其余位置置0。相邻两个遮罩的置1位置可以是连续或不连续的,可以有或者没有交叉重叠。
[0058]
另外,除了直接选取0或1作为遮罩的值,也可以选取接近0或1的随机数作为遮罩每一位上的取值,或者在生成遮罩以后,对遮罩进行随机数替换,具体为:
[0059]
选择遮罩中的一位数字,当此位数字是1时,生成一个大于0.9且小于1的随机数,用这个随机数替换此位数字;当此位数字是0时,生成一个大于0且小于0.1的随机数,用这个随机数替换此位数字;依次逐个替换遮罩中的数字,直至所有数字均被替换。
[0060]
训练完毕后得到的学生模型族是相互退耦合的,因此在推理过程中可以同时进行运算,最终的结果输出前做加和得到最终结果。推理过程可以表述为:或这里选择学生模型的个数n可以视情况而定,只要保证被选择的学生模型从s1开始,且在训练时是连续的即可。
[0061]
由于每个学生模型结构都很简单,即使在cpu上推理速度也能很快,这样n个学生模型并行推理也可以充分利用多核心cpu的计算能力。
[0062]
本文所述的训练以及推理方法是一种对于大模型进行压缩蒸馏的思路,可以应用但不仅限于自然语言向量化模型。对于图形向量化的等其他向量化模型,本文所述的处理方法同样适用。
[0063]
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
[0064]
尽管本文较多地使用了老师模型、学生模型、提升方法等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献