掌桥专利:专业的专利平台
掌桥专利
首页

训练神经网络模型的方法、电子设备、云端、集群及介质

文献发布时间:2024-04-18 20:01:30


训练神经网络模型的方法、电子设备、云端、集群及介质

技术领域

本发明涉及人工智能(artificial intelligence,AI)技术领域,具体涉及一种训练神经网络模型的方法、电子设备、云端、集群及介质。

背景技术

人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。

随着人工智能技术的发展,训练的神经网络模型也逐渐具备了各种能力,并且需要适应各种模态(modal)的数据处理需求。这就需要训练神经网络模型在训练中学习多个任务、以及跨模态学习各类数据等。

而目前训练神经网络模型的方案大多对神经网络模型须具备的各种任务处理进行单任务以及单模态数据训练,即一次执行一种任务学习,学习各任务时通常只输入一种模态的数据集。虽然目前也有一些致力于提供多个任务学习或者跨模态学习各类数据的方案,但目前这些方案的可扩展性和适应性都比较差,无法实现既支持多个任务的联合训练、又支持跨模态数据的联合学习、以及对多种领域数据特征的联合学习。

发明内容

本申请实施例提供了一种训练神经网络模型的方法、云端、集群及介质,基于该方法能够实现多个任务并行的联合训练,并且能够在训练过程中支持跨模态学习,从而提高了训练具有多个任务的神经网络模型的效率。而且,基于本申请方案构造的神经网络架构能够支持新增单元的扩展,有利于提高训练出的神经网络模型的可扩展性和适应性。

第一方面,本申请实施例提供了一种训练神经网络模型的方法,该方法包括:

构造第一神经网络架构,其中第一神经网络架构包括M个基础单元层,M个基础单元层中的每个基础单元层包括多个基础单元,多个基础单元至少包括第一类基础单元和第二类基础单元,其中,第一类基础单元和第二类基础单元均用于提供计算能力,其中第一类基础单元具有可调整的计算参数,第二类基础单元具有训练好的历史计算参数,并且第二类基础单元基于已训练的历史模型获取;

基于多个任务分别对应的数据集和第一神经网络架构,训练得到目标模型,其中目标模型包括多个任务路径,多个任务路径与多个任务一一对应,多个任务路径中的至少部分任务路径包括N个基础单元,N个基础单元是从M个基础单元层中的部分基础单元层中选择的,且N个基础单元中的每个基础单元对应不同的基础单元层,并且N

上述方案先构造一个具有特定结构和参数的神经网络架构,即上述第一神经网络架构。该神经网络架构包括多个基础单元层、并且各基础单元层具有至少两类基础单元。上述第一类基础单元例如可以是计算参数可以调整的预设单元,上述第二类基础单元例如可以是具有已经训练好的历史计算参数的历史单元,该历史单元的历史计算参数例如可以是固定的不可调整的计算参数。如此,基于该神经网络架构、以及对应于目标模型各个待训练任务的数据集,可以对目标模型的多个任务并行进行联合训练,提高训练效率。并且对各任务训练出的任务路径可以继承部分历史单元中对应训练好的历史计算参数的优点,有利于提高各任务路径的训练基准,最终为目标模型的各个任务收敛确定一条最优的任务路径,完成目标模型的训练过程。

其中,上述计算参数是决定各基础单元执行相应计算的输出结果的网络参数。例如,上述第一类基础单元的计算参数,即预设单元的计算参数可以控制预设单元的输出结构,在训练中将会被调整或者说更新。比如在训练图像识别模型时,需将待识别图像中的局部识别为头部还是手臂,可以利用提供基础视觉纹理分类计算能力的预设单元参与图像识别任务的训练。相应的训练过程中,该基础视觉纹理单元可以基于获取到的纹理数据、以及预设概率参数计算该纹理数据属于头部还是手臂时对应的损失函数值,进而不断调整概率参数使得损失函数的计算结果变小,最终收敛得到一组网络权重值更新为训练后的计算参数。具体将在下文具体实施方式中详细描述,在此不做赘述。

在上述第一方面的一种可能的实现中,上述M个基础单元层中的K个基础单元层包括第三类基础单元,其中K≤M,并且,第三类基础单元用于为多个任务之外的新增任务提供计算能力,第三类基础单元具有可调整的计算参数。

上述方案中所构造的神经网络架构,即上述第一神经网络架构能够在完成目标模型的训练之后,可以以该目标模型作为预训练模型,增加新增单元继续训练新增任务。可以理解,该神经网络架构为支持新增任务的训练所增加的新增单元,能够对应于新增任务的类型、复杂度以及计算能力要求等进行适应性添加。另外,该神经网络架构在上述训练目标模型的过程中,对应于目标模型的各任务配置的预设单元和历史单元,也能够支持不同的任务并根据自身的任务特点,选择适配的基础单元执行任务运算。基于此,本申请实施例提供的训练神经网络模型的方法训练得到的神经网络模型,可以具备较强的可扩展性和适应性。

在上述第一方面的一种可能的实现中,基于多个任务分别对应的数据集和第一神经网络架构,训练得到目标模型,包括:

基于多个任务分别对应的数据集,并行地对多个任务分别对应的任务路径进行训练;

基于训练的结果,调整多个任务分别对应的任务路径的路径参数,其中路径参数包括从M个基础单元层中选出的N个基础单元各自所对应的概率参数、以及选出的N个基础单元中第一类基础单元的计算参数;

确定调整后的多个任务分别对应的任务路径的路径参数满足收敛条件,完成目标模型的训练。

上述方案中对于需要训练的多个任务可以并行地进行训练,包括并行地获取各任务对应的数据集中训练数据、以及并行地运行各任务对应的任务路径。上述收敛条件,例如可以是基于各任务对应的函数损失设定的约束条件,例如满足收敛条件的路径参数,所对应的任务路径上选择各基础单元的概率参数、以及和各基础单元的计算参数均对应满足收敛条件,所对应的任务路径在执行相应的任务运算时,对应的运算结果的交叉熵损失等达到最小值或者小于预设值。具体可以参考下文具体实施方式中的相关描述,在此不做赘述。

在上述第一方面的一种可能的实现中,基于多个任务分别对应的数据集,并行地对多个任务分别对应的任务路径进行训练,包括:

采用多个处理器分别从多个任务中选择一个任务、并对各自选择的任务获取对应的训练样本数据,其中多个处理器中的第一处理器选择多个任务中的第一任务进行训练的过程,与第一处理器的计算能力和第一任务的复杂程度相关,其中训练样本数据是从多个任务分别对应的数据集中选取出来的样本数据;

基于训练样本数据,采用多个处理器并行地对各自选择的任务所对应的任务路径进行训练。

上述多个处理器即模型训练设备上的多个训练单元,上述从多个任务中选择一个任务可以对应于下文图5相关描述中的任务采样过程,上述从多个任务分别对应的数据集中选取出来的样本数据可以对应于下文图5相关描述中的数据采样过程。因此,上述方案即利用模型训练设备上的多个训练单元分别采样不同的任务以及相应的训练数据进行多任务的并发训练。可以理解,上述多个处理器例如可以是GPU、集成了多个处理器的AI芯片或者服务器集群中的各个服务器等,在此不做限制。

在上述第一方面的一种可能的实现中,构造第一神经网络架构,包括:基于配置文件构造第一神经网络架构,配置文件包括多个任务分别对应的路径参数的初始值,其中路径参数的初始值包括概率参数的初始值、以及第一类基础单元的初始化计算参数。

上述配置文件,例如可以是下文具体实施方式中描述的结构配置文件,该配置文件可以基于预设的配置文件模板以及需要训练的多个任务对应生成。具体可以参考下文具体实施方式中的相关描述,在此不做赘述。

在上述第一方面的一种可能的实现中,基于训练的结果,调整多个任务分别对应的任务路径的路径参数,包括:使用第一损失函数,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值,其中第一损失函数包括基于各任务路径对应的输出结果确定的约束项。

上述第一损失函数可以对应于所训练的各个任务的类型确定。例如对于分类任务的训练,可以采用交叉熵损失函数来计算相应任务路径的损失;而对于检测任务的训练,可以采用均方误差损失函数来计算相应任务路径的损失等,在此不做限制。

在上述第一方面的一种可能的实现中,使用第一损失函数,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值,包括:使用第一损失函数,计算多个处理器分别对应的梯度,其中梯度用于表示对应的处理器上对相应路径参数的调整方向;计算多个处理器分别对应的梯度的平均值,得到第一平均梯度;基于第一平均梯度,将多个任务分别对应的路径参数的初始值调整为训练值。

上述方案中多个处理器分别对应的梯度所表示的对相应路径参数的调整方向,可以对应于下文具体实施方式中的各训练单元上计算得到的梯度,例如代表各训练单元上的任务t中的样本数据b所希望的路径参数更新方向。进而可以理解,上述平均梯度可以代表各训练单元上的任务样本数据所希望的路径参数更新方向的平均值。上述方案基于平均梯度,则能够综合各训练单元上的任务路径损失,实现对正在训练的各任务的任务路径相关参数进行比较平衡的调整,这有利于促进多个任务对应的训练数据联合优化。

在上述第一方面的一种可能的实现中,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值,包括:将概率参数的初始值调整为训练后的概率值,以及将第一类基础单元的初始化计算参数调整为训练后的计算参数。

在上述第一方面的一种可能的实现中,基于训练样本数据,采用多个处理器并行地对各自选择的任务的任务路径进行训练,包括:基于路径参数的初始值,采用多个处理器并行地确定多个任务分别对应的初始化路径;

基于训练样本数据,对各个任务分别对应的初始化路径进行至少一次的迭代训练,其中,至少一次迭代训练中的第一次迭代训练包括:采用多个处理器执行各自对应的初始化路径对输入的训练样本数据并行进行运算,得到多个任务分别对应的初始化路径输出结果。

在上述第一方面的一种可能的实现中,多个任务的类型包括分类任务、分割任务、检测任务、翻译任务、识别任务、生成任务或回归任务中的至少一项;

多个任务分别对应的数据集包括第一类型的第一数据集和第二类型的第二数据集,其中第一数据集中的各数据与第二数据集中的各数据之间具有关联对应关系。

在上述第一方面的一种可能的实现中,基于训练的结果,调整多个任务分别对应的任务路径的路径参数,包括:使用第一损失函数和第二损失函数,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值,其中第二损失函数包括基于关联对应关系确定的约束项。

上述第二损失函数,例如可以是下文具体实施方式中示例的公式(3)所对应的对比损失函数,在另一些实施例中,上述第二损失函数也可以为其他计算形式的损失函数,在此不做限制。上述方案即可以综合计算各任务路径对应损失的函数、以及计算输入的不同类型数据之间的对比损失的函数,来微调所训练的各任务对应的路径参数,如此可以实现各任务在训练过程中完成不同类型数据的学习,即跨模态学习。具体可以参考下文具体实施方式中相关描述,在此不做赘述。

在上述第一方面的一种可能的实现中,使用第一损失函数和第二损失函数,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值,包括:计算第一数据集中的各数据与第二数据集中各数据之间的相似度,得到相似度矩阵;

基于相似度矩阵,使用第二损失函数计算第一数据集与第二数据集之间的对比损失,其中对比损失包括第一数据集中各数据对应的损失函数值之和,和/或第二数据集中各数据对应的损失函数值之和;

基于对比损失,使用第一损失函数计算多个处理器分别对应的梯度,并计算多个处理器分别对应的梯度的平均值,得到第二平均梯度;基于第二平均梯度,将多个任务分别对应的任务路径的路径参数的初始值调整为训练值。

上述基于对比损失,使用第一损失函数计算多个处理器分别对应的梯度的过程,例如可以是先将对上述计算得到的对比损失、与各处理器上对应训练的任务基于第一损失函数计算得到的损失分别相加,再将各任务对应相加后的损失用于计算相应训练单元上的梯度。如此,则可以在训练任务的过程中,融入跨模态的对比损失来调整所训练任务的路径参数,有利于同步训练相应任务对跨模态数据的识别或处理等运算能力。

在上述第一方面的一种可能的实现中,在基于多个任务分别对应的数据集和第一神经网络架构,训练得到目标模型之后,上述方法还包括:基于目标模型中训练好的多个任务分别对应的任务路径,确定各任务路径所对应的历史路径参数;

基于历史路径参数、以及第三类基础单元的初始化计算参数,使用新增任务对应的数据集训练新增任务的新增路径,其中新增路径包括第三类基础单元。

上述方案即基于训练好的神经网络模型(即上述目标模型),可以在相应构造的神经网络架构中添加新增单元进行增量学习,也就是训练新增任务。如此,有利于对已训练模型的扩展和优化,以适应更多的任务,有利于提高已训练模型的扩展性和适应性。

在上述第一方面的一种可能的实现中,训练好的多个任务包括至少一个第二任务,使用新增任务对应的数据集训练新增任务的新增路径,包括:

采用多个处理器分别从新增任务和至少一个第二任务中选择一个任务、并对各自选择的任务获取对应的训练样本数据,其中,选择新增任务的至少一个处理器从新增任务对应的数据集中选择训练样本数据,选择第二任务的处理器从第二任务对应的数据集中选择训练样本数据;

基于获取的训练样本数据,选择新增任务的至少一个处理器并行地对新增任务进行训练,并且,选择第二任务的处理器并行地执行第二任务对应的任务路径,以促进对新增任务的训练。

在上述第一方面的一种可能的实现中,基于获取的训练样本数据,选择新增任务的至少一个处理器并行地对新增任务进行训练,并且,选择第二任务的处理器并行地执行第二任务对应的训练好的任务路径,以促进对新增任务的训练,包括:

使用第一损失函数,计算选择新增任务的至少一个处理器分别对应的第一梯度,并且计算选择第二任务的处理器所对应的第二梯度;

基于第一梯度和第二梯度计算梯度的平均值,得到第三平均梯度;

基于第三平均梯度,将新增任务对应的路径参数调整为训练值。

在上述第一方面的一种可能的实现中,基于第三平均梯度,将新增任务对应的路径参数调整为训练值,包括:

将新增任务对应的路径参数的初始值调整为训练值,以及迭代新增任务对应的路径参数的训练值,其中,将新增任务对应的路径参数的初始值调整为训练值包括:

将组成新增路径的各基础单元的概率参数初始值调整为训练值、以及将组成新增路径的第三类基础单元的初始化计算参数调整为训练后的计算参数。

第二方面,本申请实施例提供了一种基于神经网络模型的任务运算方法,包括:获取多个输入任务;

基于神经网络模型中的多个任务路径对多个输入任务进行运算,其中,多个任务路径中的至少部分任务路径包括N个基础单元,N个基础单元对应神经网络模型的N个基础单元层,神经网络模型共包括M个基础单元层,N个基础单元层为M个基础单元层的部分;

M个基础单元层中的每个基础单元层包括多个基础单元,多个基础单元至少包括第一类基础单元和第二类基础单元,第一类基础单元和第二类基础单元均用于提供计算能力,其中第一类基础单元具有可调整的计算参数,第二类基础单元具有训练好的历史计算参数,第二类基础单元基于已训练的历史模型获取;

输出多个运算结果,多个运算结果与多个输入任务一一对应。

上述方案中,基于本申请实施例提供的训练神经网络模型的方法训练得到的神经网络模型,可以并行地执行多个输入任务,并且并行地输出多个运算结果。因此,基于该神经网络模型进行多个输入任务的运算处理效率也较高。

在上述第二方面的一种可能的实现中,M个基础单元层中的K个基础单元层包括第三类基础单元,其中K≤M,并且,方法包括:获取多个输入任务和新增输入任务;基于神经网络模型中的多个任务路径对多个输入任务以及新增输入任务进行运算,其中多个任务路径包括对应于新增输入任务的新增任务路径,并且,新增任务路径包括L个第三类基础单元,L个第三类基础单元是从K个基础单元层中选择的,且L≤K,L个第三类基础单元中的每个基础单元对应于不同的基础单元层,第三类基础单元用于为新增输入任务提供计算能力,第三类基础单元具有可调整的计算参数。

在上述第二方面的一种可能的实现中,在多个任务路径中添加新增任务路径的过程,包括:将多个输入任务中的至少一个输入任务对应的任务路径与新增任务路径并行进行训练,以使训练得到神经网络模型包括新增任务路径,并且新增任务路径与多个输入任务分别对应的任务路径,共同组成多个任务路径。

在上述第二方面的一种可能的实现中,多个输入任务的类型包括分类任务、分割任务、检测任务、翻译任务、识别任务、生成任务或回归任务中的至少一项。

第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;一个或多个存储器存储有一个或多个程序,当一个或者多个程序被一个或多个处理器执行时,使得电子设备执行上述第一方面提供的训练神经网络模型的方法,或者使得电子设备执行上述第二方面提供的基于神经网络模型的任务运算方法。

第四方面,本申请实施例提供了一种云侧服务器,包括:通信接口以及耦合到通信接口的处理器;其中,处理器用于:接收一个或多个终端输入的多个任务;

将多个任务输入神经网络架构以执行上述第一方面提供的训练神经网络模型的方法,训练得到目标模型,并将训练得到的目标模型的获取参数发送给一个或多个终端,其中目标模型包括多个任务路径,多个任务路径与多个任务一一对应。

第五方面,本申请实施例提供了一种云侧服务器,包括:通信接口以及耦合到通信接口的处理器;其中,处理器用于:接收一个或多个终端输入的多个任务;

将多个任务输入神经网络模型;

基于神经网络模型中的多个任务路径对多个输入任务并行进行运算,其中,多个任务路径中的至少部分任务路径包括N个基础单元,N个基础单元对应神经网络模型的N个基础单元层,神经网络模型共包括M个基础单元层,N个基础单元层为M个基础单元层的部分;

M个基础单元层中的每个基础单元层包括多个基础单元,多个基础单元至少包括第一类基础单元和第二类基础单元,第一类基础单元和第二类基础单元均用于提供计算能力,其中第一类基础单元具有可调整的计算参数,第二类基础单元具有训练好的历史计算参数,第二类基础单元基于已训练的历史模型获取;

并行输出多个运算结果,并将多个运算结果发送给一个或多个终端,其中多个运算结果与多个输入任务一一对应。

第六方面,本申请实施例提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;

至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得计算设备集群执行上述第一方面提供的训练神经网络模型的方法,或者执行上述第二方面提供的基于神经网络模型的任务运算方法。

上述计算设备集群,例如可以是下文具体实施方式中示例的服务器集群等,在此不做限制。

第七方面,本申请实施例提供了一种计算机可读存储介质,存储介质上存储有指令,指令在终端、云侧服务器、计算设备集群或处理器上执行时使终端、云侧服务器、计算设备集群、或者处理器执行上述第一方面的训练神经网络模型的方法,或者执行上述第二方面的基于神经网络模型的任务运算方法。

第八方面,本申请实施例提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被终端、云侧服务器、计算设备集群或处理器执行时,使得终端、云侧服务器、计算设备集群或处理器执行上述第一方面提供的训练神经网络模型的方法,或者执行上述第二方面的基于神经网络模型的任务运算方法。

附图说明

图1a所示为现有的一种多任务学习框架示意图。

图1b所示为现有的一种多任务学习框架中各个任务之间的关系示意图。

图2所示为本申请实施例提供的一种训练神经网络模型方案的应用场景示意图。

图3a所示为目前的单任务训练神经网络模型方案的训练流程示意图。

图3b所示为本申请实施例提供的训练神经网络模型方案的训练流程示意图。

图4所示为本申请实施例提供的一种预设配置文件模板定义的神经网络架构示意图。

图5所示为本申请实施例提供的一种训练神经网络模型过程的各阶段示意图。

图6所示为本申请实施例1提供的一种训练神经网络模型的方法实施流程示意图。

图7所示为本申请实施1例提供的一种构造出的动态网络的结构示意图。

图8所示为本申请实施例1提供的一种模型训练过程中对各个任务分别对应的路径参数的调整过程示意图。

图9所示为本申请实施例1提供的一种基于本实施例方案训练出的任务进行相应数据处理的准确率测试结果示意图。

图10所示为本申请实施例2提供的一种在已训练的目标模型基础上微调训练新增任务的场景示意图。

图11所示为本申请实施例2提供的一种不使用预训练模型和使用预训练模型的训练过程比较示意图。

图12所示为本申请实施例2提供的一种在已训练的目标模型基础上训练新增任务的实施流程示意图。

图13a所示为本申请实施例2提供的训练出的新增任务相对于已训练任务在处理相应数据时,对应出现的误差计算结果对比示意图。

图13b所示为本申请实施例2提供的基于本实施例方案训练出的新增任务与已训练任务在处理不同的数据集时对应的准确率测试结果对比表。

图14所示为本申请实施例3提供的一种训练模型已有的多个任务学习新增数据集的场景示意图。

图15所示为本申请实施例3提供的一种在已训练的目标模型基础上训练新增任务的实施流程示意图。

图16所示为本申请实施例3提供的一种基于随机图像绘制斜向车位,作为训练停车位检测任务训练数据的示意图。

图17所示为本申请实施例3提供的利用人造斜向车位数据微调优化模型任务后,对模型检测斜向车位准确率带来提升效果的实验数据对比表。

图18所示为一种非树状的多任务网络动态选择过程示意图。

图19所示为本申请实施例4提供的一种微调训练得到的目标模型获得的树状多任务网络过程示意图。

图20所示为本申请实施例5提供的一种在训练目标模型的过程中利用知识图谱增加各基础单元可解释性的应用过程示意图。

图21所示为本申请实施例提供的一种模型训练设备100的结构示意图。

具体实施方式

为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例所提供的技术方案进行详细的说明。

首先对本申请实施例涉及的一些基本概念进行介绍,以便本领域技术人员理解。

(1)多任务学习(Multi-task Learning):是指不同的深度学习任务进行联合训练,并共享一部分参数。参考图1所示,例如将目标检测、图像分类、语义分割、深度估计等任务一起联合训练。因此,多任务学习也可以称为多任务联合训练或者跨任务学习等。

(2)多域学习(Multi-domain Learning):是指任务相近、但数据分布不同或者说数据领域不同的多个数据集进行联合训练,并共享一部分参数。例如,无人驾驶检测、医疗图像检测、室内家居检测等任务一起进行联合训练。

(3)跨模态学习:是指通过具有一定匹配性的跨模态数据作为训练模型任务的数据集,例如图像与相应的图像描述文本数据,并利用这类数据集让模型学习不同模态之间的特征对应关系。

(4)训练轮次(Epoch):是指训练一个数据集正好训练一遍。例如,假设一个数据集有100W数据,每一个迭代(iteration)训练100个数据,那1W个迭代就称为一个训练轮次。

(5)动态神经网络(Dynamic Neural Networks),简称动态网络,是指在处理不同样本数据时,动态地调节自身的结构/参数的一种神经网络。根据动态适应的对象,可以将动态网络分为三类,即样本自适应动态网络、空间自适应动态网络以及时间自适应动态网络。

(6)稀疏连接(Sparse Connectivity):又叫稀疏交互(sparse interactions)或者稀疏权重(sparse weights)。稀疏连接的神经网络中各层之间存在相互关系,但不必强调逐层单连通。稀疏连接可以模仿视觉神经的局部敏感特征,在相邻神经元之间搭建联系,但可以仅部分网络层响应任务进行处理。相较于全连接各层单元的连接较为稀疏,所以称为稀疏连接。

(7)配置文件(configuration file):在计算机科学领域,配置文件是一种计算机文件,可以为一些计算机程序配置参数和初始设置。该计算机程序例如可以是用于训练神经网络模型的模型训练软件。

图1a示出了现有的一种多任务学习框架示意图。

参考图1a所示,应用于无人驾驶技术或医疗检测技术等神经网络模型需具备以下任务:目标检测、图像分类、语义分割、深度估计等。其中,无人驾驶技术中利用神经网络模型执行的目标检测任务内容可以包括行人检测、人脸检测、车辆检测等,而医疗检测技术中利用神经网络模型执行的目标检测任务内容除了包括上述任务内容之外,还可以包括医疗目标检测等。因此,神经网络模型通常需要具备多个任务处理能力。

图1b示出了现有的一种多任务学习框架中各个任务之间的关系示意图。

基于上述图1a可以理解,多任务学习则是为了使一个神经网络模型能够学习到多个任务处理能力。参考图1b所示,在进行多任务学习的过程中,一方面相似的任务(例如图1b所示的任务T

然而,目前的多任务学习框架大多为图1b所示意的这种仅能接收一个输入的训练数据集来训练多个任务输出的框架,而无法支持各任务分别使用自己特定的数据集,因此,训练效果和局限性也都比较大。

为了解决这一问题,也有方案提出构造一种具有多个神经网络单元层的神经网络架构,并基于每层所具有的多个神经网络单元来执行多个任务的联合训练。该方案在训练过程中,每个任务可以从该神经网络架构的每个神经网络单元层中选择一个神经网络单元,并组成一个任务路径学习相应任务对应输入的训练数据。最终,基于该神经网络架构来训练得到各个任务分别对应的任务输出。

然而,仅基于这种简单构造的神经网络架构,还是无法实现多个任务并行地进行联合训练。比如,各个任务仍然只能分批训练,例如先训练任务1、再训练任务2、再训练任务3……而不能实现多个任务并发训练,训练效率比较低。并且,该方案中各任务的训练过程仍是相对独立的,联合训练的优化效果仍然比较差。

在此需说明的是,在本申请的各处描述中,神经网络模型与神经网络架构之间的关系为:神经网络模型包括基于神经网络架构训练出的模型。在本申请实施例中,训练出的神经网络模型或者说目标模型,即为基于本申请提供的神经网络架构训练出的模型。

另外,目前大多用于执行多个任务联合训练的神经网络架构中各神经网络层之间的连接较为紧密,各任务只能依次从每个神经网络层中选择任务路径上的神经网络单元,这使得多任务学习的灵活性较差,有一些任务训练完成后相应任务路径上会存在一些重复或者无用的神经网络单元,无端增加各任务训练以及实际处理数据时的计算量。

另外,由于输入训练好的神经网络模型进行处理的数据可能包括各种模态,例如输入自然语言处理(natural language processing,NLP)模型的数据可能会包括文本、图像、视频等模态。因此,神经网络模型还需要具备识别跨模态的各类数据进行处理的能力。

图2根据本申请实施例示出了一种训练神经网络模型方案的应用场景示意图。

如图2所示,该场景包括需训练的神经网络模型200。该神经网络模型200可以应用在无人驾驶、医疗检测、智能家居等领域中,包括需要根据这些领域的数据特点执行相应的处理任务等。根据具体业务或者设备需求,需训练的神经网络模型200通常需要执行多项处理任务,例如需要处理的任务可以包括目标检测、图像分类、语义分割、深度估计等。并且,需训练的神经网络模型200在执行各项处理任务时,还需适应多种模态的输入数据,例如可以通过学习各模态数据之间的关联关系等实现对各模态输入数据的准确识别。

参考图2所示,基于目前很多需要训练的神经网络模型200既需要能够执行多个任务、又需要能够识别跨模态的各类数据、并且还需要具备不同应用领域的专业数据处理能力等,导致训练神经网络模型200过程的训练量巨大。由此可见,如需训练出图2所示神经网络模型200,目前的单任务、单模态的训练方案、以及目前的多任务学习框架可能需要花费很长时间、并且耗费大量精力。而且,目前训练神经网络模型的方案只能根据待训练模型的能力需求定制,一般也无法扩展支持训练其他模型,即目前的训练方案的扩展性较差。

也就是说,目前的神经网络模型训练方案,无法实现既支持多个任务的联合训练、又支持跨模态数据的联合学习、以及对多种领域数据特征的联合学习,方案的可扩展性和适应性都比较差。

为了解决上述技术问题,本发明提供了一种训练神经网络模型的方法。具体地,该方法根据目标模型中待训练的各任务形成的任务集、以及预设的用于定义的配置文件模板,生成用于构造目标神经网络的结构配置文件。其中,所定义的神经网络架构包括多个基础单元层,并且各基础单元层至少包括两类基础单元,其中一类基础单元例如可以是计算参数可以调整的预设单元,另一类基础单元例如可以是计算参数不可调整的历史单元。如此,基于生成的结构配置文件构造符合上述定义的神经网络架构,可以并行训练目标模型的多个任务,最终为各任务收敛一条对应的任务路径。其中,各任务路径包括从上述神经网络架构的各基础单元层中怎一选择出来的多个基础单元,并且各任务路径可以对应从该神经网络架构的全部或者部分基础单元层中选择基础单元。

其中,上述基于配置文件模板生成结构配置文件,可以为相应的模型训练软件能够识别的格式文件,上述生成结构配置文件的过程,例如可以是将需要构造的神经网络的基础网络结构、基础网络参数、任务网络结构、任务网络参数、动态网络参数等结构参数、以及用于构造基础网络结构的基础单元获取路径等,通过该格式文件所要求的形式写入结构配置文件。

如此,服务器集群等模型训练设备在运行相应的模型训练软件训练目标模型时,则可以读取相应结构配置文件中的上述结构参数及基础单元获取路径,获取与任务集中各任务相关的基础单元并构造符合配置文件中结构参数要求的神经网络。例如,基于基础网络结构和基础网络参数可以确定需要构造的神经网络的基本结构,包括该神经网络的深度(例如层数)和宽度(例如各层的基础单元数量);基于动态网络参数可以确定用于构造所需神经网络的基础单任务网络中各层基础单元的结构、以及对该基础单任务网络的复制倍数;基于基础单元的获取路径,则可以对应获取具有上述动态网络参数所确定结构的基础单元,包括获取基础单元库中的预设单元以及获取历史模型中的基础单元等。进而,基于任务网络结构和任务网络参数,可以在所构造的神经网络中创建对应于各任务的路径预测模块及数据预处理模块,其中数据预处理模块则可以对各任务相关数据集中的数据进行预处理后输入所构造的神经网络进行训练,而路径预测模块则用于在训练中收敛推理出各任务对应的最优路径、以及参与各路径中的基础单元的计算参数。

至此,完成目标模型中的各任务训练后,便可以得到训练好的目标模型。

可以理解,上述用于定义神经网络架构的配置文件模板,是可以根据不同的任务集生成相应的神经网络结构配置文件的格式文件模板,用于匹配创建适合训练该任务集中各任务的神经网络。当需要训练的任务集确定之后,模型训练软件则可以获取该配置文件模板写入任务集中的各任务的类型、相应数据集的相关参数、相应训练规则的相关参数,进而匹配出待创建神经网络的结构参数,生成适合训练该任务集的神经网络的结构配置文件。可以理解,上述配置文件的格式类型例如可以是yaml或json等,模型训练软件例如可以是mindspore、pytorch,tensorflow,jax等。其中,上述基于结构配置文件构造的神经网络中的各基础单元的计算参数可以在训练中动态调整、待训练的各任务在构造的神经网络中选择哪些基础单元构造路径的相关参数也可以动态调整,上述构造的神经网络是一种动态神经网络,以下便于描述,可以简称为动态网络。

可以理解,如果上述任务集中各任务对应的数据集的模态不同,即各数据集中的数据类型不同,例如有些数据集是文本数据的集合,有些数据集是图像数据的集合,输入上述动态网络训练得到的目标模型则可以具备对不同模态数据的处理能力。

可以理解,上述任务集中待训练的多个任务的类型,可以包括但不限于分类任务、分割任务、检测任务、翻译任务、识别任务、生成任务、或回归任务等,在此不做限制。

另外,在基于上述方案训练好一个神经网络模型后,如果需要基于训练好的模型进行增量学习,训练新增任务,则可以在上述基于结构配置文件构造出的神经网络架构中添加新增单元,并从已经训练好的各任务中选择一个或多个任务与新增单元并行训练。如此,则可以使增量学习的新增任务学习到完备的数据特征,有利于提高训练了新增任务的模型的泛化性。

可以理解,上述基于生成的结构配置文件所创建的神经网络中各层的基础单元,可以是包括至少一个神经网络层的计算单元。其中各基础单元所包括的神经网络层可以是卷积层、池化层、全基础单元层(FC)、归一化层(BN)、激励层等,在此不做限制。

可以理解,如上所述,基于本申请实施例提供的方案训练神经网络模型时,可以获取具有上述动态网络参数所确定结构的基础单元,包括获取基础单元库中的预设单元以及获取历史模型中的基础单元等。即用于构造目标模型神经网络的基础单元可以来源于历史模型。该历史模型例如是已经训练好的具有多种模态数据数据处理能力的神经网络模型。即相应生成的结构配置文件所提供的结构参数中部分基础单元的来源参数,可以包括一些历史模型中相关基础单元的获取路径或者说调用参数等。

因此,本申请实施例提供的上述训练目标模型的方法,可以实现多个任务以及跨模态的联合训练,可以一次完成任务集中多个任务的训练,并且可以实现跨模态训练,使得训练得到的目标模型具备跨模态处理数据的能力。

作为示例,图3a和图3b示出了两种训练神经网络模型方案的训练流程示意图。

作为对比,图3a示出了目前的单任务训练神经网络模型方案的训练流程示意图。

例如待训练的目标模型包括n个待训练的任务,并且各任务需支持对不同模态数据的处理。则如图3a所示,该流程训练目标模型的各任务的过程可以包括以下步骤:

311:获取用于训练任务1的第一模态数据集。

312:输入模型,完成任务1的单模态训练。

313:将用于训练任务1的不同模态数据之间的关联关系输入模型,训练任务1。

314:完成任务1的跨模态训练。

重复上述步骤311至314的过程,直至完成该目标模型的n个任务的全部训练过程。

图3b示出了本申请实施例提供的训练神经网络模型方案的训练流程示意图。

如图3b所示,对于同样包括n个待训练任务并且各任务需支持对不同模态数据处理的目标模型,本申请实施例提供的训练神经网络模型方案的训练流程可以仅包括以下两步:

321:获取包括任务1-n的任务集,构造目标模型的动态网络。其中获取的任务集可以包括多个模态的数据集,每个任务可以分别对应一个特定的数据集。

322:将任务集中各任务对应的数据集输入构造的动态网络进行多任务联合训练,完成任务1-n的训练。

对比上述图3a和图3b所示流程,可见本申请实施例提供的训练神经网络模型的方案,能够支持多种模态数据、模型所应用的多种领域以及多个任务联合训练,训练效率高。联合训练可以促进各任务的训练数据优化,因此基于本申请训练得到的神经网络模型的任务处理能力也会得以优化。另外,本申请实施例提供的训练神经网络模型的方案,可以根据待训练目标模型的应用领域以及任务类型的需要,定制相应任务集和基础单元,可扩展性和适应性都比较好。

可以理解,所构造动态网络中各基础单元之间的连接可以采用稀疏连接,进而在该动态网络为各任务选择组成任务路径的基础单元时,则可以根据相应任务的训练需要,逐层选择基础单元或者跳层选择基础单元。如此有利于提高预定义的神经网络架构的可扩展性和适应性,进而提高本申请实施例所提供的神经网络模型训练方案的可扩展性和适应性。

上述基于各任务所对应的任务网络结构和任务网络参数决定的基础单元,可以是为相应任务设置的预设单元、训练过的历史模型提供的历史单元、以及为新增任务增设的新增单元等。其中,各任务所对应的最优路径预测模块,可以是设置在动态网络各层的路径选择器。具体将在下文详细描述,在此不做赘述。

图4根据本申请实施例示出了一种预设配置文件模板定义的神经网络架构示意图。

可以理解,本申请实施例提供了一种预定义的神经网络架构400用于在训练神经网络模型时构造动态网络,进而能够根据构造出的动态网络训练出所需的神经网络模型。

如图4所示,神经网络架构400包括输入层410、基础单元层420和输出层430。

其中,输入层410包括数据预处理层411和任务集412。其中,数据预处理层411用于对输入模型的不同模态数据进行预处理。任务集412中可以包括所有联合训练的任务的集合,任务集412中的每一个任务会有其特定的数据集413。

基础单元层420包括预设单元421、历史单元422、新增单元423等网络基础单元以及路径选择器424。如上所述,这些基础单元是包含多个神经网络层的计算单元,在另一些实施例中,该基础单元也被称为模型算子,用于在训练过程中执行各任务对采样数据进行处理时的各类概率参数等。可以理解,基础单元的形式上是一个<网络结构,参数>对,具体形式可以是一个卷积层、多个卷积层的复合、卷积层与池化层等其他网络层的复合或者一个注意力机制计算模块等,在此不做限制。

其中,预设单元421是对应于神经网络架构400预设的一些执行通用计算的基础单元。预设单元421上可以预先训练出相应的基础单元神经网络参数,例如图像识别模型中用到的基础视觉纹理分类算子,作为预设单元421时可以用于处理通用图像识别计算,该预设单元上也可以预先学习一类模态的数据特征并形成相应的分类权重参数等作为初始化的计算参数。

可以理解,预设单元421的计算参数为预设单元421中未确定的部分,该计算参数可以控制预设单元的输出结构,在训练中将会被更新。例如,在训练图像识别模型时,需将待识别图像中的局部识别为头部还是手臂,可以利用提供基础视觉纹理分类计算能力的预设单元421参与任务训练,则训练过程中,该基础视觉纹理单元可以基于获取到的纹理数据、以及预设概率参数计算该纹理数据属于头部还是手臂时对应的损失函数值,进而不断调整概率参数使得损失函数的计算结果变小,最终收敛得到一个权重即为训练后的该预设单元的计算参数。

可以理解,在基于图4所示的神经网络架构400定义模型结构以及训练神经网络模型的过程中,可能会重复使用到一些基础单元提供的知识,因此预设单元421既可以为单输入单输出,也可以为多输入多输出。另外,基础单元层420中不同的预设单元421可以提供相同或不同的知识,而提供相同知识的预设单元421在训练神经网络的过程中,调整确定的计算参数也会互不相同。

在一些实施例中,基础单元层420还包括一些训练过的历史模型使用的基础单元,即历史单元422。可以理解,在基于图4所示的神经网络架构定义模型结构以及训练神经网络模型的过程中,可以复用历史模型用到的各历史单元422。其中,应用到神经网络架构400中的历史单元422的网络结构和参数均已在历史模型的训练过程中固化,在神经网络架构400参与一些任务的训练时将不会再更新。

另外,在上述预设单元421和历史单元422的基础上,对于已训练好的神经网络模型需要进行增量学习时,可以在该神经网络模型对应的神经网络架构400中动态新增一些基础单元用于训练新增任务。参考图4所示的新增单元423,动态增加的这些新增单元在训练新增任务训练过程中将作为新增任务的任务路径备选单元。如此,能够使得该神经网络架构400具有更强的可扩展性和适应性,能够满足许多新增任务的训练需求。

可以理解,新增单元423通常只会出现在增量学习中,主要是为了动态扩展训练好的神经网络模型的任务处理能力。例如,基于本申请方案已经训练好的神经网络模型中已训练了100个任务,并且已完成了3种模态数据的跨模态学习。

当其中一个模态数据需要支持一个新增任务的训练时,如果重新训练包括这个新增任务的101个任务以及3种模态数据的学习,则非常耗时。因此,本方案通过在神经网络架构的各基础单元层中预留位置用于添加新增单元423的方式,可以实现在已经训练好了100个任务并且相应任务已经学习了3种模态数据的神经网络模型的基础上,为新增任务增加适当的新增单元423,进而可以利用这些新增单元423与其他基础单元一起参与新增任务的训练。其中,新增单元423的添加数量可以根据新增任务的训练收敛情况进行调整,比如新增任务的收敛损失较低时可以添加较少的新增单元423,反之则添加较多的新增单元。

路径选择器424,用来学习需训练的某个任务在该层网络结构中应当选择哪一个基础单元421。可以理解,基础单元层420的各层网络结构中均有一个路径选择器424,以在训练各个任务时为相应任务选择匹配的基础单元421。具体路径选择器424为相应任务选择基础单元的过程,将在下文详细描述,在此不做赘述。

可以理解,基于路径选择器424选择出训练相应任务所需的基础单元,包括上述预设单元421、历史单元422以及新增单元423中的任一项。进而基于各层网络选择出的基础单元可以形成用于训练相应任务的基础单元路径,因此本申请能够实现对神经网络模型的多个任务联合训练以及训练各任务学习多个模态数据的过程。其中,不同任务对应的基础单元路径可以参考图4所示路径401至路径406。

输出层430可以输出基于各基础单元路径训练出的任务模块。训练得到的神经网络模型则可以基于训练好的任务模块具备相应的任务处理或执行能力。

根据图4所示路径401至路径406可以看出,基于本申请方案的神经网络架构400,在训练神经网络模型的不同任务时,可以选择不同模态数据对应的基础单元421或者历史单元422,来建立相应的基础单元路径训练相应任务。如此,本申请方案既能够实现多个任务联合训练,又能够同时训练模型跨模态处理相应任务数据的能力。另外,本申请方案提供的对应于各任务的数据集412可以是不同应用领域的数据集,因此本申请方案还能够消除数据集之间的应用领域隔离,例如在一次训练中对待训练的不同任务可以选择不同应用领域的数据集,从而实现了跨应用领域的联合训练。

基于上述图4所示的预定义的神经网络架构400,则可以进一步实施本申请实施例提供的训练神经网络模型的方法,训练各类神经网络模型。可以理解,上述图4所示的神经网络架构400是本申请实施例提供的一种通用的深度网络模型训练框架,可用于自动驾驶场景下的目标检测模型、深度估计模型,3D视觉场景的语义分割模型、物体检测网络模型,终端相册场景下的照片精修模型,以及智能家居中的异常检测模型等各类应用场景所需训练神经网络模型。在此不做限制。

可以理解,本申请实施例示出的一种训练神经网络模型的方法所适用的电子设备,可以包括但不限于手机、平板电脑、桌面型、膝上型、手持计算机、上网本、服务器以及服务器集群、其中嵌入或耦接有一个或多个处理器的其他电子设备。为了使描述更清楚,以下将采用本申请实施例提供的训练神经网络模型的方法进行模型训练的电子设备称为模型训练设备。

图5根据本申请实施例示出了一种训练神经网络模型过程的各阶段示意图。

如图5所示,训练神经网络模型的过程包括两个阶段:初始化阶段和训练阶段。

初始化阶段,包括图5所示的步骤一和步骤二,其中:

步骤一:准备单任务数据并拷贝到服务器集群上。

步骤二:动态网络的结构及参数初始化、以及任务权重(概率参数)初始化。

可以理解,上述初始化阶段各步骤的详细实施过程,将在下文结合实施流程图6具体介绍,在此不做赘述。

训练阶段包括图5所示的步骤三至步骤七,其中:

步骤三:每个GPU上采样一个任务以保证当前批任务的多样性,并根据任务进行相应的数据采样。

步骤四:动态网络根据概率参数采样一组路径,该采样的路径会随着训练过程逐渐收敛为最终的路径方案。

步骤五:对应执行的内容,即根据采样的路径推理模型,并计算当前GPU的梯度。

步骤六:计算各GPU梯度的平均值,并根据平均梯度更新模型参数以及各任务对应的概率参数。

可以理解,上述训练阶段各步骤的详细实施过程,将在下文结合实施流程图6具体介绍,在此不做赘述。

以下结合具体实施例,对本申请实施例提供的训练神经网络模型的方法的具体实现过程,进行进一步阐述。

下面先以结合实施例1,介绍基于本申请实施例提供的训练神经网络模型的方法,联合训练多个任务的具体实现过程。

实施例1

在本申请实施例中,当需要进行多个任务联合训练时,可以通过训练一个神经网络模型(即目标模型)来实现。比如待训练的目标模型中需训练3类任务,例如分类任务、检测任务、分割任务,每类任务可以包括一个或多个待训练任务。则基于本申请实施例提供的训练神经网络模型的方法,可以对这3类任务进行联合训练。可以理解,在另一实施例中,本申请实施例提供的方案也可以适用于不同于上述3类任务的其他任务类型的联合训练,在此不做限制。

图6根据本申请实施例示出了一种训练神经网络模型的方法实施流程示意图。

可以理解,图6所示流程各步骤的执行主体可以是用于训练神经网络模型的电子设备,即模型训练设备,例如服务器或服务器集群等。为了便于描述,在以下描述各步骤内容时,不再重复描述各步骤的执行主体。

如图6所示,该流程包括以下步骤:

601:获取参与本次训练的任务集。

示例性地,在训练目标模型之前,可以根据预定义的神经网络架构中获取或者添加应用于目标模型训练的任务集。参考上述图4所示的神经网络架构400,选定的任务集中可以包括应用在目标模型中的多个任务以及各任务对应的数据集。也就是说,在选定任务集时便可以确定各任务对应的数据集。其中,各数据集提供的数据模态可以不同,例如有些数据集可以提供文本数据,有些数据集可以提供图像数据,而有些数据集可以提供视频数据,在此不做限制。

可以理解,对应于各任务的数据集提供的数据通常也是单任务数据,即相应的单一任务所对应的样本数据。其中,服务器集群是实施本申请实施例提供的训练神经网络的方法的执行主体。其中,提供各任务对应的单任务数据的数据集可以包括:上述分类数据集ImageNet22K,检测数据集MS-COCO、Objects365、Open Images、LVIS,以及分割数据集VOC2012、ADE20K,COCO-Stuff等,在此不做限制。

例如待训练的任务有8个,包括1个分类任务:ImageNet21k,2个检测+分割任务:COCO,LVIS,2个检测任务:Open Images,Objects365,以及3个分割任务:ADE20K,COCO-Stuff,Pascal-VOC 2012。则在对这些任务并行进行联合训练时,可以对应各任务分别选定需使用的数据集,例如分类数据集ImageNet21k、检测数据集COCO、分割数据集LVIS。其中,同一类任务的数据集可以相同,各数据集均由多个样本数据组成,每个样本数据例如可以为一个(图像,标签)对。上述为待训练的各任务选定的数据集、与这8个任务则可以形成参与本次训练的任务集。

在具体的训练操作中,在获取到参与本次训练的任务集后,则可以将任务集中上述8个任务分别对应的分类数据集、检测数据集、分割数据集拷贝到服务器集群上。由于这8个任务的训练难度均比较大,因此作为模型训练设备的服务器集群,例如可以包含10台服务器,每台服务器上例如可以包括8个昇腾(Ascend)AI芯片,各服务器之间例如可以通过TCP通信协议创建通信网络实现各服务器之间的通信。在另一些实施例中,用于联合训练多个任务的模型训练设备也可以为其他配置的电子设备,在此不做限制。

可以理解,本步骤601所执行的选定参与本次训练的任务集,对应包括上述图5所示步骤一对应执行的内容,即准备单任务数据并拷贝到服务器集群上。

602:基于获取的任务集和预定义的神经网络架构,构造目标模型的动态网络。

示例性地,获取任务集后,服务器集群可以利用预定义的神经网络架构构造目标模型的动态网络。具体为,服务器集群运行的模型训练软件可以根据定义神经网络架构的配置文件模板,输入任务集中待训练的各任务相关参数,例如任务类型、任务规则、任务目的等,生成相应的结构配置文件。进而,基于该结构配置文件中的基础网络结构和基础网络参数构造目标模型的动态网络结构。其中,对应于获取到的任务集生成的结构配置文件,可以提供用于构造目标模型动态网络的相关参数,包括基础网络结构、基础网络参数、任务网络结构、任务网络参数、动态网络参数等结构参数、以及用于构造基础网络结构的基础单元获取路径等。基于该结构配置文件构造动态网络的过程,包括基于基础网络结构和基础网络参数可以确定需要构造的神经网络的基本结构,包括该神经网络的深度(例如层数)和宽度(例如各层的基础单元数量);基于动态网络参数可以确定用于构造所需神经网络的基础单任务网络中各层基础单元的结构、以及对该基础单任务网络的复制倍数;基于基础单元的获取路径,则可以对应获取具有上述动态网络参数所确定结构的基础单元,包括获取基础单元库中的预设单元以及获取历史模型中的基础单元等。

参考上述图4所示,构造出的动态网络可以包括上述图4所示的输入层410、基础单元层420以及输出层430,其中基础单元层420中各层的基础单元,可以是复制预设单元421得到的基础单元矩阵,也可以包括从已训练的历史模型中复制的历史单元422与预设单元421形成的复合基础单元矩阵,该基础单元矩阵还可以包括新增单元423,在此不做限制。具体所构造的动态网络中各层的结构及功能可以参考上述图4中相关描述在此不做赘述。

在完成动态网络的基础结构的构造后,模型训练设备则可以根据结构配置文件中的任务网络结构和任务网络参数,在所构造的神经网络中创建对应于各任务的路径预测模块及数据预处理模块。其中,路径预测模块例如可以是在动态网络中创建的路径选择器,具体可以参考下文步骤603中相关描述,在此不做赘述。数据预处理模块则可以对各任务相关数据集中的数据进行预处理后输入所构造的神经网络进行训练,具体可以参考上述图4相关神经网络架构的介绍中对数据预处理层411的相关描述,在此不做赘述。

图7根据本申请实施例示出了一种构造出的动态网络的结构示意图。

参考图7所示,对于本申请实施例需训练的8个任务,模型训练软件可以对应生成目标模型的结构配置文件。

基于该结构配置文件,构造相应该动态网络的过程可以包括:先构造一个单任务的网络结构,比如图7所示的R50,即50层残差网络ResNet-50,并初始化各层残差网络的网络参数。将所构造的单任务网络结构垂直地划分为多个模块,例如,将R50垂直地分为16个瓶颈模块BottleNeck Block。划分得到的各瓶颈模块,即为所构造的动态网络中的一个基础单元。然后,将垂直分布的16个瓶颈模块,水平地复制N倍,例如10倍,则可以构造出图7所示的动态网络。其中,为了简化描述,图7所示动态网络的结构未示出上述图4所示的数据预处理层411。

可以理解,各瓶颈模块的网络结构可以相同也可以不同,各瓶颈模块的计算参数可以初始化为统一或随机不同的网络参数,在此不做限制。基于待训练的这8个任务要求,相应结构配置文件中可以提供具有类似任务的历史模型中的一些瓶颈模块的获取参数,以获取相应历史单元作为所构造动网络中的部分基础单元,在此不做限制。

可以理解,在一些实施例中,可以将具有相近功能的历史模块中的历史单元添加到相应的基础单元层中作为可选的基础单元等。在另一些实施例中,也可以为待训练的目标模型任务创建新增单元并添加到相应的基础单元层中。在此不做限制。

可以理解,本步骤所构造的动态网络中,各层之间以及各层的基础单元之间均采用稀疏连接。例如,该动态网络各层的路径选择器可以从该层中选择参与路径的一个或多个基础单元,也可以在该层中不选择基础单元,即选出的基础单元形成的路径可以跳过该层。

603:基于构造的动态网络初始化多个任务的配置环境。

示例性地,构造目标模型的初始动态网络后,可以基于结构配置文件中的任务网络结构、任务网络参数初始化各任务的相关参数,包括初始化各任务的基础单元路径参数、以及初始化该动态网络中各基础单元的计算参数等。该初始化过程可以包括对上述步骤602中基于结构配置文件构造的动态网络中各预设单元的计算参数进行随机初始化。值得注意的是,如果基础单元为某个历史模型提供的历史单元,则直接使用该历史模型中相应历史单元的历史计算参数。可以理解,该初始化过程还可以包括对于每一个任务集中各个任务的路径参数进行初始化。

如上所述,所构造动态网络的各基础单元层可以为各任务分别创建相应的路径选择器,并初始化各层中路径选择器对各基础单元的选择概率p1,p2,…,pN。因此,所得到的路径选择器共有T×L个,其中T是任务的数量,L是总层数。可以理解,对于各基础单元层,还可以设置一个跳过单元。当路径选择器选择某一层的跳过单元时,可以表示该任务的路径跳过该层。

例如,对于上述图7所示的动态网络,划分R50得到的垂直分布的16个瓶颈模块水平复制后形成动态网络的16个基础单元层,因此对于待训练的8个任务可以构造的路径选择器包括8*16个,即每个任务对应都有16个路径选择器。

在另一些实施例中,对于不同的任务,也可以在上述构造的动态网络中各基础单元层创建一个统一的路径选择器,该路径选择器可以为不同任务初始化分配一组基础单元选择概率p1,p2,…,pN。此种情形下,路径选择器可以有L个,每个路径选择器上初始化的路径参数可以有T组,其中T是任务的数量,L是总层数。例如,对图7所示的16层基础单元层逐层设置一个路径选择器,该路径选择器对每个不同的任务可以配置不同的概率参数,以用于为各任务采样路径时选择相应层的基础单元。在此不做限制。

可以理解,对于各任务初始化的概率参数p1,p2,…,pN,分别代表该任务在该层选择各基础单元的概率值,或者说偏好程度,其中p1+p2+…+pN=1。例如,假如p1=0.9,则表明该任务对第一个基础单元较为偏好,假如p3是pN中的最小值,则表明任务最不偏好p3对应的基础单元。

可以理解,服务器集群运行的模型训练软件可以根据上述结构配置文件中的任务网络结构和任务网络参数,初始化基于该结构配置文件构造的动态网络参数,作为初始化的模型参数。其中,上述路径选择器例如可以是基于任务网络结构和任务网络参数在动态网络中建立的各任务对应的预测模块。用于在训练目标模型的各任务时推理出各任务对应的最优路径。

可以理解,上述步骤602所执行的构造目标模型的动态网络、以及本步骤603所执行的初始化过程,对应包括上述图5所示步骤二对应执行的内容,即动态网络的结构及参数初始化、以及概率参数的初始化。

604:利用多个训练单元分别对任务集中的各任务进行任务采样,并对各任务对应的数据集进行多个任务并发的数据采样。

示例性地,模型训练设备例如可以是服务器或者服务器集群,如此模型训练设备可以为待训练的多个任务提供一组训练单元阵列,该阵列上可以包括多个训练单元。其中,各训练单元例如可以是图形处理单元(Graphic Processing Unit,GPU)、张量处理单元(Tensor Processing Unit,TPU)以及包含多个GPU构成的Ascend AI芯片等,在此不做限制。以GPU为例,基于本申请的神经网络架构训练目标模型的多个任务时,模型训练设备提供的训练单元阵列中每个GPU在可以分别采样一个任务并采样相应任务对应的一批批训练数据进一次迭代训练,采样过程中可以控制各GPU之间尽可能采样不同的任务进行训练。如此,有利于保证一次迭代训练的任务的多样性,其中同一批次训练数据包括对应于各任务分别采样的训练数据。

可以理解,各训练单元对各任务的任务采样方式既可以是随机采样,也可以是固定采样,在此不做限制。其中,固定采样可以是为每一个训练单元固定选择一个固定的任务,比如为GPU0-GPU4这四个训练单元固定选择ImageNet分类,GPU5-GPU10固定选择COCO检测,以此类推。另外,各GPU根据所采样的任务进行相应的数据采样的过程中,每个GPU可以从所采样任务对应的特定数据集中选取批尺寸(batch_size)样本数据用于训练。也就是说,各GPU可以根据所采样任务需要消耗的计算资源采样batch_size个样本数据。例如,GPU0-GPU4在每次迭代中可以分别采样128个ImageNet21K分类任务的样本数据,GPU5-GPU10在每次迭代中可以分别采样8个COCO数据集的样本数据等。其中一个分类样本数据所消耗的计算资源远小于一个COCO检测样本数据所消耗的计算资源。

可以理解,上述模型训练设备例如可以为具有Ascend AI芯片的服务器、或者其他具有GPU、TPU或一些由虚拟化技术构造的计算设备,比如vGPU,在此不做限制。

可以理解,任务采样会给每一个训练单元分配采样任务。任务采样的过程即训练单元按照预先定义的采样概率从任务集中选取一个任务。应理解,训练目标模型的过程一般会包含多个训练单元,例如在4台服务器、每台服务器具有8个GPU的情况下,则可以有32个GPU设备作为训练单元进行任务采样。其中,每个训练单元选取任务的过程是相互独立的,即可以选择不同的任务,也可以选择相同任务。这使得在训练目标模型的整体过程中,各训练单元选取到的任务不是单一的,而能够覆盖多个任务,这种采样过程称之为“一次迭代多任务并发”。在采样好任务之后,针对每个任务会从相应的数据集中去采样一个批次(batch)的训练数据。一个批次的训练数据可以是整体训练过程所用到的数据集中一个很小的子集,例如包括32个样本的训练数据,使得当前的训练单元能够对采样到的训练数据进行快速的计算和训练。

对于前述例子,例如用于对上述8个任务并行进行联合训练的模型训练设备为具有10台服务器的服务器集群,并且每台服务器上例如可以包括8个Ascend AI芯片,则每个训练单元可以是一个Ascend AI芯片。进而,基于上述图7所示的动态网络进行上述8个任务的联合训练时,可以固定设定每台服务器上的8个Ascend AI芯片分别对8个任务进行任务采样。进而,每台服务器上的各Ascend AI芯片可以对应采样相应任务的数据集进行8个任务的联合训练。

可以理解,本步骤604所执行的训练过程,对应包括上述图5所示步骤三对应执行的内容,即每个GPU上采样一个任务以保证当前批任务的多样性,并根据任务进行相应的数据采样。

605:根据预设的概率参数对各任务分别采样初始化路径。

示例性地,模型训练设备的各训练单元,可以基于采样的任务对应的任务网络参数中预设的概率参数,为各任务对应采样一组初始化的基础单元路径。可以理解,基础单元路径为一组基础单元组成的一个有向序列。每一条基础单元路径对应着一种执行逻辑,即顺序地执行路径中的所有基础单元。前一个单元的输出会被作为后一个单元的输入。在一些实施例中,该基础单元路径可以是跨层的,即不需要每一层都需要选择基础单元,可以在采样路径时跳过动态网络中相应任务执行时不需要的层。另外,在一些实施例中,不同的基础单元路径可以选择共用同一个基础单元。若一个基础单元被多个路径所选择,则在相应各任务训练过程中,该基础单元对应的计算参数会被不同路径中计算的梯度平均值同时更新。

如此,基于本申请方案,模型训练设备在利用各训练单元分别采样任务进行多个任务的联合训练的过程中,可以相互促进各任务对应的任务路径上的预设单元计算参数的优化。例如,对于被多个路径选择的基础单元,各路径对应的任务通常是同一类型的任务,因此不同路径计算的梯度平均值在更新任务路径的路径参数、以及各预设单元对应的计算参数时,可以产生叠化效果,优化效果更佳。

可以理解,本步骤605所执行的训练过程,对应包括上述图5所示步骤四对应执行的内容,即动态网络根据概率参数采样一组路径,该采样的路径会随着训练过程逐渐收敛为最终的路径方案。具体的训练初始化路径,使概率参数收敛过程将在下文步骤606至607中进行详细描述,在此不做赘述。

606:根据采样的路径推理模型,并计算各训练单元的梯度以及梯度平均值。

示例性地,以GPU为例,训练相应任务的各GPU上的梯度例如可以通过相应任务的损失函数来确定,例如对于分类任务可以通过交叉熵损失函数的计算结果并求导计算得到相应梯度,对于检测任务可以通过均方误差损失函数并求导计算得到相应梯度。在此不做限制。其中,各训练单元上计算得到的梯度代表了该训练单元上的任务t中的样本数据b所希望的路径参数更新方向。各训练单元计算得到的梯度也包括路径选择器中对应于相应任务的路径参数的梯度。

在每个训练单元上,动态网络会根据采样路径中的w

可以理解,本步骤606所执行的训练过程,对应包括上述图5所示步骤五对应执行的内容,即根据采样的路径推理模型,并计算当前GPU的梯度。

607:根据计算得到的梯度平均值更新模型参数、以及各任务对应的路径参数。

示例性地,以训练单元为GPU为例,多个GPU对不同的数据集进行多个任务的并发训练时,模型参数保存在一个指定GPU上,模型参数的副本在不同GPU上。每次训练,上述步骤604中采样的数据送入各训练单元后,各GPU可以就分别采样的任务进行前向训练,即前向在不同GPU上进行。模型参数更新时,模型训练设备可以将多个GPU后向计算得到的梯度数据进行平均,并在指定GPU上利用梯度数据更新模型参数、以及各任务对应的路径参数。

作为示例,计算各GPU的梯度平均值,即平均梯度,并根据平均梯度更新模型参数以及各任务对应的路径参数的过程,例如可以是:先根据各训练单元上计算得到的路径采样的概率等参数对应的梯度来计算平均梯度,然后通过随机梯度下降(StochasticGradient Descent,SGD)等优化器对模型中的各路径采样的概率参数等进行更新。

可以理解,各训练单元上计算得到的梯度大小可以在一定程度上反映对应着相应采样路径的损失大小程度。每个训练单元所训练的任务所对应的任务执行路径由整体的动态网络中相关基本单元层选出的基础单元组成。由于各任务在训练初期并不知道哪条执行路径是最适合,因此,在基于本申请方案的多任务学习过程中,可以通过逐步探索的方式先确定各任务对应的初始化路径,再利用相应的损失函数不断调整各初始化路径对应的基础单元采样概率参数,最终收敛得到各任务对应的最终执行路径。

可以理解,在训练模型的过程中,各训练单元每完成一次模型推理,并基于计算得到的梯度平均值来调整模型参数、以及各任务对应的路径参数的过程,即完成一次各任务对应的路径参数调整过程,直到满足参数收敛条件。例如满足收敛条件的路径参数,所对应的任务路径上选择各基础单元的概率参数、以及和各基础单元的计算参数均对应满足收敛条件,所对应的任务路径在执行相应的任务运算时,对应的运算结果的交叉熵损失等达到最小值或者小于预设值。其中,各任务对应的路径参数,本质上是一组N维的概率参数,在整个模型训练的过程中,对各组N维概率参数进行调整的具体过程,将在下文中结合相应附图8进行详细说明,在此不做赘述。

可以理解,本步骤607所执行的训练过程,对应包括上述图5所示步骤六对应执行的内容,即计算各GPU梯度的平均值,并根据平均梯度更新模型参数以及各任务对应的概率参数。

608:判断是否满足模型训练收敛条件。若判断结果为是,则可以执行下述步骤609,结束训练;若判断结果为否,则可以重复执行上述步骤604至607的过程,之后再次执行本步骤608的判断过程。

示例性地,对目标模型预设的收敛条件,也可以相应记录在上述步骤602中生成的结构配置文件中,例如包括记录在任务网络参数中的任务收敛条件,以及记录在基础网络参数中的模型参数收敛条件等。例如,当模型训练设备中的各训练单元对本次采样到的任务以及路径进行训练时,各任务对应的路径参数决定的基础单元路径在执行相应的处理处理任务时,对应处理结果的损失最小等。则可以确定各任务满足相应的任务参数收敛条件。若判断满足模型训练收敛条件,即判断结果为是时,表明对目标模型训练的各任务已经找到最优路径,并且各任务对应路径上的预设单元的计算参数也已完成了调整,目标模型此时已经具备最优的多个任务处理能力,此时则可以执行下述步骤609,结束训练。若判断为不满足模型收敛条件,即判断结果为否时,表明一些任务或者全部任务尚需进行路径参数的调整,目标模型参数也需进一步训练调整,此时可以重复执行上述步骤604至607的过程,之后再次执行本步骤608的判断过程。

609:完成多个任务的训练过程,结束模型训练,得到目标模型。

至此,基于上述图6所示的步骤601至609,通过多个任务的并发训练,可以实现一次模型训练完成多个任务的训练过程。并且,这种多个任务的并发训练,可以促进各任务之间的任务路径优化,并能促进各任务对不同数据集中的数据采样以优化训练结果,增加了数据多样性。另外,本申请实施例所提供的配置文件模板定义的神经网络架构,可接受输入的任务集中可以支持多个模态的数据集,以用于训练目标模型的各任务,因此,基于上述图6所示流程训练出的目标模型,也具备跨模态处理数据的能力。

图8根据本申请实施例示出了一种模型训练过程中对各任务分别对应的路径参数的调整过程示意图。

如图8所示,对于各任务对应的路径参数中的N维概率参数,可以采用软模式(参考图8所示的soft训练模式)与硬模式(参考图8所示的hard训练模式)相结合的调整方式。

如图8所示,软模式的输出是基于上述步骤603中初始化的基础单元选择概率p1,p2,…,pi采样得到的概率向量w1,w2,…,wi,其中i≤N。

可以理解,如果pi的值越高,则相应的wi的值则可能越高。具体地,预设的pi与采样输出的wi值之间的计算公式可以为:

其中,w

可以理解,基于采样得到的概率参数w1,w2,…,wi后,各层可以确定一个基础单元的加权输出,即w

可以理解,如果λ越大,则采样的wi可能会更偏离pi,表明采样路径更具有探索性,更可能去采样一些新的或者当前p值较低的基础单元来组成基础单元路径。反之当λ很小时,则采样路径会更多地偏向于选择当前p值较大的基础单元,采样路径具有的探索性则较低,{w1,w2,…,wi}会比较接近预设的概率{p1,p2,…,pi}的分布。

可以理解,在模型训练初期可以尽量地让各任务尝试选择不同的基础单元和执行路径,并通过计算各执行路径上的损失判断该路径是否适合,继而在模型训练末期逐渐收敛到损失最小的单一路径,即确定各任务最终的执行路径。比如,在模型训练初期将温度参数λ的值设置得较大(例如图8所示的5.0),此时路径选择器就会更多地选择去该层更多的基础单元,从而探索不同的基础单元组成的路径。训练过程中逐渐减小温度参数的值,并最终降至一个适合的较低值(例如图8所示的0.01或者0.001),此时路径选择器可以选择出损失最小的一条路径。

而硬模式的输出会在软模式的输出结果的基础上,利用向量转换公式将概率值向量w1,w2,…,wi对应转换为0,1向量。例如上述公式(1)计算得到的w

w

其中,w

基于上述公式(2)可以看出,w

可以理解,经过上述公式(2)实现的硬模式采样,在选择出组成路径的基础单元的同时,还可以继续对输出的软模式概率向量进行求导,以便于进行反向传播。

可以理解,本步骤更新模型参数、以及各任务对应的路径参数时,对应更新选择的路径,可以对上述步骤604中采样得到的样本训练数据进行前向推理。该前向推理过程中,可以通过各训练单元(例如GPU)之间的通信计算一些跨任务的统计量,比如通过同步批归一化(batch normalization,BN)计算跨任务的BN统计量。在前向计算之后,则可以通过深度网络的反向传播,计算得到模型中各参数的梯度,包括各任务对应的路径采样概率的梯度。前向推理及反向传播的相关过程可以参考现有的相关描述,在此不做赘述。

本申请实施例基于上述图6所示流程的实施过程,可以为参与训练的各个任务在构造的目标模型动态网络中创建相应的路径选择器,并通过上述图6所示的各步骤进行训练。通过该训练过程,所构造的神经网络架构中各基础单元增中基础单元的计算参数,以及每个任务对应的路径选择器选择基础单元的概率参数均能够学习达到相应的最优值。对于其中任意一个单任务,只会对应采样一组路径进行推理,并在训练过程中调整路径参数,不在相应任务路径上的基础单元则不会使用。因此,对于每个单任务来说,推理的计算量和模型参数量以及所使用的基础的单网络结构(例如上述图7所示的R50)是完全一致的。只是在进行多个任务的联合训练时,基础的单网络结构会被复制扩展N倍。这表明了,本申请实施例所提供的训练神经网络模型的方案,可扩展性较强。

对于本申请实施例提供的训练神经网络模型的方法对于多个任务的联合训练,所能实现的有益效果,可以通过一些测试数据体现。

图9根据本申请实施例示出了一种基于本实施例方案训练出的任务进行相应数据处理的准确率测试结果示意图。

如图9所示,对于检测任务Open Images和Objects365,例如可以通过box ap测试任务准确率,其原理是计算bounding box(包围框)的average presicion(平均精度)。

对于分割任务ADE20K、COCO-Stuff以及Pascal-VOC 2012,可以利用mask ap或者miou测试任务准确率。

对于检测+分割任务COCO和LVIS,可以利用mask ap测试任务准确率。

对比图9所示的准确率测试实验数据,可以看出:本申请实施例完成训练的8个任务所能达到准确率,相较于这8个人任务分别进行单任务训练后对应达到的准确率,均有所提高。

下面结合另一实施例2,介绍基于本申请实施例提供的训练神经网络模型的方法训练新增任务的具体实现过程。

实施例2

本实施例涉及基于已训练的神经网络模型,新增任务的训练过程。

图10根据本申请实施例示出了一种在已训练的目标模型基础上微调训练新增任务的场景示意图。

如图10所示,基于上述实施例1中8个任务联合训练得到的模型700作为预训练模型,具备执行上述实施例1中训练的8个任务能力。在该模型700执行下游任务时,如需要再训练一个新增任务9,则可以在模型700的动态网络结构以及训练确定的模型参数的基础上,对任务对应的路径参数进行训练和微调。可以理解,该模型700相对于新增任务而言,可以是一个预训练模型,在此不做限制。

可以理解,深度学习模型通常是一种数据驱动的模型,当“数据量少+模型较大”时,模型可能发生过拟合或者泛化性较差的情况。而解决该问题的一种方案是使用预训练模型。

图11根据本申请实施例示出了一种不使用预训练模型和使用预训练模型的训练过程比较示意图。

如图11中的(a)流程所示,在不使用预训练模型的情况下,对待训练的模型进行随机初始化之后,直接根据下游数据来训练该模型中的新增任务,即图11的(a)所示的下游新增任务1和下游新增任务2。所训练出的模型欠缺基础表征,因此训练出的新增任务在处理下游数据时,能力也较弱。

如图11中的(b)流程所示,在使用预训练模型的情况下,先通过相关数据集训练得到一个预训练模型,该预训练模型已经具备较强的表达能力和较为完备的基础表征。例如,本申请实施训练新增任务所基于的预训练模型,可以是基于上述实施例1提供的训练神经网络模型的方法训练出的模型700。

继续参考如11(b)所示,进一步地,在下游任务训练时可以基于上述预训练模型训练下游的新增任务,对预训练模型的模型参数进行微调。如此,可以将一些共用的知识(如基础视觉纹理等)迁移到新增任务中,从而有利于避免新增任务因为数据量少而难以学到较为完备的数据特征等问题,也有利于提高训练了新增任务的模型的泛化性。

图12根据本申请实施例示出了一种在已训练的目标模型基础上训练新增任务的实施流程示意图。

如图12所示,该流程包括以下步骤:

1201:获取待训练的新增任务以及相应的数据集。

可以理解,本步骤获取新增任务以及相应数据集的过程,可以类比与上述步骤601中所获取任务集的过程,该任务集中包括多个任务以及各任务对应的数据集。具体本步骤的执行内容可以参考上述步骤601中相关描述,在此不做赘述。

1202:获取已训练的模型结构配置文件以及训练后的相关模型参数。

与上述实施例1中步骤602的区别之处在于,本步骤无需创建动态网络,而是可以获取已完成训练的神经网络模型的动态网络结构以及训练好的模型参数、各任务路径参数等相关参数,进行复用。

1203:基于获取的模型,初始化训练新增任务的配置环境。

与上述实施例1中步骤603的区别之处在于,本步骤中对用于训练新增任务的动态网络相关参数不再进行随机初始化,而是直接使用实施例1中训练得到的目标模型作为预训练模型,即上述模型700的动态网络相关参数。

1204:利用多个训练单元对新增任务采样,并对新增任务对应的数据集进行数据采样。

1205:各训练单元分别对新增任务采样一组初始化路径。

1206:各训练单元根据采样的路径推理模型,并计算各训练单元的梯度以及梯度平均值。

1207:根据计算得到的梯度平均值更新模型参数、以及各任务对应的路径参数。

1208:判断是否满足新增任务的训练收敛条件。

1209:完成新增任务的训练。

步骤1204至步骤1209与上述步骤604至步骤609所执行的内容类似,区别仅在于所训练的模型任务是在已训练各任务基础上新增的任务,该新增任务可以是训练好的模型在实际应用中对实时采集的下游数据进行处理时,根据处理需求新增的任务。

可以理解,如果下游的新增任务只有一个,则无需再进行多个任务的联合训练,此时模型训练设备上的各训练单元(如GPU)可以统一用于训练该新增任务。如果下游的新增任务有多个,此时模型训练设备运行相应的模型训练软件还可以再次进行多个任务的并发训练。具体可以参考上述实施例1所提供的神经网络模型的训练过程。

可以理解,基于上述图12所示步骤1201至1209的新增任务训练过程,当新增任务为一个或者较少数量时,多个训练单元可以并行的对新增任务的路径进行探索、以及并行采样数据训练该新增任务,能够更加快速、高效地确定新增任务的最优路径。因此,对于新增任务的训练效率会大大提高。

另外,本申请实施例所提供的新增任务训练方案,所基于的已训练模型中已深度学习了8个任务的最优路径,并且各任务对应的已经训练好的任务路径执行过程可以促进新增任务的路径优化,以使得所训练的新增任务能够继承已经训练好的各任务对应的任务路径相关参数。如此,本申请方案训练新增任务可以继承相关参数的较高准确率等优点,可以产生叠加优化的效果,对新增任务的训练效果也会更好。

对于本申请实施例提供的训练神经网络模型的方法对于多个任务的联合训练,所能实现的有益效果,可以通过一些测试数据体现。

图13a根据本申请实施例示出了训练出的新增任务相对于已训练任务在处理相应数据时,对应出现的误差计算结果对比示意图。

如图13a所示,基于本申请实施例提供的方案训练出的新增任务,与已训练的模型700中的部分任务在处理同一类数据集时,计算各任务对应出现的均方根误差(Root MeanSquare Error,RMSE)。可以理解,RMSE越低越好。

参考图13a所示,对于同一数量级的数据集,例如对23.5M+26.1M数量的#param.数据集进行处理,基于本申请实施例提供的方案训练出的新增任务对应出现的误差较小,仅为2.24。该误差相对于预先训练的CNN SOTA处理更大数量58M+15M的#param.数据集时对应产生的误差2.446仍较小。这表明,基于本申请实施例提供的方案训练出的新增任务在深度估计和检测数据集上均达到了相当高的精度。

图13b根据本申请实施例示出了基于本实施例方案训练出的新增任务与已训练任务在处理不同的数据集时对应的准确率测试结果对比表。

如图13b所示,与单任务训练处的sota任务相比,本申请方案训练出的新增任务对于各KITTI、VOC、WiderFace等数据集的处理准确率均较高。与已训练模型中的DA、COCO、GAIA等任务相比,本申请方案训练出的新增任务对数据集的处理准确率也能保持在较高的水平。

上述图13a和图13b所示例的比较结果,对应的原因主要在于将训练好的模型作为预训练模型,相应的历史任务覆盖面较广,相比于单任务的预训练模型,本申请方案能够传递更多的信息到新增任务中。

下面结合另一实施例3,介绍基于本申请实施例提供的训练神经网络模型的方法训练人造数据集的具体实现过程,以提高模型对特定数据的处理准确率。

实施例3

本实施例涉及将人造数据应用于本申请实施例提供的训练神经网络模型的方案中,以训练目标模型的任务学习特定数据特征,以提升对特定数据的处理能力。

可以理解,人造数据可以根据需要训练的任务编写,可以是CG渲染数据、画图数据以及其他有相同属性但外表有差异的数据。人造数据的特点在于获取方式较为简单,成本较为低廉且容易大量获取。对于一些模型的应用场景,真实数据比较难以获取时,若想训练出具有较高准确率的模型则比较困难。但如果能够有效地构造一些与真实数据相似的人造数据作为训练数据辅助训练,则可以实现事半功倍的效果。

然而,许多相关研究都表明,如果直接将人造数据与真实数据进行简单融合,直接合成一个数据集进行训练,由于训练过程比较孤立,各任务仅能学习到人造数据或者真实数据的特点,当人造数据与真实数据的差异较大时,反而有可能会影响真实数据的训练效果。目前的神经网络训练方案无法避免这种简单融合带来的负面效果,故本实施例提出了基于本申请实施例提供的训练神经网络模型的方法来解决这一问题。

图14根据本申请实施例示出了一种训练模型已有的多个任务学习新增数据集的场景示意图。如图14所示,在已完成的模型训练过程中,待训练的目标检测任务、停车位检测任务以及图像分类任务分别基于数据集COCO、PIL、ImageNet训练得到。当需要让这些任务学习检测斜向车位的能力时,则可以创建一个新增的假数据任务(简称新增假任务)与已训练好的任务并行进行联合训练。

参考图14所示的将停车位检测任务与新增假任务FakeData进行联合训练,新增的人造斜向车位假数据(FakeData)组成的数据集可以为联合训练的各任务提供训练数据。如此,可以在多个任务联合训练过程中,使模型中已训练的目标任务采样到的假数据而学习到假数据中希望该任务学习到的特征,能够实现假数据与真实数据在任务训练过程中的融合,进而实现对目标任务的微调优化。

图15根据本申请实施例示出了一种在已训练的目标模型基础上训练新增任务的实施流程示意图。

如图15所示,该流程包括以下步骤:

1501:获取新增数据集,并对应新增数据集创建新增假任务。

1502:获取已训练的模型结构配置文件以及训练后的相关模型参数。

与上述实施例1中步骤602的区别之处在于,本步骤无需创建目标模型的动态网络,直接获取已完成训练的模型网络以及相关参数即可。

1503:基于获取的模型,初始化联合训练目标任务与新增假任务的配置环境。

与上述实施例1中步骤603的区别之处在于,本步骤中对用于学习新增数据集的动态网络相关参数不再进行随机初始化,而是直接使用实施例1中训练得到的目标模型作为预训练模型,提供已训练好的用于执行各任务的基础单元计算参数,以及各任务对应的最优路径相关参数等,在此不做赘述。其中,目标任务为需要学习新增数据集中数据特征的已训练任务,新增数据集例如可以是人造的假数据FakeData组成的数据集。

以车位检测为例,停车位分为垂直,水平,斜向三种车位,但是在实际的采集数据中,斜向车位的数据较少,导致了训练出来的神经网络模型对斜向车位的检测精度较低。基于本申请方案,可以基于一些图像人工造绘制出一些斜向车位,以使模型学习这些绘制的斜向车位的特征。

图16根据本申请实施例示出了一种基于随机图像绘制斜向车位,作为训练停车位检测任务训练数据的示意图。参考图16所示,例如可以在随机的图像1上构造一个倾斜角度为45°的斜向车位轮廓线、在图像2上构造一个倾斜角度为50°的斜向车位轮廓线、在图像3上构造一个倾斜角度为60°的斜向车位轮廓线、在图像4上构造一个倾斜角度为65°的斜向车位轮廓线、在图像5上构造一个倾斜角度为75°的斜向车位轮廓线等。以此方式,可以构造出多种倾斜角度的斜向车位假数据(FakeData)作为人造斜向车位数据,以用于训练停车位检测任务学习这些构造的斜向车位数据。

1504:利用多个训练单元对目标任务和新增假任务进行采样,并对新增数据集进行数据采样。

与上述实施例1中步骤604的区别之处在于,由于需要训练一些任务学习人造的假数据(FakeData),因此在训练过程中,各训练单元可以对这类任务进行采样。这类任务比如可以是目标检测任务、停车位检测任务以及图像分类任务等,在此不做限制。可以理解,需要学习新增数据集的目标任务可以是一个或多个,则各训练单元可以同步对待训练任务和新增假任务进行任务采样,以便进行多任务学习,以提高训练效率、增加训练轮次,如此也有利于提高训练后的模型执行相应任务的准确率。

完成任务采样后,可以对待学习的上述假数据(FakeData)进行数据采样。具体任务采样和数据采样过程可以参考上述步骤604中相关描述,在此不做赘述。

1505:对目标任务采样训练好的最优路径、对新增假任务采样初始化路径。

1506:各训练单元根据采样的路径推理模型,并计算各训练单元的梯度以及梯度平均值。

1507:根据计算得到的梯度平均值更新模型参数、以及各任务对应的路径参数。

1508:判断是否满足目标任务的训练收敛条件。

1509:完成目标任务学习新增数据集中数据特征的训练。

步骤1505至步骤1509的具体执行过程可以参考上述步骤605至步骤609中相关描述,在此不做赘述。

图17根据本申请实施例示出了利用人造斜向车位数据微调优化模型任务后,对模型检测斜向车位准确率带来提升效果的实验数据对比表。

如图17所示,相比于不使用人造数据训练出的模型,本申请方案利用人造斜向车位数据以及对应创建的新增假任务与模型中的相关任务联合训练后,训练出的模型在垂直、水平车位检测的准确率方面有较小幅度提升,在斜向车位检测的准确率方面提升较为明显,提升幅度可以超过10%。由此可见,基于本申请方案训练出的神经网络模型,有利于检测准确率等任务性能的提升。

下面结合另一实施例4,介绍基于本申请实施例提供的训练神经网络模型的方法,在训练目标模型的过程中设置用于微调模型结构的共享损失控制参数,以获得树状多任务网络的具体实现过程,实现对各任务的路径剪枝,从而节省计算量,提高模型预测效率的效果。

实施例4

本申请实施例提供了一种在训练目标模型的过程中设置用于微调模型结构的共享损失控制参数,以获得树状多任务网络的方案。

可以理解,在实际应用场景,模型中的多个任务往往需要同步执行。例如,自动驾驶场景中,墨模型需要根据实时采集的数据地去预测深度并执行可行驶区域分割任务、红绿灯检测任务、障碍物检测任务等。如果每一个任务都使用不同的网络,则对于自动驾驶车辆中的人工智能设备而言计算量可能会非常大,因而会导致预测延时过长,驾驶安全性也会因此降低。即便采用本申请实施例1训练出的多个任务使用同一网络,各任务执行各自的路径,也不利于减小模型的计算量。对于此种场景,可以利用一种树状的多任务网络,来减少计算量,提高预测速度。

图18示出了一种非树状的多任务网络动态选择过程示意图。

如图18所示,当模型需要同步执行多个任务1-n时,各任务分别执行一个路径,各路径共有部分的基础单元上也需要执行多次运算,相应模型的计算量较大。

图19根据本申请实施例示出了一种微调训练得到的目标模型获得的树状多任务网络过程示意图。

如图19所示,参考上述实施例1训练目标模型的过程,在对多个任务并行进行联合训练的过程中,可以在执行上述步骤606计算各训练单元梯度的过程中,对动态网络的不同基础单元层加上共享损失控制参数,以鼓励不同的任务之间共享任务损失。对于获得树状多任务网络的具体训练过程,可以参考上述实施例1提供的训练目标模型的实施过程,在此不做赘述。

参考图19所示,对于越底层(即越靠近输入层)的各层基础单元部分,各任务的共享损失控制参数应该更大,鼓励各任务在这些层中选择相应基础单元执行计算时能够更多的共享损失。上述各任务之间的共享的任务损失可以为熵损失,L1损失等等,在此不做赘述。

继续参考图19,基于各任务之间共享损失,可以使联合训练的各任务的路径底层(即越靠近输入层)时更偏向于选择共同的基础单元,执行各任务共同的初始数据运算。也就是说,多个任务共享了较底层的基础单元,各任务复用这一部分的计算,因此可以节省大量的计算量。

下面结合另一实施例5,介绍基于本申请实施例提供的训练神经网络模型的方法,在训练目标模型的过程中,引入知识图谱优化模型对跨模态数据的识别和处理能力。

实施例5

本申请实施例提供了一种在训练目标模型的过程中引入知识图谱,以通过知识图谱中的相关文本元素特征微调设置用于微调模型结构的共享损失控制参数,以获得树状多个任务网络的方案。

知识图谱是记录实体和各实体之间关系的数据库。其中,各实体之间的关系一般以关系图的形式存储。

图20根据本申请实施例示出了一种在训练目标模型的过程中利用知识图谱增加各基础单元可解释性的应用过程示意图。

如图20所示,参考上述实施例1训练目标模型的过程,在对多个任务并行进行联合训练的过程中,可以在执行上述步骤606至步骤607的过程中对动态网络进行前向推理时,可以通过文本提取器提取预设的知识图谱中的相关数据的元素特征。进而,利用提取出的元素特征与动态网络对相应任务的采样数据提取出的相应特征之间计算跨模态的对比损失。最终,计算得到的对比损失微调各训练单元上计算得到的梯度值,从而在执行上述步骤607基于梯度平均值调整模型参数和各任务路径相关参数时起到微调作用。

可以理解,图20所示的知识图谱所包括的数据例如可以是图像数据,相应地图20所示的应用于知识图谱的文本提取器,则可以将知识图谱中某一部分图像数据转换成文本的工具。如此,图像数据与相应的文本数据组合便可以构成跨模态的数据。例如,知识图谱中与猫相关的部分子图谱可以通过文本提取器转换为“猫是一种有四只脚,一个头,尖耳朵……”这样的描述语句,进一步地可以再利用文本数据的特征提取器提取上述语句中与猫相关的特征文本。

可以理解,跨模态的数据一般为的二元对形式,例如<图像,文本>这样的二元对。一般同一对数据的不同模态数据具有有较强的相关性,不同对中的不同模态数据之间的相关性则较弱。

在跨模态的数据对比训练中,假设有n对数据,,…,,每个模态特有的特征提取器为fa,fb。在对比过程中,可以将下标相等的对定义为一个正对,而将(i≠j)定义为一个负对。进而,在对比过程中,可以利用一个对比损失来拉近ai与bi的特征距离,而拉远ai与bj(i不等于j)的特征距离。

具体地,首先可以先计算不同模态的数据样本两两之间的cosine相似度,得到一个n*n的相似度矩阵K,其中K[i,j]=cosine_distance(fa(ai),fb(bj))。

进而,基于上述计算得到的相似度,可以通过下述公式(3)计算每一个样本ai相对于bj的对比损失:

第一模态的数据集a的整体损失可以通过将第一模态的n个样本数据ai的对比损失进行累加得到。

类似地,再基于上述过程,计算第二模态的数据集b的整体损失。跨模态的数据训练的过程,即可以是调整所训练任务的任务路径的路径参数,以使上述数据集a的整体损失以及数据集b的整体损失逐渐变小的过程,在此不做赘述。

结合上述对比损失的计算过程,可以理解,在对训练各个任务的多个训练单元计算梯度时,可以先将对相应训练数据集计算得到的对比损失、与各训练单元上相应训练的任务基于相应的交叉熵损失函数等计算得到的损失相加,再将各任务对应相加后的损失用于计算相应训练单元上的梯度。如此,则可以在训练任务的过程中,融入跨模态的对比损失来调整所训练任务的路径参数,有利于同步训练相应任务对跨模态数据的识别或处理等运算能力。

而在跨模态重建中,可以直接将基于数据集a提取出的特征文本fa(ai)输入一个简单的神经网络,去预测数据集b对应的特征文本fb(bi)。进而,可以基于重建损失函数L2,L1等,完成跨模态的数据重过程。在此不做赘述。

通过引入知识图谱方案,能够使训练得到的目标模型联合训练网络学习到知识图谱中的结构化知识信息,让不同模态的数据集之间形成跨模态特征的关联,有利于提高模型的跨模态数据处理能力。另外,也可以增加训练后的动态网络中各基础单元的可解释性。

其中,可解释性,是指通过一种人类能够理解的方式描述系统的内部结构。在本申请实施例中,即是有利于描述动态网络中各基础单元的内部结构。在此不做赘述。

图21根据本申请实施例示出了一种模型训练设备100的结构示意图。

如图21所示,模型训练设备100包括一个或多个处理器101、系统内存102、非易失性存储器(Non-Volatile Memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101、系统内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的系统控制逻辑106。其中:

处理器101可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP(Digital Signal Processor)、微处理器MCU(Micro-programmed Control Unit)、AI(Artificial Intelligence,人工智能)处理器或可编程逻辑器件FPGA(FieldProgrammable Gate Array)、神经网络处理器(Neural-network Processing Unit,NPU)等的处理模块或处理电路可以包括一个或多个单核或多核处理器。在一些实施例中,GPU可以用于在训练目标模型的过程中采样训练各个任务。

系统内存102是易失性存储器,例如随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR SDRAM)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于存储基于本申请方案训练得到的神经网络模型数据库以及其他一些历史模型数据库等。

非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。在另一些实施例中,非易失性存储器103可以用于基于本申请方案训练得到的神经网络模型数据库以及其他一些历史模型数据库等。

特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101中的至少一个执行时使模型训练设备100实现本申请各实施例提供的训练神经网络模型的方法。

通信接口104可以包括收发器,用于为模型训练设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于模型训练设备100的其他组件,例如通信接口104可以集成于处理器101中。在一些实施例中,模型训练设备100可以通过通信接口104和其他设备通信,例如,模型训练设备100可以通过通信接口104将训练好的神经网络模型传输给需要使用该模型的电子设备,例如无人驾驶设备或者医疗图像检测设备等。当模型训练设备100是服务器集群时,该集群中的各服务器之间也可以通过上述通信接口104实现通信,在此不做限制。

输入/输出(I/O)设备105可以输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(I/O)设备105与模型训练设备100进行交互,例如输入待训练的任务集或者待训练任务对应的数据集等。

系统控制逻辑106可以包括任意合适的接口控制器,以模型训练设备100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。

在一些实施例中,处理器101中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器101中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(System-on-Chip,SoC)。

可以理解,图21所示的模型训练设备100的结构只是一种示例,在另一些实施例中,模型训练设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

在说明书对“一个实施例”或“实施例”的引用意指结合实施例所描述的具体特征、结构或特性被包括在根据本申请实施例公开的至少一个范例实施方案或技术中。说明书中的各个地方的短语“在一个实施例中”的出现不一定全部指代同一个实施例。

本申请实施例的公开还涉及用于执行文本中的操作装置。该装置可以专门处于所要求的目的而构造或者其可以包括被存储在计算机中的计算机程序选择性地激活或者重新配置的通用计算机。这样的计算机程序可以被存储在计算机可读介质中,诸如,但不限于任何类型的盘,包括软盘、光盘、CD-ROM、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、专用集成电路(ASIC)或者适于存储电子指令的任何类型的介质,并且每个可以被耦合到计算机系统总线。此外,说明书中所提到的计算机可以包括单个处理器或者可以是采用针对增加的计算能力的多个处理器涉及的架构。

另外,在本说明书所使用的语言已经主要被选择用于可读性和指导性的目的并且可能未被选择为描绘或限制所公开的主题。因此,本申请实施例公开旨在说明而非限制本文所讨论的概念的范围。

技术分类

06120116556389