CN116257657B - 数据处理方法、数据查询方法、相关装置及存储介质 - Google Patents

数据处理方法、数据查询方法、相关装置及存储介质 Download PDF

Info

Publication number
CN116257657B
CN116257657B CN202211732729.9A CN202211732729A CN116257657B CN 116257657 B CN116257657 B CN 116257657B CN 202211732729 A CN202211732729 A CN 202211732729A CN 116257657 B CN116257657 B CN 116257657B
Authority
CN
China
Prior art keywords
data
query
vector
sub
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211732729.9A
Other languages
English (en)
Other versions
CN116257657A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Real AI Technology Co Ltd
Original Assignee
Beijing Real AI Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Real AI Technology Co Ltd filed Critical Beijing Real AI Technology Co Ltd
Priority to CN202211732729.9A priority Critical patent/CN116257657B/zh
Publication of CN116257657A publication Critical patent/CN116257657A/zh
Application granted granted Critical
Publication of CN116257657B publication Critical patent/CN116257657B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/906Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的实施例涉及多方安全计算领域,提供一种数据处理方法、数据查询方法、相关装置即存储介质,应该数据处理方法包括:获取候选目标向量分量;基于候选目标向量分量,确定候选目标向量分量关联的子集中的数据数量;若子集中的数据数量大于第一预设值,则将候选目标向量分量作为分类树的分支节点,并按照预设类别数量对子集进行聚类,根据聚类结果更新候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于第一预设值,并将数据数量不大于第一预设值的子集关联的候选目标向量分量作为分类树的叶子结点。本申请实施例能够保证各个计算方原始数据的安全性,另外通过本申请实施例构建的分类树可以提供较好的查询功能。

Description

数据处理方法、数据查询方法、相关装置及存储介质
技术领域
本申请实施例涉及多方安全计算及搜索领域,更具体地涉及数据处理方法、数据查询方法、相关装置及存储介质。
背景技术
目前在多方安全计算领域中,参与计算的各计算方均具有各自的计算数据,多方安全计算需要基于各计算方的计算数据进行联合计算,以得到最终的计算结果。然而,参与计算的各个计算方,并不希望自己的计算数据暴露给其他计算方,因此计算过程中则需要在多方安全计算的加密规则下交换数据并进行计算。
在搜索领域中,与多方安全计算类似的是,每个计算方都具有属于各自的数据源,为了保证查询结果更加全面准确,就需要从各个计算方的数据源进行综合查询。若是从一个个计算方的数据源中单独查询再汇总,不仅查询效率较慢,而且查询结果准确度也较低;若要先联合各个计算方的数据源构建搜索引擎,再综合查询,那么各个计算方的数据源则具有暴露的风险。
发明内容
本申请实施例提供一种数据处理方法、数据查询方法、相关装置及存储介质,可以基于各个数据源向各个主计算方秘密分享后,各个主计算方得到的数据集分量,构建子集代指向量的向量分量分类树,每个主计算方仅仅拥有子集代指向量的向量分量,从而保证各个数据源的原始数据不会暴露给任何一个主计算方,同时也不会暴露给其他数据源,而且基于构建的分类树进行查询搜索时也更加的便捷准确。
第一方面,本申请实施例提供一种数据处理方法,应用于多方安全计算中的第一主计算方,各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,所述各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据,所述方法包括:
获取候选目标向量分量,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1;
基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;
若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
第二方面,本申请实施例提供一种数据查询方法,应用于多方安全计算中的第一主计算方,所述数据查询方法包括:
获取第一子查询向量,所述第一子查询向量由查询向量分解得到;
基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果;
所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
第三方面,本申请实施例提供一种数据处理装置,应用于多方安全计算中的第一主计算方,各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,所述各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据,所述数据处理装置包括:
第一输入输出模块,用于获取候选目标分量,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1;
第一处理模块,用于基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;以及
若所述子集中的数据数量大于第一预设值,所述第一处理模块还用于,将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
第四方面,本申请实施例提供一种数据查询装置,应用于多方安全计算中的第一主计算方,该数据查询装置包括:
第二输入输出模块,用于获取第一子查询向量,所述第一子查询向量由查询向量分解得到;
第二处理模块,用于基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果;
所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
第五方面,本申请实施例提供一种处理设备,所述处理设备包括:
至少一个处理器、存储器和输入输出单元;
其中,所述存储器用于存储计算机程序,所述处理器用于调用所述存储器中存储的计算机程序来执行第一方面或第二方面中所述的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行第一方面或第二方面中所述的方法。
相较于现有技术,根据本申请实施例的数据处理方法、相关装置及存储介质,基于各个主计算方秘密分享得到的数据集分量,进行聚类构建分类树,分类树的各个节点仅包括了各个主计算方的子集代指向量的向量分量,每个主计算方都无法单独根据己方的向量分量,获取原始数据,任何一个原始数据都需要基于各个主计算方的向量分量进行计算得到,从而保证了各个数据源的原始数据不会暴露给任何一个主计算方,同时也不会暴露给其他数据源;另外,各个主计算方基于向量分量进行构建分类树,分类树的各个节点的向量分量关联了各个原始数据的聚类结果,因此利用该分类树可以进行数据地快速查询。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
图1为本申请实施例提供的数据处理方法的流程示意图;
图2为基于本申请一实施例提供的数据处理方法的信令交互图;
图3为基于本申请一实施例提供的数据处理方法的内积运算中的乘法运算的结果示意图;
图4为基于本申请一实施例提供的数据处理方法的各个原始数据的真实聚类图;
图5为基于本申请一实施例提供的数据处理方法中的主计算方的数据集分量的聚类图;
图6为基于本申请一实施例提供的数据处理方法中的主计算方的聚类中心分量示意图;
图7为基于本申请一实施例提供的数据查询方法的信令交互图;
图8为本申请一实施例提供的数据处理装置的结构示意图;
图9为本申请一实施例提供的数据查询装置的结构示意图;
图10为本申请实施例提供的计算设备的一种结构示意图;
图11为本申请实施例中手机的一种结构示意图;
图12为本申请实施例中服务器的一种结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象(例如第一主计算方和第二主计算方分别表示为不同的计算方,其他类似),而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请实施例中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式,例如多个模块可以结合成或集成在另一个系统中,或一些特征可以忽略,或不执行,另外,所显示的或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块之间的间接耦合或通信连接可以是电性或其他类似的形式,本申请实施例中均不作限定。并且,作为分离部件说明的模块或子模块可以是也可以不是物理上的分离,可以是也可以不是物理模块,或者可以分布到多个电路模块中,可以根据实际的需要选择其中的部分或全部模块来实现本申请实施例方案的目的。
本申请实施例提出了一种数据处理方法、数据查询方法、相关装置及存储介质,可应用于多方安全计算场景中的任一主计算方,其中多方安全计算涉及至少一个数据源,两个主计算方和一个辅助计算方,每个主计算方至少包括一个数据处理装置。例如,包括第一主计算方和第二主计算方,第一主计算方设有第一数据处理装置,第二主计算方设有第二数据处理装置,各个数据源将各自的原始数据均分解成两个子数据,并将每个原始数据分解得到的两个子数据分别发送至第一主计算方的第一数据处理装置和第二主计算方的第二数据处理装置(例如第一主计算方将第一主计算方的每个原始数据分解得到的两个子数据中的一个发送至第二主计算方,并且第一主计算方从第二主计算方接收第二主计算方的各个原始数据分解得到的两个子数据中的一个),从而第一主计算方和第二主计算方分别拥有一个数据集分量,而且第一主计算方和第二计算各自的数据集分量中分别包含了参与多方安全计算的各个原始数据中的一个子数据(例如第一主计算方基于第一主计算方剩余的子数据,及从第二主计算方接收的子数据,组成第一主计算方的数据集分量)。另外,多方安全计算还包括一个辅助计算方,第一主计算方和第二主计算方各自具有加法、减法算计,辅助计算方可以为第一主计算方和第二主计算方提供乘法算子、除法算子,以及比较算子,例如可以利用SecureNN框架为第一主计算方、第二主计算方和辅助计算方提供秘密分享场景下的数据处理所需要的上述各类算子。在数据处理过程中,第一数据处理装置和第二数据处理装置的工作原理基本相同,以第一数据处理装置为例,第一数据处理装置还用于获取候选目标向量分量、基于候选目标向量分量,确定候选目标向量分量关联的子集中的数据数量,若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。第一数据处理装置可以为接收候选目标向量分量,并基于候选目标向量分量,确定候选目标向量分量关联的子集中的数据数量,并基于所关联的子集中的数据数量,对该子集进行聚类的应用程序,或者安装了接收候选目标向量分量,并基于候选目标向量分量,确定候选目标向量分量关联的子集中的数据数量,并基于所关联的子集中的数据数量,对该子集进行聚类的应用程序,或者为安装了该应用程序的服务器。
本申请实施例提供的方案涉及人工智能(Artificial Intelligence,AI)、联邦学习(Federated Learning,FL)、机器学习(Machine Learning,ML)等技术,具体通过如下实施例进行说明:
其中,AI是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
AI技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
联邦学习(Federated Learning,FL)是一种分布式机器学习技术,其核心思想是通过在多个拥有本地数据的数据源之间进行分布式模型训练,在不需要交换本地个体或样本数据的前提下,仅通过交换模型参数或中间结果的方式,构建基于虚拟融合数据下的全局模型,从而实现数据隐私保护和数据共享计算的平衡,即“数据可用不可见”、“数据不动模型动”的应用新范式。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
现有技术中,在ANN搜索引擎的构建及搜索场景中,需要获取参与计算的各个数据源的原始数据,然后利用查询向量,在各个数据源的原始数据中基于欧式距离,进行搜索查询,然后再对从各个数据源得到的查询结果进行汇总。对于各个数据源的原始数据不仅需要暴露给各个计算方,还需要暴露给其他数据源,无法对各个数据源的原始数据做到隐私保护。
相较于现有技术,根据本申请实施例的数据处理方法、数据查询方法、相关装置及存储介质,基于各个主计算方秘密分享得到的数据集分量,进行聚类构建向量分量分类树,分类树的各个节点仅包括了各个主计算方的子集代指向量的向量分量,每个主计算方都无法单独根据己方的向量分量,获取原始数据,任何一个原始数据都需要基于各个主计算方的向量分量进行计算得到,从而保证了各个数据源的原始数据不被泄露;另外,各个主计算方基于向量分量进行构建分类树,分类树的各个节点的向量分量关联了各个原始数据的聚类结果,因此利用该分类树可以进行快速查询。
一些实施方式中,第一主计算方的第一数据处理装置和第二主计算方的第二数据处理装置为分离式部署。参照图1,本申请实施例提供的数据处理方法可基于图1所示的一种数据处理系统实现。该数据处理系统可以包括第一主计算方的第一数据处理装置01、第二主计算方的第二数据处理装置02、辅助计算方03,数据源包括数据源1~5。
第一数据处理装置01和第二数据处理装置02,均可以部署数据处理程序,如SecureNN框架内的各个算子程序。
第一数据处理装置01用于从数据源1~5分别接收各个原始数据分解得到的两个子数据中的一个,以组成第一主计算方的数据集分量(A1、B1、C1、D2、E2)。第二数据处理装置02用于从数据源1~5收各个原始数据分解得到的两个子数据中的另一个,以组成第二主计算方的数据集分量(A2、B2、C2、D1、E1)。第一数据处理装置01和第二数据处理装置02还可以构建分类树,以第一数据处理装置为例,获选目标向量分量后,可以确定该候选目标向量分量关联的子集中的数据数量,比如(-2,-1,1,2,2)的目标向量分量,对应的节点上的子集为(A1,D2,E2),包括三个数据,假设第一预设值(每个聚类中的最大数据数量)为2,那么与此目标向量分量关联的子集的数据数量大于2,第一数据处理装置01则继续对该节点进行聚类,并根据聚类结果更新所述候选目标向量分量,即将(-2,-1,1,2,2)更新为(3,-2,-3,-4,-5)或者(1,2,3,-1,2),直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,从图1中可知(3,-2,-3,-4,-5)关联的子集中的数据为(A1),(1,2,3,-1,2)关联的子集中的数据为(D2,E2),数据数量均不大于2,因此就可以把(3,-2,-3,-4,-5)和(1,2,3,-1,2)作为分类树的叶子结点,而对于(-2,-1,1,2,2)关联的子集的数量大于2,则作为分类树中的一个分支节点。
第一数据处理装置01和第二数据处理装置02均可以是服务器,还可以是终端设备。
需要说明的是,本申请实施例涉及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
本申请实施例涉及的终端设备,可以是指向用户提供语音和/或数据连通性的设备,具有无线连接功能的手持式设备、或连接到无线调制解调器的其他处理设备。例如移动电话(或称为“蜂窝”电话)和具有移动终端的计算机,例如,可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语音和/或数据。例如,个人通信业务(英文全称:Personal Communication Service,英文简称:PCS)电话、无绳电话、会话发起协议(SIP)话机、无线本地环路(Wireless Local Loop,英文简称:WLL)站、个人数字助理(英文全称:Personal Digital Assistant,英文简称:PDA)等设备。
为了更加清楚地介绍本申请实施例的数据处理方法,下面结合图1所示的场景示意图,对本申请实施例进行更详细的说明。
该方法可应用于多方安全计算中的任意一个主计算方,各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据。比如在图1所示的场景中,本申请实施例提供的一种数据处理方法可以应用于第一主计算方或者第二主计算方,或者第一主计算方和第二主计算方同时使用。数据源包括了数据源1~5,数据源1~5分别提供原始数据A、B、C、D、E,因而A、B、C、D、E构成了参与本多方安全计算的各个原始数据。
在数据准备阶段,各个数据源会将各自的原始数据进行分解,比如数据源1将原始数据A分解为两个子数据A1和A2,数据源2将原始数据B分解为两个子数据B1和B2,数据源3将原始数据C分解为两个子数据C1和C2;数据源4将原始数据D分解为两个子数据D1和D2,数据源5将原始数据E分解为两个子数据E1和E2。然后,第一主计算方从数据源1~5获取各个原始数据分解得到的两个子数据中的一个,以组成第一主计算方的数据集分量(A1、B1、C1、D2、E2)。第二主计算方分别从数据源1~5获取各个原始数据分解得到的两个子数据中的另一个,以组成第二主计算方的数据集分量(A2、B2、C2、D1、E1)。可以看出,此时第一主计算方和第二主计算方均已经具有参与多方安全计算方的各个原始数据的其中一个子数据。需要说明的是,对于任意一个原始数据分解得到的两个子数据合并时可以还原出原始数据,比如A1和A2合并能够还原得到A,B1和B2能够还原得到B。
在本申请实施例中,在对原始数据进行数据分解时,可以基于整数对进行分解。比如,对于任意一个原始数据x,可以将其分解成整数环上的整数对(x1,x2),其中x1是一个/>中的随机整数,而x2=x-x1。x1,x2为x的分量(子数据)。在上文表述和下文附图中,为了方便在分解出的分量中使用了负数进行表述,但在实际程序中,这些负数会在整数环中被映射为正数,例如,-1会被映射为(264-1)。
在介绍了各个主计算方的数据集分量的构成之后,对本申请实施例中的数据处理方法进行详细阐述,参照图2所示,该数据处理方法可应用于如图1所示的多方安全计算场景下的第一主计算方的第一数据处理装置,或者第二主计算方的第二数据处理装置,可以基于各个主计算方秘密分享后的数据集分量,构建子集代指向量的向量分量分类树,每个主计算方仅仅拥有子集代指向量的分量,从而保证各个主计算方的原始数据不会泄露,而且基于构建的分类树进行查询搜索时也更加的便捷准确。
其中,在隐私计算场景下,将一个数据集合按照数据类别分成几个小的数据集合,为了保证数据的私密性,无法像普通场景下直接将各个数据存储在一起。取而代之的方式是,将存储的数据集合一直固定为原始的数据,而数据集合子集则用01向量来表示,这里的01向量即为子集代指向量。子集代指向量的长度等于源数据的数据个数,子集代指向量中的每个向量元素的取值只能为0或1。第i个元素取值为1表示源数据中的第i个数据属于这个子集,否则就不属于这个子集。
在本申请实施例中,第一主计算方和第二主计算方均具有各自的数据集分量,聚类过程中第一主计算方和第二主计算方分别存储的是代表各个原始数据子集的子集代指向量的一个分量(向量分量),比如,对于子集(B,C)的代指向量分量为(0,1,1,0,0),第一主计算方与此对应的向量分量为(1,2,4,-2,-3),属于(0,1,1,0,0)的一个分量,第二主计算方与此对应的向量分量为(-1,-1,-3,2,3),属于(0,1,1,0,0)的另一个分量,在构建分类树的过程中仅仅以向量分量的形式存在,而真实的子集代指向量(0,1,1,0,0)并不存在,运算过程均以两个主要计算方的向量分量形式进行,以避免数据泄露。
如图2所示,所述数据处理方法包括如下步骤:
步骤S100:获取候选目标向量分量。
在本申请实施例中,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1。其中,候选目标向量分量为子集代指向量中的一个分量,各个原始数据的一个子集的子集代指向量具有两个向量分量。
在多方安全计算中还需要借助一个辅助计算方,该辅助计算方不隶属于第一主计算方,也不隶属于第二主计算方,而是独立于第一主计算方和第二主计算方之外的一个独立计算方,辅助计算方没有数据源,其仅仅提供数据处理过程中的加法、减法、乘法、除法、比较等基础算子。在本申请实施例中,第一主要计算方、第二主要计算方和辅助计算方之间的算子运算可以借助SecureNN框架实现,SecureNN框架可以为秘密分享场景下的运算提供相应的算子。
比如,原始数据x,分解为x=x1+x2,子数据x1存储在第一主计算方,x2发送至第二主计算方;
原始数据y,分解为y=y1+y2,子数据y1存储在第二主计算方,y2发送至第一主计算方;
那么第一主计算方的数据集分量为(x1,y2),第二主计算方的数据集分量为(x2,y1)。
对于加法运算:
第一主计算方进行加法运算z1=x1+y2;
第二主计算方进行加法运算z2=x2+y1;
当任一主计算方需要获取x+y时,只需从另外一个主计算方获取z1或者z2,就可以得到z1+z2=(x1+y2)+(x2+y1)=x+y。
对于减法运算:
第一主计算方进行加法运算n1=x1-y2;
第二主计算方进行加法运算n2=x2-y1;
当任一主计算方需要获取x-y时,只需从另外一个主计算方获取n1或者n2,就可以得到n1+n2=(x1-y2)+(x2-y1)=x-y。
对于乘法运算:
如图3所示,图3为基于本申请一实施例的内积运算中的乘法运算的结果示意图。其中辅助计算方用于提供随机数i和j,并计算得到k=i*j,对i、j、k进行分割得到i1、i2、j1、j2、k1、k2,其中i=i1+i2、j=j1+j2、k=k1+k2,将i1、j1、k1发送给第一主计算方,i2、j2、k2发送给第二主计算方。第一主计算方计算E0=x1-i1和F0=y2-j1,第二主计算方计算E1=x2-i2和F1=Y1-j2;第一主计算方和第二主计算方交换E0、E1、F0、F1,并各自计算得到E=E0+E1和F=F0+F1;第一主计算方计算得到(x,y)的一个分片-EF+y2*E+x1*F+k1;第二主计算方计算得到(x,y)的另一个分片x2*F+y1*E+k2;可以验证得到第一主计算方和第二主计算方各自持有的分片满足:
(-EF+y2*E+x1*F+k1)+(x2*F+y1*E+k2)
=E*(-F+y1+y2)+F(x1+x2)+(k1+k2)
=(x-i)*j+(y-j)*x+i*j
=x*y。
因此,基于上述乘法算子,第一主计算方可以得到x*y的一个分量,第二主计算方可以得到x*y的另一个分量,当任一主计算方需要获取x*y时,只要获取另一个主计算方关于x*y的另一个分量,即可通过加法得到x*y。
从上述加法、减法、乘法的运算过程中可知,第一主计算方并没有获得原始数据x、y,第二主计算方也没有获得原始数据x、y,辅助计算方也没有获取到x、y、x*y,但是,第一主计算方和第二主计算方均具有x的一个分量,y的一个分量,(x+y)的一个分量,(x-y)的一个分量,而且基于上述乘法算子还均能得到x*y的一个分量,因此,当任一主计算方需要计算(x+y)、(x-y)、x*y时,只需从另一主计算方获取相应的分量,再结合自身的分量,就可以得到相应的结果值。在此过程中主计算方仅仅能够获得分量,当两个分量结合时也仅仅只能得到计算结果值,如,仅能得到(x+y)、(x-y)、x*y,而具体的x和y则并不会暴露给任何一个计算方,从而保证了各个数据源的原始数据的安全性。
对于图1中的应用场景,第一主计算方存储的数据集分量为(A1,B1,C1,D2,E2),第二主计算方存储的数据集分量为(A2,B2,C2,D1,E1),基于上述SecureNN框架下的各个算子,可以对各自的数据集分量进行聚类。其中需要说明的是,上述仅仅示出了加法算子、减法算子和乘法算子,对于除法算子、比较算子,可以基于现有技术中SecureNN框架的具体运算过程。
聚类时采用k=2的聚类方法,即每次仅按照2个类别数量进行聚类,聚类时还需要预先设置每个聚类类别中的数据数量(即第一预设值),在本申请实施例中第一预设值为2,即聚类后的每个叶子结点的数据数量均不超过2,如图4a所示,图4a即为A、B、C、D、E的真实分类树。需要说明的是,在本申请实施例中第一预设值为2,在其他实施例中还可以是其他数值,比如3、50、100等。
如图4b所示,图4b为参与多方安全计算的各个原始数据A、B、C、D、E的真实分类树,对应的子集代指向量分类树。其中,每个节点中的向量元素个数均与参与多方安全计算的全部原始数据的个数相同,比如在本申请实施例中参与多方安全计算的原始数据的数量为5,那么子集代指向量的分类树中的各个节点中的子集代指向量的向量元素个数均为5。每个节点上的子集代指向量的各个向量元素均与各个原始数据对应,比如子集代指向量(1,0,0,1,1)中第一个向量元素为“1”,代表本节点中具有原始数据“A”,第二个向量元素为“0”,代表本节点中不具有原始数据“B”,第三个向量元素为“0”,代表本节点不具有原始数据“C”,第四个向量元素为“1”,代表本节点具有原始数据“D”,第五个向量元素为“1”,代表本节点具有原始数据“E”。
需要说明的是,图4中的真实分类树和子集代指向量分类树,在第一主计算方、第二主计算方、辅助计算方中均不存在,图4仅仅为了便于说明本申请实施例的原理。辅助计算方仅用于参与辅助计算,而第一主计算方和第二主计算方仅仅具有图4b中子集代指向量的向量分量。
如图5所示,图5a为第一主计算方所拥有的数据集分量,与图4b中参与多方安全计算的各个原始数据的真实分类树所对应的分类树;图4b为第二主计算方所拥有的数据集分量,与图4b中参与多方安全计算的各个原始数据的真实分类树所对应的分类树;图5c为第一主计算方的向量分量分类树,图5b为第二主计算方的向量分量分类树。
其中,第一主计算方和第二主计算方在同一时间步长下的两个节点中的两个子集,与真实分类树中相应节点的子集对应。比如,第一主计算方中子集(A1,D2,E2)所在的节点,与第二主计算方子集(A2,D1,E1)所在的节点,为同一时间步长下的两个节点,二者合并时能够得到(A,D,E),即能够得到真实二叉树聚类树中与该两个节点对应的节点上的各个原始数据。
另外,第一主计算方和第二主计算方在同一时间步长下的两个节点中的两个向量分量,是由子集代指向量分类树中对应节点的子集代指向量分解得到。比如,子集代指向量(1,0,0,1,1)分解得到第一主计算方的向量分量(-2,-1,1,2,2)和第二主计算方的向量分量(3,1,-1,-1,-1),其中第一主计算方的向量分量(-2,-1,1,2,2)关联子集(A1,D2,E2),第二主计算方的向量分量(3,1,-1,-1,-1)关联子集(A2,D1,E1),子集(A1,D2,E2)和子集(A2,D1,E1)合并能够得到子集(A,D,E);又比如,子集代指向量(0,1,1,0,0)分解得到第一主计算方的向量分量(1,2,4,-2,-3)和第二主计算方的向量分量(-1,-1,-3,2,3),其中第一主计算方的向量分量(1,2,4,-2,-3)关联子集(B1,C1),第二主计算方的向量分量(-1,-1,-3,2,3)关联子集(B2,C2),子集(B1,C1)和子集(B2,C2)合并能够得到子集(B、C)。由于第一主计算方和第二主计算方在同一时间步长下的两个节点中的两个向量分量,是子集代指向量的两个分量,那么第一主计算方和第二主计算方在同一时间步长下的两个节点中的两个向量分量合并时能够得到子集代指向量,故而,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和也必然只能是0或1。比如,对于第一主计算方的向量分量(-2,-1,1,2,2)和第二主计算方的向量分量(3,1,-1,-1,-1)均关联子集(A、D、E),两个向量分量对位元素之相加就构成真实子集代指向量(1,0,0,1,1)。
在本申请实施例中,对于第一主计算方和第二主计算方的向量分量的获取,可以基于和SecureNN框架中的最小值函数算子和比较算子获得。比如,对于第一主计算方的数据集分量(A1,B1,C1,D2,E2)进行k=2聚类时,从根节点开始,随机获取两个聚类中心分量,此处的两个聚类中心分量指的是数据集(A1,B1,C1,D2,E2)的两个聚类中心,同时此两个聚类中心与数据集(A、B、C、D、E)的两个聚类中心对应,而且数据集分量(A1,B1,C1,D2,E2)的两个聚类中心属于数据集(A、B、C、D、E)的两个聚类中心的各自一个分量,而数据集(A、B、C、D、E)的两个聚类中心的另外两个分量即为第二主计算方的数据集分量(A2、B2、C2、D1、E1)在根节点处的两个聚类中心分量。在得到第一主计算方的分量数据集(A1,B1,C1,D2,E2)的两个聚类中心分量后,计算(A1,B1,C1,D2,E2)中的每个数据距离两个聚类中心分量的距离(计算过程基于上述各个算子进行),在得到每个数据到两个聚类中心分量的距离后,利用最小值函数算子,可以得到每个数据距离哪个聚类中心分量更近的01值的分量,这些01值分量组成的01向量可称为类别指示向量分量。类别指示分量的第i位为0表示第i个数据属于类别0;否则第i位为1,表示第i个数据属于类别1。类别指示向量的分量和全0向量的分量做比较算子,可以得到类别0的子集代指向量的分量。同理,和全1向量的分量做比较算子,可以得到类别1的子集代指向量的分量。
需要说明的是,在聚类过程中涉及到的运算过程,均可以采用SecureNN框架中的相应的算子进行,因此并不会暴露各个数据源的原始数据。
如图5c、图5d所示,对于图4a中的真实分类树中的每一个节点,第一主计算方和第二主计算按照上述方法,均能够获得与其对应的向量分量,即候选目标向量分量。
步骤S200:基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量。
在本申请实施例中,第一主计算方和第二主计算方利用辅助计算方基于SecureNN框架中的比较算子和最小值函数算子,能够分别对各自的数据集分量进行聚类,并得到与聚类后各个子集对应的向量分量。
如图4、6所示,(A、B、C、D、E)经过第一次聚类之后得到两个子集(A、D、E)和(B、C),其中子集(A、D、E)对应的子集代指向量为(1,0,0,1,1),子集(B、C)对应的子集代指向量为(0,1,1,0,0),第一主计算方得到候选目标向量分量为(-2,-1,1,2,2)和(1,2,4,-,2,-3),第二主计算方得到的候选目标向量分量为(3,1,-1,-1,-1)和(-1,-2,-3,2,1)。
以第一主计算方为例,此时需要计算第一主计算方中的候选目标向量分量(-2,-1,1,2,2)和(1,2,4,-2,-3),分别在第一主计算方的数据集分量中对应的子集的数量。如候选目标分量(-2,-1,1,2,2)在第一主计算方的数据集分量中对应的子集为(A1,D1,E1),具有三个数据,候选目标向量分量(1,2,4,-2,-3)在第一主计算方的数据集分量中对应的子集为(B1,C1),具有两个数据。
在本申请实施例中,可以通过如下方法计算候选目标向量分量对应的子集中的数据数量。假设候选目标向量分量为(-2,-1,1,2,2),此时需要确定第二主计算方与该候选目标向量分量对应的向量分量,即(3,1,-1,-1,-1),然后对于第一主计算方而言,将候选目标向量分量(-2,-1,1,2,2)中的各个向量元素相加,得到:(-2)+(-1)+1+2+2=2;此时的“2”即为该候选目标向量分量对应的子集中的数据数量的一个分量。
对于第二主计算方而言,将与所述候选目标向量分量对应的向量分量(3,1,-1,-1,-1)中的各个向量元素相加,得到:3+1+(-1)+(-1)+(-1)=1,此时的“1”即为该候选目标向量分量对应的子集中的数据数量的另一个分量。
然后第一主计算方和第二主计算方分别将各自得到的数据数量的分量交换,即第一主计算方将“2”发送至第二主计算方,并从第二主计算方获取“1”,此时第一主计算方就得到了代表所述候选目标向量分量对应的子集中的数据数量的两个分量“2”和“1”,然后将二者合并相加就确定了该候选目标向量分量对应的子集中的数据数量为2+1=3。从中可以看出此计算结果与实际聚类结果相同。
步骤S300:若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
步骤S200中介绍了如何计算得到候选目标向量分量关联的子集中的数据数量。如候选目标向量分量(-2,-1,1,2,2)关联的子集为(A1、D2、E2),其数据数量为3,大于第一预设值,此时可以将此候选目标向量分量(-2,-1,1,2,2)所在的节点作为分支节点,然后继续对子集(A1、D2、E2)继续进行类别数量k=2的聚类,如图4a所示,子集(A1、D2、E2)继续聚类得到两个子集(A1)和(D2、E2),并更新得到另外两个候选目标向量分量(3,-2,-3,-4,-5)和(1,2,3,-1,-2),然后计算更新得到的两个候选目标向量分量对应的子集的数据数量,其中(3,-2,-3,-4,-5)对应的子集为(A1),数据数量为1个,不大于第一预设值,(1,2,3,-1,-2)对应的子集为(D2、E2),数据数量为2个,不大于第一预设值,那么候选目标向量分量(3,-2,-3,-4,-5)和(1,2,3,-1,-2)所在的节点则均为叶子结点。
对于与候选目标向量分量(-2,-1,1,2,2)在同一父节点下的候选目标向量分量(1,2,4,-2,-3)对应的子集为(B1、C1),数据数量为2,不大于第一预设值,则也作为叶子节点。
由此,即可得到第一主计算方的数据集分量对应的向量分量分类树,如图5c,第二主计算方的数据集分量对应的向量分量分类树(图5d)的获取过程与第一主计算方一致,在此不一一赘述。
基于上述第一主计算方和第二主计算方向量分量分类树的获取过程,两个主计算方方均基于分量数据集进行构建分类树,而且构成得到的分类树各个节点也仅仅包含了各个原始数据子集的子集代指向量中的一个分量,因此各个数据源的原始数据不会暴露给任何一个主计算方,同时也不会暴露给任何一个数据源。
在本申请实施例中,在获取候选目标向量分量后,所述方法还包括:
基于所述候选目标向量分量、与所述候选目标向量分量位于同一时间步长的关联同一子集的另一向量分量,确定所述候选目标向量分量所在节点的聚类中心分量。
如图6a所示,图6a为参与多方安全计算的各个原始数据的真实分类树中各个节点上的聚类中心示意图。其中,在本申请实施例中,是按照每个节点上的原始数据的平均值计算聚类中心。对于第一主计算方和第二主计算方的分类树的各个节点的聚类中心分量,也可以基于各个节点上对应的数据的平均值进行计算得到该节点的聚类中心分量。利用平均值的方法进行计算各个节点的聚类中心分量,仅仅涉及加法和除法,因此仅仅基于SecureNN框架的算子就能完成此运算过程,而无需其他协议算子。
按照此种平均值方法,即可得到第一计算方和第二计算方各个节点的聚类中心分量,如图6b所示,图6b为第一主计算方的数据集分量在各个节点上的聚类中心分量示意图,图6c为第二主计算方的数据集分量在各个节点上的聚类中心分量示意图。其中,f1和f2为A+B+C+D+E)/5的两个分量,p1和p2为(A+D+E)/3的两个分量,q1和q2为(B+C)/2的两个分量,s1和s2为A的两个分量,r1和r2为(D+E)/2的两个分量,而f1、f2,p1、p2,q1、q2,s1、s2,r1、r2均可以基于SecureNN框架中的除法算子进行计算得到。
与现有技术相比,本申请实施例的数据处理方法中,参与多方安全计算的数据源的各个原数据分解为两个子数据分别发送至两个主要计算方,两个主要计算方仅仅具有数据集分量,在对参与数据集分量进行聚类后,第一主要计算方和第二主要计算方仅仅获取到了与各个原始数据的真实分类树中各个节点对应的子集代指向量的向量分量,基于任一个向量分量均无法得到任一个原始数据,保证了各个数据源的原始数据不会泄露给任一个主要计算方,同时也不会泄露给其他数据源,而结合第一主计算方和第二主计算方在同一时间步长下的两个节点上的向量分量,就可以得到该节点对应的各个原始数据;另外,各个主计算方基于向量分量进行构建分类树,分类树的各个节点的向量分量关联了各个原始数据的聚类结果,因此利用该分类树可以进行快速查询。
如7所示,本申请实施例还提出一种数据查询方法,应用于多方安全计算中的任一主计算方,比如在图1所示的多方安全计算场景下,该数据查询方法可以应用于第一主计算方和第二主计算方。其中第一主计算方和第二主计算方在基于上述实施例中的数据处理方法对参与多方安全计算的各个数据源的原始数据进行处理,从而第一主计算方和第二主计算方均可以获得关于各自数据集分量的向量分量分类树,如图5c和图5d所示,在本申请实施例中,可以基于该数据查询方法利用图5c和图5d所示的向量分量分类树,在由第一主计算方和第二主计算方的数据集分量中进行查询,查询过程保证了各个数据源的原始数据不暴露,而且基于向量分量构建的分类树查询效率也更高。所述数据查询方法包括如下步骤:
步骤S400:获取第一子查询向量,所述第一子查询向量由查询向量分解得到。
在本申请实施例中,查询向量由查询方提供,查询方为了保证自己的查询向量不暴露给任何一个计算方,因此可以将查询向量分解成第一子查询向量和第二子查询向量。其中,查询向量的分解方法可以参照原始数据的分解过程,在此不一一赘述。分解得到第一子查询向量和第二子查向量后将其分别发送给第一主计算方和第二主计算方,第一主计算方和第二主计算方都只能获得查询方的查询向量的一个分量,因此并不会知晓查询方的查询内容,保护了查询方的隐私。
步骤S500:基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果。
所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
第一主计算方获取第一子查询向量、第二主计算方获取第二子查询向量后,就可以基于相应的向量分量分类树进行查询。
假设查询向量为[m],并将其分解为第一子查询向量[m1]和[m2],其中[m]=[m1]+[m2]。并将第一查询向量[m1]发送至第一主计算方,将[m2]发送至第二主计算方。
以第一主计算方为例,在本申请实施例中,可以基于如下步骤S510-步骤S520,获取第一子查询结果:
步骤S510:从所述第一主计算方的分类树的根节点开始,基于所述第一子查询向量和所述第二子查询向量,得到所述查询向量与同一父节点下的两个子节点对应的聚类中心分量关联的第一结果,所述第一结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第一距离分量。
如图6b所示,图6b中第一主计算方的向量分量分类树的根节点下的两个节点的聚类中心分量分别为p1和q1,图6c中第二主计算方的向量分量分类树的根节点下的两个节点的聚类中心分量分别为p2和q2。其中,p1和p2为真实的聚类中心(A+D+E)/3的两个分量,q1、q2为真实的聚类中心(B+C)/2的两个分量,在计算查询向量[m]与聚类中心分量p1和q1关联的第一结果时,可以和查询向量[m]与第二主计算方的聚类中心分量p2和q2的第二结果同时进行。
其中,[m]与p1关联的第一结果,以及[m]与p2关联的第二结果,为[m]距离真实聚类中心(A+D+E)/3的距离的两个分量(第一距离分量和第二距离分量);另外,[m]与q1关联的第一结果,以及[m]与q2关联的第二结果,为[m]距离真实聚类中心(B+C)/2的距离的两个分量(第一距离分量和第二距离分量)。
其中,m=m1+m2;
(A+D+E)/3=p1+p2;
对于[m]距离真实聚类中心(A+D+E)/3的距离可表示为:
Z=(m-(A+D+E)/3)2
该距离Z包括了[m]与第一主计算方的聚类中心分量p1关联的第一结果,代表[m]距离真实聚类中心p的第一距离分量z1,和[m]与第二主计算方的聚类中心分量p2关联的第二结果,代表[m]距离真实聚类中心p的第二距离分量z2,且,Z=z1+z2。
首先,第一主计算方和第二主计算方可以分别计算(m-(A+D+E)/3)的一个分量:
第一主计算方计算:(m-(A+D+E)/3)的一个分量u1=m1-p1;
第二主计算方计算:(m-(A+D+E)/3)的一个分量u2=m2-p2;
得到u=(m-(A+D+E)/3)=u1+u2=(m1+m2-p1-p2);
得到u后,通过计算u*u,即可得到Z。
其中,u*u可以基于如图3所示的乘法算子进行计算,不同的是,图3中的(x1+x2)和(y1+y2)均为u,即x和y均为u。
那么对于图3则有,x1=y1=u1,x2=y2=u2;
则,第一主计算方可以计算得到:
[m]与p之间的第一距离分量:z1=-E*F+y2*E+x1*F+k1=-E*F+u2*E+k1;
第二主计算方可以计算得到:
[m]距离p的第二距离分量:z2=X2*F+y1*E+k2=u2+u1*E+k2;
即,第一主计算方和第二主计算方均能计算得到查询向量[m]距离真实聚类中心(A+D+E)/3的距离的一个分量。
按照同样的计算方法,第一主计算方和第二主计算方还能计算得到查询向量[m]距离真实聚类中心(B+C)/2的距离的一个分量,即[m]与q1关联的第一结果,代表[m]与q之间的第一距离分量,和[m]与q2关联的第二结果,代表[m]与q之间的第二距离分量。
在得到第一结果和第二结果后,即可进行步骤S520:基于所述第一结果和第二结果,确定所述查询向量距离同一父节点下的两个子节点对应的聚类中心分量的距离。所述第二结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第二距离分量。
在本申请实施例中,对于第一主计算方而言,在得到查询向量[m]距离真实聚类中心(A+D+E)/3的距离的第一距离分量,以及距离真实聚类中心(B+C)/2的距离的第二分量后,通过最小值函数算子就能够判断[m]距离p1和q1的距离远近。同样,第二主计算方得到[m]距离(A+D+E)/3的第二距离分量,和[m]距离(B+C)/2的第二距离分量后,也能够基于最小值函数算子判断[m]距离p2和q2的距离远近。从而在确定查询向量距离两个节点的远近后即可确定查询方向。
在本申请实施例中,可以基于如下方法进行判断[m]距离p1和q1的距离远近,以及[m]距离p2和q2的距离远近,步骤如下:
假设在步骤S510中,结算得到[m]与p之间的第一距离分量为a1,第二距离分量为a2,[m]与q之间的第一距离分量为b1,第二距离分量为b2,则可知,[m]距离p之间的距离为a=a1+a2,距离q的距离为b=b1+b2。此时可以利用比较少算子比较a和b的大小,判断逻辑如下:
if,a<b,则,c=g;
else,c=h;
c=(a<b)*g+(1-(a<b))*h
其中,c为判断得到的结果,a<b为比较运算,g和h为判断结果值,a<b的判断结果为g=1,否则结果为h=0。
那么可知上述得到的判断结果为0或者1。
得到判断结果后,基于公式s=c*p+(1-c)*q,确定查询方向,需要说明的是,c、p、q都是以分量形式存在在第一主计算方和第二主计算方。
其中,s即为查询方向,若a<b,则c=g=1,s=p,即代表[m]距离真实聚类中心p更近,需要在真实聚类中心p所在的聚类中进行查询,此时第一主计算方和第二主计算方得到的两个分量为p的两个分量,需要说明的时,此时第一主计算方和第二主计算方得到的两个分量并非是p1和p2,但两个分量之和与p1和p2之和相同;
否则,c=h=0,s=q,即代表[m]距离真实聚类中心q更近,需要在真实聚类中心q所在的聚类中进行查询,此时第一主计算方和第二主计算方同样得到的两个分量,同样该两个分量并非是q1和q2,但两个分量之和与q1和q2之和相同。
此种计算方法,第一主计算方和第二主计算方提供c、p、q相应的分量,确定了查询向量距离哪个节点上的真实聚类中心更近之,但是对于第一主计算方和第二主计算方而言,各自并不能确定向自身的哪个聚类中心分量进行计算,从而可以保证比较结果不会泄露给任何一个主计算方。
在本申请实施例中,在确定查询方向后,又分作如下二种场景:
场景一:距离查寻向量较近的节点为叶子节点。
若距离查询向量较近的节点为叶子结点,则基于叶子结点获取第一子查询结果。
假设,经过上述计算得知,距离查询向量m距离更近的节点为[(B+C)/2],此时可认为,距离查询向量较近的节点为q1,已经知晓的是聚类中心分量为q1的节点已经是叶子结点,那么此时就可以基于[(B+C)/2]所在的节点上的子集进行获取第一子查询结果。
场景二:距离查询向量较近的节点为分支节点。
若距离查询向量较近的节点为分支节点,且分支节点对应的数据集分量的子集中的数据数量小于第二预设值,则基于分支节点获取第一子查询结果的部分结果,并在与分支节点同一个父节点的另一节点下进行递归查询,并获取第一子查询结果的剩余结果;
若距离查询向量较近的节点为分支节点,且分支节点对应的数据集分量的子集中的数据数量不小于第二预设值,则基于分支节点进行递归查询,并获取第一子查询结果。
假设,经过上述计算得知,距离查询向量m距离更近的节点为[(A+D+E)/3],此时可认为,距离查询向量较近的节点为p1,已经知晓的是聚类中心分量为p1的节点为分支节点,即在其下方还具有其他节点,此时还需要根据第二预设值分作两种情况进行查询,第二预设值为查询方设定的需要得到的查询结果中的数据数量,具体如下:
情况一:该分支节点上关联的子集的数据数量小于第二预设值。
在此种情况下,即表明该分支节点上的全部数据的数量并不满足查询方需要获取到的数量,因此,首先在获取该分支节点上的全部数据,然后在到与该分支节点同一父节点下的节点获取另外一部分数据,即先获取聚类中心分量p1所在的节点上的全部数据,然后在到聚类中心分量q2所在的节点上获取剩余部分的数据,并将从这两个节点上获取到的数据之和作为第一子查询结果。
情况二:该分支节点上关联的子集的数据数量不小于第二预设值。
当该分支节点上关联的子集的数据数量刚好等于第二预设值时,可以直接将该分支节点上的全部数据作为第二子查询结果。
当该分支节点上关联的子集的数据数量大于第二预设值时,即第一子查询结果还可以在该分支节点下的节点上进行查询会更加精准,那么此时第一子查训结果就在聚类中心分量s1和r1所在节点上进行查询,至于如何选择在聚类中心分量s1还是聚类中心分量r1所在的节点上进行查询,可以参考上述步骤S510,基于第一子查询向量距离聚类中心分量s1和聚类中心分量r1的距离进行选择,在此不一一赘述。
在本申请实施例中,在确定了需要在哪个节点上获取第一子查询结果后,可以基于如下方法进行获取:
假设在本申请实施例中查询向量[m]距离第一主计算方的向量分量分类树的根节点下的聚类中心分量为q1的节点距离更近,基于前述实施例可以确定该节点上的向量分量为(1,2,4,-2,-3),第一主计算方的数据集分量为(A1,B1,C1,D2,E2),那么则可通过如下方式获取第一子查询结果:基于所述第一主计算方的分类树,获取所述叶子结点对应的向量分量,基于所述向量分量、所述第一主计算方的数据集分量,获取所述第一子查询结果。例如:
((1,2,4,-2,-3)+(-1,-1,-3,2,3))*(A1,B1,C1,D2,E2)
=(0,1,1,0,0)*(A1,B1,C1,D2,E2)
=(0,B1,C1,0,0)
即,第一子查询结果在由子数据B1和C1组成的子集进行查询。
第一主计算方得到第一子查询结果后,可以将第一子查询结果发送至查询方,同样第二主计算方得到第二子查询结果后,也可以将第二子查询结果发送至查询方,从而可以根据第一子查询结果和第二子查询结果合并得到最终的查询结果。
需要说明的是上述计算过程均可以基于SecureNN框架中相应的算子计算得到,而且在确定查询向量[m]距离第一主计算方的向量分量分类树的根节点下的哪个聚类中心分量更近的同时,第二主计算方同时也能够完成查询向量[m]距离第二主计算方的向量分量分类树的根节点下哪个聚类中心分量更近。而且,若查询向量[m]距离第一主计算方的向量分量分类树的根节点下的聚类中心分量为q1的节点距离更近,那么查询向量[m]距离第二主计算方的向量分量分类树的根节点下的聚类中心分量为q2的节点距离也更近,基于前述实施例可以确定该节点上的向量分量为(-1,-1,-3,2,3),其中第二主计算方的数据集分量为(A2,B2,C2,D1,E1),那么则有
((1,2,4,-2,-3)+(-1,-1,-3,2,3))*(A2,B2,C2,D1,E1)
=(0,1,1,0,0)*(A2,B2,C2,D1,E1)
=(0,B2,C2,0,0)
即,第二子查询结果在由子数据B2和C2组成的数据库进行查询。
其中,第一子查询结果和第二子查询结果均是从由子数据组成的数据库中得到,那么得到的结果也必然是相对应的子数据,比如第一子查询结果为B1,第二子查询结果则为B2,此时将第一子查询结果和第二子查询结果合并就能够得到最终的查询结果B。
本申请实施例的查询方法,基于本申请提出的数据处理方法构建的分类树进行查询搜索,查询时可以基于两个主计算方的向量分量分类树进行查询,两个主计算方分类树的各个节点的向量分量关联了各个原始数据的聚类结果,因此利用该分类树可以进行快速查询,不仅不会暴露各个数据源的原始数据,而且查询搜索也更加的高效。
在介绍了本申请实施例的方法之后,接下来,参考图8对本申请实施例的数据处理装置60进行介绍,该装置可以应用于多方安全计算中的第一主计算方(如图1所示的第一主计算方或者第二主要计算方),各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,所述各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据,所述装置60包括:
第一输入输出模块610,用于获取候选目标分量,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1;
第一处理模块620,用于基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;以及
若所述子集中的数据数量大于第一预设值,所述第一处理模块620还用于,将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
在本申请实施例中,所述第一处理模块620还用于,基于所述候选目标向量分量、与所述候选目标向量分量位于同一时间步长的关联同一子集的另一向量分量,确定所述候选目标向量分量所在节点的聚类中心分量。
在本申请实施例中,所述第一处理模块620还用于,将参与多方安全计算的第一主计算方和第二主计算方的各个原始数据均分解为两个子数据;
将第一主计算方的每个原始数据分解得到的两个子数据中的一个发送至第二主计算方,并从第二主计算方接收所述第二主计算方的各个原始数据分解得到的两个子数据中的一个;
基于第一主计算方剩余的子数据,及从第二主计算方接收的子数据,组成第一主计算方的数据集分量。
与现有技术相比,本申请实施例的数据处理装置60中,参与多方安全计算的第一主要计算方和第二主要计算方仅仅具有参与计算的各个原始数据的数据集分量,在对参与多方安全计算的各个原始数据进行聚类后,第一主要计算方和第二主要计算方仅仅获取到了各自数据集分量,与各个原始数据的真实分类树中各个节点对应的向量分量,基于任一个向量分量均无法得到任一个原始数据,保证了第一主要计算方和第二主要计算方的原始数据不会泄露;而结合第一主计算方和第二主计算方在同一时间步长下的两个节点上的向量分量,就可以得到该节点对应的各个原始数据,因此,基于上述数据处理之后得到的分类树,可以以第一主计算方和第二主计算方的各个原始数据为查询数据库进行快速查询,同时还不暴露各个原始数据的归属。
如图11所示,本申请实施例中,还提出一种数据查询装置70,应用于多方安全计算中的第一主计算方(如图1所示的第一主计算方或者第二主计算方),该装置包括:
第二输入输出模块710,用于获取第一子查询向量,所述第一子查询向量由查询向量分解得到;
第二处理模块720,用于基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果;
其中,所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
在本申请实施例中,所述第二处理模块720还用于,从所述第一主计算方的分类树的根节点开始,基于所述第一子查询向量和所述第二子查询向量,得到所述查询向量与同一父节点下的两个子节点对应的聚类中心分量关联的第一结果,所述第一结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第一距离分量;以及
基于所述第一结果和第二结果,确定所述查询向量距离同一父节点下的两个子节点对应的聚类中心分量的距离;所述第二结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第二距离分量;
若距离所述查询向量较近的节点为叶子结点,则所述第二处理模块720还用于,基于所述叶子结点获取所述第一子查询结果;
若距离所述查询向量较近的节点为分支节点,且所述分支节点对应的数据集分量的子集中的数据数量小于第二预设值,则所述第二处理模块720还用于,基于所述分支节点获取所述第一子查询结果的部分结果,并在与所述分支节点同一个父节点的另一节点下进行递归查询,并获取所述第一子查询结果的剩余结果;
若距离所述查询向量较近的节点为分支节点,且所述分支节点对应的数据集分量的子集中的数据数量不小于所述第二预设值,则所述第二处理模块720还用于,基于所述分支节点进行递归查询,并获取所述第一子查询结果。
在本申请实施例中,所述第二处理模块720还用于,基于所述第一主计算方的分类树,获取所述叶子结点对应的向量分量;以及
基于所述向量分量、所述第一主计算方的数据集分量,获取所述第一子查询结果。
本申请实施例的数据查询装置70,基于本申请提出的数据处理方法构建的分类树进行查询,分类树的各个节点的向量分量关联了各个原始数据的聚类结果,故而利用该分类树可以进行快速查询,而且还不会暴露各个数据源的原始数据。
在介绍了本申请实施例的数据处理方法、数据查询方法、数据处理装置和数据查询装置之后,接下来,对本申请实施例的计算机可读存储介质进行说明,计算机可读存储介质可为光盘,其上存储有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会实现上述方法实施方式中所记载的各步骤,例如,获取候选目标向量分量;基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。又比如:获取第一子查询向量;基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果。各步骤的具体实现方式在此不再重复说明。
需要说明的是,所述计算机可读存储介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他光学、磁性存储介质,在此不再一一赘述。
上面从模块化功能实体的角度对本申请实施例中的数据处理装置60和数据查询装置70进行了描述,下面从硬件处理的角度分别对本申请实施例中的执行数据处理方法及查询方法的服务器、终端设备进行描述。
需要说明的是,在本申请数据处理装置60实施例的图8所示的第一输入输出模块610,以及数据查询装置70实施例的图11所示的第二输入输出模块710对应的实体设备可以为输入/输出单元、收发器、射频电路、通信模块和输入/输出(I/O)接口等,第一处理模块620和第二处理模块720对应的实体设备可以为处理器。图8所示的数据处理装置60和图11所示的数据查询装置70,可以具有如图10所示的结构,当图8所示的数据处理装置60或者和图11所示的数据查询装置70具有如图10所示的结构时,图10中的处理器和收发器能够实现前述对应该装置的装置实施例提供的第一处理模块620和第一输入输出模块610,以第二处理模块720和第二输入输出模块710相同或相似的功能,图10中的存储器存储处理器执行上述数据处理方法及查询方法时需要调用的计算机程序。
本申请实施例还提供了一种终端设备,如图11所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、销售终端设备(Point of Sales,POS)、车载电脑等任意终端设备,以终端设备为手机为例:
图11示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图11,手机包括:射频(Radio Frequency,RF)电路1010、存储器1020、输入单元1030、显示单元1040、传感器1050、音频电路1060、无线保真(wireless fidelity,WiFi)模块1070、处理器1080、以及电源1090等部件。本领域技术人员可以理解,图11中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图11对手机的各个构成部件进行具体的介绍:
RF电路1010可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1080处理;另外,将设计上行的数据发送给基站。通常,RF电路1010包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(LowNoiseAmplifier,LNA)、双工器等。此外,RF电路1010还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General PacketRadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器1020可用于存储软件程序以及模块,处理器1080通过运行存储在存储器1020的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1030可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1030可包括触控面板1031以及其他输入设备1032。触控面板1031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1031上或在触控面板1031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1080,并能接收处理器1080发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1031。除了触控面板1031,输入单元1030还可以包括其他输入设备1032。具体地,其他输入设备1032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1040可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1040可包括显示面板1041,可选的,可以采用液晶显示器(LiquidCrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1041。进一步的,触控面板1031可覆盖显示面板1041,当触控面板1031检测到在其上或附近的触摸操作后,传送给处理器1080以确定触摸事件的类型,随后处理器1080根据触摸事件的类型在显示面板1041上提供相应的视觉输出。虽然在图11中,触控面板1031与显示面板1041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1031与显示面板1041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器1050,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路1060、扬声器1061,传声器1062可提供用户与手机之间的音频接口。音频电路1060可将接收到的音频数据转换后的电信号,传输到扬声器1061,由扬声器1061转换为声音信号输出;另一方面,传声器1062将收集的声音信号转换为电信号,由音频电路1060接收后转换为音频数据,再将音频数据输出处理器1080处理后,经RF电路1010以发送给比如另一手机,或者将音频数据输出至存储器1020以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块1070可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图11示出了WiFi模块1070,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变申请的本质的范围内而省略。
处理器1080是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1020内的软件程序和/或模块,以及调用存储在存储器1020内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1080可包括一个或多个处理单元;可选的,处理器1080可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1080中。
手机还包括给各个部件供电的电源1090(比如电池),可选的,电源可以通过电源管理系统与处理器1080逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该手机所包括的处理器1080还具有控制执行以上获取目标向量分量进行数据处理的流程,以及获取第一子查询向量,获取第一子查询结果的流程。
本申请实施例还提供了一种服务器,请参阅图12,图12是本申请实施例提供的一种服务器结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(英文全称:central processing units,英文简称:CPU)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图中未示出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在服务器1100上执行存储介质1130中的一系列指令操作。
服务器1100还可以包括一个或一个以上电源1120,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
上述实施例中由服务器所执行的步骤可以基于该图12所示的服务器1100的结构。例如,例如上述实施例中由图8所示的数据处理装置60或者图11所示的数据查询装置70所执行的步骤可以基于该图12所示的服务器结构。例如,所述中央处理器1122通过调用存储器1132中的指令,执行以下操作:
通过输入输出接口1158获取目标向量分量;
基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
或者,执行以下操作:
通过输入输出接口1158获取第一子查询向量;
基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请实施例各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上对本申请实施例所提供的技术方案进行了详细介绍,本申请实施例中应用了具体个例对本申请实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请实施例的限制。

Claims (10)

1.一种数据处理方法,应用于多方安全计算中的第一主计算方,各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,所述各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据,所述方法包括:
获取候选目标向量分量,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1;
基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;
若所述子集中的数据数量大于第一预设值,则将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据所述聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
2.如权利要求1所述的数据处理方法,在获取候选目标向量分量后,所述方法还包括:
基于所述候选目标向量分量、与所述候选目标向量分量位于同一时间步长的关联同一子集的另一向量分量,确定所述候选目标向量分量所在节点的聚类中心分量。
3.如权利要求1或2所述的数据处理方法,所述数据集分量通过如下方法获得:
将参与多方安全计算的第一主计算方和第二主计算方的各个原始数据均分解为两个子数据;
将第一主计算方的每个原始数据分解得到的两个子数据中的一个发送至第二主计算方,并从第二主计算方接收所述第二主计算方的各个原始数据分解得到的两个子数据中的一个;
基于第一主计算方剩余的子数据,及从第二主计算方接收的子数据,组成第一主计算方的数据集分量。
4.一种数据查询方法,应用于多方安全计算中的第一主计算方,所述数据查询方法包括:
获取第一子查询向量,所述第一子查询向量由查询向量分解得到;
基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果;
所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
5.如权利要求4所述的数据查询方法,所述基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果,包括:
从所述第一主计算方的分类树的根节点开始,基于所述第一子查询向量和所述第二子查询向量,得到所述查询向量与同一父节点下的两个子节点对应的聚类中心分量关联的第一结果,所述第一结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第一距离分量;
基于所述第一结果和第二结果,确定所述查询向量距离同一父节点下的两个子节点对应的聚类中心分量的距离;所述第二结果为所述查询向量距离参与多方安全计算的数据集中与所述聚类中心分量对应的真实聚类中心的距离的第二距离分量;
若距离所述查询向量较近的节点为叶子结点,则基于所述叶子结点获取所述第一子查询结果;
若距离所述查询向量较近的节点为分支节点,且所述分支节点对应的数据集分量的子集中的数据数量小于第二预设值,则基于所述分支节点获取所述第一子查询结果的部分结果,并在与所述分支节点同一个父节点的另一节点下进行递归查询,并获取所述第一子查询结果的剩余结果;
若距离所述查询向量较近的节点为分支节点,且所述分支节点对应的数据集分量的子集中的数据数量不小于所述第二预设值,则基于所述分支节点进行递归查询,并获取所述第一子查询结果。
6.如权利要求5所述的数据查询方法,所述基于所述叶子结点获取所述第一子查询结果,包括:
基于所述第一主计算方的分类树,获取所述叶子结点对应的向量分量;
基于所述向量分量、所述第一主计算方的数据集分量,获取所述第一子查询结果。
7.一种数据处理装置,应用于多方安全计算中的第一主计算方,各个主计算方均存储有数据集分量,且每个主计算方存储的数据集分量均不同,所述各个主计算方的数据集分量分别包含了参与多方安全计算的各个原始数据的不同数据分量,且关联同一原始数据的不同数据分量合并时可还原出所述原始数据,所述数据处理装置包括:
第一输入输出模块,用于获取候选目标向量分量,所述候选目标向量分量基于历史候选目标向量分量更新得到,所述历史候选目标向量分量基于所述第一主计算方存储的数据集分量的子集得到,同一时间步长的关联同一子集的不同向量分量的各个对位向量元素的数值之和为0或1;
第一处理模块,用于基于所述候选目标向量分量,确定所述候选目标向量分量关联的子集中的数据数量;以及
若所述子集中的数据数量大于第一预设值,所述第一处理模块还用于,将所述候选目标向量分量作为分类树的分支节点,并按照预设类别数量对所述子集进行聚类,根据聚类结果更新所述候选目标向量分量,直至候选目标向量分量关联的子集中的数据数量不大于所述第一预设值,并将数据数量不大于所述第一预设值的子集关联的候选目标向量分量作为所述分类树的叶子结点。
8.一种数据查询装置,应用于多方安全计算中的第一主计算方,所述数据查询装置包括:
第二输入输出模块,用于获取第一子查询向量,所述第一子查询向量由查询向量分解得到;
第二处理模块,用于基于所述第一子查询向量、所述第一主计算方的分类树、所述第一主计算方的数据集分量,获取第一子查询结果;
所述第一子查询结果用于结合由参与多方安全计算的第二主计算方得到的第二子查询结果,以获取最终查询结果,所述第二子查询结果由所述第二主计算方基于第二子查询向量、所述第二主计算方的分类树和所述第二主计算方的数据集分量得到,所述第一子查询向量与所述第二子查询向量合并得到所述查询向量。
9.一种计算机可读存储介质,其包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-3中任一项所述的方法,或者执行如权利要求4-6中任一项所述的方法。
10.一种计算设备,包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1-3中任一项所述的方法,或者实现如权利要求4-6中任一项所述的方法。
CN202211732729.9A 2022-12-30 2022-12-30 数据处理方法、数据查询方法、相关装置及存储介质 Active CN116257657B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211732729.9A CN116257657B (zh) 2022-12-30 2022-12-30 数据处理方法、数据查询方法、相关装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211732729.9A CN116257657B (zh) 2022-12-30 2022-12-30 数据处理方法、数据查询方法、相关装置及存储介质

Publications (2)

Publication Number Publication Date
CN116257657A CN116257657A (zh) 2023-06-13
CN116257657B true CN116257657B (zh) 2024-02-06

Family

ID=86685473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211732729.9A Active CN116257657B (zh) 2022-12-30 2022-12-30 数据处理方法、数据查询方法、相关装置及存储介质

Country Status (1)

Country Link
CN (1) CN116257657B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101535945A (zh) * 2006-04-25 2009-09-16 英孚威尔公司 全文查询和搜索系统及其使用方法
CN107169114A (zh) * 2017-05-12 2017-09-15 东北大学 一种海量数据多维排序搜索方法
CN110471916A (zh) * 2019-07-03 2019-11-19 平安科技(深圳)有限公司 数据库的查询方法、装置、服务器及介质
CN110866277A (zh) * 2019-11-13 2020-03-06 电子科技大学广东电子信息工程研究院 一种DaaS应用的数据集成的隐私保护方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516585B2 (en) * 2010-10-01 2013-08-20 Alcatel Lucent System and method for detection of domain-flux botnets and the like
JP7119630B2 (ja) * 2018-06-20 2022-08-17 日本電信電話株式会社 情報処理装置、情報交換システム、情報処理方法および情報処理プログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101535945A (zh) * 2006-04-25 2009-09-16 英孚威尔公司 全文查询和搜索系统及其使用方法
CN107169114A (zh) * 2017-05-12 2017-09-15 东北大学 一种海量数据多维排序搜索方法
CN110471916A (zh) * 2019-07-03 2019-11-19 平安科技(深圳)有限公司 数据库的查询方法、装置、服务器及介质
CN110866277A (zh) * 2019-11-13 2020-03-06 电子科技大学广东电子信息工程研究院 一种DaaS应用的数据集成的隐私保护方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Optimazing Secure Classification Performance with Privacy-aware Feature Selection;E Pattuk et al;《2016 IEEE 32nd International Conference on Data Engineering》;第217-228页 *
基于安全多方计算的若干应用问题研究;汤剑红;《中国优秀硕士学位论文全文数据库 信息科技辑》;第2014年卷(第04期);第I138-96页 *

Also Published As

Publication number Publication date
CN116257657A (zh) 2023-06-13

Similar Documents

Publication Publication Date Title
CN114694226B (zh) 一种人脸识别方法、系统及存储介质
CN115658348B (zh) 微服务调用方法、相关装置及存储介质
WO2020088681A1 (zh) 模型文件的管理方法和终端设备
CN114444579A (zh) 通用扰动获取方法、装置、存储介质及计算机设备
CN110019648B (zh) 一种训练数据的方法、装置及存储介质
CN117332844A (zh) 对抗样本生成方法、相关装置及存储介质
CN115270163B (zh) 数据处理方法、相关装置及存储介质
CN116257657B (zh) 数据处理方法、数据查询方法、相关装置及存储介质
CN115376192B (zh) 用户异常行为确定方法、装置、计算机设备及存储介质
CN116778306A (zh) 伪造对象检测方法、相关装置及存储介质
CN115549889A (zh) 解密方法、相关装置及存储介质
CN115589281A (zh) 解密方法、相关装置及存储介质
CN116071614A (zh) 样本数据处理方法、相关设备及存储介质
CN115392405A (zh) 模型训练方法、相关装置及存储介质
CN112015973B (zh) 一种异构网络的关系推理方法及终端
CN115801308B (zh) 数据处理方法、相关装置及存储介质
CN116450808B (zh) 一种数据的处理方法、装置以及存储介质
CN117057345B (zh) 一种角色关系的获取方法及相关产品
CN110781395B (zh) 题目推荐方法、装置及终端设备
CN115048463B (zh) 数据迁移方法、系统及存储介质
CN115412726B (zh) 视频真伪检测方法、装置及存储介质
CN116029368A (zh) 超参数优化方法、相关装置及存储介质
CN117216284A (zh) 一种知识图谱嵌入模型的建模方法、装置及相关产品
CN118246533A (zh) 一种知识图谱合并方法和相关装置
CN117076927A (zh) 行为数据预测模型的训练方法、对象表示方法及相关产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant