本说明书的实施例通常涉及计算机领域,更具体地,涉及使用可信执行环境(tee,trustedexecutionenvironment)来进行神经网络模型训练的方法及装置。
背景技术:
对于公司或企业而言,数据是非常重要的资产,比如,用户数据和业务数据。用户数据例如可以包括用户身份数据等。业务数据例如可以包括在公司提供的业务应用上发生的业务数据,比如淘宝上的商品交易数据等。保护数据安全是公司或企业广泛关注的技术问题。
在公司或企业进行业务运营时,通常会需要使用机器学习模型来进行模型预测,以确定业务运营风险或者进行业务运营决策。神经网络模型是机器学习领域广泛使用的机器学习模型。神经网络模型可以由模型服务提供方来提供。神经网络模型训练时会使用数据拥有方的私有数据。如何在进行神经网络模型训练时保护数据提供方的数据隐私安全,成为亟待解决的问题。
技术实现要素:
鉴于上述问题,本说明书的实施例提供一种使用可信执行环境来进行神经网络模型训练的方法及装置,其能够在保护数据提供方的数据隐私安全的情况下实现神经网络模型训练。
根据本说明书实施例的一个方面,提供一种用于使用可信执行环境来进行神经网络模型训练的方法,所述神经网络模型被依序分割为第一部分神经网络模型和第二部分神经网络模型,所述第一部分神经网络模型位于第一设备的可信执行环境中,以及所述第二部分神经网络模型位于第二设备的非可信执行环境中,所述方法包括:执行下述循环过程,直到满足循环结束条件:将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果;将所述中间结果提供给所述非可信执行环境中的当前第二部分神经网络模型,得到当前预测值;基于所述当前预测值和所述训练样本数据的标签值确定当前预测差值;以及在不满足所述循环结束条件时,根据所述当前预测差值,调整所述当前第一部分神经网络模型和所述当前第二部分神经网络模型的各层模型参数,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
可选地,在上述方面的一个示例中,所述神经网络模型的依序分割可以取决于下述参数中的至少一种:所述神经网络模型的分层结构组成;各个分层结构的复杂度;所述可信执行环境的存储能力;所述可信执行环境的算力;和每轮模型训练时使用的训练样本数目。
可选地,在上述方面的一个示例中,所述数据提供方包括多个数据提供方,各个数据提供方所提供的训练样本数据是经过加密后的训练样本数据,所述第一设备设置在所述多个数据提供方之外的第三方,以及所述可信执行环境中还可以设置有数据融合单元,将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果包括:将各个数据提供方的经过加密后的训练样本数据提供给所述可信执行环境中的数据融合单元;在所述数据融合单元处,对所接收的训练样本数据进行解密和数据融合;以及将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
可选地,在上述方面的一个示例中,所述数据提供方包括多个数据提供方,所述第一设备设置在所述多个数据提供方中的第一数据提供方中,除了所述第一数据提供方之外的其它数据提供方所提供的训练样本数据是经过加密后的训练样本数据,以及所述可信执行环境中还设置有数据融合单元,将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果包括:将各个其它数据提供方的经过加密后的训练样本数据提供给所述可信执行环境中的数据融合单元;在所述数据融合单元处,对所接收的训练样本数据进行解密,并且对所述第一数据提供方处的训练样本数据以及各个其它数据提供方的经过解密后的训练样本数据进行数据融合;以及将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
可选地,在上述方面的一个示例中,所述第一设备和所述第二设备是相同的设备或者不同的设备。
可选地,在上述方面的一个示例中,所述第一部分神经网络模型和所述第二部分神经网络模型使用不同的模型架构实现,所述方法还可以包括:在所述第一设备处,对所述中间结果进行适配处理;以及在所述第二设备处,对所述当前第二部分神经网络模型输出的梯度信息进行适配处理。
可选地,在上述方面的一个示例中,所述可信执行环境可以包括基于sgx的可信执行环境或基于trustzone的可信执行环境。
可选地,在上述方面的一个示例中,所述循环结束条件可以包括:循环次数达到预定次数;或者当前预测差值在预定差值范围内。
可选地,在上述方面的一个示例中,所述训练样本数据可以包括基于图像数据、语音数据或者文本数据的训练样本数据,或者所述训练样本数据可以包括用户特征数据。
根据本说明书的实施例的另一方面,提供一种用于使用可信执行环境来进行神经网络模型训练的装置,所述神经网络模型被依序分割为第一部分神经网络模型和第二部分神经网络模型,所述第一部分神经网络模型位于第一设备的可信执行环境中,以及所述第二部分神经网络模型位于第二设备的非可信执行环境中,所述装置包括:第一模型处理单元,将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果;第二模型处理单元,将所述中间结果提供给所述非可信执行环境中的当前第二部分神经网络模型,得到当前预测值;预测差值确定单元,基于所述当前预测值以及所述训练样本数据的标签值,确定当前预测差值;以及模型调整单元,根据所述当前预测差值,调整所述当前第一部分神经网络模型和所述当前第二部分神经网络模型的各层模型参数,所述第一模型处理单元、所述第二模型处理单元、所述预测差值确定单元和所述模型调整单元循环操作,直到满足循环结束条件,在不满足所述循环结束条件时,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
可选地,在上述方面的一个示例中,所述神经网络模型的依序分割可以取决于下述参数中的至少一种:所述神经网络模型的分层结构组成;各个分层结构的复杂度;所述可信执行环境的存储能力;所述可信执行环境的算力;和每轮模型训练时使用的训练样本数目。
可选地,在上述方面的一个示例中,所述数据提供方包括多个数据提供方,各个数据提供方所提供的训练样本数据是经过加密后的训练样本数据,所述第一设备设置在所述多个数据提供方之外的第三方,所述装置还可以包括:数据融合单元,设置在所述可信执行环境中,对各个数据提供方提供的经过加密后的训练样本数据进行解密和数据融合;以及所述第一模型处理单元将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
可选地,在上述方面的一个示例中,所述数据提供方包括多个数据提供方,所述第一设备设置在所述多个数据提供方中的第一数据提供方中,除了所述第一数据提供方之外的其它数据提供方所提供的训练样本数据是经过加密后的训练样本数据,以及所述装置还可以包括:数据融合单元,设置在所述可信执行环境中,对各个其它数据提供方提供的训练样本数据进行解密,并且对所述第一数据提供方处的训练样本数据以及各个其它数据提供方的经过解密后的训练样本数据进行数据融合;以及所述第一模型处理单元将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,以得到中间结果。
可选地,在上述方面的一个示例中,所述第一部分神经网络模型和所述第二部分神经网络模型使用不同的模型架构实现,所述装置还可以包括:第一适配单元,设置在所述可信执行环境中,对所述中间结果进行适配处理;以及第二适配单元,设置在所述非可信执行环境中,对所述当前第二部分神经网络模型输出的梯度信息进行适配处理。
根据本说明书的实施例的另一方面,提供一种电子设备,包括:一个或多个处理器,以及与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上所述的神经网络模型训练方法。
根据本说明书的实施例的另一方面,提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的神经网络模型训练方法。
附图说明
通过参照下面的附图,可以实现对于本说明书的实施例内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了神经网络模型的一个示例的示意图;
图2示出了神经网络模型的一个分割示例的示意图;
图3示出了根据本说明书的实施例的神经网络模型分割的一个示例过程的示意图;
图4示出了根据本说明书的实施例的神经网络模型训练架构的一个示例的示意图;
图5示出了根据本说明书的实施例的使用可信执行环境来进行神经网络模型训练的方法的一个示例过程的流程图;
图6示出了根据本说明书的实施例的神经网络模型训练架构的另一示例的示意图;
图7a示出了根据本公开的实施例的经过水平切分的训练样本数据的示例的示意图;
图7b示出了根据本公开的实施例的经过垂直切分的训练样本数据的示例的示意图;
图8示出了根据本说明书的实施例的使用可信执行环境来进行神经网络模型训练的方法的另一示例过程的流程图;
图9示出了根据本说明书的实施例的神经网络模型训练装置的一个示例的方框图;
图10示出了根据本说明书的实施例的神经网络模型训练装置的另一示例的方框图;和
图11示出了根据本说明书的实施例的用于实现神经网络模型训练的电子设备的方框图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书的实施例内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
本说明书实施例提出一种神经网络模型训练方法,在该神经网络模型训练方法中,神经网络模型被依序分割为第一部分神经网络模型和第二部分神经网络模型,其中,第一部分神经网络模型位于第一设备的可信执行环境中,以及第二部分神经网络模型位于第二设备的非可信执行环境中。在每轮模型训练时,将训练样本数据提供给第一部分神经网络模型来在可信执行环境中进行模型处理,以得到中间结果。随后,将中间结果提供给非可信执行环境中的第二部分神经网络模型,以得到当前预测值,并确定出当前预测差值。然后,在不满足循环结束条件时,根据当前预测差值,调整第一部分神经网络模型和第二部分神经网络模型的各层模型参数。按照这种方式,在进行模型训练时,在可信执行环境中执行与数据拥有方所拥有的私有数据相关的模型处理,从而可以避免数据拥有方的私有数据被暴露给模型提供方而造成私有数据泄露。
在本说明书的实施例中,神经网络模型所使用的训练样本数据可以包括基于图像数据、语音数据或文本数据的训练样本数据。相应地,神经网络模型可以应用于基于图像数据、语音数据或者文本数据的业务风险识别、业务分类或者业务决策等等。或者,神经网络模型所使用的训练样本数据可以包括用户特征数据。相应地,神经网络模型可以应用于基于用户特征数据的业务风险识别、业务分类、业务推荐或者业务决策等等。
图1示出了神经网络模型100的一个示例的示意图。
如图1所示,神经网络模型100包括输入层110、第一隐层120、第二隐层130、第三隐层140和输出层150。
输入层110包括3个输入节点n1、n2和n3以及偏置项b1。三个输入节点n1、n2和n3分别接收来自三个不同数据拥有方的数据。第一隐层120包括2个隐层节点n4和n5以及偏置项b2。隐层节点n4和n5分别与输入层110的3个输入节点n1、n2和n3以及偏置项b1全连接。输入节点n1与隐层节点n4和n5之间的权重分别为w1,4和w1,5。输入节点n2与隐层节点n4和n5之间的权重分别为w2,4和w2,5。输入节点n3与隐层节点n4和n5之间的权重分别为w3,4和w3,5。
第二隐层130包括2个隐层节点n6和n7以及偏置项b3。隐层节点n6和n7分别与第一隐层120的2个隐层节点n4和n5以及偏置项b2全连接。隐层节点n4与隐层节点n6和n7之间的权重分别为w4,6和w4,7。隐层节点n5与隐层节点n6和n7之间的权重分别为w5,6和w5,7。
第三隐层140包括2个隐层节点n8和n9以及偏置项b4。隐层节点n8和n9分别与第二隐层130的2个隐层节点n6和n7以及偏置项b3全连接。隐层节点n6与隐层节点n8和n9之间的权重分别为w6,8和w6,9。隐层节点n7与隐层节点n8和n9之间的权重分别为w7,8和w7,9。
输出层150包括输出节点n10。输出节点n10与第三隐层140的2个隐层节点n8和n9以及偏置项b4全连接。隐层节点n8与输出节点n10之间的权重为w8,10。隐层节点n9与输出节点n10之间的权重为w9,10。
在图1中示出的神经网络模型中,权重w1,4、w1,5、w2,4、w2,5、w3,4、w3,5、w4,6、w4,7、w5,6、w5,7、w6,8、w6,9、w7,8、w7,9、w8,10和w9,10是神经网络模型的各层模型参数。在进行前馈计算时,输入层110的输入节点n1、n2和n3经过计算后得到第一隐层120的各个隐层节点n4和n5的输入z1和z2,其中,z1=w1,4*x1 w2,4*x2 w3,4*x3 b1,以及z2=w1,5*x1 w2,5*x2 w3,5*x3 b1。然后,分别对z1和z2进行激活函数处理,得到隐层节点n4和n5的输出a1和a2。按照上述方式逐层进行前馈计算,如图1中所示,最后得到神经网络模型的输出a7。
图2示出了神经网络模型的一个分割示例的示意图。
如图2所示,神经网络模型100被从第一隐层120处分割为第一部分神经网络模型(例如,轻量级神经网络模型)和第二部分神经网络模型(例如,tensorflow模型)。第一部分神经网络模型包括输入层110和第一隐层120。第二部分神经网络模型包括第二隐层130、第三隐层140和输出层150。
在本说明书的一个示例中,针对神经网络模型100的依序分割可以取决于下述参数中的至少一种:神经网络模型100的分层结构组成;各个分层结构的复杂度;可信执行环境的存储能力;可信执行环境的算力以及每轮模型训练时使用的训练样本数目(batch_size)。
这里,神经网络模型100的分层结构组成可以是指神经网络模型100所包括的分层结构的层数以及每层分层结构的类型,所述分层结构的类型例如可以是全连接层、卷积层等。分层结构的复杂度是指该分层结构的复杂程度(或者称为计算复杂度)。
可信执行环境的存储能力可以是指可信执行环境的存储容量。例如,在本说明书中,可信执行环境可以是基于sgx的可信执行环境或者基于trustzone的可信执行环境。sgx架构是intel架构的扩展。sgx架构在原有架构上扩展了一组新的指令集和内存访问机制。这些扩展允许应用程序实现一个被称为enclave的容器,在应用程序的地址空间中划分出一块被保护的区域,为enclave容器内的代码和数据提供机密性和完整性的保护,免受拥有特殊权限的恶意软件的破坏。sgx架构以硬件安全为强制性保障,不依赖于固件和软件的安全状态,可以提供用户空间的可信执行环境。不同于其他可信计算技术,基于sgx的可信计算基(trustedcomputingbase,tcb)仅仅包括硬件,从而避免基于软件的tcb自身存在软件安全漏洞与威胁的缺陷,极大地提升了计算安全性。此外,sgx架构可以保障运行时的可信执行环境,恶意代码无法访问与篡改其他程序运行时的保护内容,进一步增强了系统安全性。在基于sgx的可信执行环境的情况下,可信执行环境的存储容量可以是大约不超过100m。
可信执行环境的算力可以是指可信执行环境能够提供的计算能力,其由可信执行环境的计算资源来决定。
图3示出了根据本说明书的实施例的神经网络模型分割的一个示例过程的示意图。
如图3所示,首先,在310,确定神经网络模型的前若干层的分层结构的类型是否是可信执行环境可支持的类型?例如,在可信执行环境是基于sgx的可信执行环境enclave的情况下,enclave的内存和算力不支持除了全连接层和卷积层之外的神经网络模型结构,例如,不支持包含长短期记忆网络(lstm,longshort-termmemory)单元的分层结构,由此,确定神经网络模型的前若干层的分层结构的类型是否是全连接层或卷积层?如果前若干层的分层结构的类型是全连接层或卷积层,则进行到320-340。否则,流程结束。
如果前若干层都是全连接层,则在320,通过计算全连接层中的连接边数来对神经网络模型进行分割。例如,假设可信执行环境是基于sgx的可信执行环境(enclave),则enclave内部需要满足batch_size*连接边数≤16m,即,满足所存储的模型的容量不超过可信执行环境的存储能力。具体地,在训练参数batch_size=16的情况下,enclave内部可以容纳1m条(1m=100万)连接边。举例来说,假设在神经网络模型中,第一层有1000个神经元,第二层有500个神经元,则第一层与第二层之间的连接边为1000*500=50万条连接边。另外,假设第三层、第四层也各有500个神经元,则第二层与第三层之间以及第三层与第四层之间的连接边都为500*500=25万条。这样,该神经网络模型的前4层都可以放到enclave内部,以形成第一部分神经网络模型,而第五层及以及后续分层结构都必须放在enclave的外部,以形成第二部分神经网络模型。当训练参数改变时,例如batch_size=32时,则enclave可以容纳的连接边数为500k条,由此,仅仅第一层和第二层可以存放在enclave内部,以形成第一部分神经网络模型,以及第三层及以及后续分层结构都必须存放在enclave的外部,以形成第二部分神经网络模型。
如果前若干层都是卷积层,则在330,通过计数神经网络模型的层数来对神经网络模型分割。例如,在基于sgx的可信执行环境中,enclave内部可以存放神经网络模型的前3层分层结构,以形成第一部分神经网络模型,而超过3层的分层结构存放在enclave外部,以形成第二部分神经网络模块。
如果前若干层包括卷积层和卷积层两者,则在340,通过计数神经网络模型的层数来对神经网络模型分割。例如,在基于sgx的可信执行环境中,enclave内部可以存放神经网络模型的前3层分层结构,以形成第一部分神经网络模型,而超过3层的分层结构存放在enclave外部,以形成第二部分神经网络模块。
这里,前若干层可以从神经网络模型的第一层开始算起,直到碰到可信执行环境不支持的分层结构类型,例如,碰到不是全连接层或卷积层的分层结构。
在本说明书中,第一部分神经网络模型和第二部分神经网络模型可以采用相同的模型架构来实现,也可以采用不同的模型架构来实现。例如,在本说明书的一个示例中,第一部分神经网络模型架构可以是轻量级神经网络模型。第二部分神经网络模型可以是基于tensorflow的神经网络模型或者基于pytorch的神经网络模型。
图4示出了根据本说明书的实施例的神经网络模型训练架构的一个示例的示意图,以及图5示出了根据本说明书的实施例的使用可信执行环境来进行神经网络模型训练的方法的一个示例过程的流程图(基于图4的神经网络模型训练架构的训练方法)。图4中示出的是基于单个数据拥有方的训练样本数据的神经网络模型训练架构。
如图4所示,神经网络模型被分割为轻量级神经网络模型420和tensorflow模型450。轻量级神经网络模型420和第一网络适配层430位于tee设备21中。第二网络适配层440和tensorflow模型450位于非tee设备22中。
在进行模型训练时,如图5所示,首先,在510,初始化第一部分神经网络模型和第二部分神经网络模型。接着,循环执行520到570的操作,直到满足循环结束条件。所述循环结束条件可以是所确定出的预测差值位于预定范围内。例如,预测差值中的各个元素之和小于预定阈值,或者预测差值中的各个元素的均值小于预定阈值。或者,在本说明书的另一示例中,循环结束条件可以是达到预定循环次数。
具体地,在520,将训练样本数据提供给可信执行环境。例如,数据拥有方可以将用于模型训练的私有数据进行加密,然后将加密后的训练样本数据提供给可信执行环境。在接收到经过加密后的训练样本数据后,在可信执行环境中对该加密的训练样本数据进行解密,从而得到原始训练样本数据。该训练样本数据具有标签数据。在本说明书中,针对训练样本数据的加密和解密可以采用可信执行环境可适用的任何加密/解密方法。
接着,在530,在可信执行环境中,将训练样本数据提供当前第一部分神经网络模型,以得到中间结果,该中间结果是经过第一部分神经网络模型处理后的特征数据。
在540,将中间结果提供给第一网络适配层430来进行适配处理。这里的适配处理是将中间结果转换为第二部分神经网络模型(例如,tensorflow模型)可适用的数据格式。
在550,将经过适配处理后的中间结果,经由第二网络适配层440提供给当前第二部分神经网络模型,以得到当前预测值,并基于当前预测值和训练样本数据的标签值确定出当前预测差值。这里要说明的是,训练样本数据的标签数据可以是由数据提供方直接提供给第二设备(第二部分神经网络模型),也可以是由数据提供方提供到第一设备中的可信执行环境中,然后与中间结果一起提供给第二设备。
然后,在560,判断当前预测差值是否小于预定阈值。如果当前预测差值小于预定阈值,则流程结束,由此完成神经网络模型训练。
如果当前预测差值不小于预定阈值,则在570,根据当前预测差值,调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数,例如,通过反向传播来逐层调整当前第二部分神经网络模型和当前第一部分神经网络模型的各层模型参数。要说明的是,在图5中示出的示例中,在进行反向传播时,从当前第二部分神经网络模型的第一层输出给第一部分神经网络模型(轻量级神经网络模型420)的梯度信息需要经由第二网络适配层来进行适配处理,以转换为第一部分神经网络模型可适用的数据格式,然后发送给第一网络适配层来转交给当前第一部分神经网络模型来进行模型参数调整。
这里要说明的是,在循环结束条件是达到预定循环次数时,在560中,判断是否达到预定循环次数。如果达到预定循环次数,则流程结束。否则,进行到570。
图6示出了根据本说明书的实施例的神经网络模型训练架构的另一示例的示意图。图6中示出的是基于多个数据拥有方的训练样本数据的神经网络模型训练架构。多个数据拥有方所拥有的训练样本数据可以是水平切分的训练样本数据,也可以是垂直切分的训练样本数据。
图7a示出了根据本说明书的实施例的经过水平切分的训练样本数据的示例的示意图。图7a中示出了2个数据拥有方alice和bob,多个数据拥有方也类似。每个数据拥有方alice和bob拥有的训练样本子集中的每条训练样本是完整的,即,每条训练样本包括完整的特征数据(x)和标记数据(y)。比如,alice拥有完整的训练样本(x0,y0)。
图7b示出了根据本说明书的实施例的经过垂直切分的训练样本数据的示例的示意图。图7b中示出了2个数据拥有方alice和bob,多个数据拥有方也类似。每个数据拥有方alice和bob拥有训练样本集中的所有训练样本中的每条训练样本的部分训练子样本,对于每条训练样本,数据拥有方alice和bob拥有的部分训练子样本组合在一起,可以构成该训练样本的完整内容。比如,假设某个训练样本的内容包括标签y0和属性特征
回到图6,如图6所示,神经网络模型被分割为轻量级神经网络模型620和tensorflow模型650。轻量级神经网络模型620和第一网络适配层630位于tee设备21中。第二网络适配层640和tensorflow模型650位于非tee设备22中。此外,在tee设备21中还设置有数据融合单元610。该数据融合单元用于在可信执行环境中,对从多个数据拥有方接收的训练样本数据进行融合处理,以得到最终的训练样本数据。
图8示出了根据本说明书的实施例的使用可信执行环境来进行神经网络模型训练的方法的另一示例过程的流程图(基于图6中示出的神经网络模型训练架构的神经网络模型训练方法)。在图8中示出的方案中,第一设备设置在位于多个数据拥有方之外的第三方,第一设备和第二设备是不同的设备,并且第一部分神经网络模型和第二神经网络模型采用不同的模型框架实现,例如,第一部分神经网络模型采用轻量级神经网络模型,第二部分神经网络模型采用基于tensorflow的神经网络模型。
在进行模型训练时,如图8所示,首先,在810,初始化第一部分神经网络模型和第二部分神经网络模型。接着,循环执行820到880的操作,直到满足循环结束条件。所述循环结束条件可以是所确定出的预测差值位于预定范围内。例如,预测差值中的各个元素之和小于预定阈值,或者预测差值中的各个元素的均值小于预定阈值。或者,在本说明书的另一示例中,循环结束条件可以是达到预定循环次数。
具体地,在820,多个数据拥有方将各自的训练样本数据提供给可信执行环境。例如,数据拥有方可以将用于模型训练的私有数据进行加密,然后将加密后的训练样本数据提供给可信执行环境。在接收到经过加密后的训练样本数据后,在可信执行环境中对该加密的训练样本数据进行解密,从而得到原始训练样本数据。该训练样本数据具有标签数据。在本说明书中,针对训练样本数据的加密和解密可以采用可信执行环境可适用的任何加密/解密方法。
接着,在830,在可信执行环境中,对从多个数据拥有方接收的训练样本数据进行融合处理。
在840,在可信执行环境中,将经过融合处理后的训练样本数据提供当前第一部分神经网络模型,以得到中间结果,该中间结果是经过第一部分神经网络模型处理后的特征数据。
在850,将中间结果和标签数据提供给第一网络适配层430来进行适配处理。这里的适配处理是将中间结果和标签数据的数据格式转换为第二部分神经网络模型(例如,tensorflow模型)可适用的数据格式。
在860,将经过适配处理后的中间结果,经由第二网络适配层440提供给当前第二部分神经网络模型,以得到当前预测值,并基于当前预测值和训练样本数据的标签值确定出当前预测差值。
然后,在870,判断当前预测差值是否小于预定阈值。如果当前预测差值小于预定阈值,则流程结束,由此完成神经网络模型训练。
如果当前预测差值不小于预定阈值,则在880,根据当前预测差值,调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数,例如,通过反向传播来逐层调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数。同样,在图8中示出的示例中,在进行反向传播时,从当前第二部分神经网络模型的第一层输出给第一部分神经网络模型的梯度信息需要经由第二网络适配层来进行适配处理,以转换为第一部分神经网络模型可适用的数据格式,然后发送给第一网络适配层来转交给当前第一部分神经网络模型来进行模型参数调整。
这里要说明的是,在循环结束条件是达到预定循环次数时,在870中,判断是否达到预定循环次数。如果达到预定循环次数,则流程结束。否则,进行到880。
此外,要说明的是,图8中示出的仅仅是根据本说明书的神经网络模型训练的一个实现示例。在本说明书的其它示例中,第一设备和第二设备可以采用相同的设备实现,即,同一设备中设置可信执行环境和非可信执行环境,第一部分神经网络模型布置在可信执行环境中,以及第二部分神经网络模型布置在非可信执行环境中(即,可信执行环境之外)。
此外,在本说明书的其它示例中,第一部分神经网络模型和第二部分神经网络模型可以采用相同的模型框架实现的,在这种情况下,图5和图8中示出的神经网络模型训练方法可以不包括第一网络适配层和/或第二网络适配层的处理过程。
此外,在本说明书的其它示例中,第一设备可以设置在多个数据提供方中的第一数据提供方处。在这种情况下,仅仅需要除了第一数据提供方之外的其它数据提供方对各自的训练样本数据进行加密,并且将加密后的训练样本数据发送给第一数据提供方处的第一设备中的数据融合单元。然后,数据融合单元对各个其它数据提供方提供的训练样本数据进行解密,并且对第一数据提供方处的训练样本数据以及各个其它数据提供方的经过解密后的训练样本数据进行数据融合。随后,将融合处理后的训练样本数据提供给第一部分神经网络模型来得到中间结果。
如上参照图1到图8描述了根据本说明书的实施例的神经网络模型训练方法。利用该方法,通过将神经网络模型依序分割为第一部分神经网络模型和第二部分神经网络模型,并且将第一部分神经网络模型布置在可信执行环境中,以及将第二部分神经网络模型布置在非可信执行环境中,从而使得与数据拥有方处拥有的私有数据相关的模型处理被放置在可信执行环境中处理,由此避免数据拥有方的私有数据暴露给模型提供方,进而实现数据拥有方的私有数据的隐私保护。
此外,利用根据本说明书的实施例的神经网络模型训练方法,通过根据神经网络模型的分层结构组成、各个分层结构的复杂度、可信执行环境的存储能力、可信执行环境的算力和每轮模型训练时使用的训练样本数目来对神经网络模型进行分割处理,可以实现对神经网络模型的高效分割,由此提高神经网络模型的训练效率。
图9示出了根据本说明书的实施例的神经网络模型训练装置的一个示例(下文中称为模型训练装置900)的方框图。如图9所示,模型训练装置900包括第一模型处理单元910、第二模型处理单元920、预测差值确定单元930和模型调整单元940。
在进行模型训练时,第一模型处理单元910、第二模型处理单元920、预测差值确定单元930和模型调整单元940循环操作,直到满足循环结束条件。所述循环结束条件可以包括预测差值位于预定范围内,或者循环次数达到预定循环次数。
具体地,在每轮循环时,第一模型处理单元910被配置为将数据提供方的训练样本数据提供给可信执行环境中的当前第一部分神经网络模型,得到中间结果。第一模型处理单元910的操作可以参考上面参照图5描述的块530的操作。
第二模型处理单元920被配置为将中间结果提供给位于非可信执行环境中的当前第二部分神经网络模型,得到当前预测值。第二模型处理单元920的操作可以参考上面参照图5描述的块550的操作。
预测差值确定单元930被配置为基于当前预测值和训练样本数据的标签值,确定当前预测差值。预测差值确定单元930的操作可以参考上面参照图5描述的块550的操作。
模型调整单元940被配置为根据当前预测差值,调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
图10示出了根据本说明书的实施例的神经网络模型训练装置1000的另一示例(下文中称为模型训练装置1000)的方框图。如图10所示,模型训练装置1000包括数据融合单元1010、第一模型处理单元1020、第一适配但1030、第二适配单元1040、第二模型处理单元1050、预测差值确定单元1060和模型调整单元1070。
在进行模型训练时,数据融合单元1010、第一模型处理单元1020、第一适配但1030、第二适配单元1040、第二模型处理单元1050、预测差值确定单元1060和模型调整单元1070循环操作,直到满足循环结束条件。所述循环结束条件可以包括预测差值位于预定范围内,或者循环次数达到预定循环次数。
具体地,在每轮循环时,数据融合单元1010被配置为对多个数据拥有方的训练样本数据进行融合处理。
第一模型处理单元1020被配置为将经过数据融合处理后的训练样本数据提供给可信执行环境中的当前第一部分神经网络模型,以得到中间结果。
第一适配单元1030被配置为对中间结果进行适配处理,以转换为第二部分神经网络模型可适用的数据格式。
第二模型处理单元1050被配置为将经过第一适配单元1030适配处理后的中间结果提供给非可信执行环境中的当前部分第二神经网络模型,以得到当前预测值。
预测差值确定单元1060被配置为基于当前预测值和训练样本数据的标签值,确定当前预测差值。
模型调整单元1070被配置为在不满足循环结束条件时,根据当前预测差值,调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数,例如,通过反向传播来逐层调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数。所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
此外,第二适配单元1050被配置为在进行反向传播时,对从当前第二部分神经网络模型的第一层输出的梯度信息进行适配处理,以转换为第一部分神经网络模型可适用的数据格式,然后发送给第一网络适配层来转交给当前第一部分神经网络模型来进行模型参数调整。
如上参照图1到图10,对根据本说明书的实施例的神经网络模型训练方法及模型训练装置进行描述。上面的模型训练装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图11示出了根据本说明书的实施例的用于实现神经网络模型训练的电子设备1100的结构框图。
如图11所示,电子设备1100可以包括至少一个处理器1110、存储器(例如,非易失性存储器)1120、内存1130、通信接口1140以及内部总线1160,并且至少一个处理器1110、存储器1120、内存1130和通信接口1140经由总线1160连接在一起。该至少一个处理器1110执行在计算机可读存储介质中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储有计算机可执行指令,其当执行时使得至少一个处理器1110:执行下述循环过程,直到满足循环结束条件:将数据提供方的训练样本数据提供给可信执行环境中的当前第一部分神经网络模型,得到中间结果;将中间结果提供给非可信执行环境中的当前第二部分神经网络模型,得到当前预测值;基于当前预测值和训练样本数据的标签值确定当前预测差值;以及在不满足循环结束条件时,根据当前预测差值,调整当前第一部分神经网络模型和当前第二部分神经网络模型的各层模型参数,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
应该理解的是,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1110执行在本说明书的各个实施例中如上结合图1-10描述的各种操作和功能。
在本说明书的实施例中,电子设备1100可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(pda)、手持装置、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种例如非暂时性机器可读介质的程序产品。非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中如上结合图1-10描述的各种操作和功能。
具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,fpga或asic)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
1.一种用于使用可信执行环境来进行神经网络模型训练的方法,所述神经网络模型被依序分割为第一部分神经网络模型和第二部分神经网络模型,所述第一部分神经网络模型位于第一设备的可信执行环境中,以及所述第二部分神经网络模型位于第二设备的非可信执行环境中,所述方法包括:
执行下述循环过程,直到满足循环结束条件:
将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果;
将所述中间结果提供给所述非可信执行环境中的当前第二部分神经网络模型,得到当前预测值;
基于所述当前预测值和所述训练样本数据的标签值,确定当前预测差值;以及
在不满足所述循环结束条件时,根据所述当前预测差值,调整所述当前第一部分神经网络模型和所述当前第二部分神经网络模型的各层模型参数,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
2.如权利要求1所述的方法,其中,所述神经网络模型的依序分割取决于下述参数中的至少一种:
所述神经网络模型的分层结构组成;
各个分层结构的复杂度;
所述可信执行环境的存储能力;
所述可信执行环境的算力;和
每轮模型训练时使用的训练样本数目。
3.如权利要求1所述的方法,其中,所述数据提供方包括多个数据提供方,各个数据提供方所提供的训练样本数据是经过加密后的训练样本数据,所述第一设备设置在所述多个数据提供方之外的第三方,以及所述可信执行环境中还设置有数据融合单元,
将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果包括:
将各个数据提供方的经过加密后的训练样本数据提供给所述可信执行环境中的数据融合单元;
在所述数据融合单元处,对所接收的训练样本数据进行解密和数据融合;以及
将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
4.如权利要求1所述的方法,其中,所述数据提供方包括多个数据提供方,所述第一设备设置在所述多个数据提供方中的第一数据提供方中,除了所述第一数据提供方之外的其它数据提供方所提供的训练样本数据是经过加密后的训练样本数据,以及所述可信执行环境中还设置有数据融合单元,
将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果包括:
将各个其它数据提供方的经过加密后的训练样本数据提供给所述可信执行环境中的数据融合单元;
在所述数据融合单元处,对所接收的训练样本数据进行解密,并且对所述第一数据提供方处的训练样本数据以及各个其它数据提供方的经过解密后的训练样本数据进行数据融合;以及
将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
5.如权利要求1到4中任一所述的方法,其中,所述第一设备和所述第二设备是相同的设备或者不同的设备。
6.如权利要求1所述的方法,其中,所述第一部分神经网络模型和所述第二部分神经网络模型使用不同的模型架构实现,所述方法还包括:
在所述第一设备处,对所述中间结果进行适配处理;以及
在所述第二设备处,对所述当前第二部分神经网络模型输出的梯度信息进行适配处理。
7.如权利要求1所述的方法,其中,所述可信执行环境包括基于sgx的可信执行环境或基于trustzone的可信执行环境。
8.如权利要求1到7中任一所述的方法,其中,所述循环结束条件包括:
循环次数达到预定次数;或者
当前预测差值在预定差值范围内。
9.如权利要求1到7中任何一个所述的方法,其中,所述训练样本数据包括基于图像数据、语音数据或者文本数据的训练样本数据,或者所述训练样本数据包括用户特征数据。
10.一种用于使用可信执行环境来进行神经网络模型训练的装置,所述神经网络模型被依序分割为第一部分神经网络模型和第二部分神经网络模型,所述第一部分神经网络模型位于第一设备的可信执行环境中,以及所述第二部分神经网络模型位于第二设备的非可信执行环境中,所述装置包括:
第一模型处理单元,将数据提供方的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果;
第二模型处理单元,将所述中间结果提供给所述非可信执行环境中的当前第二部分神经网络模型,得到当前预测值;
预测差值确定单元,基于所述当前预测值以及所述训练样本数据的标签值,确定当前预测差值;以及
模型调整单元,根据所述当前预测差值,调整所述当前第一部分神经网络模型和所述当前第二部分神经网络模型的各层模型参数,
所述第一模型处理单元、所述第二模型处理单元、所述预测差值确定单元和所述模型调整单元循环操作,直到满足循环结束条件,
在不满足所述循环结束条件时,所述调整后的第一部分神经网络模型和第二部分神经网络模型用作下一循环过程的当前第一部分神经网络模型和当前第二部分神经网络模型。
11.如权利要求10所述的装置,其中,所述神经网络模型的依序分割取决于下述参数中的至少一种:
所述神经网络模型的分层结构组成;
各个分层结构的复杂度;
所述可信执行环境的存储能力;
所述可信执行环境的算力;和
每轮模型训练时使用的训练样本数目。
12.如权利要求10所述的装置,其中,所述数据提供方包括多个数据提供方,各个数据提供方所提供的训练样本数据是经过加密后的训练样本数据,所述第一设备设置在所述多个数据提供方之外的第三方,所述装置还包括:
数据融合单元,设置在所述可信执行环境中,对各个数据提供方提供的经过加密后的训练样本数据进行解密和数据融合;以及
所述第一模型处理单元将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,得到中间结果。
13.如权利要求10所述的装置,其中,所述数据提供方包括多个数据提供方,所述第一设备设置在所述多个数据提供方中的第一数据提供方中,除了所述第一数据提供方之外的其它数据提供方所提供的训练样本数据是经过加密后的训练样本数据,以及所述装置还包括:
数据融合单元,设置在所述可信执行环境中,对各个其它数据提供方提供的训练样本数据进行解密,并且对所述第一数据提供方处的训练样本数据以及各个其它数据提供方的经过解密后的训练样本数据进行数据融合;以及
所述第一模型处理单元将经过数据融合后的训练样本数据提供给所述可信执行环境中的当前第一部分神经网络模型,以得到中间结果。
14.如权利要求10到13中任一所述的装置,其中,所述第一部分神经网络模型和所述第二部分神经网络模型使用不同的模型架构实现,所述装置还包括:
第一适配单元,设置在所述可信执行环境中,对所述中间结果进行适配处理;以及
第二适配单元,设置在所述非可信执行环境中,对所述当前第二部分神经网络模型输出的梯度信息进行适配处理。
15.一种电子设备,包括:
一个或多个处理器,以及
与所述一个或多个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1到9中任一项所述的方法。
16.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到9中任一项所述的方法。
技术总结