训练模型的迁移学习方法及终端设备与流程

文档序号:17605883发布日期:2019-05-07 20:43阅读:302来源:国知局
训练模型的迁移学习方法及终端设备与流程

本发明属于模型构建技术领域,尤其涉及一种训练模型的迁移学习方法及终端设备。



背景技术:

在传统的机器学习框架下,学习的任务就是根据给定充分训练数据的基础上构建一个新模型。然而,机器学习在当前的研究中存在着以下关键的问题:

1、训练新模型所需的大规模数据。通过针对某一具体领域的大规模数据并不好获取。

2、耗时长。深度学习是一个大型的神经网络,层数比较多,训练所需耗费时间较长,并且神经网络越复杂,数据越多,我们需要在训练过程上花费的时间也就越多。

3、消耗资源。神经网络通常需要大量的标记样本,通常大量的数据以及神经网络中各层的响应会消耗大量内存。传统的机器学习通常假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足,例如训练数据过期,导致需要我们去重新标注大量的训练数据以满足我们训练的需求,但标注新数据需要大量的人力与物力,并且即便我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。



技术实现要素:

有鉴于此,本发明实施例提供了一种训练模型的迁移学习方法及终端设备,可以解决现有技术中在面对某一领域的具体问题时,通常可能无法得到构建模型所需规模的数据,并且构建新模型耗时长、资源消耗较大的问题。

本发明实施例的第一方面提供了一种训练模型的迁移学习方法,包括:

根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集;

根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型;

根据所述训练数据集对应的所述验证数据集中的数据,对所述新模型的性能进行检测,获取检测结果;

根据上述步骤确定n组训练数据集和对应的n组验证数据集,获得n组新模型和n组检测结果,所述n大于等于1;

确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型。

在一实施例中,所述训练数据集和所述验证数据集是通过分层采样的方式获得的数据集。

在一实施例中,所述根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集,包括:

遍历所述数据集的所有非空子集n;

确定n个非空子集中的任意一个非空子集为所述训练数据集,所述数据集中除所述训练数据集之外的数据组成的集合为所述验证数据集。

在一实施例中,所述根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型,包括:

根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的训练权重重新训练,获取新的权重;

根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的参数进行调整,获取新的参数;

根据所述预训练模型中模型前端的层次中保持不变的训练权重、所述新的权重以及所述新的参数,获得新模型。

在一实施例中,所述确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型之后,还包括:

输出满足应用的所述目标新模型。

本发明实施例的第二方面提供了一种训练模型的迁移学习装置,包括:

划分模块,用于根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集;

训练模块,用于根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型;

测试模块,用于根据所述训练数据集对应的所述验证数据集中的数据,对所述新模型的性能进行检测,获取检测结果;

根据上述各模块确定n组训练数据集和对应的n组验证数据集,获得n组新模型和n组检测结果,所述n大于等于1;

确定模块,用于确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型。

在一实施例中,所述训练数据集和所述验证数据集是通过分层采样的方式获得的数据集;

所述划分模块,包括:

处理子模块,用于遍历所述数据集的所有非空子集n;

确定子模块,用于确定n个非空子集中的任意一个非空子集为所述训练数据集,所述数据集中除所述训练数据集之外的数据组成的集合为所述验证数据集。

在一实施例中,所述训练模块,包括:

第一训练子模块,用于根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的训练权重重新训练,获取新的权重;

第二训练子模块,用于根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的参数进行调整,获取新的参数;

第三训练子模块,用于根据所述预训练模型中模型前端的层次中保持不变的训练权重、所述新的权重以及所述新的参数,获得新模型。

本发明实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述训练模型的迁移学习方法所述的步骤。

本发明实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如训练模型的迁移学习方法所述的步骤。

本发明实施例与现有技术相比存在的有益效果是:本发明实施例提供的方案,通过将深度学习中的预训练模型中的部分层根据新领域的数据进行调整得到新模型,再对新模型进行评估、调整从而应用到实际问题,从而解决了现有技术中需要给定充分训练数据的基础上来学习一个新的模型,当需要的新模型是一个大型的神经网络时耗时长并且消耗资源多的问题。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种训练模型的迁移学习方法的流程示意图;

图2是本发明实施例提供的另一种训练模型的迁移学习方法的流程示意图;

图3是本发明实施例提供的一种训练模型的迁移学习装置的示例图;

图4是本发明实施例提供的另一种训练模型的迁移学习装置的示意图;

图5是本发明实施例提供的终端设备的示意图。

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

本发明实施例提供一种训练模型的迁移学习方法,如图1所示,该方法包括以下步骤:

步骤101,根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集。

可选的,训练数据集的作用是用来调整预训练模型,以便获得适用的新模型;验证数据集的作用为验证调整后的新模型是否适用。

可选的,如图2所示,本步骤可包括以下子步骤:

步骤1011,遍历所述数据集的所有非空子集n,所述n大于等于1。

步骤1012,确定n个非空子集中的任意一个非空子集为所述训练数据集,所述数据集中除所述训练数据集之外的数据组成的集合为所述验证数据集。这样可以确定n组训练数据集以及对应的验证数据集。

可选的,所述训练数据集和所述验证数据集是通过分层采样的方式获得的数据集,这样是为了保证数据分布的一致性。具体地,所述测试数据集通过分层采样的方式在所述数据集的任一非空子集中进行采样获得,所述数据集中除所述测试数据集之外的数据为所述训练数据集。例如,数据集的一个非空子集为a,则a为训练数据集,数据集中除a之外的数据组成的集合为验证数据集b,若数据集d中有m1个正样本,有m2个负样本,而a占d的比例为p,那么b占d的比例即为(1-p),则可以通过在m1个正样本中采集(m1*p)个样本作为训练数据集中的正样本,而通过在m2个负样本中采集(m2*p)个样本作为训练数据集中的负样本,其余的作为测试数据集中的样本。

步骤102,根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型。

可以理解的,如图2所示,该步骤包括以下子步骤:

步骤1021,根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的训练权重重新训练,获取新的权重。

可选的,在本步骤之前还可以包括:获取预训练模型,所述预训练模型包括训练权重。

在深度学习过程中,由于计算资源有限或者训练数据集较小,但我们又想获得较好较稳定的结果,故我们会首先获取一些已经训练好的模型,即预训练模型,直接对预训练模型进行重新训练获得新模型,而不必从零开始训练一个新模型,这样可以节省大量的人力物力。

一个预训练的源模型是从可用模型中挑选出来的,很多研究机构都发布了基于超大数据集的模型,这些都可以作为源模型的备选者。本方案获取的预训练模型为带有训练权重的预训练模型。

进一步可选的,深度学习通过前向计算和反向传播,不断调整参数,来提取最优特征,以达到预测的目的。模型前端的层次通常用来捕获输入数据的高级联系,例如图像边缘和主体等;模型后端的层次通常用来捕获有助于做出最终决定的信息,例如用来区分目标输出的细节信息。

获取预训练模型后,不需要重新训练整个结构,只需要针对其中的几层进行训练即可。即将模型起始的一些层的权重保持不变,重新训练后面的层,得到新的权重。即根据所述训练数据集中的数据,对获取的预训练模型中模型后端的层次中的训练权重重新训练,获取新的权重。

在调整模型的过程中,我们可以多次进行尝试,根据n组不同的训练数据集中的数据对预训练模型进行调整,从而能够依据结果找到冻层frozenlayers和再训练层retrainlayers之间的最佳搭配。

步骤1022,根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的参数进行调整,获取新的参数。

可选的,通过对预训练模型的参数进行微调,将训练好的模型应用到相似或者只有细微差异的不同任务中。

步骤1023,根据所述预训练模型中模型前端的层次中保持不变的训练权重、所述新的权重以及所述新的参数,获得新模型。

根据训练数据集中的数据,对获取的预训练模型重新训练,获得新模型之后,就可以采用验证数据集中的数据对新模型进行测试,看是否符合应用,继续执行步骤103。

步骤103,根据所述训练数据集对应的所述验证数据集中的数据,对所述新模型的性能进行检测,获取检测结果。

可以理解的,将验证数据集中的数据输入到新模型中,看新模型输出的结果的正确率,例如新模型为分类模型,检测结果可以为分类正确率。

可选的,根据步骤101至步骤103确定n组训练数据集和对应的n组验证数据集,这里,n组训练数据集可以训练出n个新模型,采用对应的验证数据集对新模型进行性能测试,可以获得n个检测结果。

步骤104,确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型。

可选的,如图2所示,在本步骤之后还包括:步骤105,输出满足应用的所述目标新模型。当新模型达到设定的预设指标值时,即可将新模型上线,投入生产中,得到供企业和用户使用的新模型。

本发明实施例提供一种训练模型的迁移学习方法,通过根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集;根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型;根据所述训练数据集对应的所述验证数据集中的数据,对所述新模型的性能进行检测,获取检测结果;根据数据集的非空子集确定n组训练数据集和对应的n组验证数据集,获得n组新模型和n组检测结果,确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型。可以解决现有技术中在面对某一领域的具体问题时,通常可能无法得到构建模型所需大规模的数据的问题,并且若在给定充分训练数据的基础上来学习一个新的模型,当需要的新模型是一个大型的神经网络时耗时长并且消耗资源多的问题。本方案通过迁移学习针对某种类型数据可以对预训练模型中的部分层进行重新训练,获得的新模型中的关系也可以轻松地应用于同一领域的不同问题。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本发明实施例提供一种训练模型的迁移学习装置,如图3所示,该装置包括:划分模块301,训练模块302,测试模块303,确定模块304。

划分模块301,用于根据数据集中的任一非空子集,确定一组训练数据集和对应的验证数据集。

可选的,所述训练数据集和所述验证数据集是通过分层采样的方式获得的数据集,这样是为了保证数据分布的一致性。

可选的,如图4所示,所述划分模块301,包括:处理子模块3011,确定子模块3012。

处理子模块3011,用于遍历所述数据集的所有非空子集n,所述n大于等于1;

确定子模块3012,用于确定n个非空子集中的任意一个非空子集为所述训练数据集,所述数据集中除所述训练数据集之外的数据组成的集合为所述验证数据集。

训练模块302,用于根据所述训练数据集中的数据,对获取的预训练模型重新训练,获得新模型。

可选的,如图4所示,所述训练模块302,包括:第一训练子模块3021,第二训练子模块3022,第三训练子模块3023。

第一训练子模块3021,用于根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的训练权重重新训练,获取新的权重;

第二训练子模块3022,用于根据所述训练数据集中的数据,对所述预训练模型中模型后端的层次中的参数进行调整,获取新的参数;

第三训练子模块3023,用于根据所述预训练模型中模型前端的层次中保持不变的训练权重、所述新的权重以及所述新的参数,获得新模型。

测试模块303,用于根据所述训练数据集对应的所述验证数据集中的数据,对所述新模型的性能进行检测,获取检测结果。

根据上述各模块确定n组训练数据集和对应的n组验证数据集,获得n组新模型和n组检测结果;

确定模块304,用于确定n组所述检测结果中准确率最高的检测结果对应的新模型为满足应用的目标新模型。

进一步的,如图4所示,本装置还包括输出模块305,确定模304确定目标新模块之后,输出模块305输出满足应用的所述目标新模型。当新模型达到设定的预设指标值时,即可将新模型上线,投入生产中,得到供企业和用户使用的新模型。

本发明实施例提供一种训练模型的迁移学习装置,通过迁移学习将深度学习中的预训练模型根据新领域的数据由训练模块进行调整得到新模型,再测试模块对获得的新模型进行评估,从而将确定模块确定的符合应用的目标新模型可以轻松地应用于同一领域的不同问题中。

图5是本发明一实施例提供的终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器501、存储器502以及存储在所述存储器502中并可在所述处理器501上运行的计算机程序503,例如训练模型的迁移学习程序。所述处理器501执行所述计算机程序503时实现上述训练模型的迁移学习方法实施例中的步骤,例如图1所示的步骤101至104,或者图2所示的步骤,101至步骤105,所述处理器501执行所述计算机程序503时实现上述各装置实施例中各模块的功能,例如图3所示模块301至304的功能,或者图4所示的模块301至305。

示例性的,所述计算机程序503可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器502中,并由所述处理器501执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序503在所述训练模型的迁移学习装置或者终端设备5中的执行过程。例如,所述计算机程序503可以被分割成划分模块301,训练模块302,测试模块303,确定模块304,各模块具体功能如图3所示,或者所述计算机程序503可以被分割成划分模块301,处理子模块3011,确定子模块3012,训练模块302,第一训练子模块3021,第二训练子模块3022,第三训练子模块3023测试模块303,确定模块304,输出模块305,各模块具体功能如图4所示,在此不再一一赘述。

所述终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器501、存储器502。本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器501可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述存储器502可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器502也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器502还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器502用于存储所述计算机程序以及所述终端设备5所需的其他程序和数据。所述存储器502还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。

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