一种多任务模型蒸馏方法、系统、介质及电子终端

文档序号:1890918 发布日期:2021-11-26 浏览:12次 >En<

阅读说明:本技术 一种多任务模型蒸馏方法、系统、介质及电子终端 (Multitask model distillation method, multitask model distillation system, multitask model distillation medium and electronic terminal ) 是由 何哲宇 于 2021-08-31 设计创作,主要内容包括:本发明涉及人工智能技术领域,尤其涉及一种多任务模型蒸馏方法、系统、介质及电子终端,方法包括:当按照预设的任务训练顺序对多任务模型进行多个任务的一次轮换训练时,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,多任务模型的中间参数层包括多个第一子层,冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数;将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型,对多个蒸馏后的学生模型进行二次轮换训练,进而确定最终模型,避免多任务之间产生对抗。(The invention relates to the technical field of artificial intelligence, in particular to a multitask model distillation method, a multitask model distillation system, a multitask model distillation medium and an electronic terminal, wherein the method comprises the following steps: when the multi-task model is subjected to one-time alternate training of a plurality of tasks according to a preset task training sequence, freezing a middle parameter layer of the multi-task model, reserving an embedded layer and a plurality of classification layers corresponding to the tasks, wherein the middle parameter layer of the multi-task model comprises a plurality of first sublayers, and the step of freezing the middle parameter layer of the multi-task model comprises the following steps: freezing all parameters or part of parameters in the intermediate parameter layer of the multitask model; the embedding layer subjected to multi-task rotation training, the frozen middle parameter layer and any classification layer corresponding to the tasks are used as teacher models, model distillation is carried out by using the teacher models, a plurality of distilled student models are obtained, secondary rotation training is carried out on the plurality of distilled student models, a final model is determined, and countermeasures among the multi-tasks are avoided.)

一种多任务模型蒸馏方法、系统、介质及电子终端

技术领域

本发明涉及人工智能技术领域,尤其涉及一种多任务模型蒸馏方法、系统、介质及电子终端。

背景技术

由于Transformer-based(基于Transformer)的新一代算法模型往往需要消耗大量的算力与运算时间,这对需要控制时间与经济成本的一些应用是无法接受的,Transformer为基于注意力机制的编码器-解码器(Encoder-Decoder)结构。因此,模型蒸馏(model distillation)作为一种压缩模型的技术应运而生,即通过设计teacher-student这样的模型训练框架,使得小参数量的模型在大参数量模型的“监督”下得到近似于大模型的表现,teacher-student指模型蒸馏过程中教师模型和学生模型组成的模型训练架构。除此之外,多任务模型的设计同样可以压缩模型的大小。所以,很容易让人联想到,在多任务模型的基础上进行蒸馏,实现对模型的进一步压缩。

然而,在实际处理过程中,多任务模型的训练数据通常是不均衡的,甚至是跨领域的语料,又由于下游任务标签集的不同,在多任务模型的蒸馏过程中,多个任务之间会产生对抗,不能达到互相促进的训练效果。

发明内容

本发明提供一种多任务模型蒸馏方法、系统、介质及电子终端,以解决现有技术中由于多任务模型的训练数据不均衡,导致在模型蒸馏过程中多任务之间容易产生对抗,不能较好地达到相互促进的训练效果,且蒸馏后的多任务模型精确度较低的问题。

本发明提供的多任务模型蒸馏方法,包括:

当按照预设的任务训练顺序对多任务模型进行多个任务的一次轮换训练时,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数;

将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型;

根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型;

根据经过二次轮换训练的学生模型,确定最终模型。

可选的,对多个蒸馏后的学生模型进行二次轮换训练的步骤包括:

对蒸馏后的学生模型的中间参数层进行冻结,所述对蒸馏后的学生模型的中间参数层进行冻结的步骤包括:对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结,所述蒸馏后的学生模型的中间参数层包括多个第二子层,所述部分参数包括自靠近蒸馏后的学生模型的嵌入层的第二子层起,多个连续的第二子层的参数;

并且,保留蒸馏后的学生模型的嵌入层、以及对应的分类层,进而获取经过二次轮换训练的学生模型。

可选的,冻结多任务模型的中间参数层中的全部参数或部分参数的步骤包括:

根据预先设置的第一冻结层数,从靠近多任务模型的嵌入层的第一子层开始,获取第一待冻结子层;

根据所述第一待冻结子层,确定第一待冻结参数;

对所述第一待冻结参数进行冻结。

可选的,对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结的步骤包括:

根据预先设置的第二冻结层数,从靠近蒸馏后的学生模型的嵌入层的第二子层开始,获取第二待冻结子层;

根据所述第二待冻结子层,确定第二待冻结参数;

对所述第二待冻结参数进行冻结。

可选的,对所述第一待冻结参数进行冻结的步骤包括:

根据预先设置的冻结属性,对所述第一待冻结参数的参数属性进行更新;

在所述多任务模型的优化器中加入参数过滤器;

一次轮换训练过程中,所述参数过滤器根据更新后的第一待冻结参数的参数属性,对所述第一待冻结参数进行过滤,完成对所述第一待冻结参数的冻结。

可选的,利用所述教师模型,进行模型蒸馏的步骤包括:

采集训练数据集,所述训练数据集包括:多个训练样本,以及与所述训练样本相对应的预测标签;

将所述训练数据集中的训练样本分别输入所述教师模型和获取的学生模型进行预测,获取教师预测结果和学生预测结果;

根据所述教师预测结果和预设的第一损失函数,获取教师模型的第一损失;

根据所述学生预测结果和预设的第二损失函数,获取学生模型的第二损失;

根据所述第一损失、第二损失和预设的权值,获取第三损失,利用所述第三损失,对所述学生模型进行训练与优化,获取蒸馏后的学生模型。

可选的,根据经过二次轮换训练的学生模型,确定最终模型的步骤包括:

根据预设的组合规则,将经过二次轮换训练的多个学生模型的嵌入层、中间参数层和分类层,进行组合,获取最终模型,多个嵌入层与多个中间参数层相对应,多个中间参数层与多个分类层相对应。

本发明还提供一种多任务模型蒸馏系统,包括:

一次轮换训练模块,用于当按照预设的任务训练顺序对多任务模型进行多个任务的一次轮换训练时,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数;

蒸馏模块,用于将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型;

二次轮换训练模块,用于根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型;

处理模块,用于根据经过二次轮换训练的学生模型,确定最终模型。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述方法。

本发明还提供一种电子终端,包括:处理器及存储器;

所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行如上述任一项所述方法。

本发明的有益效果:本发明中的多任务模型蒸馏方法、系统、介质及电子终端,通过对多任务模型进行多个任务的一次轮换训练,一次轮换训练过程中,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数,将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型,并根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型,根据经过二次轮换训练的学生模型,确定最终模型;使得模型训练过程中,中间参数层不会由于多任务训练数据的不均衡,而导致过拟合于某一项任务,避免多任务之间产生对抗,消除多个任务之间由于样本不均衡带来的影响,大大节约了模型训练的资源消耗,实现了多任务学习训练之间的相互促进,精确度较高。

附图说明

图1是本发明实施例中多任务模型蒸馏方法的流程示意图。

图2是本发明实施例中多任务模型的结构示意图。

图3是本发明实施例中多任务模型蒸馏方法中二次轮换训练的流程示意图。

图4是本发明实施例中多任务模型蒸馏方法中冻结多任务模型的中间参数层中的全部或部分参数的流程示意图。

图5是本发明实施例中进行模型蒸馏的流程示意图。

图6是本发明实施例中多任务模型蒸馏方法中确定最终模型的流程示意图。

图7是本发明实施例中多任务模型蒸馏系统的结构示意图。

图8是本发明实施例中多任务模型蒸馏的电子终端的结构示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

如图1所示,本实施例中的多任务模型蒸馏方法,包括:

S101:当按照预设的任务训练顺序对多任务模型进行多个任务的一次轮换训练时,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数;通过在一次轮换训练过程中,冻结多任务模型中的公共的中间参数层中的全部或部分参数,使得公共的中间参数层的全部或部分参数不再参与训练过程中的反向传播与参数更新,有效减少训练消耗的资源,且通过保留多任务模型中的公共的嵌入层,以及与多个任务相对应的分类层,进行多个任务的轮换训练,能够较好地利用嵌入层的浅层表达,避免所述多任务模型的不同下游任务之间发生冲突与对抗。

例如:选取参数量较大的多任务模型进行多个任务的一次轮换训练,所述任务训练顺序可以根据实际情况进行设置,如:任务一、任务二、任务三、任务四等。按照该任务训练顺序,对选取的多任务模型进行一次轮换训练,一次轮换训练过程中,冻结多任务模型的中间参数层中的全部或部分参数,避免由于多个任务的训练数据的不均衡,而导致训练过程中发生对抗,如训练过程中,模型往往侧重于其中一个训练数据量较大的下游任务进行训练,造成其他任务的损失。多个任务的轮换训练如:按照任务一->任务二->任务三->任务四->…->任务一的顺序进行循环训练。

可以理解的,多任务模型指同时学习多个任务的模型,多任务模型包括:一个嵌入层(embedding层)、一个transformer结构的中间参数层,和N个与任务相对应的分类层(classifier层),transformer为基于注意力机制的编码器-解码器(Encoder-Decoder)结构,多任务模型与单任务模型相互对立。而在对多任务模型进行蒸馏及训练的过程中,其训练数据集中多任务之间的训练样本往往是不均衡的,甚至是跨领域的语料,如猫的分类任务与狗的分类任务,其对应的训练数据差异巨大,这很容易导致不同任务在训练过程中发生对抗,不能达到较好地相互促进的训练效果,因此,通过对多任务模型进行多个任务的一次轮换训练,在一次轮换训练过程中,冻结多任务模型的中间参数层的全部或部分参数,保留其嵌入层和分类层,使得多任务模型的中间参数层的全部或部分参数在一次轮换训练过程中,将保持不变,避免由于训练数据集不均衡而导致不同任务之间发生对抗,同时,实现了对多任务模型的嵌入层与分类层的训练。

如图2所示,上述步骤S101中,所述中间参数层由若干个层叠式的transformerblock构成,所述第一子层即指transformer block。其中,嵌入层的作用是:对输入的训练数据进行降维与向量化,获取对应的具有表达意义的映射向量;所述中间参数层的主要作用是:对映射向量进行计算,获取计算结果;所述分类层与任务相对应,分类层的主要作用是:对中间参数层输出的计算结果进行分类与决策。对多任务模型进行一次轮换训练时,冻结多任务模型中transformer结构的中间参数层中的全部或部分参数,保留其embedding层,以及与任务对应的classifier层,得到具有“1+1+N”(一个公共embedding层,一个公共transformer层,和N个不同任务对应的classifier层)结构的经过一次轮换训练的多任务模型,N为任务总数。

具体的,对输入的训练数据进行降维与向量化的步骤包括:首先,对输入的训练数据进行编码,获取训练数据的索引值;其次,根据所述索引值,进行向量转换,获取对应的词向量矩阵,然后,根据所述词向量矩阵和预设的目标矩阵,获取映射矩阵,即将词向量矩阵与目标矩阵的乘积作为映射矩阵,进而获取映射向量,从而实现对训练数据的降维和向量化。

所述中间参数层包括:Encoder(编码器)层和Decoder(解码器)层,Encoder层包括多个Encoder block,多个所述Encoder block依次连接,Decoder层包括多个Decoderblock,多个所述Decoder block依次连接。中间参数层对映射向量进行计算的步骤包括:接收嵌入层输出的不同任务的映射向量;将所述映射向量输入所述Encoder层进行编码,获取编码矩阵;将所述编码矩阵输入Decoder层进行预测,获取计算结果,该计算结果为Decoder层输出的预测值。

对中间参数层输出的计算结果进行分类与决策的步骤包括:利用预先设置的分类函数,对所述计算结果进行分类。所述分类函数可以是softmax分类函数或sigmoid分类函数等,此处不再赘述。

S102:将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型;

由于多任务模型存在多个任务,任意选择一个任务,获取该任务对应的分类层,进而将经过一次轮换训练的embedding层、中间参数层以及与任务对应的任一分类层作为教师模型。根据多个与任务对应的分类层,获取多个对应的教师模型。并利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型。通过将经过多个任务轮换训练的embedding层、中间参数层以及与任务对应的任一分类层作为教师模型,能够有助于对不同的任务进行单独蒸馏,避免多个任务之间由于训练数据不均衡发生对抗与冲突。

S103:根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型;通过对多个蒸馏后的学生模型进行二次轮换训练,能够避免由于训练数据不均衡,导致与任务相对应的多个学生模型的训练产生对抗,造成训练损失。

S104:根据经过二次轮换训练的学生模型,确定最终模型。通过对蒸馏后的学生模型进行二次轮换训练,并根据经过二次轮换训练的学生模型,确定最终模型,实现了对多任务模型的较好地蒸馏,避免了蒸馏及训练过程中,由于训练数据的不均衡,而导致不同任务之间发生冲突与对抗,降低了不均衡的训练数据集对多任务模型蒸馏及训练的所造成的影响,极大程度地利用了多任务模型的多任务学习训练之间的互相促进,可实施性较强,成本较低。

请参考图3,为了避免二次轮换训练过程中,由于训练数据集不均衡,导致产生过拟合,因此,发明人提出,对多个蒸馏后的学生模型进行二次轮换训练的步骤包括:

S301:对蒸馏后的学生模型的中间参数层进行冻结,所述对蒸馏后的学生模型的中间参数层进行冻结的步骤包括:对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结,所述蒸馏后的学生模型的中间参数层包括多个第二子层,所述部分参数包括自靠近蒸馏后的学生模型的嵌入层的第二子层起,多个连续的第二子层的参数;并且,保留蒸馏后的学生模型的嵌入层、以及对应的分类层,进而获取经过二次轮换训练的学生模型。即二次轮换训练过程中,冻结蒸馏后的学生模型的中间参数层的全部或部分参数,使得该全部或部分参数在二次轮换训练过程中保持不变,利用训练数据集中的训练样本,对多个蒸馏后的学生模型的嵌入层与分类层进行迭代更新,实现对嵌入层和分类层的训练,从而避免由于多任务的训练数据集不均衡,而导致训练效果较差。在一些实施例中,多个蒸馏后的学生模型与多个任务之间一一对应,如:任务一对应蒸馏后的学生模型一,任务二对应蒸馏后的学生模型二等。

通过根据预先设置的任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,二次轮换训练的过程如:蒸馏后的学生模型一->蒸馏后的学生模型二->蒸馏后的学生模型三…->蒸馏后的学生模型一。并且,在二次轮换训练过程中,冻结其中间参数层中的全部或部分参数,保留其嵌入层、以及对应的分类层,能够避免由于训练数据集的不均衡,对多个蒸馏后的学生模型的训练效果产生影响,其次,使得蒸馏后的学生模型中的中间参数层不在参与反向传播与参数迭代,减少了训练资源的消耗和成本,再有,通过保留蒸馏后的学生模型中的嵌入层,能够较好地利用训练样本的浅层表达,对蒸馏后的学生模型的嵌入层的参数进行迭代更新,这对于不同下游任务而言不会发生冲突,避免由于训练数据集不均衡对训练效果造成的影响。

如图4所示,在一些实施例中,由于多任务模型的transformer结构的中间参数层为层叠式的结构,包括多个第一子层,该第一子层指transformer block,因此,冻结多任务模型的中间参数层中的全部参数或部分参数的步骤包括:

S401:根据预先设置的第一冻结层数,从靠近多任务模型的嵌入层的第一子层开始,获取第一待冻结子层,根据所述第一待冻结子层,确定第一待冻结参数;例如:当第一冻结层数为i层时,则从靠近embedding层的方向开始,将i层的第一子层作为第一待冻子层,并将所述第一待冻结子层中的参数确定为第一待冻结参数。

S402:对所述第一待冻结参数进行冻结。通过在一次轮换训练过程中,冻结所述多任务模型的公共的中间参数层的第一待冻结参数,使得第一待冻结参数不再参与训练过程中的反向传播与参数更新,有效减少训练消耗的资源,且通过保留公共的嵌入层,以及与多个任务相对应的分类层,进行多个任务的轮换训练,能够较好地利用嵌入层的浅层表达,避免所述预训练模型的不同下游任务之间发生冲突与对抗。

例如:根据预设的第一冻结层数,从靠近embedding层的方向开始,对中间参数层的部分层的参数进行冻结,使得冻结后的中间参数层中靠近embedding层的部分第一子层的参数,在一次轮换训练过程中,将不再参与参数迭代与更新,避免由于对不同自然语言任务的公共语义特征的捕捉,造成多任务训练的过拟合。其中,冻结层数的数量可以根据实际情况进行设置,若多任务模型训练过程中,多任务过拟合情况较严重,则增加冻结层数的数量,若多任务模型训练过程中,未出现多任务过拟合情况,则适当减少冻结层数,此处不再赘述。

为了较好地实现对待冻结参数的冻结,使得待冻结参数在一次轮换训练过程中保持不变,即仅参与前向loss计算,不参与后向传播与更新,发明人提出,对所述第一待冻结参数进行冻结的步骤包括:

根据预先设置的冻结属性,对所述第一待冻结参数的参数属性进行更新;

在所述多任务模型的优化器中加入参数过滤器;

一次轮换训练过程中,所述参数过滤器根据更新后的第一待冻结参数的参数属性,对所述第一待冻结参数进行过滤,完成对所述第一待冻结参数的冻结。例如:将第一待冻结参数的属性(requires_grad)设置为False,并且在优化器中加入参数过滤器(filter),根据待冻结参数的requires_grad,利用所述参数过滤器,在模型训练过程中,进行参数过滤,以此实现对第一待冻结参数的冻结。通过上述方式,能够较好地保证第一待冻结参数在一次轮换训练过程中,不再参与反向传播与更新。

在一些实施例中,二次轮换训练过程中,对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结的步骤包括:根据预先设置的第二冻结层数,从靠近蒸馏后的学生模型的嵌入层的第二子层开始,获取第二待冻结子层;根据所述第二待冻结子层,确定第二待冻结参数;对所述第二待冻结参数进行冻结。例如:冻结学生模型的中间参数层的全部参数,或靠近embedding层的部分第二子层中的参数。由于靠近embedding层的transformer block往往比后面的transformer block捕捉的特征更浅,其倾向于捕捉不同任务之间的公共特征,因此,通过冻结蒸馏后的学生模型的中间参数层的部分参数,同样可以避免多任务训练之间发生对抗与冲突,提高训练精确度。

在一些实施例中,对所述第二待冻结参数进行冻结的步骤包括:

根据预先设置的冻结属性,对所述第二待冻结参数的参数属性进行更新;

在所述蒸馏后的学生模型的优化器中加入参数过滤器;

二次轮换训练过程中,对应的参数过滤器根据更新后的第二待冻结参数的参数属性,对所述第二待冻结参数进行过滤,完成对所述第二待冻结参数的更新。例如:将第二待冻结参数的属性(requires_grad)设置为False,并且在对应的优化器中加入参数过滤器(filter),根据第二待冻结参数的requires_grad,利用对应的所述参数过滤器,在模型训练过程中,进行参数过滤,以此实现对第二待冻结参数的冻结。通过上述方式,能够较好地保证第二待冻结参数在二次轮换训练过程中,不再参与反向传播与更新。

请参考图5,利用所述教师模型,进行模型蒸馏的步骤包括:

S501:采集训练数据集,所述训练数据集包括:多个训练样本,以及与所述训练样本相对应的预测标签;例如:利用人工智能技术,进行信息采集,获取对应的训练数据集。

S502:将所述训练数据集中的训练样本分别输入所述教师模型和获取的学生模型进行预测,获取教师预测结果和学生预测结果;

S503:根据所述教师预测结果和预设的第一损失函数,获取教师模型的第一损失;

S504:根据所述学生预测结果和预设的第二损失函数,获取学生模型的第二损失;

S505:根据所述第一损失、第二损失和预设的权值,获取第三损失,利用所述第三损失,对所述学生模型进行训练与优化,获取蒸馏后的学生模型。即通过设置权值的方式,对所述第一损失和第二损失进行加权,得到平滑后的第三损失,并利用第三损失,进行反向传播,实现对所述学生模型的迭代训练与优化,获取较优的学生模型作为蒸馏后的学生模型。

例如:在进行模型蒸馏时,利用教师模型进行预测,获取对应的教师预测结果(soft target),同时,利用学生模型进行预测,获取对应的学生预测结果(hard target),根据所述教师预测结果(soft target)和预设的第一损失函数,获取教师模型的第一损失losssoft,根据所述学生预测结果(hard target)和预设的第二损失函数,获取学生模型的第二损失Losshard,根据所述第一损失、第二损失和预设的权值,获取第三损失,利用所述第三损失,对所述学生模型进行训练与优化,获取蒸馏后的学生模型。

所述第一损失函数的数学表达为:

losssoft=CrossEntropyLoss(teacherpred,true_lable)

所述第二损失函数的数学表达为:

Losshard=CrossEntropyLoss(studentpred,true_lable)

获取第三损失函数的数学表达为:

Lossdistillation=losssoft*λ+(1-λ)*Losshard

其中,CrossEntropyLoss()为交叉熵损失,teacherpred为教师模型的预测值,true_lable为真实值,studentpred为学生模型的预测值,λ为预设的权值,losssoft为第一损失,Losshard为第二损失,Lossdistillation为第三损失。

在一些实施例中,获取学生模型的步骤包括:

将所述训练样本输入神经网络进行预测,获取训练预测结果;

根据所述训练预测结果,以及与所述训练样本对应的教师预测结果,对所述神经网络进行训练,获取对应的学生模型,所述学生模型中的参数少于教师模型中的参数。可以理解的,教师模型往往比学生模型更加复杂,其参数也比学生模型的参数更多,因此,通过获取学生模型,并进行模型蒸馏,便于对模型的压缩。

如图6所示,根据经过二次轮换训练的学生模型,确定最终模型的步骤包括:

S601:根据预设的组合规则,将经过二次轮换训练的多个学生模型的嵌入层、中间参数层和分类层,进行组合,获取最终模型,多个嵌入层与多个中间参数层相对应,多个中间参数层与多个分类层相对应。通过将经过二次轮换训练的多个学生模型的嵌入层、中间参数层,以及与多个任务对应的分类层进行组合,获取蒸馏后的具有较少参数量的最终模型,实现了对多任务模型的准确蒸馏,避免了由于训练数据集的不均衡,导致模型训练发生对抗,如训练过程中,模型侧重于训练数据量较大的任务,造成其他任务的效果损失等,有效降低了不均衡数据集对多任务模型的蒸馏的影响,实现了多任务学习训练之间的相互促进,成本较低,可实施性较强。

在一些实施例中,可以按照嵌入层、中间参数层和分类层的顺序进行组合,获取蒸馏后具有较少参数量的多任务模型,多个嵌入层与多个中间参数层相对应,多个中间参数层与多个分类层相对应。

实施例一:

针对多任务模型蒸馏的应用场景,通过根据预先设置的任务训练顺序,对多任务模型进行多个任务的一次轮换训练,如:任务一、任务二、任务三……任务一等,一次轮换训练过程中,冻结所述多任务模型的中间参数层的全部参数,该中间参数层为具有transformer结构的参数层,并且,保留多任务模型的embedding层以及classifier层。将经过一次轮换训练的embedding层、冻结的中间参数层,以及经过轮换训练的任一与任务相对应的classifier层作为教师模型,获取多个教师模型,所述教师模型的数量与任务的数量相对应。再利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型。多个所述蒸馏后的学生模型与多个任务一一对应。根据预设的所述任务训练顺序,对多个所述学生模型进行二次轮换训练,如:学生模型一、学生模型二、学生模型三……学生模型一等,并且,在二次轮换训练的过程中,冻结蒸馏后的学生模型的中间参数层,保留其embedding层以及对应的classifier层。将经过二次轮换训练的学生模型的embedding层、中间参数层和对应的classifier层进行组合,构成蒸馏后参数量较少的多任务模型,即最终模型,有效提高了多任务模型蒸馏后的精确度,避免由于训练数据集不均衡,导致多任务模型的蒸馏及训练过程中,多个任务之间发生冲突与对抗,降低了不均衡的训练数据集对多任务模型蒸馏所产生的影响,较好地利用了多任务之间的相互促进。

实施例二:

针对多任务学习训练样本不均衡的应用场景,对任务模型进行多个任务的一次轮换训练,一次轮换训练过程中,冻结多任务模型的中间参数层的部分参数,保留多任务模型的embedding层以及classifier层,其中,冻结多任务模型的transformer结构的中间参数层的部分参数的步骤包括:根据预先设置的冻结层数,确定多任务模型的中间参数层的待冻结参数,一次轮换训练过程中,对该待冻结参数进行冻结。再将经过轮换训练的embedding层、中间参数层、以及任一任务对应的classifier层作为教师模型,进行模型蒸馏,获取对应的多个学生模型。进一步地,根据学生模型对应的任务,对多个所述学生模型进行二次轮换训练,二次轮换训练过程中,冻结学生模型中的中间参数层的部分参数,保留学生模型的embedding层和classifier层,其中,冻结学生模型中的中间参数层的部分参数的步骤包括:根据预先设置的冻结层数,确定所述学生模型的中间参数层的待冻结参数。最后将多个经过轮换训练的学生模型共同组成多任务模型。在多任务学习样本不均衡的情况下,如:一任务的训练样本超出其他任务的训练的情况下,通过上述方法,能够避免由于样本不均衡导致的模型训练发生冲突与对抗,实现了多任务学习训练之间的互相促进,提高多任务模型蒸馏的精确度。

如图7所示,本实施例还提供一种多任务模型蒸馏系统,包括:

一次轮换训练模块,用于当按照预设的任务训练顺序对多任务模型进行多个任务的一次轮换训练时,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数;

蒸馏模块,用于将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型;

二次轮换训练模块,用于根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型;

处理模块,用于根据经过二次轮换训练的学生模型,确定最终模型;所述一次轮换训练模块、蒸馏模块、二次轮换训练模块和处理模块连接。本系统通过对多任务模型进行多个任务的一次轮换训练,一次轮换训练过程中,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数,将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型,并根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型,根据经过二次轮换训练的学生模型,确定最终模型;使得模型训练过程中,中间参数层不会由于多任务训练数据的不均衡,而导致过拟合于某一项任务,避免多任务之间产生对抗,消除多个任务之间由于样本不均衡带来的影响,大大节约了模型训练的资源消耗,实现了多任务学习训练之间的相互促进,精确度较高,成本较低。

在一些实施例中,所述二次轮换训练模块对多个蒸馏后的学生模型进行二次轮换训练的步骤包括:

对蒸馏后的学生模型的中间参数层进行冻结,所述对蒸馏后的学生模型的中间参数层进行冻结的步骤包括:对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结,所述蒸馏后的学生模型的中间参数层包括多个第二子层,所述部分参数包括从靠近蒸馏后的学生模型的嵌入层的第二子层开始,多个连续的第二子层的参数;

并且,保留蒸馏后的学生模型的嵌入层、以及对应的分类层,进而获取经过二次轮换训练的学生模型。

在一些实施例中,所述一次轮换训练模块冻结多任务模型的中间参数层中的全部参数或部分参数的步骤包括:

根据预先设置的第一冻结层数,从靠近多任务模型的嵌入层的第一子层开始,获取第一待冻结子层;

根据所述第一待冻结子层,确定第一待冻结参数;

对所述第一待冻结参数进行冻结。

在一些实施例中,所述二次轮换训练模块对蒸馏后的学生模型的中间参数层中的全部参数或部分参数进行冻结的步骤包括:

根据预先设置的第二冻结层数,从靠近蒸馏后的学生模型的嵌入层的第二子层开始,获取第二待冻结子层;

根据所述第二待冻结子层,确定第二待冻结参数;

对所述第二待冻结参数进行冻结。

在一些实施例中,对所述第一待冻结参数进行冻结的步骤包括:

根据预先设置的冻结属性,对所述第一待冻结参数的参数属性进行更新;

在所述多任务模型的优化器中加入参数过滤器;

一次轮换训练过程中,所述参数过滤器根据更新后的第一待冻结参数的参数属性,对所述第一待冻结参数进行过滤,完成对所述第一待冻结参数的冻结。在一些实施例中,所述蒸馏模块利用所述教师模型,进行模型蒸馏的步骤包括:

采集训练数据集,所述训练数据集包括:多个训练样本,以及与所述训练样本相对应的预测标签;

将所述训练数据集中的训练样本分别输入所述教师模型和获取的学生模型进行预测,获取教师预测结果和学生预测结果;

根据所述教师预测结果和预设的第一损失函数,获取教师模型的第一损失;

根据所述学生预测结果和预设的第二损失函数,获取学生模型的第二损失;

根据所述第一损失、第二损失和预设的权值,获取第三损失,利用所述第三损失,对所述学生模型进行训练与优化,获取蒸馏后的学生模型。

在一些实施例中,所述处理模块根据经过二次轮换训练的学生模型,确定最终模型的步骤包括:

根据预设的组合规则,将经过二次轮换训练的多个学生模型的嵌入层、中间参数层和分类层,进行组合,获取最终模型,多个嵌入层与多个中间参数层相对应,多个中间参数层与多个分类层相对应。

本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本实施例中的任一项方法。

本实施例还提供一种电子终端,包括:处理器及存储器;

所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述终端执行本实施例中任一项方法。

如图8所示,展示本发明一实施例中电子终端的结构示意图。本实例提供的电子终端,包括:处理器81、存储器82、通信器83、通信接口84和系统总线85;存储器82和通信接口84通过系统总线85与处理器81和通信器83连接并完成相互间的通信,存储器82用于存储计算机程序,通信接口84用于和其他设备进行通信,处理器81和通信器83用于运行计算机程序,使电子终端执行如上述多任务模型蒸馏方法的各个步骤。

上述提到的系统总线85可以是外设部件互连标准(PeripheralPomponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。该系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于实现数据库访问装置与其他设备(例如客户端、读写库和只读库)之间的通信。存储器可能包含随机存取存储器(RandomAccessMemory,简称RAM),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

在本实施例中,存储器可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本实施例中的计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。

本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统及机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。

综上,本实施例中的多任务模型蒸馏方法、系统、介质及电子终端,通过对多任务模型进行多个任务的一次轮换训练,一次轮换训练过程中,冻结多任务模型的中间参数层,保留嵌入层、以及多个与任务相对应的分类层,所述多任务模型的中间参数层包括多个第一子层,所述冻结多任务模型的中间参数层的步骤包括:冻结多任务模型的中间参数层中的全部参数或部分参数,所述部分参数包括从靠近所述嵌入层的第一子层开始,多个连续的第一子层的参数。将经过多任务轮换训练的嵌入层、冻结的中间参数层以及与任务对应的任一分类层作为教师模型,利用所述教师模型,进行模型蒸馏,获取多个蒸馏后的学生模型,并根据所述任务训练顺序,对多个蒸馏后的学生模型进行二次轮换训练,获取经过二次轮换训练的学生模型,根据经过二次轮换训练的学生模型,确定最终模型;充分发挥了多任务模型学习的训练数据集训练共享的优势,令不区分任务的通用语义学习模块,即嵌入层(embedding层)得到充分训练,同时,transformer结构的中间参数层不会由于多任务训练数据的不均衡,而导致过拟合于某一项任务,避免多任务之间产生对抗,消除多个任务之间由于样本不均衡带来的影响,大大节约了模型训练的资源消耗,实现了多任务学习训练之间的相互促进,精确度较高,可实施性较强,成本较低。

此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

20页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于人脸识别的在线自动监考系统及方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!