一种基于数据分离的联合模型训练方法及系统与流程

文档序号:32741988发布日期:2022-12-30 19:22阅读:28来源:国知局
一种基于数据分离的联合模型训练方法及系统与流程

1.本发明涉及人工智能领域,特别是深度神经网络技术,以及分布式计算技术领域。


背景技术:

2.随着人工智能理论和技术的不断发展,其社会影响日益扩大,越来越多的产业得到人工智能技术的赋能。深度学习技术作为人工智能的重要组成部分,已逐渐成为学术界和工业界的研究热点之一。深度学习技术实践的一个重要特点是,首先将所要解决的问题抽象为一个优化问题,然后在大量数据中不断优化模型。这些数据经历了人工的收集和整理,能够描述问题的输入和期望的输出。深度学习模型通过在足够多次的迭代优化之后,学习到数据中隐含的模式,最终生成模型结果。因此,数据是深度学习技术开展过程中的重要元素,它在某种程度上决定了最终模型的功能和性能水平。
3.运用深度学习技术解决问题的一般场景是,业务方负责搜集和整理业务数据,并负责组织计算资源搭建深度学习模型训练环境。但是,近年来随着人工智能技术应用不断深入,所需解决的问题日趋复杂。这类问题通常需要更加庞大的数据集作为模型训练的基础。例如,包含更多样化的样本的数据集有利于模型处理特例问题,包含更多维度信息的数据集有利于模型进一步优化问题的解,包含更多样本数量的数据集能够增强模型的鲁棒性等等。总之,为了解决更加复杂的问题,业务方需要搜集更加广泛的数据。然而,业务方的数据资源是有限的,业务方本身的数据有时难以支持所有业务需求。新的业务需求促使业务方寻找相应的合作伙伴,借此引入合作方数据,以期训练更加健壮的深度学习模型。在这样的场景下,数据安全问题通常会作为合作的基础,业务方需要在利用各个参与方的数据的同时,保护好各参与方的数据安全。
4.常用的数据安全保护机制是数据加密技术。数据加密技术是为提高信息系统和数据的安全性和保密性,防止秘密数据被外部破译而采用的主要技术手段之一。按照作用的不同,数据加密技术可分为数据传输加密技术、数据存储加密技术、数据完整性的鉴别技术和密钥管理技术。参与方在提供数据支持时,需要考虑数据传输和数据存储过程中对数据进行加密处理,防止数据以明文的形式出现。因此,在正常的数据加密的情况下,业务方仅能通过密文形式访问到合作方的数据。但是,深度学习模型的训练是基于训练数据的,深度学习技术通过在大量数据中不断迭代来学习数据中蕴含的某些特征。如果数据加密技术对数据的更改破坏了数据的统计特性,则可能会造成模型在训练过程中无法获取有效的信息,导致训练不能收敛,最终无法建立模型。所以,一般的数据加密技术通常难以直接用于深度学习模型的训练过程。
5.常用的同态加密技术(homomorphic encryption)可以用于深度学习模型训练过程。同态加密技术能够对训练数据进行加密,加密后的数据仅允许密钥拥有者解密和访问。同态加密技术同时保证在加密数据集上的计算与在明文数据集上的计算等价,从而保证基于密文训练集的模型与基于明文训练的模型具有同等的性能水平,进一步支持业务方直接将加密数据用于深度学习。因此,在深度学习模型联合训练时,同态加密技术是确保各个参
与方数据安全性的解决方案之一。
6.模型微调技术(finetune)通常可以作为深度学习模型联合训练的方法之一。模型微调是指,模型训练起始采用已经训练过的模型作为基础,制定新的训练方案,最终输出新的训练模型。也就是说,当需要在合作方的数据集上训练模型时,业务方将已有的模型保存为初始版本,携带到合作方的数据所在系统环境中进行训练。首先针对各个合作方的数据特性制定训练方案,使模型在迭代过程中不断学习数据的特征,调整模型参数,期望最终生成的模型能够较好的表达参与方数据中隐含的模式,从而解决该类型问题。所以,在联合训练过程中,业务方和各个合作方的数据不需要互相传输或者保存给对方使用,这样保证了各方数据的安全。
7.同态加密技术应用于深度学习模型训练存在两个问题。一是同态加密技术运算开销很大。深度学习技术本身已是消耗大量计算资源的算法,如果在深度学习过程中再叠加开销较大的数据使用过程,则会大大降低算法性能。正由于此缺点,目前研究高效的同态加密方法仍是一个重要研究问题。二是同态加密仅是数据加密的一种方法,加密后的数据仍然会经历传输和保存,这将使数据的安全性不完全由数据拥有者掌控。在联合训练的问题背景下,以及可能的海量的数据量规模,合作方的数据安全要求可能不能容忍数据的不受控环节。因此,仅使用同态加密技术进行训练数据的加密,可能还无法完全满足数据安全需求。
8.模型微调方案也存在一定的问题,在用于深度学习模型联合训练时可能有三方面风险。一是模型收敛风险。由于初始模型是由业务方基于己方持有的训练数据的训练结果,经过多次迭代后的模型通常已经达到局部最优点。当使用合作方数据进行新的训练时,可能由于样本量或者数据特性等原因导致模型无法迭代至新的最优点。二是模型性能下降风险。当使用原始模型在合作方新的数据集上训练时,如果新的数据集样本分布与原始数据集迥异且数量较大,则可能会使模型充分学习新数据集的特定模式,而逐渐偏离在原始数据集已经学习到的模式,最终导致难以兼顾新旧数据,使其在原始数据场景中的性能大幅下降。三是数据泄露风险。模型微调方案虽然不再需要传输和保存合作方的数据,但是其要求业务方将模型训练部署到合作方系统环境中,这既可能导致业务方的模型数据泄露,同时也会对系统架构的对接增加工作开销。
9.近期,同态加密技术与深度学习技术的结合逐渐成为研究热点之一。合作方可以使用同态加密算法来保证数据的密文状态,业务方在密文状态下进行深度学习训练。同态加密是一类具有特殊自然属性的加密方法,与一般加密算法相比,同态加密除了能实现基本的加密操作之外,还能实现密文间的多种计算功能。也就是说,同态加密后的数据可以直接用于计算,其计算结果可等价于解密后的计算结果。因此,可以将同态加密技术应用于深度学习模型训练中,既能够保证深度学习模型从数据中学习数据特征,又保证了合作方训练数据的安全。在与业务方的合作过程中,参与方可以对敏感数据进行加密,并将加密后的数据分享给业务方使用。业务方接收数据后不用解密,而是直接使用加密后的数据进行模型训练。由于只有参与方自己拥有私钥,所以能够保护参与方的数据安全。
10.但是,由于目前的同态加密方案仍然存在许多局限,例如只支持一定的乘法深度,不能无限进行加法和乘法运算等,现有的同态加密方案不能简单地应用于深度学习中。虽然有一些解决方案可以将其与深度学习技术相结合来使用,但也具有较多约束条件。


技术实现要素:

11.本发明的目的是提供一种基于数据分离的联合模型训练方法,解决了深度学习模型联合训练中的数据安全问题,可以在支持多个参与方联合训练深度学习模型的同时保证各方数据无需相互传输和存储,确保数据安全。
12.为实现上述目的,本发明提供一种基于数据分离的联合模型训练方法,所述方法包括:
13.s1:中心节点建立中心模型并进行初始化赋值,得到初始化模型,所述初始化模型设为分支节点的初始分支模型;
14.s2:分支节点接收初始分支模型,并进行初始分支模型训练,得到分支模型梯度;
15.s3:中心节点接收分支模型梯度,并根据多个分支模型的梯度计算中心节点的梯度;
16.s4:中心节点根据中心节点的梯度数据更新中心模型参数;
17.s5:中心节点根据训练中止条件评估更新后的中心模型;若更新后的中心模型满足训练指标,则训练结束,若不满足,则跳转至s2。
18.作为上述的方案的进一步优化,分支节点接收初始分支模型,并进行初始分支模型训练,得到分支模型梯度,具体包括:
19.读取本地训练数据作为分支模型的输入;并执行前向计算,输出模型计算结果;
20.将模型计算结果和真值数据输入损失函数,计算模型损失;
21.根据模型损失结果计算分支模型梯度。
22.作为上述的方案的进一步优化,中心节点接收分支模型梯度,并根据多个分支模型的梯度计算中心节点的梯度具体包括:
23.中心节点接收全部分支节点nk的梯度数据,通过加权的方式计算中心节点的更新梯度gc;
[0024][0025]
其中,
[0026]
作为上述的方案的进一步优化,所述方法还包括:评估所述更新后的中心模型是否符合模型中止条件,若更新后的中心模型在测试数据集上的准确率acc不小于0.95,则中止模型训练,若小于0.95,则跳转至s1。
[0027]
一种基于数据分离的联合模型训练系统,包括
[0028]
初始化模块,用于对中心节点建立的中心模型并进行初始化赋值,得到初始化模型,所述初始化模型设为分支节点的初始分支模型;
[0029]
训练模块,对初始分支模型训练,得到分支模型梯度;
[0030]
计算模块,用于根据多个分支模型的梯度计算中心节点的梯度;
[0031]
更新模块,用于根据中心节点的梯度数据更新中心模型参数;
[0032]
评估模块,用于中心节点根据训练中止条件评估更新后的中心模型;
[0033]
判断模块,若更新后的中心模型满足训练指标,则训练结束,若不满足,则跳转至s2。
[0034]
作为上述的系统的进一步优化,所述训练模块还用于读取本地训练数据作为分支模型的输入;并执行前向计算,输出模型计算结果;
[0035]
将模型计算结果和真值数据输入损失函数,计算本次模型损失;
[0036]
根据模型损失结果计算分支模型梯度。
[0037]
作为上述的系统的进一步优化,所述计算模块用于对分支节点nk的梯度数据进行加权计算,得到中心节点的更新梯度gc;
[0038][0039]
其中,
[0040]
作为上述的系统的进一步优化,所述判断模块还用于判断更新后的中心模型在测试数据集上的准确率,若准确率acc不小于0.95,则中止模型训练,若小于0.95,则跳转至s2。
[0041]
采用本发明提供的基于数据分离的联合模型训练方法,有如下优点:
[0042]
(1)将业务方数据与合作方数据分离,使业务方和合作方在进行模型联合训练时无法访问到其他参与方的数据,保证了各参与方的数据安全;
[0043]
(2)能够充分利用业务方和合作方计算资源,将联合训练的算力需求分散到更多的系统中,减少了模型训练时的计算资源瓶颈问题;
[0044]
(3)能够提升模型健壮性,兼顾业务方数据特性和合作方数据特性。
附图说明
[0045]
图1是本发明基于数据分离的联合模型训练方法流程图;
[0046]
图2是本发明基于数据分离的联合模型训练方法的拓扑图;
[0047]
图3是本发明基于数据分离的联合模型训练系统模块运行流程图。
具体实施方式
[0048]
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0049]
本发明将分布式系统架构作为深度学习模型计算的底层架构,其中,业务方的计算节点作为中心节点,而其他合作方的计算节点则作为分支节点。业务方将全部计算部署在中心节点,中心节点既是计算任务的发起者,也是整个流程的控制者;训练的最终结果保存在中心节点。合作方的计算节点作为分支节点,其独立保存合作方自己的训练数据,全部计算资源也部署在分支节点。在模型训练过程中,分支节点负责在这些数据上训练分支模型。中心节点按照预定计算策略发起模型训练流程,在训练过程中通过向分支节点收集和分发模型数据来不断迭代优化,最终完成训练和输出深度学习模型。
[0050]
具体的,如图1所示本发明公开一种在分布式系统架构上完成的基于数据分离的联合模型训练方法,该方法包括:
[0051]
s1:建立中心模型并进行初始化赋值,得到初始模型,其中所述初始模型设为分支节点的初始分支模型;
[0052]
s2:分支节点接收初始分支模型,并进行初始分支模型训练,得到分支模型梯度;
[0053]
如附图2所示,在本发明中分布式的中心节点1与多个分支节点2之间采用信息传递接口(mpi)作为通信模式。
[0054]
当存在多个分支节点时,模型分发可以采用同步的方式,即中心节点同步向每个分支节点分发初始模型,分支节点在接收到中心节点分发的初始模型之前处于等待状态;当接收到中心节点分发的初始模型之后即可根据优化策略迭代优化分支模型,具体的,对初始分支模型进行训练,得到每个分支模型的梯度数据,并将该分支模型的梯度数据发送至中心节点,在发送过程中分支节点在本地的其他计算任务需要暂停;
[0055]
s3:中心节点接收分支模型梯度,并根据多个分支模型的梯度计算中心节点的梯度;
[0056]
s4:中心节点根据中心节点的梯度数据更新中心模型参数;
[0057]
s5:中心节点根据训练中止条件评估更新后的中心模型;若更新后的中心模型满足训练指标,则训练结束,若不满足,则跳转至s2。
[0058]
作为对本实施例中s2的进一步细化,分支节点接收初始分支模型,并进行初始分支模型训练,得到分支模型梯度,具体包括:
[0059]
读取本地训练数据作为分支模型的输入;并执行前向计算,输出模型计算结果;
[0060]
将模型计算结果和真值数据输入损失函数,计算模型损失;
[0061]
根据模型损失结果计算分支模型梯度。
[0062]
同步的,对s5的进一步优化中,评估所述更新后的中心模型是否符合模型中止条件,若更新后的中心模型在测试数据集上的准确率acc不小于0.95,则中止模型训练,若小于0.95,则跳转至s1。
[0063]
具体实施中,在训练开始时,中心节点nc启动联合训练调度进程,该进程负责建立最初的深度学习模型作为中心模型,初始模型可记为w0,初始分支模型记为wi,该进程通过xavier模型初始化算法对中心模型w0的权重参数进行初始化得到wi,中心模型参数的初始化可根据训练任务按照不同策略进行,不必拘泥于本实例中的模型初始化算法;
[0064]
中心模型参数wi赋值完成后,中心节点nc通过mpi接口向每一个分支节点nk发送初始化模型参数,该初始化模型参数用于对分支节点的各个初始分支模型进行优化训练;
[0065]
本实施例中共设k个分支节点参与联合训练,各个分支节点{nk|k∈[1,k]}根据模型结构配置数据,建立深度学习模型;此时各分支节点暂不执行模型参数的初始化,而是等待接收中心节点分发的初始化模型参数;当接收到初始化模型参数开始训练,直至分支节点完成分支模型的训练;
[0066]
此过程中,中心节点的联合训练进程中止进入等待状态,直到再接收各分支节点优化后的分支模型参数。
[0067]
当分支节点nk接收到中心模型之后进行优化训练,此时分支模型与中心模型参数wi相同。进一步的,分支节点从本地训练数据集dk读取数据,作为分支模型的输入,分支节点nk根据预先设定的模型训练配置参数开启分支模型训练,执行模型前向计算中的卷积计算模块、池化计算模块、激活函数模块等,然后输出模型计算结果;
[0068]
分支节点nk将模型计算结果和真值数据输入损失函数,计算本次模型输出的损失;根据设定的优化算法计算分支节点nk的分支模型梯度gk;
[0069]
当中心节点nc收集全部k个分支节点的梯度数据之后,通过加权的方式,计算中心
模型的更新梯度gc:
[0070][0071]
其中:
[0072]
中心节点根据模型梯度更新中心模型参数,之后评估所述更新后的中心模型的梯度参数是否符合模型中止条件,若更新后的中心模型参数联合模型在测试数据集上的准确率acc不小于0.95,则中止模型训练,若小于0.95,则跳转至s1。
[0073]
特别地,业务方可在中心节点上创建多个进程,除联合训练进程之外,如需业务方数据参与联合训练,业务方可以在中心节点创建分支模型训练进程,仅用于基于业务方训练数据的分支模型训练。该分支模型的训练进程与其他分支节点的模型训练进程拥有相同的功能和执行流程。
[0074]
如附图3所示为方法运行流程图,本发明在具体实施中可将深度学习模型联合训练过程分为三个阶段。
[0075]
第一阶段,模型训练流程由中心节点1发起,向分支节点2发送初始化模型,分支节点接收初始化模型,并将其作为本分支的初始分支模型;模型分发过程可以采用同步方式,分支节点在接收到中心节点模型之前处于等待状态,接收到模型后可以转入第二阶段;
[0076]
第二阶段,分支节点根据优化策略迭代优化分支模型,向中心节点发起模型优化后的数据,发送过程需要暂停本地的计算任务;
[0077]
第三阶段,中心节点从各个分支节点收集分支模型梯度,并通过计算中心模型的梯度,根据中心模型的梯度优化为新的中心模型;
[0078]
如果中心节点需要继续训练联合模型,则将流程转至第一阶段,发起新一轮训练;如果中心节点需要结束训练任务时,则保存中心模型,并通知各个节点退出训练进程。
[0079]
由于模型在训练过程中能够通过分支节点访问各方数据,模型既能够学习合作方训练数据中的数据特性,也能够保持模型已经学习到的业务方数据的特性。
[0080]
本发明公开的基于数据分离的联合模型训练方法特别适用于深度学习模型的联合训练任务,该方法对数据内容本身没有附加的适用条件,也不会修改数据内容;还可以使深度学习模型能够同时学习多方数据特征,提高联合训练效果,充分利用多方计算资源。另外本发明还提供了一个面向深度学习模型的联合训练框架,可以兼容多种优化方法,在该软件框架下,可在启动联合训练前根据各方数据组成和特性调整模型优化策略,为不同场景下的联合训练提供了足够的灵活性。
[0081]
本发明采用物理上的数据分离的方法来保护数据安全:与现有技术相比有以下两方面优点:一方面可以节省数据传输和保存所需消耗的通信和系统资源,同时也减少了在传输数据环节和存储数据环节所面临的数据泄露风险;另一方面,由于数据分离在各个数据拥有者的系统内,可以省去对数据的加密处理环节,由此可以节省大量的计算资源和时间开销。
[0082]
本发明将联合训练任务放置在由多个系统组成的分布式系统架构内完成,在现有技术方案中,模型训练任务由业务方独立完成,合作方仅提供数据支持。对比现有技术方案,本方案能够充分调动多方计算资源共同完成模型的联合训练,将集中的计算资源需求
分散到多个系统中去,减少了计算资源瓶颈,能够提升系统稳定性的同时,加快联合训练任务的运行速度。
[0083]
本发明允许联合训练任务同时学习多个训练数据集特征。对比现有模型微调方案,在模型联合训练过程中,允许模型同时访问多个参与方的训练数据,有利于模型兼顾多个数据集中的隐含模式表达,增强模型泛化能力。对比以数据加密为辅助手段的方案,本发明直接访问数据内容本身,除了能够提高模型学习效率之外,由于未对数据内容进行任何修改,因此模型能够更精准地学习到数据本身的特性。
[0084]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1