具体实施方式
下面结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,下述各个实施例及其技术特征可以相互组合。
请参阅图1,为本申请实施例提供的一种基于多任务学习的数据分流训练方法,包括:S1、获取至少一个任务的数据集;S2、分别从各个数据集中迭代出具有不同数据的数据包,每个数据包至少表示对应数据集的领域场景下的一个子领域场景,且包含的数据小于数据集的数据;S3、将所有数据包按照预定规则进行拼接,组成数据拼接集;S4、将数据拼接集作为样本同批次输入预先构建的共享层;S5、接收共享层输出的计算结果,并根据数据包对计算结果进行分离,得到不同子领域场景样本对应的分离结果;S6、将分离结果输入至不同的学习任务进行学习,并完成损失计算及反向传播更新参数运算。
在本实施例中,通过预定规则对数据集进行迭代,预定规则可以根据图像识别算法进行识别,例如识别出数据集内的数据为风景、树木、天空、草原、月亮、人物、微笑表情、悲伤表情等类别后,将这些类别作为预定规则,从而迭代出具有不同类别数据的数据包,而数据包内数据的类别则代表了数据包表示的领域场景,为了增加数据包的适用性,一个数据包可能两个或两个以上的领域场景,例如该数据包内的数据具有风景和树木的领域场景;在将数据拼接集进行共享层的计算时,数据包有序地进入共享层计算,若数据包内的一个数据能够参与共享层的计算,则可将该数据包内的所有数据按照参与共享层计算的数据进行计算,在进行共享层计算后,再将共享层输出的计算结果进行分离,分离可根据数据包进行,由于数据拼接集是数据包拼接而成了,每个数据包均可以看作一个节点,每个节点都会有一个结果,这些结果组成了计算结果,因此还可以根据这些节点对应的结果对计算结果进行分离,从而将分离结果输入至不同的学习任务进行学习,并完成损失计算及反向传播更新参数运算。
从以上描述可知,本实施例所要使用的数据集至少为一个,因此在数据集的数量较少的情况下,也能够在很好的增加学习任务的领域跨度的情况下,减少数据集的使用,因此在数据集有限、任务领域跨度较大和模型数量受限时,采用此方法的训练,可以有效节省成本,达到多任务模型训练产出效果。
在整个过程中,通过将数据集迭代成不同领域场景的数据包,能够将本是一个领域场景的数据集细分为不同的领域场景,从而在进行共享层的计算后,能够为学习任务提供不同领域场景的样本,且还分离出了不同领域场景的样本对应的分离结果,从而在使用同批次的数据集的情况下,使用不同场景领域数据包及其对应的分离结果进行学习任务,增加了学习任务的领域场景的跨度,因此也增强了使用多任务学习训练出的图像分类模型的泛化能力。
在该实施例中,迭代使用的算法可以为公式(1)所示
其中,
称作迭代算子,x
(k-1)Kx
(k-n)为迭代初始值。
在使用迭代算法时,需要先确定迭代变量,在可以用迭代算法解决的问题中,至少存在一个直接或接地不断由旧值递推出新值的变量,这个变量就是迭代变量。迭代变量的选择是建立迭代关系的基础。随后需要建立迭代关系式,迭代关系式是指如何从变量的前一个值推出其下一个值的公式或关系,迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。最后是对迭代过程进行控制。在什么时候结束迭代过程,这是在解决迭代问题时必须要考虑的问题,不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制而对于后一种情况,需要进一步分析出用来结束迭代过程的条件。
本实施例中,确定迭代变量是将迭代变量确定为两组,一组为w和b,用来确定模型的参数权重,另外一组为Y,是模型的最终预测结果。建立迭代关系是根据模型对应的损失函数,建立变量间的依赖关系。迭代过程控制是对两组待求解变量分别固定,并对另一组变量进行求解,不断交替迭代,对变量值不断更新。终止条件是迭代直至目标函数值最终收敛于一稳定值,此时可确定模型参数值和最终的分类预测结果。
具体地,使用迭代算法时如下A1-A6所示:
(A1)先输入训练样本,
X=[X1,X2,Λ,Xt],Xt=[x1,x2,Λ,xn]∈Rd×n
其中t代表任务数,it表示迭代的次数,i表示类别数。
(A2)固定w和b,则目标函数转化为求解公式(2)
(A3)通过奇异值定理进行转化,将公式(1)转化为两个标准正交矩阵和对角矩阵乘积的形式,对于如下目标优化问题:
可解得等价解Y:
Y=U[I;0]VT (4)
其中U和V为奇异值分解后产生的正交矩阵,且有如下关系,其中A为一对角矩阵:
XTW+InbT=UAVT (5)
(A4)当Y被固定后,对目标函数分别关于b和wt,i求偏导,同时,让其右端等于零,可得:
其中,b
t,i是一个n
t*I的向量,对应于b
t的第i个元素,
为块对角矩阵,第j个对角元素为
I
j是维度为d
j的单位矩阵,因此有
(A5)更新迭代次数it=it+1,并更新变量值,并且有参数矩阵如下:
(A6)判断目标函数的损失值是否收敛于一稳定值,若不收敛,则重复步骤A2-A5,直至目标函数值收敛。
在该实施例中,使用split函数对分离结果进行分离。
在一个实施例中,基于多任务学习的数据分流训练方法还包括:调整数据包的大小,以固定数据包能够包含的数据总量。
通过调整数据包的大小,能够调整数据包能够包含的数据总量,从而使得数据包能够更加适合参与共享层的计算。
在一个实施例中,调整数据包的大小包括:获取训练设备为学习任务分配的资源,并根据资源及学习任务的任务数量调整数据包的大小,或者,获取数据集的大小的权重占比、不同学习任务的权重占比,根据数据集的大小的权重占比及不同学习任务的权重占比加权调整每个数据包的大小。
在本实施例中,获取设备为学习任务分配的资源,并根据资源及任务数量调整数据包的大小。
通过这种方式调整数据包的大小,能够使得多任务学习的过程中,充分利用训练设备的资源,从而防止训练设备的资源不够而导致学习速度缓慢的情况发生。
在其他实施例中,根据数据集的大小、不同学习任务的权重占比调整每个数据包的大小。
通过这种方式调整数据包的大小,在数据集中的数据大多数能参与共享层的计算时,减小数据包的数据量,这样就能够迭代出更多的数据包,从而可能会增加数据包领域场景的数量;而在数据集中的数据大多数不能够参与共享层的计算时,增大数据包的数据量,能够降低一个数据包内的数据均不能参与共享层的计算的几率。
在一个实施例中,共享层至少有两层。
在一个实施例中,共享层为预先构建的卷积层的最后一层。
在一个实施例中,损失计算包括:逻辑回归计算及对比损失计算。
在本实施例中,损失计算还可以使用交叉熵损失函数(Cross Entropy Loss)或二元交叉熵函数(Binary Cross Entropy)进行计算。
并且在本实施例的模型中,由于多个任务是独立的,因此在该模型中,可以使用不同的损失函数进行计算,因此一个模型中既可以使用交叉熵损失函数,又能够使用二元交叉熵函数,或者二个函数相结合的函数,可以根据任务的需要而选择使用不同的损失函数,只需要在不同任务的损失值进行合并时,根据不同的损失函数设定好不同的权重,就能够顺利的进行损失值的合并,从而使所有的目标任务均得到优化。另外,还可以在目标检测任务及分类任务时一起使用一个模型,目标检测任务即为上述实施例中对图像进行的识别,分类任务即为上述实施例中对图像进行的分类。
在一个实施例中,方法还包括:利用预先训练的数据筛选模型对数据集中的数据进行筛选。
数据筛选模型如图3所示,而在该实施例中,数据筛选模型的训练方法包括:构建输入层,用于接收数据集;构建与输入层连接的卷积层;构建与卷积层连接的区域提取网络层;构建与卷积层、区域提取网络层连接的池化层;构建与池化层连接的分类层,分类层用于将数据集内的数据分为可用数据及不可用数据;利用具有可用或不可用标签的数据对数据筛选模型进行训练。
通过筛选,能够去除完全无用的数据,从而使得多任务的学习所使用的数据噪声更小,精度更高。
请参阅图3,为本申请实施例提供的一种数据分流方法,包括:S11、获取摄像设备采集的数据集;S12、利用基于多任务学习的数据分流训练模型对数据集进行数据分流。
基于多任务学习的数据分流训练模型的训练方法包括上述任一实施例所述的基于多任务学习的数据分流训练方法中的步骤,具体请参阅上述基于多任务学习的数据分流训练方法的实施例,这里不再赘述。另外,在本实施例中,步骤S11使用的数据集为摄像设备采集的数据的集合,是将要进行分类的数据,步骤S12使用的多任务学习的数据分流训练模型,对上述数据集进行分类,而多任务学习的数据分流训练模型在预先的训练过程中,需要用到另一种数据集,用到的另一种数据集为样本数据的集合。
请参阅图4,为本申请实施例提供的一种数据分流系统,包括:数据集获取模块A1及分流模块A2;数据集获取模块A1用于获取摄像设备采集的数据集;分流模块A2用于利用预先训练的基于多任务学习的数据分流训练模型对数据集进行数据分流。
在一个实施例中,分流模块A2预先训练基于多任务学习的数据分流训练模型的部件包括:获取单元、数据集迭代单元、数据包拼接单元、数据输入单元、分离单元及学习单元;获取单元用于获取与学习任务数量相同数量的数据集;数据集迭代单元用于迭代所有的数据集,生成具有不同数据的数据包,每个数据包至少表示一个领域场景,且包含的数据小于数据集的数据;数据包拼接单元用于将所有数据包按照预定规则进行拼接,组成数据拼接集;数据输入单元用于将数据拼接集同批次输入预先构建的共享层;分离单元用于接收共享层输出的计算结果,并根据数据包对计算结果进行分离,得到分离结果;学习单元用于将分离结果输入至不同的学习任务进行学习,并完成损失计算及反向传播更新参数运算。
在本实施例中,数据集获取模块A1获取的数据集为摄像设备采集到的数据的集合,是将要进行分类的数据,分流模A2块对A1获取的数据集进行分类,但是在分流模块A2使用的多任务学习的数据分流训练模型在预先的训练过程中,需要用到另一种数据集,用到的另一种数据集为样本数据的集合。
其中,数据集迭代单元集成有迭代算法,具体可参阅基于多任务学习的数据分流训练方法的实施例中的相关描述,这里不再赘述。
在一个实施例中,分流模块A2还包括:数据包调整单元,用于调整数据包的大小,以固定数据包能够包含的数据总量。
在一个实施例中,数据包调整单元包括:资源获取子单元、数据集大小及权重占比获取子单元、调整子单元;资源获取子单元用于获取设备为学习任务分配的资源,数据集大小及权重占比获取子单元用于获取数据集的大小、不同学习任务的权重占比,调整子单元用于根据资源及学习任务的任务数量调整数据包的大小,或者,调整子单元用于根据数据集的大小及权重占比调整每个数据包的大小。
在一个实施例中,构建的共享层至少有两层。
在一个实施例中,共享层为预先构建的卷积层的最后一层。
在一个实施例中,学习单元包括:多任务学习子单元、损失计算子单元及参数更新子单元,多任务学习子单元用于将述分离结果输入至不同的学习任务进行学习,损失计算子单元用于计算函数的损失值,参数更新子单元用于反向传播更新参数。
其中,损失计算单元中集成了逻辑回归运算及对比损失计算,具体请参阅基于多任务学习的数据分流训练方法的实施例,这里不再赘述。
在一个实施例中,分流模块A2还包括:数据集筛选单元、数据筛选模型训练单元,数据集筛选单元用于使用数据筛选模型训练单元预先训练的数据筛选模型对数据集中的数据进行筛选。
数据筛选模型训练单元训练数据筛选模型的过程如下:构建输入层,用于接收数据集;构建与输入层连接的卷积层;构建与卷积层连接的区域提取网络层;构建与卷积层、区域提取网络层连接的池化层;构建与池化层连接的分类层,分类层用于将数据集内的数据分为可用数据及不可用数据;使用具有可用或不可用标签的数据对数据筛选模型进行训练。
本实施例提供的数据分流系统,能够对数据进行分流,分流出不同领域场景的数据包,从而在使用同批次的数据集的情况下,能够使用不同场景领域数据包及其对应的分离结果进行学习任务,从而增加了学习任务的领域场景的跨度,因此也增强了使用多任务学习训练出的图像分类模型的泛化能力。
本申请实施例提供一种电子装置,请参阅图5,该电子装置包括:存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,处理器602执行该计算机程序时,实现前述中描述的基于多任务学习的数据分流训练方法。
进一步的,该电子装置还包括:至少一个输入设备603以及至少一个输出设备604。
上述存储器601、处理器602、输入设备603以及输出设备604,通过总线605连接。
其中,输入设备603具体可为摄像头、触控面板、物理按键或者鼠标等等。输出设备604具体可为显示屏。
存储器601可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器601用于存储一组可执行程序代码,处理器602与存储器601耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子装置中,该计算机可读存储介质可以是前述中的存储器601。该计算机可读存储介质上存储有计算机程序,该程序被处理器602执行时实现前述实施例中描述的基于多任务学习的数据分流训练方法。
进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器601(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本发明所提供的一种基于多任务学习的数据分流训练方法及系统的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。