首页> 中国专利> 一种加密机器学习的训练数据准备方法、装置和设备

一种加密机器学习的训练数据准备方法、装置和设备

摘要

本说明书实施例提供了一种加密机器学习的训练数据准备方法、装置和设备,其中,该方法包括:数据拥有方节点基于隐私数据源构建输入流,利用输入流从隐私数据源中获取目标隐私数据,将隐私数据源中隐私数据的目标特征信息发送给非数据拥有方节点;非数据拥有方节点根据目标特征信息构造无效隐私输入数据;将目标隐私数据转换为目标加密数据类型得到目标加密数据;非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练。在本说明书实施例中,在训练过程中数据拥有方节点的目标隐私数据是加密的,非数据拥有方节点不能获取目标隐私数据值,从而可以在确保隐私性的前提下联合多个参与方进行机器学习训练。

著录项

  • 公开/公告号CN112270415A

    专利类型发明专利

  • 公开/公告日2021-01-26

    原文格式PDF

  • 申请/专利权人 矩阵元技术(深圳)有限公司;

    申请/专利号CN202011341389.8

  • 申请日2020-11-25

  • 分类号G06N20/00(20190101);G06F21/60(20130101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人周达;李雅琪

  • 地址 518061 广东省深圳市南山区软件产业基地5栋B座304

  • 入库时间 2023-06-19 09:41:38

说明书

技术领域

本说明书实施例涉及机器学习技术领域,特别涉及一种加密机器学习的训练数据准备方法、装置和设备。

背景技术

在模型训练中只有通过足够多的数据或多样化的数据,才能训练出一个相对较好的模型使用。由于竞争优势、隐私顾虑、规章制度以及关于数据主权和管辖权等问题许多组织无法公开分享它们的数据,因此,随着数据量的增大、数据多样化的增加,以及随着数据隐私的关注程度越来越高,如何在保护数据隐私的前提下,把各不同源、不同企业之间的数据融合运用十分关键。通过安全多方计算(Secure Multi-Party Computation,MPC)进行的隐私保护机器学习提供了一项有前景的解决方案,可以让不同实体在它们的联合数据上训练各种模型,而不会泄露后果无法承担的任何信息。

目前基于TensorFlow和安全多方计算协议构建的隐私计算器学习平台包括:LatticeX-Rosetta,安全多方计算协议要求计算参与方执行同样的计算操作,使用秘密分享值或加密值进行计算,上述LatticeX-Rosetta对于已经进行了秘密分享或加密的值,可以直接使用tf.data的API(接口)构建输入流,使得计算参与方都能够不断从数据源获取输入数据,提供给隐私机器学习训练。但是在数据为原始值(隐私数据)状态下,只有隐私数据拥有方才具备数据源(隐私数据),非数据拥有方没有数据源和数据结构信息,因此无法构建输入流,也无法获取到合法的元素,从而使得在计算过程中非数据拥有方无法按照多方安全计算协议的要求利用加密数据进行迭代训练。由此可见,采用现有技术中的隐私计算器学习平台需要先对隐私数据源中的隐私数据进行秘密分享或者加密,效率较低。

针对上述问题,目前尚未提出有效的解决方案。

发明内容

本说明书实施例提供了一种加密机器学习的训练数据准备方法、装置和设备,以解决现有技术中的隐私计算器学习平台需要先对隐私数据源中的隐私数据进行秘密分享或者加密,效率较低的问题。

本说明书实施例提供了一种加密机器学习的训练数据准备方法,包括:数据拥有方节点基于隐私数据源构建输入流;所述数据拥有方节点利用所述输入流从所述隐私数据源中获取目标隐私数据;所述数据拥有方节点将所述隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,所述目标特征信息用于表征所述隐私数据源中隐私数据的结构;各个非数据拥有方节点根据所述目标特征信息构造无效隐私输入数据;所述数据拥有方节点和非数据拥有方节点基于所述无效隐私输入数据和安全多方计算协议的秘密输入算子将所述目标隐私数据转换为目标加密数据类型,得到目标加密数据;所述多个非数据拥有方节点和所述数据拥有方节点利用所述目标加密数据和安全多方计算协议进行协同机器学习训练。

本说明书实施例还提供了一种加密机器学习的训练数据准备装置,包括:输入流构建模块,用于数据拥有方节点基于隐私数据源构建输入流;获取模块,用于所述数据拥有方节点利用所述输入流从所述隐私数据源中获取目标隐私数据;发送模块,用于所述数据拥有方节点将所述隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,所述目标特征信息用于表征所述隐私数据源中隐私数据的结构;确定模块,用于各个非数据拥有方节点根据所述目标特征信息构造无效隐私输入数据;转换模块,用于所述数据拥有方节点和非数据拥有方节点基于所述无效隐私输入数据和安全多方计算协议的秘密输入算子将所述目标隐私数据转换为目标加密数据类型,得到目标加密数据;训练模块,用于所述多个非数据拥有方节点和所述数据拥有方节点利用所述目标加密数据和安全多方计算协议进行协同机器学习训练。

本说明书实施例还提供了一种加密机器学习的训练数据准备设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现所述加密机器学习的训练数据准备方法的步骤。

本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述加密机器学习的训练数据准备方法的步骤。

本说明书实施例提供了一种加密机器学习的训练数据准备方法,可以通过数据拥有方节点基于隐私数据源构建输入流,并构建的输入流从隐私数据源中获取目标隐私数据。由于非数据拥有方节点无法直接获取目标隐私数据,为了各个计算节点获取得数据形状一致,数据拥有方节点可以将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点,其中,目标特征信息用于表征隐私数据源中隐私数据的结构,并且可以根据目标特征信息构造无效隐私输入数据。进一步的,由于隐私数据为明文数据,因此,为了确保目标隐私数据不被泄露,数据拥有方节点和非数据拥有方节点可以基于无效隐私输入数据和安全多方计算协议的秘密输入算子协同将目标隐私数据转换为目标加密数据类型,得到目标加密数据。多个非数据拥有方节点和数据拥有方节点可以利用目标加密数据进行协同机器学习训练,从而可以在确保数据的隐私性的前提下联合多个参与方进行加密机器学习训练。

附图说明

此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,并不构成对本说明书实施例的限定。在附图中:

图1是根据本说明书实施例提供的加密机器学习的训练数据准备方法的步骤示意图;

图2是根据本说明书实施例提供的多个参与方之间的交互执行关系的示意图;

图3是根据本说明书实施例提供的多个参与方联合进行机器学习训练或推理的流程的示意图;

图4是根据本说明书实施例提供的加密机器学习的训练数据准备装置的结构示意图;

图5是根据本说明书实施例提供的加密机器学习的训练数据准备设备的结构示意图。

具体实施方式

下面将参考若干示例性实施方式来描述本说明书实施例的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书实施例,而并非以任何方式限制本说明书实施例的范围。相反,提供这些实施方式是为了使本说明书实施例公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域的技术人员知道,本说明书实施例的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本说明书实施例公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

虽然下文描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。

请参阅图1,本实施方式可以提供一种加密机器学习的训练数据准备方法。该加密机器学习的训练数据准备方法可以用于在确保数据的隐私性的前提下联合多个参与方进行加密机器学习的训练数据准备。上述加密机器学习的训练数据准备方法可以包括以下步骤。

S101:数据拥有方节点基于隐私数据源构建输入流。

在本实施方式中,在LatticeX-Rosetta框架中由于加密机器学习训练的过程涉及多个参与方,而用于训练的数据可能是由多个参与方分别提供,出于竞争优势、隐私顾虑、规章制度以及关于数据主权和管辖权等问题各个参与方无法公开分享它们的数据,因此,数据具有拥有者关系属性,多个参与方可以分为数据拥有方和非数据拥有方。

在本实施方式中,流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,外部传入数据给程序需要借助输入流。由于数据拥有方节点可以直接使用tf.data的API构建输入流,因此,数据拥有方节点可以基于隐私数据源构建输入流。上述tf.data是一个用于数据读取管道搭建的API(Application Programming Interface,应用程序接口),使用tf.data的API构建数据管道,主要依靠两个API:tf.data.Dataset和tf.data.Iterator,tf.data.Dataset用于读入数据,做预处理,而读取数据则依赖于tf.data.Iterator接口。

在本实施方式中,上述Dataset是不依赖于数据库的独立数据集合,即使断开数据链路,或者关闭数据库,Dataset依然是可用的。上述Iterator(迭代器)用于提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。Iterator模式是运用于聚合对象的一种模式,通过运用该模式可以在不知道对象内部表示的情况下,按照一定顺序(由Iterator提供的方法)访问聚合对象中的各个元素。

在本实施方式中,上述LatticeX-Rosetta是基于TensorFlow和安全多方计算协议构建的隐私计算器学习平台,在隐私机器学习训练中其计算节点都是相对独立的,而非TensorFlow分布式集群的计算节点,每个参与的节点都执行完全一样的计算图和计算逻辑。由于数据具有拥有者关系属性,对于已经进行了秘密分享或加密的值,可以直接使用tf.data的API(接口)构建输入流,使得计算参与方都能够不断从数据源获取输入数据,提供给隐私机器学习训练。

但是在数据为原始值(隐私数据)状态下,对于拥有数据的计算节点,它仍可以使用tf.data的API(接口)完整地执行构建输入流,也能够在构建好的输入流上通过调用get_next函数源源不断读取下一批量的隐私数据,而非拥有者计算节点没有数据源和数据结构信息,从而无法构建输入流。因此,为了复用tf.data的API构建隐私数据管道,并且最小化改动tf.data的API的使用可以设计一个tf.data的隐私数据源Dataset对象,用来处理外部设备(磁盘、网络IO、数据库等)中隐私数据的读取。其中,上述get_next函数用于返回集合中的下一个对象,如果不存在下一个对象(例如,如果已定位在集合的末尾),则返回抛出异常,上述网络IO为网络输入/输出。

在本实施方式中,为了保证隐私计算中,各个计算节点从隐私数据管道获取得数据形状一致,在构建输入流时,可以定义数据拥有方节点除了完成输入流构建,还需要将读取的隐私数据的特征信息发送给非数据拥有方,以使非数据拥有方可以获取隐私数据的结构信息,从而可以完成多方计算的数据管道搭建。

在本实施方式中,上述TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统,Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程,执行过程实际上是从输入到计算图,然后由计算图执行计算节点得到输出的过程,计算图由一系列的节点(算子)组成,因此,隐私数据源Dataset对象在执行过程中实际是运行TensorFlow算子。

在本实施方式中,数据拥有方节点所拥有的隐私数据可以存储在对应的外部设备(磁盘、网络IO、数据库等)中,上述原始隐私数据为数据拥有方可获取的明文数据,存储在外部设备中的隐私数据的集合为隐私数据源。

S102:数据拥有方节点利用输入流从隐私数据源中获取目标隐私数据。

在本实施方式中,由于隐私数据源中可能存储有多个隐私数据,而一次机器学习训练中不会全部用到,因此,数据拥有方节点可以利用构建好的输入流从隐私数据源中获取目标隐私数据。

在本实施方式中,数据拥有方节点可以利用Iterator迭代器的get_next操作从隐私数据源中获取目标隐私数据,上述目标隐私数据可以是从隐私数据源中随机获取或者按照预设顺序获取的预设单位的数据。其中,上述预设顺序可以是Iterator迭代器中定义的,上述预设单位可以为32个元素、一行等,具体的可以根据实际情况确定,本说明书对此不作限定。

在一个实施方式中,为了标识数据拥有方节点(data_owner),上述目标隐私数据中可以包含数据拥有方节点的标识数据,上述标识数据可以为数据拥有方节点的标识,例如:数据拥有方所属的计算节点为P0,对应的数据拥有方节点的标识数据可以为P0。当然,标识数据不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。

S103:数据拥有方节点将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,目标特征信息用于表征隐私数据源中隐私数据的结构。

在本实施方式中,为了保证隐私计算中,各个计算节点从隐私数据管道获取得数据形状一致,数据拥有方节点可以在第一次利用get_next函数从隐私数据源中获取得到目标隐私数据时,获取本次训练所需的隐私数据源中隐私数据的目标特征信息,并将目标特征信息发送给多个非数据拥有方,以使非数据拥有方可以获取隐私数据源中隐私数据的结构信息。

在本实施方式中,上述目标特征信息可以用于表征隐私数据源中隐私数据的结构,上述目标特征信息可以用于表征隐私数据源中隐私数据的结构。在一些实施例中,上述目标特征信息可以为隐私数据源中隐私数据的头部信息,上述头部信息可以包括:行数、列数和分隔符等头部概要信息。当然可以理解的是上述头部信息中还可以包含其他可能的数据,具体的可以根据实际情况确定,本说明书实施例对此不作限定。

S104:各个非数据拥有方节点根据目标特征信息构造无效隐私输入数据。

在本实施方式中,根据安全多方计算协议中数据的特点,各个非数据拥有方节点可以根据已经获取的目标特征信息确定出无效隐私输入数据,上述无效隐私输入数据只为了保证TensorFlow执行能够正确进行,是无效的输入数据,不会用于进行安全多方计算。

在本实施方式中,安全多方计算是指在无可信第三方的情况下,多个参与方协同计算一个约定的函数,并且保证每一方仅获取自己的计算结果,无法通过计算过程中的交互数据推测出其他任意一方的输入和输出数据。秘密分享(SS,Secret Sharing)是指将数据拆散成多个无意义的数,并将这些数分发到多个参与方那里。每个参与方拿到的都是原始数据的一部分,一个或少数几个参与方无法还原出原始数据,只有把每个参与方各自的数据凑在一起时才能还原出真实数据。

在一个实施方式中,可以采用秘密分享方式来进行秘密分发,各个非数据拥有方可以分别根据目标特征信息填充为0(即没有数值贡献),并将0作为各个非数据拥有方的无效隐私输入数据。因此所有的非数据拥有方节点的数据字段取值为0(即伪造的fake数据),数据拥有方节点拥有实际的隐私数值,这样既达到了秘密共享方式加密的目的,又保证数据管道能够正确执行。

在本实施方式中,由于上述非数据拥有方节点的无效隐私输入数据为无效数据,因此,根据目标特征信息进行填充时可以不限定于填充0,还可以是其他的任意同类型数据值,具体的可以根据实际情况确定,本说明书实施例对此不作限定。

在一个场景示例中,多个参与方之间的交互执行关系如图2中所示,假设共有三个参与方:P0、P1和P2,其中,P0为数据拥有方,目标隐私数据值为a,则其秘密分享值仍为a;非数据拥有方P1和P2的秘密分享值按照数据拥有方P0广播的目标特征信息填充为0(fake数据)。由于P0拥有数据,其仍然保留其原始数据值a,而P1和P2并不具备该数据,可以直接置为0(即没有数值贡献),这样不拥有数据的参与方P1和P2的数据值加起来仍为0,所有参与方P0、P1和P2的数据值加起来仍为a,从而可以达到秘密共享的目的,参与方P0、P1和P2可以利用秘密分享值联合进行计算。

S105:数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据。

在本实施方式中,由于加密机器学习训练需要使用加密数据,因此,数据拥有方节点可以联合非数据拥有方节点的无效隐私输入数据将数据拥有方节点的目标隐私数据转换为目标加密数据类型,从而得到目标加密数据。

在本实施方式中,安全多方计算可以利用加法秘密共享或不经意传输(ObliviousTransfer)和混淆电路(Garble Circle)等技术,本说明不限定具体技术。

在本实施方式中,由于机器学习训练基于Latticex-Rosetta框架实现的,在Latticex-Rosetta框架中,由于其支持多中密码学协议和自定义类型,上述目标加密数据类型可以为Latticex-Rosetta框架对应的目标安全多方计算协议的加密数据类型。外部输入的数据需要转换为框架对应协议的加密数据类型,因此,可以在数据预处理函数尾部添加一个PrivateInput算子,用于将数据拥有方节点的目标隐私数据转换为目标加密数据类型,对于不同的安全多方计算协议,PrivateInput算子将调用安全多方计算协议对应的秘密输入PrivateInput接口来完成其功能。

在一个实施方式中,在文本解码decode最后的输出可以调用PrivateInput算子将隐私数据转换为安全多方计算协议对应的加密数据类型,PrivateInput算子包含一个data_owner用于标识数据拥有方。tf.data提供了map接口,map接口可以添加转换函数对数据管道输出的灵活多样的预处理操作,可以使用map将csv文件(即文本行文件,字段分隔符为“,”)的每行解析并转换为tf.float32向量,接着添加batch批量化转换,每次执行到batch都会获取下一个新的32个元素,最终可以通过迭代器Iterator的get_next提供数据管道的能力。其中,map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,map中的key不要求有序,不允许重复。上述tf.float可以用于指定数据的类型,batch(批处理)通常被认为构建一个数据批量集合。

在本实施方式中,可以设计一个PrivateTextLineDataset类用来实现隐私源数据Dataset算子的功能,其中,PrivateTextLineDataset的构造函数可以添加属性字段data_owner标识数据拥有方。

在本实施方式中,可以通过最小化改动tf.data API的使用,并配合用户层的极小改动来实现隐私数据管道。参照上述隐私数据管道的实现方式,其他类型的源Dataset(例如:tf.data.TFRecordDataset、tf.data.FixedLengthRecordDataset或第三方贡献的Dataset)都可以使用这种方式实现隐私数据管道,从而有效提高了隐私数据管道实现的易用性和通用性,并且能够有效降低隐私机器学习的门槛。

在一个实施方式中,数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据,可以包括:根据各个非数据拥有方节点的无效隐私输入数据与数据拥有方节点的目标隐私数据确定有效隐私数据;其中,有效隐私数据为目标隐私数据。进一步的,可以基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据。

在本实施方式中,由于各个非数据拥有方节点拥有的是无效隐私输入数据,由于无效隐私输入数据是伪造的fake数据,并非是其正真的数据,实际上各个非数据拥有方节点并没有数据。因此,在利用安全多方计算协议的秘密输入算子进行加密时,可以先确定多个参与方的有效隐私数据,上述有效隐私数据即为数据拥有方的目标隐私数据,从而可以联合数据拥有方节点和非数据拥有方节点利用安全多方计算协议将目标隐私数据转换为目标加密数据类型,从而可以得到目标加密数据。

S106:多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练。

在本实施方式中,由于采用了秘密分享,秘密分享是指将数据拆散成多个无意义的数,并将这些数分发到多个参与方那里每个参与方拿到的都是原始数据的一部分,一个或少数几个参与方无法还原出原始数据,只有把每个参与方各自的数据凑在一起时才能还原出真实数据,同时秘密共享可以认为是数据的目标加密方式。因此,多个非数据拥有方节点和数据拥有方节点可以利用目标加密数据进行协同机器学习训练。

在一个实施方式中,多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练,可以包括:将目标加密数据作为训练数据,多个非数据拥有方节点和数据拥有方节点根据训练数据进行协同机器学习训练。

在本实施方式中,可以将目标加密数据作为训练数据,由于该训练数据为加密数据,因此,在训练过程中非数据拥有方并不能获取数据拥有方的明文数据,从而可以在确保数据的隐私性的前提下联合多个参与方进行隐私机器学习训练。当然,训练数据确定的方式不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。

在一个实施方式中,可以按照TensorFlow定义Dataset算子的方式,设计一个PrivateTextLineDatasetOp类用来实现隐私源数据Dataset算子的功能,隐私源数据Dataset算子的功能主要包括:构建输入流、提供get_next操作用来获取下一个单位的隐私数据。在用户层可以创建一个PrivateTextLineDatasetV1类,导出别名为PrivateTextLineDataset,其构造函数添加属性字段data_owner标识数据拥有方,用户只需要使用下述python代码即可实现隐私源数据Dataset算子的创建。

import latticex.rosetta as rtt

dataset=rtt.PrivateTextLineDataset(data_file,data_owner=0)

在本实施方式中,PrivateTextLineDatasetV1类为python层类,给用户代码直接使用;PrivateTextLineDatasetOp类为c++底层类,由TensorFlow引擎在执行计算图的时候调用。

在本实施方式中,由于Dataset对象和隐私数据源的联机发生的很短暂,在取得数据后就立即和数据源断开了,等到下一次要操作数据源内的数据时才会再建立连接。因此,利用本实施方式中构建的Dataset提供数据流水,相比较一次性将隐私数据读入内存的方式更加优越,因为数据是在计算图执行过程中动态执行的,可以每次按需获取数据,有效降低了训练所需的内存。

在一个实施方式中,在多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练之后,还可以包括:在第一次调用迭代器的get_next函数获取目标隐私数据后,数据拥有方节点可以调用迭代器的get_next函数,利用所述输入流从所述隐私数据源中获取所述目标隐私数据的下一个隐私数据。进一步的,数据拥有方节点和各个非数据拥有方节点可以基于安全多方协议的隐私输入算子协同构造目标加密数据类型的数据,得到目标隐私数据的下一个隐私数据的加密数据,并利用目标隐私数据的下一个隐私数据的加密数据和安全多方计算协议进行协同机器学习迭代训练,直至遍历隐私数据源中的每个隐私数据。

在本实施方式中,由于每次均只获取预设单位的数据,因此,为了实现机器学习的迭代训练,可以利用get_next操作用来获取下一个单位的隐私数据,并对下一单位的隐私数据重复步骤102-步骤106中的操作,非数据拥有方节点调用迭代器的get_next函数,利用所述目标特征信息构造无效隐私输入数据,将数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方协议的隐私输入算子(PrivateInput算子)将数据拥有方的目标隐私数据的下一个单位的隐私数据转换为目标加密数据类型,得到目标隐私数据的下一个隐私数据的加密数据,直至遍历隐私数据源中的每个隐私数据。

在本实施方式中,上述Iterator的get_next函数用于返回集合中的下一个单位的隐私数据子集合(记录),如果不存在下一个单位的隐私数据子集合(例如,如果已定位在集合的末尾),则抛出异常返回。

在一个实施方式中,在将数据拥有方节点的目标隐私数据转换为目标加密数据类型之前,还可以包括:在数据预处理函数尾部添加一元隐私输入算子,其中,一元隐私输入算子包含数据拥有方节点的标识数据,一元隐私输入算子用于将数据拥有方节点的目标隐私数据转换为目标加密数据类型。

在本实施方式中,上述一元隐私输入算子可以为PrivateInput算子,PrivateInput算子构建的方式与标准的TensorFlow算子一致,PrivateInput算子包含一个data_owner标识数据拥有方,可以采用下述python代码构建PrivateInput算子:

import latticex.rosetta as rtt

dataset=rtt.PrivateInput(inputs,data_owner=0)

在本实施方式中,可以在map的数据预处理函数尾部添加一个PrivateInput算子,用于将数据拥有方节点的目标隐私数据转换为目标加密数据类型,对于不同的安全多方计算协议,PrivateInput算子将调用安全多方计算协议对应的安全输入接口来完成其功能。

在一个场景示例中,多个参与方联合进行机器学习训练或推理的流程可以如图3中所示。其中,多个参与方可以分为数据拥有方节点和非数据拥有方节点,数据拥有方节点可以基于隐私数据源构建输入流,数据拥有方节点的隐私数据输入流关联有效隐私数据(不能泄露的隐私源数据)。非数据拥有方节点构建的隐私数据输入流无关联有效隐私数据,需要由get_next提供fake数据。

进一步的,数据拥有方节点可以提取隐私数据源中隐私数据的特征信息并发送给非数据拥有方节点。数据拥有方节点可以通过迭代器的get_next函数从隐私数据源中获取有效隐私输入数据,对应的非数据拥有方节点可以根据有效隐私输入数据的特征信息构造无效隐私输入数据。进一步的,数据拥有方节点和非数据拥有方节点可以分别执行输入数据预处理转换(batch、repeat等)、输入数据map预处理转换等操作。并且数据拥有方节点和非数据拥有方节点可以基于安全多方协议的隐私输入算子(PrivateInput算子)将map预处理转换后的有效隐私输入数据转换为安全多方计算协议对应的加密数据类型,得到加密数据,可以将该加密数据作为训练数据进行协同机器学习训练或推理。

从以上的描述中,可以看出,本说明书实施例实现了如下技术效果:可以通过数据拥有方节点基于隐私数据源构建输入流,并构建的输入流从隐私数据源中获取目标隐私数据。由于非数据拥有方节点无法直接获取目标隐私数据,为了各个计算节点获取得数据形状一致,数据拥有方节点可以将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点,其中,目标特征信息用于表征隐私数据源中隐私数据的结构,并且可以根据目标特征信息确定出各个非数据拥有方节点的无效隐私输入数据。进一步的,由于隐私数据为明文数据,因此,为了确保目标隐私数据不被泄露,数据拥有方节点和非数据拥有方节点可以基于无效隐私输入数据和安全多方计算协议的秘密输入算子协同将目标隐私数据转换为目标加密数据类型,得到目标加密数据。多个非数据拥有方节点和数据拥有方节点可以利用目标加密数据进行协同机器学习训练,从而可以在确保数据的隐私性的前提下联合多个参与方进行加密机器学习训练。

基于同一发明构思,本说明书实施例中还提供了一种加密机器学习的训练数据准备装置,如下面的实施例。由于加密机器学习的训练数据准备装置解决问题的原理与加密机器学习的训练数据准备方法相似,因此加密机器学习的训练数据准备装置的实施可以参见加密机器学习的训练数据准备方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本说明书实施例的加密机器学习的训练数据准备装置的一种结构框图,如图4所示,可以包括:输入流构建模块401、获取模块402、发送模块403、确定模块404、转换模块405和训练模块406,下面对该结构进行说明。

输入流构建模块401,可以用于数据拥有方节点基于隐私数据源构建输入流。

获取模块402,可以用于数据拥有方节点利用输入流从隐私数据源中获取目标隐私数据。

发送模块403,可以用于数据拥有方节点将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,目标特征信息用于表征隐私数据源中隐私数据的结构。

确定模块404,可以用于各个非数据拥有方节点根据目标特征信息构造无效隐私输入数据。

转换模块405,可以用于数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据。

训练模块406,可以用于多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练。

在一个实施方式中,上述确定模块404可以包括:填充单元,用于各个非数据拥有方分别根据目标特征信息填充为0;处理单元,用于将0作为各个非数据拥有方的无效隐私输入数据。

在本实施方式中,由于上述非数据拥有方节点的无效隐私输入数据为无效数据,因此,根据目标特征信息进行填充时可以不限定于填充0,还可以是其他的任意同类型数据值,具体的可以根据实际情况确定,本说明书实施例对此不作限定。

在一个实施方式中,上述加密机器学习的训练数据准备装置还可以包括:获取单元,用于在第一次调用迭代器的get_next函数获取目标隐私数据后,所述数据拥有方节点调用迭代器的get_next函数,利用所述输入流从所述隐私数据源中获取所述目标隐私数据的下一个隐私数据;构造单元,用于所述数据拥有方节点和各个非数据拥有方节点基于所述安全多方协议的隐私输入算子协同构造所述目标加密数据类型的数据,得到所述目标隐私数据的下一个隐私数据的加密数据;迭代训练单元,用于所述多个非数据拥有方节点和所述数据拥有方节点利用所述目标隐私数据的下一个隐私数据的加密数据和安全多方计算协议进行协同机器学习迭代训练,直至遍历所述隐私数据源中的每个隐私数据。

在一个实施方式中,上述训练模块406可以包括:确定单元,用于将所述目标加密数据作为训练数据;机器学习训练单元,用于多个非数据拥有方节点和数据拥有方节点根据训练数据进行协同机器学习训练。

本说明书实施例实施方式还提供了一种电子设备,具体可以参阅图5所示的基于本说明书实施例提供的加密机器学习的训练数据准备方法的电子设备组成结构示意图,电子设备具体可以包括输入设备51、处理器52、存储器53。其中,输入设备51具体可以用于输入隐私数据源的地址。处理器52具体可以用于据拥有方节点基于隐私数据源构建输入流;数据拥有方节点利用输入流从隐私数据源中获取目标隐私数据;数据拥有方节点将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,目标特征信息用于表征隐私数据源中隐私数据的结构;各个非数据拥有方节点根据目标特征信息构造无效隐私输入数据;数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据;多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练。存储器53具体可以用于存储无效隐私输入数据、目标加密数据等参数。

在本实施方式中,输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。输入设备还可以获取接收其他模块、单元、设备传输过来的数据。处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。存储器具体可以是现代信息技术中用于保存信息的记忆设备。存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。

在本实施方式中,该电子设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

本说明书实施例实施方式中还提供了一种基于加密机器学习的训练数据准备方法的计算机存储介质,计算机存储介质存储有计算机程序指令,在计算机程序指令被执行时可以实现:据拥有方节点基于隐私数据源构建输入流;数据拥有方节点利用输入流从隐私数据源中获取目标隐私数据;数据拥有方节点将隐私数据源中隐私数据的目标特征信息发送给多个非数据拥有方节点;其中,目标特征信息用于表征隐私数据源中隐私数据的结构;各个非数据拥有方节点根据目标特征信息构造无效隐私输入数据;数据拥有方节点和非数据拥有方节点基于无效隐私输入数据和安全多方计算协议的秘密输入算子将目标隐私数据转换为目标加密数据类型,得到目标加密数据;多个非数据拥有方节点和数据拥有方节点利用目标加密数据和安全多方计算协议进行协同机器学习训练。

在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。

在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

显然,本领域的技术人员应该明白,上述的本说明书实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本说明书实施例不限制于任何特定的硬件和软件结合。

虽然本说明书实施例提供了如上述实施例或流程图所述的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本说明书实施例提供的执行顺序。所述的方法的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本说明书实施例的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。

以上所述仅为本说明书实施例的优选实施例而已,并不用于限制本说明书实施例,对于本领域的技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号