一种用于分布式模型训练的目标数据方筛选方法及系统
技术领域
本说明书一个或多个实施例涉及多方模型训练,特别涉及一种用于分布式模型训练的目标数据方筛选方法及系统。
背景技术
在数据分析、数据挖掘、经济预测等领域,分布式模型训练可以在保证多方数据安全的情况下,协同训练机器学习模型供多方共同使用的场景。在分布式模型训练中,希望多个数据方所持有的训练数据更适于目标模型训练。另外,在一些应用场景中,没有数据的一方(或称为任务方)期望能通过除数据共享以外的利益分配方式参与分布式模型训练从而获得满足自身业务需要的目标模型,拥有数据的一方也期望获得除数据共享的额外收益。
因此,有必要提出一种用于分布式模型训练的目标数据方筛选方法以筛选出与训练任务更适配的数据方进行模型训练。
发明内容
本说明书一个方面提供一种用于分布式模型训练的目标数据方筛选方法,其中,目标数据方将参与分布式模型训练以获得目标模型,所述方法包括:从任务方获取训练任务信息;所述训练任务信息包括待预训练模型信息以及待训练目标模型信息;接收来自多个数据方中的至少一个数据方的接受任务指示,得到备选数据方集合,其中,备选数据方集合中包括发出接受任务指示的数据方;将所述待预训练模型信息下发给所述备选数据方集合中的各数据方;获取所述各数据方的预训练模型;其中,所述各数据方的预训练模型是各数据方基于自身持有的训练样本以及所述待预训练模型信息进行模型训练得到的;获取各预训练模型的性能指标参数;至少基于各预训练模型的性能指标参数,从备选数据方集合中确定一个或多个目标数据方;将所述待训练目标模型信息下发给各目标数据方,以便与各目标数据方协同训练得到目标模型。
本说明书另一个方面提供一种用于分布式模型训练的目标数据方筛选的系统,所述系统由参与方中的服务端实现,其中参与方包括多个数据方、任务方以及服务端,所述系统包括:训练任务信息获取模块:用于从任务方获取训练任务信息;所述训练任务信息包括待预训练模型信息以及待训练目标模型信息;备选数据方集合确定模块:用于接收来自所述多个数据方中的至少一个数据方的接受任务指示,得到备选数据方集合,其中,备选数据方集合中包括发出接受任务指示的数据方;待预训练模型信息下发模块:用于将所述待预训练模型信息下发给所述备选数据方集合中的各数据方;预训练模型获取模块:用于获取所述各数据方的预训练模型;其中,所述各数据方的预训练模型是各数据方基于自身持有的训练样本以及所述待预训练模型信息进行模型训练得到的;性能指标参数获取模块:用于获取各预训练模型的性能指标参数;目标数据方确定模块:用于至少基于各预训练模型的性能指标参数,从备选数据方集合中确定一个或多个目标数据方;目标模型协同训练模块:用于将所述待训练目标模型信息下发给各目标数据方,以便与各目标数据方协同训练得到目标模型。
本说明书另一个方面提供一种用于分布式模型训练的目标数据方筛选的装置,所述装置包括处理器以及存储器;所述存储器用于存储指令,所述处理器用于执行所述指令,以实现所述用于分布式模型训练的目标数据方筛选的方法。
附图说明
本说明书将以示例性实施例的方式进一步描述,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1为根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法的示例性应用场景图;
图2是根据本说明书一些实施例所示的一个用于分布式模型训练的目标数据方筛选的系统框图;
图3是根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法的示例性流程图;
图4是根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法的交互示意图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本说明书中所使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
在经济、文化、教育、医疗、公共管理等各行各业充斥的大量信息数据,对其进行例如数据分析、数据挖掘、以及趋势预测等的数据处理分析在越来越多场景中得到广泛应用。其中,通过数据合作的方式可以使多个数据拥有方获得更好的数据处理结果。例如,可以通过分布式模型训练综合多个数据拥有方的数据来获得性能更好的模型参数。
在一些实施例中,基于分布式模型训练可以应用于在保证各方数据安全的情况下,各方协同训练机器学习模型供多方使用的场景。在这个场景中,多个数据方拥有自己的数据,他们想共同使用彼此的数据来统一建模(例如,分类模型、线性回归模型、逻辑回归模型等),但并不想各自的数据(尤其是隐私数据)被泄露。例如,互联网储蓄机构A拥有一批用户数据,银行B拥有另一批用户数据,基于A和B的用户数据确定的训练样本集可以训练得到性能更好的机器学习模型。A和B都愿意通过彼此的用户数据共同参与模型训练,但因为一些原因A和B不愿意自己的用户数据信息遭到泄露,或者至少不愿意让对方知道自己的用户数据信息。一种典型的分布式模型训练可以是基于联邦学习的模型训练。
在一些实施例中,在分布式模型训练中,由于各数据方持有的数据存在差异,在进行分布式模型训练时,一部分数据方所持有的数据对多方联合训练的模型训练产生贡献较少,甚至会对模型训练过程产生负面影响。在又一些应用场景中,没有数据的一方(或称为任务方)期望能通过除数据共享以外的利益分配方式参与分布式模型训练从而获得满足自身业务需要的目标模型,拥有数据的一方也期望获得除数据共享的额外收益。例如,任务方没有数据可以参与分布式模型训练但是愿意向数据方提供资金奖励,以获得多个数据方联合训练获得的目标模型,而数据方也希望通过分布式模型训练获得额外的收益。然而,并非任意数据方的数据都适用于目标模型的训练,需要基于训练任务对数据方进行筛选。因此,在采用分布式模型训练对目标模型进行正式训练之前,往往需要采用一定的方式对各数据方的训练数据进行筛选,以选择出合适的数据方参与后续的正式训练。
在本说明书的一些实施例中,在目标模型训练之前,分布式训练任务的参与方中的服务器可以基于训练任务对各数据方持有的数据进行筛选,以选择合适的数据方参与训练。具体地,服务器可以对所有拟参与训练的备选数据方提供待预训练模型,各个备选数据方可以基于自身持有的数据对待预训练模型进行训练,得到预训练模型并上传给服务器。进一步地,服务器可以根据各个备选数据方提供的预训练模型的模型性能参数进行筛选,从而选择模型性能参数满足预设要求的目标数据方参与正式的目标模型训练。服务器在确认目标数据方后,将待训练目标模型下发给各个目标数据方,各目标数据方可以正式地进行目标模型的分布式训练,如基于联邦学习的模型训练。其中,目标模型可以是基于具体需要确定的机器学习模型,包括但不限于,人脸识别模型、对象推荐模型、收益预测模型等等,相应的,本说明书各实施例涉及的训练样本可以包括但不限于图像数据、文本数据、视频数据和音频数据等一种或多种的组合。
图1为根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法的示例性应用场景图。
在一些实施例中,用于分布式模型训练的目标数据方筛选的系统100包括第一数据方110、第二数据方120、服务端130、任务方140以及网络150。在一些实施例中,多个数据方、服务端以及任务方组成了分布式模型训练的参与方。其中,第一数据方110可以理解为第一训练成员,包括处理设备110-1,存储设备110-2;第二数据方120可以理解为第二训练成员,包括处理设备120-1,存储设备120-2;训练成员拥有训练样本或训练数据,可以基于自身持有的数据在本地进行模型训练,再将模型训练数据(如本地模型参数或梯度信息)上传给服务端,之后从服务端获取更新后的目标模型的模型参数,再基于更新后的目标模型的模型参数继续在本地进行模型训练,如此经过多轮迭代,协同其他参与方获得训练好的目标模型。服务端130包括处理设备130-1,存储设备130-2。在一些实施例中,服务端130不具有训练数据,主要协同各数据方完成待训练目标模型的参数更新,或者基于任务方发布的任务信息从多数据方中筛选出目标数据方,进行目标模型训练。在一些实施例中,服务端130也可以拥有训练数据,并在必要时作为训练成员参与到模型训练中。在一些实施例中,任务方140可以不具有训练数据,或者其拥有的训练数据不适于训练其需要的目标模型。任务方140可以仅发布训练任务以及提供训练奖励,以获得其他训练成员协同服务端获得的目标模型。需要注意的是,图1仅作为示例性的说明,图1中训练成员的数量可以为两方,在其他实施例中,还可以包括第三方训练成员、第四方训练成员以至第N方训练成员等。
图1中各方的处理设备,如处理设备110-1、120-1、130-1和140-1,可以进行数据和/或指令处理,以实现本说明书中的示例性方法。例如,第一数据方110的处理设备110-1可以基于自身持有的训练样本对待预训练模型进行训练,得到训练好的预训练模型。服务端130的处理设备130-1可以对各训练成员上传的预训练模型进行测试,获得第二性能指标参数。
图1中各方的存储设备,如存储设备110-2、120-2、130-2和140-2可以存储对应处理设备执行使用的数据和/或指令。例如,存储设备110-2和120-2可以分别用于存储训练样本,又例如,存储设备140-2可以存储获得的目标模型。
网络150可以促进信息和/或数据的交换。在一些实施例中,目标数据方筛选的系统100(例如,第一数据方110、第二数据方120、服务端130和任务方140)的一个或以上部件可以经由网络150向所述系统100中的其他部件发送信息和/或数据。例如,第二数据方120可以经由网络150从服务端130中获得待训练的目标模型信息。又例如,服务端130可以经由网络从各数据方获得预训练模型及其第一性能指标参数。在一些实施例中,网络150可以为任意形式的有线或无线网络,或其任意组合。
图2是根据本说明书一些实施例所示的一个用于分布式模型训练的目标数据方筛选的系统框图。
在一些实施例中,所述系统200由参与方中的服务端实现,其中参与方包括多个数据方、任务方以及服务端,所述系统200可以包括训练任务信息获取模块210、备选数据方集合确定模块220、待预训练模型信息下发模块230、预训练模型获取模块240、性能指标参数获取模块250、目标数据方确定模块260、目标模型协同训练模块270。
训练任务信息获取模块210,可以用于从任务方获取训练任务信息;所述训练任务信息包括待预训练模型信息以及待训练目标模型信息。
备选数据方集合确定模块220,可以用于接收来自所述多个数据方中的至少一个数据方的接受任务指示,得到备选数据方集合,其中,备选数据方集合中包括发出接受任务指示的数据方。
待预训练模型信息下发模块230,可以用于将所述待预训练模型信息下发给所述备选数据方集合中的各数据方。
预训练模型获取模块240,可以用于获取所述各数据方的预训练模型;其中,所述各数据方的预训练模型是各数据方基于自身持有的训练样本以及所述待预训练模型信息进行模型训练得到的。
性能指标参数获取模块250,可以用于获取各预训练模型的性能指标参数。
目标数据方确定模块260,可以用于至少基于各预训练模型的性能指标参数,从备选数据方集合中确定一个或多个目标数据方。
目标模型协同训练模块270,可以用于将所述待训练目标模型信息下发给各目标数据方,以便与各目标数据方协同训练得到目标模型。
在一些实施例中,性能指标参数获取模块250还用于:从各预训练模型对应的数据方处获得相应预训练模型的第一性能指标参数;基于测试集对各预训练模型进行测试,获得各预训练模型的第二性能指标参数;所述测试集包括多个测试样本;基于各预训练模型的第一性能指标参数与第二性能指标参数,得到各预训练模型的过拟合指标。在一些实施例中,所述测试集中的测试样本来自一个或多个数据方,或者所述测试集来自任务方。
在一些实施例中,目标数据方确定模块260还用于:基于各预训练模型的性能指标参数以及所述性能筛选阈值,从备选数据方集合中确定一个或多个目标数据方。
在一些实施例中,目标数据方确定模块260还用于:将各预训练模型的性能指标参数分别与所述性能筛选阈值进行比较;将比较结果满足预设条件的预训练模型的性能指标参数降序排序;取排序靠前的N个预训练模型对应的数据方,作为所述目标数据方;N为大于0的整数。
在一些实施例中,目标数据方确定模块260还用于:基于所述训练任务信息中的对训练样本的描述信息以及发出接受任务指示的各数据方的数据描述信息,确定发出接受任务指示的数据方是否作为所述备选数据方集合中的数据方。
在一些实施例中,所述系统还包括任务奖励确定模块280;所述任务奖励确定模块280用于:从各目标数据方获取其进行模型训练使用的训练样本的数量;基于所述各目标数据方的所述训练样本的数量以及所述任务总奖励确定各目标数据方的任务奖励。
应当理解,本说明书一个或多个实施中的所述系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于处理设备及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。
图3是根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法的示例性流程图。在一些实施例中,流程300可以由服务端(如服务端130的处理设备)执行。例如,流程300可以进一步由设置于服务端处的系统200实现。
步骤310,从任务方获取训练任务信息。在一些实施例中,步骤310由训练任务信息获取模块210完成。
训练任务信息获取模块210可以从任务方处获得训练任务信息。训练任务信息是指各数据方参与分布式模型训练时,需要知晓或使用的信息。训练任务信息可以是任务方基于自身业务需要提出的模型训练任务,具体可以包括待预训练模型信息以及待训练目标模型信息。在一些实施例中,任务方可以通过网络将训练任务信息发送给服务端和各数据方。
在一些实施例中,待预训练模型信息是指预训练时任务方提供的待训练模型的参数信息,包括但不限于待预训练模型
的结构、待预训练模型
的初始化参数、损失函数、初始的学习率、正则化系数以及其他超参数的一种或多种的组合。在一些实施例中,待预训练模型主要用于检验数据方的训练样本是否适于训练目标模型,因此,待预训练模型可以是待训练目标模型的“简化版”。仅作为示例,待训练目标模型为神经网络模型,待预训练模型相对于待训练目标模型具有较少的神经元或中间层(隐层),例如具有更少的卷积层或池化层。在一些实施例中,训练任务信息可以仅指定待预训练模型的结构信息,如模型类型或者模型包括的网络结构以及模型参数规模等信息。在又一些实施例中,训练任务信息还可以指定待预训练模型的初始化参数。不难理解,通过规定参与预训练的各个数据方基于自身持有的训练样本对相同的初始模型进行预训练,更便于比较各数据方训练得到的预训练模型的性能优劣。
在一些实施例中,待训练目标模型信息是指正式训练时任务方提供的待训练目标模型的信息,包括但不限于待训练目标模型的结构和初始化参数、损失函数、初始的学习率、正则化系数以及其他超参数的一种或多种的组合。
在一些实施例中,训练任务信息还可以包括任务总奖励。任务总奖励是指实际参与并完成本次分布式模型训练的所有数据方能够得到奖励的总和。换而言之,是任务方进行此次目标模型训练所愿花费的代价。在一些实施例中,任务奖励可以是对数据方有利的任何资源。例如,奖金、其他有用的数据资源、或其他资格的准入条件等。在一些实施例中,服务端可以根据各数据方对目标模型训练的贡献下发对应的任务奖励。关于服务端根据各数据方的具体表现按比例下发任务奖励的更多细节,可以参见图3步骤380的相关描述,在此不再赘述。
在一些实施例中,训练任务信息还可以包括任务方对训练样本的描述信息,用于表征任务方对训练样本的要求。训练样本的描述信息可以包括以下中的一种或多种的组合:训练样本类型要求、训练样本特征要求、训练样本标签要求、训练样本数据量要求等一种或多种的组合。其中,训练样本类型要求可以包括图像数据、音频数据或文本数据等类型。训练样本特征要求可以包括训练样本涉及特征类型,如性别、职业、年龄阶段等特征。训练样本标签要求则可以包括训练样本所属的类别,仅作为示例,涉及人脸识别(基于人脸图像确定用户身份信息)的训练任务时,任务方可以指定训练样本的标签应包括身份信息。训练样本数据量要求则可以指定用于训练的样本数据,具体可以是1000条,5000条不等。
在一些实施例中,训练任务信息还可以包括性能筛选阈值。性能筛选阈值可以用于从备选数据方集合中确定一个或多个目标数据方。有关性能筛选阈值的更多说明可参见步骤360中的相应描述,此处不再赘述。
步骤320,接收来自多个数据方中的至少一个数据方的接受任务指示,得到备选数据方集合。在一些实施例中,步骤320由备选数据方集合确定模块220完成。
备选数据方集合确定模块220可以基于各数据方的接受任务指示,得到备选数据方集合。例如,备选数据方集合确定模块220可以将所有有意向参与目标模型训练的各个数据方集合至一起,组成备选数据方集合。
在一些实施例中,备选数据方集合确定模块220还可以对有意向参与目标模型训练的各个数据方进行筛选,将筛选后得到的数据方集合组成备选数据方集合。在一些实施例中,备选数据方集合确定模块220可以在获取各数据方接受任务指示信息的同时,获取到这些数据方发布的数据描述信息。所述数据方的数据描述信息可以与任务方对训练样本的描述信息对应设置,备选数据方集合确定模块220进而可以对比各个数据方的数据描述信息与任务方对训练样本的描述信息,筛选出满足任务方要求的备选数据方集合。以发布接受任务指示的数据方i为例,任务方对训练样本的要求为训练样本的数据类型是图片,而训练成员i的训练样本为文本形式,则确定训练成员i不能进入备选数据方集合。
需要说明的是,任务方对训练样本的描述信息可以理解为任务方对训练样本的要求;而数据方的数据描述信息可以理解为数据方提供的自身数据情况的说明。
在一些实施例中,各数据方可以事先通过网络将数据描述信息公布给系统100中的其他参与方(如服务端130、任务方140以及其他数据方)。以便数据方直接了解训练任务信息,确定是否参与任务。
在一些实施例中,数据方还可以向系统100中的其他参与方公布参与任务的方式,例如包括使用数据方提供的训练样本进行分布式模型训练时是否需要等待数据方内部的权限校验程序,数据方能够接收的奖励下限,或者数据方能否参与任务的时间段等。服务端还可以基于数据方参与任务的方式进行分布式模型训练,或奖励确定,另一方面,服务端也可以基于此确定数据方是否进入备选数据方集合。
通过上述设置,服务端可以对各数据方进行初步筛选,直接过滤掉不符合参与任务条件的数据方,从而保证任务能顺利完成。
步骤330,将所述待预训练模型信息下发给所述备选数据方集合中的各数据方。在一些实施例中,步骤330由待预训练模型信息下发模块230完成。
待预训练模型信息下发模块230可以将步骤310中获取的待预训练模型信息下发给备选数据方集合中的各数据方。
步骤340,获取所述各数据方的预训练模型。在一些实施例中,步骤310由预训练模型获取模块240完成。
不妨假设数据方c、i、k为各预训练模型对应的数据方(即备选数据方集合中的各数据方);
分别为数据方c、i、k利用自身持有的训练样本训练待预训练模型
得到的模型。在一些实施例中,预训练模型获取模块240可以获取备选数据方集合中的各数据方的训练好的预训练模型
。在一些实施例中,预训练模型可以以密文形式传输。例如,各数据方利用服务端的公钥加密预训练模型(如加密预训练模型的模型参数),服务端收到加密后的预训练模型,利用其私钥解密。
步骤350,获取各预训练模型的性能指标参数。在一些实施例中,步骤350由性能指标参数获取模块250完成。
性能指标参数S是指用于衡量模型性能优劣的参数。性能指标参数可以包括以下中的一种或多种的组合:错误率、精度、查准率、查全率、AUC、ROC等。
在一些实施例中,性能指标参数获取模块250可以从各预训练模型对应的数据方处获得相应预训练模型的第一性能指标参数
。可以用
,分别表示各数据方预训练模型对应的第一性能指标参数,其中下标表示对应的数据方。在一些实施例中,数据方c、i、k可以将自身持有的部分训练样本作为测试集,对本地训练的预训练模型进行测试,得到其对应的第一性能指标参数
。
在一些实施例中,性能指标参数获取模块250可以基于预先设置好的测试集X对各预训练模型
进行测试,获得各预训练模型的第二性能指标参数
。其中,测试集X包括多个测试样本。
在一些实施例中,测试集X中的测试样本可以来自一个或多个数据方。在该场景的实施例中,各预训练模型对应的数据方c、i、k分别将自身持有的一部分样本发送给服务器,进而将所有数据方发送的样本求并集得到测试集X。通过这样的设置,可以提升测试集X中测试样本的多样性和随机性,进而提高第二性能指标参数
的准确度。
在一些实施例中,测试集X中的测试样本还可以来自任务方所提供的样本。在一些替代性实施例中,测试集X中的测试样本还可以来自任务方提供的样本以及各预训练模型对应的数据方c…i…k所提供样本的并集。
在一些实施例中,服务端可以将各预训练模型的第一性能指标参数或者第二性能指标参数确定为该预训练模型的所述性能指标参数。在又一些实施例中,服务端可以对各预训练模型的第一性能指标参数与其第二性能指标参数进行运算,得到该预训练模型的所述性能指标参数。
步骤360,至少基于各预训练模型的性能指标参数,从备选数据方集合中确定一个或多个目标数据方。在一些实施例中,步骤310由目标数据方确定模块260完成。
在一些实施例中,目标数据方确定模块260可以基于性能筛选阈值,从备选数据方集合中确定一个或多个目标数据方。性能筛选阈值
由任务方提供,是用以衡量数据方训练得到的预训练模型的性能是否满足任务方的预设要求。在一些实施例中,性能筛选阈值
可以有多个,例如
等。
在一些实施例中,目标数据方确定模块260可以将满足性能筛选阈值
的性能指标参数的数据方确定为目标数据方。在该场景的实施例中,目标数据方确定模块260可以将各预训练模型的性能指标参数分别与所述性能筛选阈值进行比较。以数据方k对应的性能指标参数
作为示例,如果数据方k对应的性能指标参数满足门限
(如
),则说明数据方k满足任务方的预设要求,数据方k可以被确定为目标数据方。
需要说明的是,性能指标参数
与性能筛选阈值
之间的关系可以根据实施场景具体地设置。例如,任务方的预设要求可以是性能指标参数
与性能筛选阈值
之间的任意关系(如
)。
在一些实施例中,数据方k对应的性能指标参数
可以是第一性能指标参数
、第二性能指标参数
或者是以上两个参数
、
以任意算式或者函数进行运算的结果的任意一个,所述算式或者函数包括但不限于求和、求平均、加权平均、差值、方差等方式。仅作为示例,目标数据方确定模块260可以基于各预训练模型的第一性能指标参数与第二性能指标参数,得到各预训练模型的过拟合指标
。
在本说明书约定的表示中,训练成员k的过拟合参数
可以表示为,
第一性能指标参数
与第二性能指标参数
之间的差距能够反映模型的过拟合程度;过拟合指标
越大,则证明模型
对不同测试集的性能差距越大,说明模型
的泛化能力越差。
在一些实施例中,可以设置当
时,数据方k满足任务方的预设要求。
在一些实施例中,只有当数据方k的性能指标参数及满足多个性能筛选阈值
时,数据方k才能被确定为目标任务方。例如,当且仅当
并且
时,数据方k被视为满足任务方要求。
在一些实施例中,目标数据方确定模块260还可以将满足性能筛选阈值
条件的数据方基于其预训练模型的性能指标参数进行降序排序,并选取排序靠前的N个数据方,作为所述目标数据方;N为大于0的整数。例如,满足性能筛选阈值
条件的数据方共有100个,N设为10,则目标数据方确定模块260取排序靠前的前10个数据方作为目标数据方,参与待训练目标模型的训练。
在一些替代性实施例中,目标数据方确定模块260还可以不对数据方对应的性能指标参数进行阈值筛选,直接对各数据方对应的性能指标参数进行降序排序,并从中选择排序靠前的N个预训练模型对应的数据方,作为所述目标数据方。
步骤370,将所述待训练目标模型信息下发给各目标数据方。在一些实施例中,步骤370由目标模型协同训练模块270完成。
在一些实施例中,基于步骤360确定的目标数据方,目标模型协同训练模块270可以将待训练目标模型信息下发给各目标数据方,各目标数据方协同训练得到更新后的目标模型。
可选的,流程300还可以包括步骤380,确定各目标数据方的任务奖励。在一些实施例中,步骤380由任务奖励确定模块280完成。
在一些实施例中,当训练任务信息包括任务总奖励信息R时,任务奖励确定模块280可以确定下发给完成模型训练的各目标数据方的奖励。例如,任务奖励确定模块280可以确定各目标数据方的奖励系数,根据奖励系数以及总奖励值确定下发给各目标数据方的奖励。
在一些实施例中,各目标数据方的奖励系数可以依照各目标数据方参与协同训练的样本数量来衡量。具体地,各目标数据方可以将自身参与协同训练的样本数量发送给服务端,服务端根据各目标数据方的样本数据以及各目标数据方的样本数量总和确定各目标数据方的奖励系数。例如,假设第一个目标数据方对应使用的训练样本数量为
,第二个目标数据方对应使用的训练样本数量为
,第k个目标数据方对应使用的训练样本数量为
。
在本说明书约定的表示中,目标数据方i对应的奖励系数
可以表示为:
在本说明书约定的表示中,目标数据方i获得的奖励可以表示为:
通过这样的设置,每个参与训练的目标数据方都可以按照各自的奖励系数获得任务奖励,由于奖励系数与数据方使用的训练样本数量成正比,因此,可以解决服务端对贡献较大的数据方奖励分配不合理的问题。
需要说明的是,本领域技术人员可以在步骤380的基础上对本说明书涉及的任务奖励的确认方法做出各种合理的变换。在一些实施例中,可以基于各目标数据方对模型训练效果的贡献设置奖励系数。例如,可以假设所有目标数据方进行训练得到的模型效果为m,除去目标数据方i后的模型效果为ni(目标数据方i的贡献度mi=m-ni),则目标数据方i的奖励系数可以为mi/m。又例如,还可以基于服务器的运算次数(算力需求)或者各目标数据方的电量消耗等具体地设置奖励系数。类似这样的变换,仍处于本申请的保护范围之内。
在一些实施例中,服务端获得各数据方的训练样本数量
可以是密态的。在一些实施例中,训练成员i通过加密的方式将训练样本数量
发送给服务器。例如,用密钥加密的方法对训练样本数量
进行加密。又例如,采用秘密分享的方法对训练样本数量
进行加密。
以基于秘密分享为例,各训练成员可以将自身的训练样本数量进行拆分,得到多个,如k个数据分片。仅作为示例,训练成员
i拆分其训练样本数量
得到的k个数据分片,各数据分片的求和结果等于训练样本数量
。训练成员
i将其自身的k-1个数据分片发送给其他k-1个训练成员,同时获得来自其他k-1个训练成员的数据分片,再基于自身的训练样本数量
的保留数据分片与来自其他k-1个训练成员的数据分片按照事先约定好的顺序进行拼接得到密文形式的拼接数据分片,如按照训练成员序号将不同训练成员的数据分片从上到下拼接,或从左到右拼接。最后训练成员
i将拼接数据分片传输给服务器。服务器从k各训练成员处获得密文形式的拼接数据分片后,对各拼接数据分片求和,便可得到总训练样本数量n。
在一些实施例中,服务端可以将确定的各目标数据方的任务奖励发送给任务方,以便任务方在获得训练好的目标模型后向各目标数据方交付奖励。在一些实施例中,任务方也可以在获取到训练好的目标模型后,将总奖励交付给服务端,服务端基于各目标数据方的任务奖励完成交付。
应当注意的是,上述有关流程300的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程300进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图4是根据本说明书的一些实施例所示的用于分布式模型训练的目标数据方筛选方法400的交互示意图。
如图4所示,在一个具体的实施例中,服务端、任务方与各数据方通过数据交互实现了如上所述的用于分布式模型训练的目标数据筛选方法。如图4中,整个数据交互过程分为初始信息确认过程、预训练过程和目标模型训练过程。
首先进行初始信息确认过程。初始信息确认过程是指服务端、任务方与各数据方将所持有数据进行交互的过程。该过程中可以确定参与预训练的备选数据方,包括以下步骤:
任务方确认任务。所述任务可以是指训练任务信息任务方确认任务后,可以向服务端以及各数据方发布任务。
各数据方可以对各自的数据信息进行整理和确认,并将数据描述信息发送至各参与方。
然后,各数据方基于训练任务信息确定是否参与任务,并向服务端示意接受任务。
服务端可以对有意向参与任务的各数据方的数据信息进行筛选,确定备选数据方集合。
自此完成了整个流程的初始信息确认过程。而后,进入整个流程的预训练过程:
服务端将训练任务信息中的待预训练模型信息下发给各备选数据方;各备选数据方基于本地存储的训练样本对待预训练模型
进行训练,得到对应的训练后的预训练模型。
服务端获取各数据方的预训练模型
。在一些实施例中,服务端还获得各数据方上传的第一性能参数。
自此完成了整个流程的预处理过程。而后,进入整个流程的目标模型训练过程:
服务端筛选目标数据方。在一些实施例中,服务器可以基于各数据方的预训练模型
的性能指标参数对备选数据方集合中的各数据方进行筛选,确定一个或多个目标数据方。
服务端筛选出目标数据方后,可以将从任务方获取的待训练目标模型信息下发给各目标数据方。
各目标数据方基于自身的训练样本对待训练目标模型进行协同训练得到目标模型。
训练完成后,服务端将训练好的目标模型上传给任务方。
任务方发放奖励。任务方可以基于奖励系数,向完成模型训练的所有目标数据方发放各自对应的奖励。
下面以联邦学习为例对多目标数据方协同训练目标模型进行示意性说明。假设联邦学习模型训练的参与方包括至少一个服务器和k个目标数据方,目标数据方是指参与联邦学习模型训练的数据持有者。服务器将待训练目标模型信息下发给多个目标数据方,多个目标数据方基于待训练目标模型信息以及自身持有的训练样本进行模型训练,以得到训练后(如经过一个batch的训练样本训练后,一个batch的训练样本可以包括多条训练样本,仅作为示例,100条)的模型,然后多个目标数据方再将模型训练数据(如训练获得的模型参数或梯度信息等)上传至服务器,使得服务器可以基于训练数据更新目标模型的模型参数。之后服务器可以将更新后的目标模型的模型参数下发给各目标数据方,目标数据方利用自身持有的训练数据对更新后的目标模型再次进行模型训练,如此经过多轮迭代,最终各参与方可以获得训练好的目标模型。
本说明书实施例可能带来的有益效果包括但不限于:(1)对多个数据方采用预训练的方式进行训练,获取其对应的预训练模型性能参数,以此挑选出合适的数据方进行目标模型训练,能有效提升目标模型的性能;(2)能够使得没有数据的任务方参与到分布式模型训练中,享受训练结果,同时为数据方带来了额外的收益,使得数据资源得到充分利用。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。