CN116529730A - 使用安全多方计算的隐私保护机器学习 - Google Patents
使用安全多方计算的隐私保护机器学习 Download PDFInfo
- Publication number
- CN116529730A CN116529730A CN202180079925.8A CN202180079925A CN116529730A CN 116529730 A CN116529730 A CN 116529730A CN 202180079925 A CN202180079925 A CN 202180079925A CN 116529730 A CN116529730 A CN 116529730A
- Authority
- CN
- China
- Prior art keywords
- share
- mpc
- computing system
- user
- user profile
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Biology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开涉及一种隐私保护机器学习平台。在一个方面,一种方法包括由多个多方计算(MPC)系统的第一计算系统接收包括给定用户简档的第一份额的推断请求。识别被认为与给定用户简档最相似的数量为k个的最近邻用户简档。第一计算系统基于给定用户简档的第一份额和k‑最近邻模型来识别第一组最近邻简档。第一计算系统从多个MPC系统的一个或多个第二计算系统中的每一个接收指示由第二计算系统基于给定用户简档的相应第二份额和由第二计算系统训练的相应第二k‑最近邻模型识别的相应第二组最近邻简档的数据。
Description
相关申请的交叉引用
本申请要求于2020年10月2日提交的第277761号IL申请的优先权。前述申请的公开通过引用整体并入本文。
技术领域
本说明书涉及一种隐私保护机器学习平台,其使用安全多方计算来训练和使用机器学习模型。
背景技术
基于从多个源(例如,跨多个网站和/或本机应用)收集的数据来训练一些机器学习模型。然而,该数据可能包括不应被共享或允许泄漏到其他方的隐私或敏感数据。
发明内容
通常,本说明书中描述的主题的一个创新方面可以体现在方法中,该方法包括:由多个多方计算(MPC)系统的第一计算系统接收包括给定用户简档的第一份额的推断请求;识别多个用户简档中被认为与所述给定用户简档最相似的数量为k个的最近邻用户简档,包括:由所述第一计算系统基于所述给定用户简档的所述第一份额和使用所述多个用户简档训练的第一k-最近邻模型来识别第一组最近邻用户简档;由所述第一计算系统从所述多个MPC系统的一个或多个第二计算系统中的每一个接收指示由所述第二计算系统基于所述给定用户简档的相应第二份额和由所述第二计算系统训练的相应第二k-最近邻模型识别的相应第二组最近邻简档的数据;由所述第一计算系统基于所述第一组最近邻用户简档和每个第二组最近邻用户简档来识别所述数量为k个的最近邻用户简档;由所述第一计算系统基于k个最近邻用户简档中的每一个的相应标签来生成推断结果的第一份额,其中,每个用户简档的标签预测与所述用户简档相对应的用户将被添加到的一个或多个用户组,并且其中,所述推断结果指示与所述给定用户简档相对应的给定用户是否将被添加到给定用户组;以及由第一计算系统向客户端设备提供推断结果的第一份额和从一个或多个第二计算系统中的每一个接收的推断结果的相应第二份额。该方面的其他实施方式包括对应装置、系统和计算机程序,其被配置为执行编码在计算机存储设备上的方法的各方面。
这些和其他实施方式可以各自可选地包括以下特征中的一个或多个。在一些方面,推断请求包括使用第二计算系统的加密密钥加密的给定用户简档的加密的第二份额。一些方面可以包括将给定用户简档的加密的第二份额发送到第二计算系统。
在一些方面,使用客户端设备的应用的加密密钥来加密推断结果的第二份额。在一些方面,每个用户简档的标签具有用于二元分类的布尔类型。生成推断结果的第一份额可以包括确定k个最近邻用户简档的标签之和的第一份额,从第二计算系统接收k个最近邻用户简档的标签之和的第二份额,基于标签之和的第一份额和标签之和的第二份额确定标签之和,确定标签之和超过阈值,响应于确定标签之和超过阈值,确定将给定用户添加到给定用户组作为推断结果,以及基于推断结果生成推断结果的第一份额。
在一些方面,每个用户简档的标签具有数值。生成推断结果的第一份额可以包括确定k个最近邻用户简档的标签之和的第一份额,从第二计算系统接收k个最近邻用户简档的标签之和的第二份额,基于标签之和的第一份额和标签之和的第二份额确定标签之和,基于标签之和确定给定用户要加入给定用户组作为推断结果,以及基于推断结果生成推断结果的第一份额。
在一些方面,每个用户简档的标签具有分类值。生成推断结果的第一份额可以包括:对于标签的集合中的每个标签,确定k个最近邻简档中的用户简档具有标签的频率的第一份额,从第二计算系统接收k个最近邻简档中的用户简档具有标签的频率的第二份额,以及基于k个最近邻简档中的用户简档具有标签的频率的第一份额和第二份额来确定k个最近邻简档中的用户简档具有标签的频率。一些方面可以包括识别具有最高频率的标签,分配给定用户将加入与具有最高频率的标签相对应的给定用户组作为推断结果,以及基于推断结果生成推断结果的第一份额。
一些方面可以包括使用由第一计算系统维护的多个用户简档的第一秘密份额和由一个或多个第二计算系统维护的多个用户简档的相应第二秘密份额,与一个或多个第二计算系统协作地使用安全MPC过程来训练第一k-最近邻模型。
一些方面可以包括训练第一k-最近邻模型。训练可以包括与第二计算系统协作地创建随机位翻转模式的第一份额;通过将多个用户简档中的每个用户简档的第一份额投射到一组随机投射平面上来生成位矩阵的第一份额;通过使用位翻转模式的第一份额修改位矩阵的第一份额的一个或多个位来修改位矩阵的第一份额;将修改的位矩阵的第一份额的第一部分提供给第二计算系统;从第二计算系统接收由第二计算系统使用多个用户简档中的用户简档的第二份额和随机位翻转模式的第二份额生成的修改的位矩阵的第二份额的后半部分,以及由第一计算系统使用修改的位矩阵的第一份额的后半部分和修改的位矩阵的第二份额的后半部分来重构第一位矩阵的后半部分的位向量。与第二计算系统协作地创建随机位翻转模式的第一份额可以包括生成包括多个第一元素的第一m维向量(多个第一元素各自具有零或一的值),将第一m维向量拆分为两个份额,将第一m维向量的第一份额提供给第二计算系统,从第二计算系统接收第二m维向量的第一份额,以及与第二计算系统协作地使用第一m维向量和第二m维向量的份额来计算随机位翻转模式的第一份额。在一些方面中,多个MPC计算系统包括多于两个MPC计算系统。
在一些方面,客户端设备使用多个特征向量来计算给定用户简档,所述多个特征向量各自包括与客户端设备的用户的事件相关的特征值和每个特征向量的衰减率。
在一些方面,客户端设备使用多个特征向量来计算给定用户简档,所述多个特征向量各自包括与客户端设备的用户的事件相关的特征值。一些方面包括将特征向量中的一个或多个分类为稀疏特征向量,将特征向量中的一个或多个分类为密集特征向量。一些方面包括使用稀疏特征向量和密集特征向量生成给定用户简档的第一份额和针对一个或多个第二计算系统的给定用户简档的相应第二份额。生成给定用户简档的第一份额和相应一个或多个第二份额可以包括使用函数秘密共享(FSS)技术拆分稀疏特征向量。
本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。本文档中描述的机器学习技术可以识别具有相似兴趣的用户并且扩展用户组成员资格,同时保护用户的隐私,例如,不需要将用户的在线活动发送到内容平台。这保护了关于这样的平台的用户隐私,并且保护了数据的安全性免受传输期间或来自平台的破坏。诸如安全多方计算(MPC)之类的密码技术使得能够在不使用第三方cookie(网络饼干)的情况下基于用户简档中的相似性来扩展用户组,这保护了用户隐私而不会对扩展用户组的能力产生负面影响,并且在一些情况下,基于比使用第三方cookie可实现的更完整的简档来提供更好的用户组扩展。MPC技术可以确保,只要MPC集群中的计算系统之一是正当(honest)的,任何计算系统或另一方都不能获得明文的用户数据。因此,所要求保护的方法允许以安全的方式识别、分组和传输用户数据,而不需要使用第三方cookie来确定用户数据之间的任何关系。这是与先前已知的方法不同的方法,先前已知的方法通常需要第三方cookie来确定数据之间的关系。通过以这种方式对用户数据进行分组,提高了向用户设备发送数据内容的效率,这是因为不需要发送与特定用户无关的数据内容。特别地,不需要第三方cookie,从而避免了第三方cookie的存储,改善了存储器使用。指数衰减技术可以用于在客户端设备处建立用户简档,以减小建立用户简档所需的原始数据的数据大小,从而减少通常具有非常有限的数据存储的客户端设备的数据存储要求。
下面参考附图描述前述主题的各种特征和优点。根据本文描述的主题和权利要求,附加特征和优点是显而易见的。
附图说明
图1是安全MPC集群训练机器学习模型并且机器学习模型用于扩展用户组的环境的框图。
图2是用于训练机器学习模型并使用机器学习模型将用户添加到用户组的示例过程的泳道图。
图3是示出用于生成用户简档并将用户简档的份额发送到MPC集群的示例过程的流程图。
图4是示出用于生成机器学习模型的示例过程的流程图。
图5是示出用于使用机器学习模型将用户添加到用户组的示例过程的流程图。
图6是示例计算机系统的框图。
各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
通常,本文档描述了用于训练和使用机器学习模型来扩展用户组成员资格,同时保护用户隐私并确保数据安全性的系统和技术。通常,不是在诸如内容平台的其他实体的计算系统处创建和维护用户简档,而是在用户的客户端设备处维护用户简档。为了训练机器学习模型,用户的客户端设备能够可选地经由内容平台将其加密用户简档(例如,作为用户简档的秘密份额)连同其他数据发送到安全多方计算(MPC)集群的多个计算系统。例如,每个客户端设备可以生成用户简档的两个或更多个秘密份额,并将相应秘密份额发送到每个计算系统。MPC集群的计算系统可以使用MPC技术来训练机器学习模型,用于以防止MPC集群的任何计算系统(或不是用户本身的其他方)以明文获得任何用户的简档的方式基于用户的简档为用户建议用户组,从而保护用户隐私。例如,使用本文档中描述的秘密共享和MPC技术使得机器学习模型能够被训练和使用,而每个用户的用户简档数据在数据处于用户设备外部时始终被加密。机器学习模型能够是k-最近邻(k-NN)模型。
在机器学习模型被训练之后,机器学习模型能够用于基于每个用户的简档为每个用户建议一个或多个用户组。例如,用户的客户端设备可以向MPC集群查询为该用户建议的用户组,或者确定用户是否应该被添加到特定用户组。可以使用各种推断技术,诸如二元分类、回归(例如,使用算术平均值或均方根)和/或多类分类来识别用户组。用户的用户组成员资格可以以隐私保护和安全方式使用来向用户提供内容。
用于生成和使用机器学习模型的示例系统
图1是环境100的框图,其中安全MPC130集群训练机器学习模型,并且机器学习模型用于扩展用户组。示例环境100包括数据通信网络105,诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合。网络105连接客户端设备110、安全MPC集群130、发布者140、网站142和内容平台150。示例环境100可以包括许多不同的客户端设备110、安全MPC集群130、发布者140、网站142和内容平台150。
客户端设备110是能够通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、移动通信设备(例如,智能电话)以及能够通过网络105发送和接收数据的其他设备。客户端设备还能够包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热词”或“热短语”时,数字助理能够被置于收听模式(例如,准备好接受音频输入)。数字助理设备还可以包括相机和/或显示器以捕获图像并在视觉上呈现信息。数字助理可以以不同形式的硬件设备实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备还可以包括数字媒体设备,例如,插入电视或其他显示器以将视频流传输到电视的流传输设备,或者游戏设备或控制台。
客户端设备110通常包括应用112,诸如网络浏览器和/或本机应用,以促进通过网络105发送和接收数据。本机应用是针对特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发布者140可以开发本机应用并向客户端设备110提供本机应用,例如,使本机应用可用于下载。网络浏览器可以例如响应于客户端设备110的用户在网络浏览器的地址栏中输入资源145的资源地址或选择引用资源地址的链接,请求来自托管发布者140的网站142的网络服务器的资源145。类似地,本机应用可以请求来自发布者的远程服务器的应用内容。
一些资源、应用页面或其他应用内容可以包括用于与资源145或应用页面一起呈现数字组件的数字组件槽。如贯穿本文档所使用的,短语“数字组件”是指数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件可以作为单个文件或文件集合电子地存储在物理存储器设备中,并且数字组件可以采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充由应用112呈现的网页或其他资源的内容的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以涉及与网页内容相同的主题,或者涉及相关主题)。因此,数字组件的提供可以补充并且通常增强网页或应用内容。
当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112能够请求每个槽的数字组件。在一些实施方式中,数字组件槽可以包括使应用112请求来自数字组件分发系统的数字组件的代码(例如,脚本),该数字组件分发系统选择数字组件并将数字组件提供给应用112以呈现给客户端设备110的用户。
内容平台150可以包括供应侧平台(SSP)和需求侧平台(SSP)。通常,内容平台150代表发布者140和数字组件提供者160管理数字组件的选择和分发。
一些发布者140使用SSP来管理获得其资源和/或应用的数字组件槽的数字组件的过程。SSP是以硬件和/或软件实现的技术平台,其使获得资源和/或应用的数字组件的过程自动化。每个发布者140能够具有对应SSP或多个SSP。一些发布者140可以使用相同SSP。
数字组件提供者160可以创建(或以其他方式发布)在发布者的资源和应用的数字组件槽中呈现的数字组件。数字组件提供者160可以使用DSP来管理其数字组件的提供以在数字组件槽中呈现。DSP是以硬件和/或软件实现的技术平台,其使分发数字组件以与资源和/或应用一起呈现的过程自动化。DSP可以代表数字组件提供者160与多个供应侧平台SSP交互,以提供用于与多个不同发布者140的资源和/或应用一起呈现的数字组件。通常,DSP可以(例如,从SSP)接收对数字组件的请求,基于该请求生成(或选择)由一个或多个数字组件提供者创建的一个或多个数字组件的选择参数,并将与数字组件(例如,数字组件本身)和选择参数相关的数据提供给SSP。然后,SSP可以选择用于在客户端设备110处呈现的数字组件,并且向客户端设备110提供使客户端设备110呈现数字组件的数据。
在一些情况下,用户接收与用户先前访问和/或交互的网页、应用页面或其他电子资源相关的数字组件是有益的。为了将这样的数字组件分发给用户,可以将用户分配给用户组,例如,用户兴趣组、类似用户的群组或涉及类似用户数据的其他组类型。例如,当用户访问特定资源或在资源处执行特定动作(例如,与网页上呈现的特定物品交互或将物品添加到虚拟购物车)时,可以将该用户分配给用户兴趣组。在另一示例中,可以基于活动历史(例如,访问的资源和/或在资源处执行的动作的历史)将用户分配给用户组。在一些实施方式中,用户组可以由数字组件提供者160生成。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160可以将用户分配给其用户组。
为了保护用户隐私,例如,通过应用112之一或客户端设备110的操作系统,而不是通过数字组件提供者、内容平台或其他方,可以在用户的客户端设备110处维护用户的组成员资格。在特定示例中,被信任程序(例如,网络浏览器或操作系统)可以维护使用网络浏览器或另一应用的用户的用户组标识符的列表(“用户组列表”)。用户组列表可以包括用户已经被添加到的每个用户组的组标识符。创建用户组的数字组件提供者160可以指定其用户组的用户组标识符。用户组的用户组标识符可以描述组(例如,园艺组)或者是表示组的代码(例如,非描述性的字母数字序列)。用户的用户组列表可以存储在客户端设备110处的安全存储装置中和/或可以在存储时被加密以防止其他人访问列表。
当应用112呈现与数字组件提供者160相关的资源或应用内容、或网站142上的网页时,资源可以请求应用112将一个或多个用户组标识符添加到用户组列表。作为响应,应用112可以将一个或多个用户组标识符添加到用户组列表并安全地存储用户组列表。
内容平台150可以使用用户的用户组成员资格来选择用户可能感兴趣的或者可以以另一种方式对用户/用户设备有益的数字组件或其他内容。例如,这样的数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或以某种其他方式使用户或用户设备受益的数据。然而,可以以防止内容平台150将用户组标识符与特定用户相关的方式提供用户的用户组列表的用户组标识符,从而在使用用户组成员资格数据来选择数字组件时保护用户隐私。
应用112可以将来自用户组列表的用户组标识符提供给被信任计算系统,该被信任计算系统与内容平台150交互,以基于用户组成员资格以防止内容平台150或不是用户本身的任何其他实体知道用户的完整用户组成员资格的方式来选择用于在客户端设备110处呈现的数字组件。
在一些情况下,将用户组扩展为包括与已经是用户组的成员的用户具有类似兴趣或其他类似数据的用户对于用户和数字组件提供者是有益的。例如,第一用户可能对滑雪感兴趣,并且可以是特定滑雪场的用户组的成员。第二用户可能也对滑雪感兴趣,但不知道该滑雪场并且不是滑雪场的成员。如果两个用户具有相似兴趣或数据(例如,相似用户简档),则可以将第二用户添加到滑雪场的用户组,使得第二用户接收与滑雪场相关并且第二用户或其用户设备可能感兴趣或以其他方式对第二用户或其用户设备有益的内容(例如,数字组件)。换句话说,用户组可以被扩展为包括具有类似用户数据的其他用户。
有利地,可以在不使用第三方cookie的情况下将用户添加到用户组。如上所述,可以在客户端设备110处维护用户简档。这通过阻止用户的跨域浏览历史与外部方共享来保护用户隐私,减少了通过网络105发送cookie所消耗的带宽(其在数百万用户上聚合是大量的),减少了通常存储这种信息的内容平台150的存储要求,并减少了客户端设备110用于维护和发送cookie的电池消耗。
安全MPC集群130可以训练机器学习模型,该机器学习模型基于用户的简档向用户(或其应用112)建议用户组或可以用于生成用户组的建议。安全MPC集群130包括执行安全MPC技术以训练机器学习模型的两个计算系统MPC1和MPC2。尽管示例MPC集群130包括两个计算系统,但是只要MPC集群130包括多于一个计算系统,也可以使用更多的计算系统。例如,MPC集群130可以包括三个计算系统、四个计算系统或另一适当数量的计算系统。在MPC集群130中使用更多的计算系统可以提供更多的安全性和容错性,但也可能增加MPC过程的复杂性。
计算系统MPC1和MPC2可以由不同实体操作。以这种方式,每个实体可能无法访问明文形式的完整用户简档。明文是未经计算标记、特殊格式化或以代码或数据(包括二进制文件)编写的文本,其形式可以在不需要密钥或其他解密设备或其他解密过程的情况下查看或使用。例如,计算系统MPC1或MPC2之一可以由与用户、发布者140、内容平台150和数字组件提供者160不同的被信任方操作。例如,行业组、政府组或浏览器开发者可以维护和操作计算系统MPC1和MPC2之一。另一个计算系统可以由这些组中的不同组操作,使得不同被信任方操作每个计算系统MPC1和MPC2。优选地,操作不同计算系统MPC1和MPC2的不同方不具有串通以危及用户隐私的动机。在一些实施方式中,计算系统MPC1和MPC2在架构上分离,并且被监视以在执行本文档中描述的安全MPC过程之外不彼此通信。
在一些实施方式中,MPC集群130训练用于每个内容平台150和/或用于每个数字组件提供者160的一个或多个k-NN模型。例如,每个内容平台150可以管理一个或多个数字组件提供者160的数字组件的分发。内容平台150可以请求MPC集群130训练用于数字组件提供者160中的一个或多个的k-NN模型,内容平台150针对所述数字组件提供者160管理数字组件的分发。通常,k-NN模型表示一组用户的用户简档(以及可选的附加信息)之间的距离。内容平台的每个k-NN模型可以具有唯一模型标识符。用于训练k-NN模型的示例过程在图4中示出并在下面描述。
在训练用于内容平台150的k-NN模型之后,内容平台150可以查询或使客户端设备110的应用112查询k-NN模型以识别客户端设备110的用户的一个或多个用户组。例如,内容平台150可以查询k-NN模型以确定最接近用户的阈值数量的“k”个用户简档是否是特定用户组的成员。如果是,则内容平台150可以将用户添加到该用户组。如果针对用户识别出用户组,则内容平台150或MPC集群130可以请求应用112将用户添加到用户组。如果被用户和/或应用112批准,则应用112可以将用户组的用户组标识符添加到存储在客户端设备110处的用户组列表。
在一些实施方式中,应用112可以提供使用户能够管理用户被分配到的用户组的用户接口。例如,用户接口可以使用户能够移除用户组标识符,防止所有或特定资源145、发布者140、内容平台150、数字组件提供者160和/或MPC集群130将用户添加到用户组(例如,防止实体将用户组标识符添加到由应用112维护的用户组标识符的列表)。这为用户提供了更好的透明度、选择/同意和控制。
除了贯穿本文档的描述之外,可以向用户提供控件(例如,用户可以与之交互的用户接口元件),允许用户选择本文描述的系统、程序或特征是否以及何时可以实现用户信息(例如,关于用户的社交网络、社交动作或活动、职业、用户的偏好或用户的当前位置的信息)的收集,以及是否从服务器向用户发送内容或通信。另外,某些数据可以在其被存储或使用之前以一种或多种方式处理,使得个人可识别信息被移除。例如,可以处理用户的身份,使得不能确定用户的个人可识别信息,或者可以在获得位置信息的情况下将用户的地理位置泛化(诸如到城市、邮政编码或州级),使得不能确定用户的特定位置。因此,用户可以控制收集关于用户的什么信息、如何使用该信息以及向用户提供什么信息。
用于生成和使用机器学习模型的示例过程
图2是用于训练机器学习模型并使用机器学习模型将用户添加到用户组的示例过程200的泳道图。过程200的操作可以例如由客户端设备110、MPC集群130的计算系统MPC1和MPC2以及内容平台150来实现。过程200的操作还可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程200的操作。尽管根据两个计算系统MPC集群130描述了过程200和下面的其他过程,但是具有多于两个计算系统的MPC集群也可以用于执行类似的过程。
内容平台150可以通过请求在客户端设备110上运行的应用112针对其相应用户生成用户简档并且将用户简档的秘密份额和/或加密版本上传到MPC集群130来发起其机器学习模型之一的训练和/或更新。出于本文档的目的,用户简档的秘密份额可以被认为是用户简档的加密版本,这是因为秘密份额不是明文的。在生成时,每个应用112可以存储用户简档的数据,并且响应于从内容平台150接收到请求而生成更新的用户简档。由于用户简档的内容和机器学习模型对于不同的内容平台150不同,因此在用户的客户端设备110上运行的应用112可以维护多个用户简档的数据并生成多个用户简档,用户简档各自特定于特定内容平台或特定内容平台拥有的特定模型。
在客户端设备110上运行的应用112为客户端设备110的用户建立用户简档(202)。用户的用户简档可以包括与由用户发起的事件和/或可能已经由用户关于电子资源(例如,网页或应用内容)发起的事件相关的数据。事件可以包括电子资源的查看、数字组件的查看、与电子资源或数字组件(例如,对电子资源或数字组件的选择)的用户交互或缺少用户交互、在与电子资源的用户交互之后发生的转换、和/或与用户和电子资源相关的其他适当事件。
用户的用户简档可以特定于内容平台150或由内容平台150拥有的选择的机器学习模型。例如,如下面参考图3更详细描述的,每个内容平台150可以请求应用112生成或更新特定于该内容平台150的用户简档。
用户的用户简档可以是特征向量的形式。例如,用户简档可以是n维特征向量。n个维度中的每一个维度可以对应于特定特征,并且每个维度的值可以是用户的特征的值。例如,一个维度可以针对特定数字组件是否被呈现给用户(或用户与其交互)。在该示例中,如果数字组件被呈现给用户(或用户与其交互),则该特征的值可以是“1”,或者如果数字组件尚未被呈现给用户(或用户尚未与其交互),则该特征的值可以是“0”。用于生成用户的用户简档的示例过程在图3中示出并在下面描述。
在一些实施方式中,内容平台150可能想要基于附加信号来训练机器学习模型,附加信号诸如上下文信号、与特定数字组件相关的信号、或者应用112可能不知道或应用112可能无法访问的与用户相关的信号,诸如用户位置处的当前天气。例如,内容平台150可能想要训练机器学习模型以预测如果特定数字组件在特定上下文中被呈现给用户,则用户是否将与该数字组件交互。在该示例中,对于向用户的数字组件的每次呈现,上下文信号可以包括当时客户端设备110的地理位置(如果用户授权许可)、描述与数字组件一起呈现的电子资源的内容的信号、以及描述数字组件的信号,例如数字组件的内容、数字组件的类型、数字组件在电子资源上呈现的位置等。在另一示例中,一个维度可以针对呈现给用户的数字组件是否是特定类型。在该示例中,该值对于旅行可以是1、对于烹饪可以是2、对于电影可以是3等。为了便于后续描述,Pi将表示用户简档和与第i个用户简档相关联的附加信号(例如,上下文信号和/或数字组件级信号)两者。
应用112为用户生成用户简档Pi的份额(204)。在该示例中,应用112生成用户简档Pi的两个份额,一个份额用于MPC集群130的每个计算系统。注意,每个份额本身可以是随机变量,其本身不揭示关于用户简档的任何内容。两个份额将需要组合以获得用户简档。如果MPC集群130包括参与机器学习模型的训练的更多计算系统,则应用112将生成更多份额,每个计算系统一个份额。在一些实施方式中,为了保护用户隐私,应用112可以使用伪随机函数将用户简档Pi分成份额。也就是说,应用112可以使用伪随机函数PRF(Pi)来生成两个份额{[Pi,1],[Pi,2]}。确切的拆分可以取决于由应用112使用的秘密共享算法和加密库。
在一些实施方式中,应用112还可以向MPC集群130提供一个或多个标签。尽管可以不在训练某种架构的机器学习模型(例如,k-NN)时使用标签,但是标签可以用于微调控制模型训练过程的超参数(例如,k的值),或者评估训练的机器学习模型的质量,或者进行预测,即确定是否为用户建议用户组。标签可以包括例如用户的并且内容平台150可以访问的用户组标识符中的一个或多个。也就是说,标签可以包括由内容平台150管理的或者内容平台150可以读取访问的用户组的用户组标识符。在一些实施方式中,单个标签包括用户的多个用户组标识符。在一些实施方式中,用户的标签可以是异构的,并且包括将用户作为成员包括的所有用户组和附加信息,例如,用户是否与给定数字组件交互。这使得k-NN模型能够用于预测另一用户是否将与给定数字组件交互。每个用户简档的标签可以指示对应于用户简档的用户的用户组成员资格。
用户简档的标签预测对应于输入的用户将被添加或应该被添加到的用户组。例如,例如基于用户简档之间的相似性,对应于输入用户简档的k个最近邻用户简档的标签预测对应于输入用户简档的用户将加入或应该加入的用户组。这些预测标签可以用于向用户建议用户组或者请求应用将用户添加到与标签相对应的用户组。
如果标签被包括,则应用112还可以将每个标签labeli拆分为份额,例如[labeli,1]和[labeli,2]。以这种方式,在计算系统MPC1与MPC2之间没有串通的情况下,计算系统MPC1和MPC2都不能从[Pi,1]或[Pi,2]重构Pi或者从[labeli,1]或[labeli,2]重构labeli。
应用112加密用户简档Pi的份额[Pi,1]或[Pi,2]和/或每个标签labeli的份额[labeli,1]或[labeli,2](206)。在一些实施方式中,应用112生成用户简档Pi的第一份额[Pi,1]和标签labeli的第一份额[labeli,1]的合成消息,并使用计算系统MPC1的加密密钥对合成消息进行加密。类似地,应用112生成用户简档Pi的第二份额[Pi,2]和标签labeli的第二份额[labeli,2]的合成消息,并使用计算系统MPC2的加密密钥对合成消息进行加密。这些函数可以表示为PubKeyEncrypt([Pi,1]||[labeli,1],MPC1)和PubKeyEncrypt([Pi,2]||[labeli,2],MPC2),其中PubKeyEncrypt表示使用MPC1或MPC2的对应公钥的公钥加密算法。符号“||”表示从多个简单消息组成复杂消息的可逆方法,例如JavaScript对象表示法(JSON)、简明二进制对象表示(CBOR)或协议缓冲器。
应用112将加密的份额提供给内容平台150(208)。例如,应用112可以将用户简档和标签的加密的份额发送到内容平台150。由于每个份额使用计算系统MPC1或MPC2的加密密钥被加密,内容平台150不能访问用户的用户简档或标签。
内容平台150可以从多个客户端设备接收用户简档的份额和标签的份额。内容平台150可以通过将用户简档的份额上传到计算系统MPC1和MPC2来发起机器学习模型的训练。尽管标签在训练过程中可以不使用,但是内容平台150可以将标签的份额上传到计算系统MPC1和MPC2,以供在评估模型质量或稍后查询模型时使用。
内容平台150将从每个客户端设备110接收的第一加密的份额(例如,PubKeyEncrypt([Pi,1]||[labeli,1],MPC1))上传到计算系统MPC1(210)。类似地,内容平台150将第二加密的份额(例如,PubKeyEncrypt([Pi,2]||[labeli,2],MPC2))上传到计算系统MPC2(212)。两个上传可以是批量的,并且可以包括在特定时间段期间接收的用户简档和标签的加密的份额以用于训练机器学习模型。
在一些实施方式中,内容平台150将第一加密的份额上传到计算系统MPC1的顺序必须匹配内容平台150将第二加密的份额上传到计算系统MPC2的顺序。这使得计算系统MPC1和MPC2能够适当地匹配相同秘密的两个份额,例如,相同用户简档的两个份额。
在一些实施方式中,内容平台150可以将相同的伪随机或顺序生成的标识符明确地分配给相同秘密的份额以促进匹配。虽然一些MPC技术可以依赖于输入或中间结果的随机置乱(shuffling),但是本文档中描述的MPC技术可以不包括这种随机置乱,而是可以依赖于上传顺序来匹配。
在一些实施方式中,操作208、210和212可以由可替代过程代替,其中应用112直接将[Pi,1]||[labeli,1]上传到MPC1,并且将[Pi,2]||[labeli,2]上传到MPC2。该可替代过程可以减少内容平台150用于支持操作208、210和212的基础设施成本,并且减少在MPC1和MPC2中开始训练或更新机器学习模型的时延。例如,这消除了到内容平台150,内容平台150然后将其发送到MPC1和MPC2的数据的发送。这样做减少了通过网络105发送的数据量,并且降低了内容平台150的逻辑在处理这样的数据时的复杂度。
计算系统MPC1和MPC2生成机器学习模型(214)。每次基于用户简档数据生成新的机器学习模型可以被称为训练会话。计算系统MPC1和MPC2可以基于从客户端设备110接收的加密的用户简档的份额来训练机器学习模型。例如,计算系统MPC1和MPC2可以基于用户简档的份额使用MPC技术来训练k-NN模型。
为了最小化或至少减少加密计算,并且因此最小化或至少减少施加在计算系统MPC1和MPC2上以在模型训练和推断两者期间保护用户隐私和数据的计算负担,MPC集群130可以使用随机投射技术(例如,SimHash)来快速、安全地在概率上量化两个用户简档Pi与Pj之间的相似性。SimHash是一种可以快速估计两个数据集之间的相似性的技术。两个用户简档Pi与Pj之间的相似性可以通过确定表示两个用户简档Pi和Pj的两个位向量之间的汉明距离来确定,该汉明距离与两个用户简档之间的余弦距离以高概率成反比。
概念上,对于每个训练会话,可以生成m个随机投射超平面U={U1,U2,…,Um}。随机投射超平面也可以被称为随机投射平面。计算系统MPC1与MPC2之间的多步计算的一个目的是针对在k-NN模型的训练中使用的每个用户简档Pi创建长度为m的位向量Bi。在该位向量Bi中,每个位Bi,j表示投射平面之一Uj与用户简档Pi的点积的符号,即对于所有j∈[1,m],Bi,j=sign(Uj⊙Pi),其中⊙表示相等长度的两个向量的点积。也就是说,每个位表示用户简档Pi位于平面Uj的哪一侧。位值1表示正号,位值0表示负号。
在多步计算的每一端,两个计算系统MPC1和MPC2中的每一个生成中间结果,该中间结果包括每个用户简档的明文位向量、每个用户简档的份额以及每个用户简档的标签的份额。例如,计算系统MPC1的中间结果可以是下表1中所示的数据。计算系统MPC2将具有类似的中间结果,但是具有每个用户简档和每个标签的不同份额。为了添加额外的隐私保护,MPC集群130中的两个服务器中的每一个只能以明文获得m维位向量的一半,例如,计算系统MPC1获得所有m维位向量的第一m/2维,计算系统MPC2获得所有m维位向量的第二m/2维。
明文位向量 | Pi的MPC1份额 | labeli的MPC1份额 |
… | … | … |
Bi | … | … |
Bi+1 | … | … |
… | … | … |
表1
给定单位长度i≠j的两个任意用户简档向量Pi和Pj,已经表明,假设随机投射的数量m足够大,两个用户简档向量Pi和Pj的位向量Bi与Bj之间的汉明距离以高概率与用户简档向量Pi与Pj之间的余弦距离成比例。
基于上面所示的中间结果并且因为位向量Bi是明文的,所以每个计算系统MPC1和MPC2可以使用k-NN算法(例如,通过训练)独立地创建相应k-NN模型。计算系统MPC1和MPC2可以使用相同或不同的k-NN算法。用于训练k-NN模型的示例过程在图4中示出并在下面描述。一旦k-NN模型被训练,应用112就可以查询k-NN模型以确定是否将用户添加到用户组。
应用112向MPC集群130提交推断请求(216)。在该示例中,应用112将推断请求发送到计算系统MPC1。在其他示例中,应用112可以将推断请求发送到计算系统MPC2。应用112可以响应于来自内容平台150的提交推断请求的请求而提交推断请求。例如,内容平台150可以请求应用112查询k-NN模型以确定客户端设备110的用户是否应该被添加到特定用户组。该请求可以被称为用于推断用户是否应该被添加到用户组的推断请求。
为了发起推断请求,内容平台150可以向应用112发送推断请求令牌Minfer。推断请求令牌Minfer使得MPC集群130中的服务器能够验证应用112被授权查询由特定域拥有的特定机器学习模型。如果模型访问控制是可选的,则推断请求令牌Minfer是可选的。推断请求令牌Minfer可以具有在下面的表2中示出和描述的以下项目。
表2
在该示例中,推断请求令牌Minfer包括七个项目和使用内容平台150的私钥基于七个项目生成的数字签名。eTLD+1是有效的顶级域(eTLD)加上比公共后缀多一个级别。示例eTLD+1是“example.com”,其中“.com”是顶级域。
为了请求特定用户的推断,内容平台150可以生成推断请求令牌Minfer并将该令牌发送到在用户的客户端设备110上运行的应用112。在一些实施方式中,内容平台150使用应用112的公钥来加密推断请求令牌Minfer,使得只有应用112可以使用其对应于公钥的机密私钥来解密推断请求令牌Minfer。也就是说,内容平台可以向应用112发送PubKeyEnc(Minfer,application_public_key)。
应用112可以解密和验证推断请求令牌Minfer。应用112可以使用其私钥来解密加密的推断请求令牌Minfer。应用112可以通过以下方式来验证推断请求令牌Minfer:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在正在进行验证的当前时间的阈值时间量内。如果推断请求令牌Minfer有效,则应用112可以查询MPC集群130。
在概念上,推断请求可以包括机器学习模型的模型标识符、当前用户简档Pi,k(要获取的最近邻的数量)、可选地附加信号(例如,上下文信号或数字组件信号)、聚合函数和聚合函数参数。然而,为了防止用户简档Pi以明文形式泄漏到计算系统MPC1或MPC2,从而保护用户隐私,应用112可以将用户简档Pi拆分为分别用于MPC1和MPC2的两个份额[Pi,1]和[Pi,2]。然后,应用112可以例如随机地或伪随机地选择两个计算系统MPC1或MPC2之一以用于查询。如果应用112选择计算系统MPC1,则应用112可以向计算系统MPC1发送具有第一份额[Pi,1]和第二份额的加密版本(例如,PubKeyEncrypt([Pi,2],MPC2))的单个请求。在该示例中,应用112使用计算系统MPC2的公钥来加密第二份额[Pi,2],以防止计算系统MPC1访问[Pi,2],这将使得计算系统MPC1能够从[Pi,1]和[Pi,2]重构用户简档Pi。
如下面更详细描述的,计算系统MPC1和MPC2协作地计算到用户简档Pi的k个最近邻。然后,计算系统MPC1和MPC2可以使用若干可能的机器学习技术(例如,二元分类、多类分类、回归等)之一来基于k个最近邻用户简档确定是否将用户添加到用户组。例如,聚合函数可以识别机器学习技术(例如,二进制、多类、回归),并且聚合函数参数可以基于聚合函数。聚合函数可以定义计算,例如求和、逻辑AND(与)或OR(或)或使用参数执行的另一适当函数。例如,聚合函数可以是等式的形式,所述等式包括所述函数和在所述等式中使用的参数。
在一些实施方式中,聚合函数参数可以包括内容平台150正在针对其针对用户查询k-NN模型的用户组的用户组标识符。例如,内容平台150可能想要知道是否将用户添加到与徒步相关并且具有用户组标识符“徒步”的用户组。在该示例中,聚合函数参数可以包括“徒步”用户组标识符。通常,计算系统MPC1和MPC2可以基于作为用户组的成员的k个最近邻的数量(例如,基于它们的标签)来确定是否将用户添加到用户组。
MPC集群130向应用112提供推断结果(218)。在该示例中,接收到查询的计算系统MPC1将推断结果发送到应用112。推断结果可以指示应用112是否应该将用户添加到零个或更多个用户组。例如,用户组结果可以指定用户组的用户组标识符。然而,在该示例中,计算系统MPC1将知道用户组。为了防止这种情况,计算系统MPC1可以计算推断结果的份额,并且计算系统MPC2可以计算同一推断结果的另一份额。计算系统MPC2可以向计算系统MPC1提供其份额的加密版本,其中份额使用应用112的公钥来加密。计算系统MPC1可以向应用112提供其推断结果的份额以及计算系统MPC2的用户组结果的份额的加密版本。应用112可以解密计算系统MPC2的份额并根据两个份额来计算推断结果。用于查询k-NN模型以确定是否将用户添加到用户组的示例过程在图5中示出并在下面描述。在一些实施方式中,为了防止计算系统MPC1伪造计算系统MPC2的结果,计算系统MPC2在使用应用112的公钥加密其结果之前或之后对其结果进行数字签名。应用112使用MPC2的公钥来验证计算系统MPC2的数字签名。
应用112更新用户的用户组列表(220)。例如,如果推断结果是将用户添加到特定用户组,则应用112可以将用户添加到该用户组。在一些实施方式中,应用112可以提示用户许可将用户添加到用户组。
应用112发送对内容的请求(222)。例如,应用112可以响应于加载具有数字组件槽的电子资源而向内容平台150发送对数字组件的请求。在一些实施方式中,请求可以包括用户组的一个或多个用户组标识符,所述用户组包括用户作为成员。例如,应用112可以从用户组列表获得一个或多个用户组标识符,并将(多个)用户组标识符与请求一起提供。在一些实施方式中,技术可以被使用来防止内容平台能够将用户组标识符与从其接收请求的用户、应用112和/或客户端设备112相关联。
内容平台150将内容发送到应用112(224)。例如,内容平台150可以基于(多个)用户组标识符来选择数字组件,并将该数字组件提供给应用112。在一些实施方式中,内容平台150与应用112协作,基于(多个)用户组标识符选择数字组件,而不将(多个)用户组标识符从应用112泄漏出来。
应用112显示或以其他方式实现接收的内容(226)。例如,应用112可以在电子资源的数字组件槽中显示接收的数字组件。
用于生成用户简档的示例过程
图3是示出用于生成用户简档并将用户简档的份额发送到MPC集群的示例过程300的流程图。过程300的操作可以例如由图1的客户端设备110,例如由在客户端设备110上运行的应用112来实现。过程300的操作还可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程300的操作。
在用户的客户端设备110上执行的应用112接收事件的数据(302)。事件可以是例如在客户端设备110处的电子资源的呈现、在客户端设备110处的数字组件的呈现、与客户端设备110处的电子资源或数字组件的用户交互、或数字组件的转换、或缺少与呈现的电子资源或数字组件的用户交互或缺少对呈现的电子资源或数字组件的转换。当事件发生时,内容平台150可以将与事件相关的数据提供给应用112以用于在生成用户的用户简档时使用。
应用112可以针对每个内容平台150生成不同的用户简档。也就是说,用户和针对特定内容平台150的用户简档可以仅包括从该特定内容平台150接收的事件数据。这通过不与内容平台共享与其他内容平台的事件相关的数据来保护用户隐私。在一些实施方式中,根据内容平台150的请求,应用112可以针对内容平台150拥有的每个机器学习模型生成不同用户简档。基于设计目标,不同机器学习模型可能需要不同训练数据。例如,可以使用第一模型来确定是否将用户添加到用户组。可以使用第二模型来预测用户是否将与数字组件交互。在该示例中,第二模型的用户简档可以包括第一模型的用户简档不具有的附加数据,例如,用户是否与数字组件交互。
内容平台150可以以简档更新令牌Mupdate的形式发送事件数据。简档更新令牌Mupdate具有在下面的表3中示出和描述的以下项目。
/>
表3
模型标识符识别机器学习模型,例如,k-NN模型,用户简档将用于训练该机器学习模型或该机器学习模型用于进行用户组推断。简档记录是n维特征向量,其包括特定于事件的数据,例如,事件的类型、电子资源或数字组件、事件发生的时间和/或内容平台150想要在训练机器学习模型并进行用户组推断时使用的其他适当的事件数据。使用内容平台150的私钥基于七个项目生成数字签名。
在一些实施方式中,为了在传输期间保护更新令牌Mupdat,内容平台150在将更新令牌Mupdate发送到应用112之前加密更新令牌Mupdate。例如,内容平台150可以使用应用的公钥来加密更新令牌Mupdate(例如,PubKeyEnc(Mupdate,application_public_key))。
在一些实施方式中,内容平台150可以将事件数据发送到应用112,而不以简档更新令牌Mupdate的形式对事件数据或更新请求进行编码。例如,在应用112内运行的源自内容平台150的脚本可以经由脚本API将事件数据和更新请求直接发送到应用112,其中应用112依赖于基于万维网联盟(W3C)起源的安全模型和/或(超文本传输协议安全)HTTPS来保护事件数据和更新请求免受伪造或泄漏。
应用112存储事件的数据(304)。如果事件数据被加密,则应用112可以使用其私钥来解密事件数据,该私钥对应于用于加密事件数据的公钥。如果事件数据以更新令牌Mupdate的形式发送,则应用112可以在存储事件数据之前验证更新令牌Mupdate。应用112可以通过以下方式来验证更新令牌Mupdate:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在正在进行验证的当前时间的阈值时间量内。如果更新令牌Mupdate有效,则应用112可以例如通过存储n维简档记录来存储事件数据。如果任何验证失败,则应用112可以例如通过不存储事件数据来忽略更新请求。
对于每个机器学习模型,例如,对于每个唯一模型标识符,应用112可以存储该模型的事件数据。例如,应用112可以为每个唯一模型标识符维护数据结构,该数据结构包括一组n维特征向量(例如,更新令牌的简档记录),以及对于每个特征向量的到期时间。每个特征向量可以包括与客户端设备110的用户的事件相关的特征的特征值。模型标识符的示例数据结构在下表4中示出。
特征向量 | 到期 |
n维特征向量 | 到期时间 |
… | … |
表4
在接收到有效更新令牌Mupdate时,应用112可以通过将更新令牌Mupdate的特征向量和到期时间添加到包括在更新令牌Mupdate中的模型标识符的数据结构来更新该数据结构。周期性地,应用112可以从数据结构中清除到期的特征向量以减小存储大小。
应用112确定是否生成用户简档(306)。例如,应用112可以响应于来自内容平台150的请求而生成用于特定机器学习模型的用户简档。该请求可以是生成用户简档并将用户简档的份额返回到内容平台150。在一些实施方式中,应用112可以将生成的用户简档直接上传到MPC集群130,例如,而不是将它们发送到内容平台150。为了确保生成和返回用户简档的份额的请求的安全性,内容平台150可以向应用112发送上传令牌Mupload。
上传令牌Mupload可以具有与更新令牌Mupdate类似的结构,但是具有不同的操作(例如,“更新服务器”而不是“累积用户简档”)。上传令牌Mupload还可以包括用于操作延迟的附加项目。操作延迟可以指令应用112延迟计算和上传用户简档的份额,同时应用112累积更多事件数据,例如更多特征向量。这使得机器学习模型能够在一些关键事件(例如,加入用户组)之前和之后立即捕获用户事件数据。操作延迟可以指定延迟时间段。在该示例中,可以使用内容平台的私钥基于表3中的其他七个项目和操作延迟来生成数字签名。内容平台150可以使用应用的公钥,以与更新令牌Mupdate类似的方式加密上传令牌Mupload,例如PubKeyEnc(Mupload,application_public_key),以在传输期间保护上传令牌Mupload。
应用112可以接收上传令牌Mupload,如果上传令牌Mupload被加密,则解密上传令牌Mupload,并验证上传令牌Mupload。该验证可以类似于更新令牌Mupdate被验证的方式。应用112可以通过以下方式来验证上传令牌Mupload:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在正在进行验证的当前时间的阈值时间量内。如果上传令牌Mupload有效,则应用112可以生成用户简档。如果任何验证失败,则应用112可以忽略上传请求,例如,通过不生成用户简档。
在一些实施方式中,内容平台150可以请求应用112上传用户简档,而不以简档上传令牌Mupload的形式对上传请求进行编码。例如,在应用115内运行的源自内容平台150的脚本可以经由脚本API将上传请求直接发送到应用115,其中应用115依赖于基于W3C起源的安全模型和/或HTTPS来保护上传请求免受伪造或泄漏。
如果确定不生成用户简档,则过程300可以返回到操作302并等待来自内容平台150的附加事件数据。如果确定生成用户简档,则应用112生成用户简档(308)。
应用112可以基于存储的事件数据(例如,存储在表4中所示的数据结构中的数据)来生成用户简档。应用112可以基于请求中包括的模型标识符(例如,上传令牌Mupload的项目1的内容平台eTLD+1域和项目2的模型标识符)来访问适当的数据结构。
应用112可以通过聚合尚未到期的学习时段中的数据结构中的n维特征向量来计算用户简档。例如,用户简档可以是尚未到期的学习时段中的数据结构中的n维特征向量的平均值。结果是在简档空间中表示用户的n维特征向量。可选地,应用112可以例如使用L2归一化将n维特征向量归一化为单位长度。内容平台150可以指定可选的学习时段。
在一些实施方式中,衰减率可以用于计算用户简档。由于可能存在使用MPC集群130来训练机器学习模型的许多内容平台150,并且每个内容平台150可能具有多个机器学习模型,因此存储用户特征向量数据会导致显著的数据存储要求。使用衰减技术可以大幅减少为了生成用于训练机器学习模型的用户简档的目的而存储在每个客户端设备110处的数据量。
假设,对于给定的机器学习模型,存在k个特征向量{F1,F2,…Fk}及其对应的年龄(record_age_in_secondsi),特征向量中的每一个是n维向量。应用112可以使用下面的关系1来计算用户简档:
关系1:
在该关系中,参数record_age_in_secondsi是简档记录已经被存储在客户端设备110处的以秒为单位的时间量,并且参数decay_rate_in_seconds是简档记录的以秒为单位的衰减率(例如,在更新令牌Mupdate的项目6中接收的)。以这种方式,更新近的特征向量携带更多的权重。这还使得应用112能够避免存储特征向量并且仅以恒定存储来存储简档记录。应用112仅必须针对每个模型标识符存储n维向量P和时间戳user_profile_time,而不是针对每个模型标识符存储多个单独的特征向量。这大大减少了必须存储在客户端设备110处的数据量,其中许多客户端设备通常具有有限的数据存储容量。
为了初始化n维向量用户简档P和时间戳,应用可以将向量P设置为n维向量(其中每个维度的值为零),并将user_profile_time设置为历元(epoch)。为了在任何时间用新的特征向量Fx更新用户简档P,应用112可以使用下面的关系2:
关系2:
当利用关系2更新用户简档时,应用112还可以将用户简档时间更新为当前时间(current_time)。注意,如果应用112利用上述衰减率算法计算用户简档,则省略操作304和308。
应用112生成用户简档的份额(310)。应用112可以使用伪随机函数来将用户简档Pi(例如,n维向量P)拆分为份额。也就是说,应用112可以使用伪随机函数PRF(Pi)来生成用户简档Pi的两个份额{[Pi,1],[Pi,2]}。确切的拆分可以取决于由应用112使用的秘密共享算法和加密库。在一些实施方式中,应用使用Shamir秘密共享方案。如果一个或多个标签的份额正在被提供,则应用112还可以生成标签的份额。
应用112加密用户简档Pi的份额{[Pi,1],[Pi,2]}(312)。例如,如上所述,应用112可以生成包括用户简档和标签的份额的合成消息,并加密合成消息以获得加密结果PubKeyEncrypt([Pi,1]||[labeli,1],MPC1)和PubKeyEncrypt([Pi,2]||[labeli,2],MPC2)。使用MPC集群130的加密密钥对份额进行加密防止内容平台150能够访问明文的用户简档。应用112将加密的份额发送到内容平台(314)。注意,如果应用112将秘密份额直接发送到计算系统MPC1和MPC2,则省略操作314。
用于生成和使用机器学习模型的示例过程
图4是示出用于生成机器学习模型的示例过程400的流程图。过程400的操作可以例如由图1的MPC集群130实现。过程400的操作还可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程400的操作。
MPC集群130获得用户简档的份额(402)。内容平台150可以通过将用户简档的份额发送到MPC集群130来请求MPC集群130训练机器学习模型。内容平台150可以在给定时间段内访问用于机器学习模型的从客户端设备110接收的加密的份额,并且将这些份额上传到MPC集群130。
例如,内容平台150可以向计算系统MPC1发送针对每个用户简档Pi的用户简档的加密第一份额和其标签的加密第一份额(例如,PubKeyEncrypt([Pi,1]||[labeli,1],MPC1)。类似地,内容平台150可以向计算系统MPC2发送针对每个用户简档Pi的用户简档的加密第二份额和其标签的加密第二份额(例如,PubKeyEncrypt([Pi,2]||[labeli,2))。
在应用112直接向MPC集群130发送用户简档的秘密份额的一些实施方式中,内容平台150可以通过向MPC集群130发送训练请求来请求MPC集群130训练机器学习模型。
计算系统MPC1和MPC2创建随机投射平面(404)。计算系统MPC1和MPC2可以协作地创建m个随机投射平面U={U1,U2,…,Um}。这些随机投射平面应该保持为两个计算系统MPC1与MPC2之间的秘密份额。在一些实施方式中,计算系统MPC1和MPC2创建随机投射平面并使用Diffie-Hellman密钥交换技术来维持其秘密性。
如下面更详细描述的,计算系统MPC1和MPC2将使其每个用户简档的份额投射到每个随机投射平面上,并且针对每个随机投射平面确定用户简档的份额是否在随机投射平面的一侧。然后,每个计算系统MPC1和MPC2可以基于每个随机投射的结果从用户简档的秘密份额构建秘密份额中的位向量。用户的位向量的部分知识(例如,用户简档Pi是否在投射平面Uk的一侧)允许计算系统MPC1或MPC2获得关于Pi的分布的一些知识,这对于具有单位长度的用户简档Pi的先验知识是递增的。为了防止计算系统MPC1和MPC2获得对该信息的访问(例如,在用户隐私和/或数据安全性需要或优选这一点的实施方式中),在一些实施方式中,随机投射平面处于秘密份额中,因此计算系统MPC1和MPC2都不能访问明文的随机投射平面。在其他实施方式中,如可选操作406-408中所述,可以使用秘密共享算法在随机投射结果上应用随机位翻转模式。
为了演示如何经由秘密份额翻转位,假设存在两个秘密x和y,其值以相等概率为零或一。等式运算[x]==[y]将翻转x的位(如果y==0),并且将保持x的位(如果y==1)。在该示例中,运算将以50%的概率随机翻转位x。该运算可要求两个计算系统MPC1与MPC2之间的远程过程调用(RPC),并且轮数取决于数据大小和选择的秘密共享算法。
每个计算系统MPC1和MPC2创建秘密的m维向量(406)。计算系统MPC1可以创建秘密的m维向量{S1,S2,…Sm},其中每个元素Si以相等概率具有零或一的值。计算系统MPC1将其m维向量拆分为两个份额,第一份额{[S1,1],[S2,1],…[Sm,1]}和第二份额{[S1,2],[S2,2],…[Sm,2]}。计算系统MPC1可以保持第一份额秘密并且将第二份额提供给计算系统MPC2。然后,计算系统MPC1可以丢弃m维向量{S1,S2,…Sm}。
计算系统MPC2可以创建秘密的m维向量{T1,T2,…Tm},其中每个元素Ti具有零或一的值。计算系统MPC2将其m维向量拆分为两个份额,第一份额{[T1,1],[T2,1],…[Tm,1]}和第二份额{[T1,2],[T2,2],…[Tm,2]}。计算系统MPC2可以保持第一份额秘密并且将第二份额提供给计算系统MPC1。然后,计算系统MPC2可以丢弃m维向量{T1,T2,…Tm}。
两个计算系统MPC1和MPC2使用安全MPC技术来计算位翻转模式的份额(408)。计算系统MPC1和MPC2可以使用具有计算系统MPC1与MPC2之间的多次往返的秘密份额MPC相等性测试来计算位翻转模式的份额。位翻转模式可以基于上文所描述的运算[x]==[y]。也就是说,位翻转模式可以是{S1==T1,S2==T2,…Sm==Tm}。令每个STi=(Si==Ti)。每个STi具有0或1的值。在完成MPC操作之后,计算系统MPC1具有位翻转模式的第一份额{[ST1,1],[ST2,1],…[STm,1]},并且计算系统MPC2具有位翻转模式的第二份额{[ST1,2],[ST2,2],…[STm,2]}。每个STi的份额使得两个计算系统MPC1与MPC2能够以对两个计算系统MPC1和MPC2中的任一个不透明的方式翻转位向量中的位。
每个计算系统MPC1和MPC2将其每个用户简档的份额投射到每个随机投射平面上(410)。也就是说,对于计算系统MPC1接收到份额的每个用户简档,计算系统MPC1可以将份额[Pi,1]投射到每个投射平面Uj上。针对用户简档的每个份额并且针对每个随机投射平面Uj执行该操作,得到z x m维的矩阵R,其中z是可用的用户简档的数量,m是随机投射平面的数量。矩阵R中的每个元素Ri,j可以通过计算投射平面Uj与份额[Pi,1]之间的点积来确定,例如Ri,j=Uj⊙[Pi,1]。该运算⊙表示相等长度的两个向量的点积。
如果位翻转被使用,则计算系统MPC1可以使用在计算系统MPC1与MPC2之间秘密共享的位翻转模式来修改矩阵中的元素Ri,j中的一个或多个元素的值。对于矩阵R中的每个元素Ri,j,计算系统MPC1可以计算[STj,1]==sign(Ri,j)作为元素Ri,j的值。因此,如果元素Ri,j在位翻转模式中的位[STj,1]中的对应位具有零值,则元素Ri,j的符号将被翻转。该计算可能要求到计算系统MPC2的多个RPC。
类似地,对于计算系统MPC2接收到份额的每个用户简档,计算系统MPC2可以将份额[Pi,2]投射到每个投射平面Uj上。针对用户简档的每个份额并且针对每个随机投射平面Uj执行该操作得到z x m维的矩阵R’,其中z是可用的用户简档的数量,m是随机投射平面的数量。矩阵R’中的每个元素Ri,j’可以通过计算投射平面Uj与份额[Pi,2]之间的点积来确定,例如Ri,’j=Uj⊙[Pi,2]。该运算⊙表示相等长度的两个向量的点积。
如果位翻转被使用,则计算系统MPC2可以使用在计算系统MPC1与MPC2之间秘密共享的位翻转模式来修改矩阵中的元素Ri,j’中的一个或多个元素的值。对于矩阵R中的每个元素Ri,j’,计算系统MPC2可以计算[STj,2]==sign(Ri,j’)作为元素Ri,j’的值。因此,如果元素Ri,j’在位翻转模式中的位STj中的对应位具有零值,则元素Ri,j’的符号将被翻转。该计算可能要求到计算系统MPC1的多个RPC。
计算系统MPC1和MPC2重构位向量(412)。计算系统MPC1和MPC2可以基于具有完全相同大小的矩阵R和R’来重构用户简档的位向量。例如,计算系统MPC1可以将矩阵R的列的一部分发送到计算系统MPC2,并且计算系统MPC2可以将矩阵R’的列的剩余部分发送到MPC1。在特定示例中,计算系统MPC1可以将矩阵R的列的前半部分发送到计算系统MPC2,并且计算系统MPC2可以将矩阵R’的列的后半部分发送到MPC1。尽管列在该示例中用于水平重构并且优选用于保护用户隐私,但是行可以在其他示例中用于垂直重构。
在该示例中,计算系统MPC2可以将矩阵R’的列的前半部分与从计算系统MPC1接收的矩阵R的列的前半部分组合,以重构明文的位向量的前半部分(即,m/2维度)。类似地,计算系统MPC1可以将矩阵R的列的后半部分与从计算系统MPC2接收的矩阵R’的列的后半部分组合,以重构明文的位向量的后半部分(即m/2维度)。在概念上,计算系统MPC1和MPC2现在已经组合了两个矩阵R和R’中的对应份额以重构明文的位矩阵B。该位矩阵B将包括针对每个用户简档的投射结果(投射到每个投射平面上)的位向量,其中,针对每个用户简档的份额从针对机器学习模型的内容平台150接收。MPC集群130中的两个服务器中的每一个拥有明文位矩阵B的一半。
然而,如果使用位翻转,则计算系统MPC1和MPC2已经以针对机器学习模型固定的随机模式翻转矩阵R和R’中的元素的位。该随机位翻转模式对于两个计算系统MPC1和MPC2中的任一个是不透明的,使得计算系统MPC1和MPC2都不能从投射结果的位向量推断原始用户简档。加密设计还通过水平划分位向量来防止MPC1或MPC2推断原始用户简档,即,计算系统MPC1保持明文投射结果的位向量的后半部分,并且计算系统MPC2保持明文投射结果的位向量的前半部分。
计算系统MPC1和MPC2生成机器学习模型(414)。计算系统MPC1可以使用位向量的后半部分来生成k-NN模型。类似地,计算系统MPC2可以使用位向量的前半部分来生成k-NN模型。使用位翻转和矩阵的水平划分来生成模型应用深度防御原理来保护用于生成模型的用户简档的秘密性。
通常,每个k-NN模型表示一组用户的用户简档之间的余弦相似性(或距离)。由计算系统MPC1生成的k-NN模型表示位向量的后半部分之间的相似性,并且由计算系统MPC2生成的k-NN模型表示位向量的前半部分之间的相似性。例如,每个k-NN模型可以定义其一半位向量之间的余弦相似性。
由计算系统MPC1和MPC2生成的两个k-NN模型可以被称为k-NN模型,其具有如上所述的唯一模型标识符。计算系统MPC1和MPC2可以存储它们的模型和用于生成模型的每个用户简档的标签的份额。然后,内容平台150可以查询模型以对用户的用户组进行推断。
用于使用机器学习模型来推断用户组的示例过程
图5是示出用于使用机器学习模型将用户添加到用户组的示例过程500的流程图。过程500的操作可以例如由图1的MPC集群130和客户端设备110(例如,在客户端设备110上运行的应用112)来实现。过程500的操作还可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程500的操作。
MPC集群130接收针对给定用户简档的推断请求(502)。在用户的客户端设备110上运行的应用112可以例如响应于来自内容平台150的请求而将推断请求发送到MPC集群130。例如,内容平台150可以向应用112发送上传令牌Minfer,以请求应用112向MPC集群130提交推断请求。推断请求可以是查询用户是否应该被添加到任何数量的用户组。
推断请求令牌Minfer可以包括用户的给定用户简档的份额、机器学习模型(例如,k-NN模型)的模型标识符和要用于推断的所有者域、要用于推断的给定用户简档的数量k个最近邻、附加信号(例如,上下文或数字组件信号)、要用于推断的聚合函数和要用于推断的任何聚合函数参数、以及由所有者域使用所有者域机密私钥创建的所有上述信息上的签名。
如上所述,为了防止给定用户简档Pi以明文形式泄漏到计算系统MPC1或MPC2,从而保护用户隐私,应用112可以将给定用户简档Pi拆分为分别用于MPC1和MPC2的两个份额[Pi,1]和[Pi,2]。然后,应用112可以向计算系统MPC1发送具有给定用户简档的第一份额[Pi,1]和给定用户简档的第二份额的加密版本(例如,PubKeyEncrypt([Pi,2],MPC2))的单个推断请求。推断请求还可以包括推断请求令牌Minfer,使得MPC集群130可以认证推断请求。通过发送包括第一份额和加密的第二份额的推断请求,减少了由应用112发送的传出请求的数量,从而导致客户端设备110处的计算、带宽和电池节省。
在其他实施方式中,应用112可以将给定用户简档的第一份额[Pi,1]发送到计算系统MPC1,并且将给定用户简档的第二份额[Pi,2]发送到计算系统MPC2。通过将给定用户简档的第二份额[Pi,2]发送到计算系统MPC2而不经过计算系统MPC1,第二份额不需要被加密以防止计算系统MPC1访问给定用户简档的第二份额[Pi,2]。
每个计算系统MPC1和MPC2在秘密份额表示中识别到给定用户简档的k个最近邻(504)。计算系统MPC1可以使用给定用户简档的第一份额[Pi,1]来计算其给定用户简档的位向量的一半。为了生成位向量,计算系统MPC1可以使用图4的过程400的操作410和412。也就是说,计算系统MPC1可以使用针对k-NN模型生成的随机投射向量来投射给定用户简档的份额[Pi,1],并针对给定用户简档创建位向量的秘密份额。如果使用位翻转来生成k-NN模型,则计算系统MPC1然后可以使用用于生成k-NN模型的位翻转模式的第一份额{[ST1,1],[ST2,1],…[STm,1]}来修改给定用户简档的位向量的秘密份额的元素。
类似地,计算系统MPC1可以向计算系统MPC2提供给定用户简档的加密的第二份额PubKeyEncrypt([Pi,2],MPC2)。计算系统MPC2可以使用其私钥解密给定用户简档的第二份额[Pi,2],并使用给定用户简档的第二份额[Pi,2]计算其给定用户简档的位向量的一半。也就是说,计算系统MPC2可以使用针对k-NN模型生成的随机投射向量来投射给定用户简档的份额[Pi,2]并针对给定用户简档创建位向量。如果使用位翻转来生成k-NN模型,则计算系统MPC2然后可以使用用于生成k-NN模型的位翻转模式的第二份额{[ST1,2],[ST2,2],…[STm,2]}来修改给定用户简档的位向量的元素。然后,计算系统MPC1和MPC2利用水平划分重构位向量,如图4中的操作412所述。在重构完成之后,计算系统MPC1具有给定用户简档的总位向量的前半部分,并且计算系统MPC2具有给定用户简档的总位向量的后半部分。
每个计算系统MPC1和MPC2使用其给定用户简档的位向量的一半及其k-NN模型来识别k’个最近邻用户简档,其中k’=ɑ×k,其中ɑ是基于实际生产数据和统计分析凭经验确定的。例如,ɑ=3或另一适当的数。计算系统MPC1可以计算总位向量的前半部分与k-NN模型的每个用户简档的位向量之间的汉明距离。然后,计算系统MPC1基于计算的汉明距离来识别k’个最近邻,例如,具有最低汉明距离的k’个用户简档。换句话说,计算系统MPC1基于给定用户简档的份额和使用多个用户简档训练的k-最近邻模型来识别最近邻用户简档的集合。表格形式的示例结果在下表5中示出。
行ID | 汉明距离(明文) | 用户简档的份额 | 标签的份额 |
i | di,1 | [Pi,1] | [labeli,1] |
… | … | … | … |
表5
在表5中,每行用于特定的最近邻用户简档,并且包括由计算系统MPC1计算的每个用户简档的位向量的前半部分与给定用户简档的位向量之间的汉明距离。用于特定最近邻用户简档的行还包括该用户简档的第一份额和与该用户简档相关联的标签的第一份额。
类似地,计算系统MPC2可以计算总位向量的后半部分与k-NN模型的每个用户简档的位向量之间的汉明距离。然后,计算系统MPC2基于计算的汉明距离来识别k’个最近邻,例如,具有最低汉明距离的k’个用户简档。表格形式的示例结果在下表5中示出。
行ID | 汉明距离(明文) | 用户简档的份额 | 标签的份额 |
j | dj,2 | [Pj,2] | [labelj,2] |
… | … | … | … |
表6
在表6中,每行用于特定的最近邻用户简档,并且包括由计算系统MPC2计算的该用户简档与给定用户简档之间的汉明距离。用于特定最近邻用户简档的行还包括该用户简档的第二份额和与该用户简档相关联的标签的第二份额。
计算系统MPC1和MPC2可以彼此交换行标识符(行ID)和汉明距离对的列表。此后,每个计算系统MPC1和MPC2可以独立地用相同算法和输入数据选择k个最近邻。例如,计算系统MPC1可以找到来自计算系统MPC1和MPC2两者的部分查询结果所公共的行标识符。对于公共行标识符中的每个i,计算系统MPC1根据两个部分汉明距离计算组合的汉明距离di,例如di=di,1+di,2。然后,计算系统MPC1可以基于组合的汉明距离di对公共行标识符进行排序,并选择k个最近邻。k个最近邻的行标识符可以表示为ID={id1,…idk}。可以证明,如果ɑ充分大,则在上述算法中确定的k个最近邻以高概率是真正的k个最近邻。然而,较大的ɑ值导致高计算成本。在一些实施方式中,计算系统MPC1和MPC2参与隐私集合交集(PSI)算法,以确定对来自计算系统MPC1和MPC2两者的部分查询结果所公共的行标识符。此外,在一些实施方式中,MPC1和MPC2参与增强隐私集合交集(PSI)算法,以针对对来自计算机系统MPC1和MPC2两者的部分查询结果所公共的行标识符计算di=di,1+di,2,并且不向MPC1或MPC2揭示任何内容,而是只揭示由di确定的前k个最近邻。
确定是否将用户添加到用户组(506)。可以基于k个最近邻简档及其相关联的标签来进行该确定。该确定还基于所使用的聚合函数和用于该聚合函数的任何聚合参数。可以基于机器学习问题的性质,例如二元分类、回归(例如,使用算术平均值或均方根)、多类分类和加权k-NN,来选择聚合函数。如下面更详细描述的,确定是否将用户添加到用户组的每种方式可以包括MPC集群130与在客户端110上运行的应用112之间的不同交互。
如果确定不将用户添加到用户组,则应用112可以不将用户添加到用户组(508)。如果确定将用户添加到用户组,则应用112可以例如通过更新存储在客户端设备110处的用户组列表以包括用户组的用户组标识符来将用户添加到用户组(510)。
示例二进制分类推断技术
对于二元分类,推断请求可以包括阈值、Ltrue和Lfalse作为聚合函数参数。标签值是布尔类型,即真或假。阈值参数可以表示必须具有真值标签以便将用户添加到用户组Ltrue的k个最近邻简档的阈值百分比。否则,用户将被添加到用户组Lfalse。在一种方法中,如果具有为真的标签值的最近邻用户简档的数量大于阈值与k的乘积,则MPC集群130可以指令应用112将用户添加到用户组Ltrue(否则添加到用户组Lfalse)。然而,计算系统MPC1将学习推断结果,例如,用户应该加入的用户组。
为了保护用户隐私,推断请求可以包括明文的阈值、用于计算系统MPC1的第一份额[Ltrue,1]和[Lfalse,1],以及用于计算系统MPC2的加密的第二份额PubKeyEncrypt([Ltrue,2]||[Lfalse,2]||application_public_key,MPC2)。在该示例中,应用112可以如符号||所表示的,从[Ltrue,2]、[Lfasle,2]和应用112的公钥生成合成消息,并且使用计算系统MPC2的公钥对该合成消息进行加密。从计算系统MPC1到应用112的推断响应可以包括由计算系统MPC1确定的推断结果的第一份额[Lresult,1]和由计算系统MPC2确定的推断结果的第二份额[Lresult,2]。
为了防止第二份额被计算系统MPC1访问并且因此使得计算系统MPC1能够获得明文的推断结果,计算系统MPC2可以将推断结果的第二份额[Lresult,2]的加密的(并且可选地数字签名的)版本(例如,PubKeySign(PubKeyEncrypt([Lresult,2],application_public_key),MPC2)发送到计算系统MPC1,以包括在发送到应用112的推断响应中。在该示例中,应用112可以使用与用于生成数字签名的计算系统MPC2的私钥相对应的计算系统MPC2的公钥来验证数字签名,并且使用与用于加密推断结果的第二份额[Lresult,2]的公钥(application_public_key)相对应的应用112的私钥来解密推断结果的第二份额[Lresult,2]。
然后,应用112可以从第一份额[Lresult,1]和第二份额[Lresult,2]重构推断结果Lresult。使用数字签名使得应用112能够检测例如由计算系统MPC1对来自计算系统MPC2的结果的伪造。取决于期望的安全级别、哪些方操作MPC集群130的计算系统以及假设的安全模型,可能不需要数字签名。
计算系统MPC1和MPC2可以使用MPC技术来确定二元分类结果的份额[Lresult,1]和[Lresult,2]。在二元分类中,用户简档的label1的值为零(假)或一(真)。假设选择的k个最近邻由标识符{id1,…idk}识别,则计算系统MPC1和MPC2可以计算k个最近邻用户简档的标签之和(sum_of_labels),其中所述和由下面的关系3表示:
关系3:sum_of_labels=∑i∈{id1,…idk}labeli
为了确定所述和,计算系统MPC1将ID(即,{id1,…idk})发送到计算系统MPC2。计算系统MPC2可以验证ID中的行标识符的数量大于实施k匿名的阈值。然后,计算系统MPC2可以使用下面的关系4来计算标签之和的第二份额[sum_of_labels2]:
关系4:[sum_of_labels2]=∑i∈{id1,…idk}[labeli,2]
计算系统MPC1也可以使用下面的关系5来计算标签之和的第一份额[sum_of_labels1]:
关系5:[sum_of_labels1]=∑i∈{id1,…idk}[labeli,1]
如果标签之和sum_of_labels是计算系统MPC1和MPC2应该尽可能少地知道的机密信息,则计算系统MPC1可以计算标签之和的第一份额[sum_of_labels1]是否低于阈值,例如,[below_threshold1]=[sum_of_labels1]<threshold(阈值)×k。类似地,计算系统MPC2可以计算标签之和的第二份额[sum_of_labels2]是否低于阈值,例如,[below_threshold2]=[sum_of_labels2]<threshold×k。计算系统MPC1可以继续通过[below_threshold1]×[Lfalse,1]+(1-[below_threshold1])×[Ltrue,1]来计算推断结果[Lresult,1]。类似地,计算系统MPC2可以通过[below_threshold2]×[Lfalse,2]+(1-[below_threshold2])×[Ltrue,2]来计算[Lresult,2]。
如果标签之和sum_of_labels不是机密信息,则计算系统MPC1和MPC2可以从[sum_of_labels1]和[sum_of_labels2]重构sum_of_labels。然后,计算系统MPC1和MPC2可以将参数below_threshold设置为sum_of_labels<threshold×k,例如,如果低于阈值则为一值,或者如果不低于阈值则为零值。
在计算参数below_threshold之后,计算系统MPC1和MPC2可以继续确定推断结果Lresult。例如,计算系统MPC2可以根据below_threshold的值将[Lresult,2]设置为[Ltrue,2]或[Lfalse,2]。例如,如果标签之和不低于阈值,则计算系统MPC2可以将[Lresult,2]设置为[Ltrue,2],或者如果标签之和低于阈值,则计算系统MPC2可以将[Lresult,2]设置为[Lfalse,2]。然后,计算系统MPC2可以将推断结果的加密的第二份额(PubKeyEncrypt(Lresult,2],application_public_key))或该结果的数字签名版本返回到计算系统MPC1。
类似地,计算系统MPC1可以根据below_threshold的值将[Lresult,1]设置为[Ltrue,1]或[Lfalse,1]。例如,如果标签之和不低于阈值,则计算系统MPC1可以将[Lresult,1]设置为[Ltrue,1],或者如果标签之和低于阈值,则计算系统MPC1可以将[Lresult,1]设置为[Lfalse,1]。计算系统MPC1可以将推断结果的第一份额[Lresult,1]和推断结果的加密的第二份额[Lresult,2]作为推断响应发送到应用112。然后,应用112可以基于两个份额来计算推断结果,如上所述。
示例多类分类推断技术
对于多类分类,与每个用户简档相关联的标签可以是分类特征。内容平台150可以指定将任何可能的分类值映射到对应用户组标识符的查找表。查找表可以是推断请求中包括的聚合函数参数之一。
在找到的k个最近邻内,MPC集群130找到最频繁标签值。然后,MPC集群130可以在查找表中找到与最频繁标签值相对应的用户组标识符,并且请求应用112例如通过将用户组标识符添加到存储在客户端设备110处的用户组列表来将用户添加到与用户组标识符相对应的用户组。
类似于二元分类,可能优选的是对计算系统MPC1和MPC2隐藏推断结果Lresult。为了这样做,应用112或内容平台150可以创建两个查找表,所述两个查找表各自将分类值映射到推断结果Lresult的相应份额。例如,应用可以创建将分类值映射到第一份额[Lresult1]的第一查找表和将分类值映射到第二份额[Lresult2]的第二查找表。从应用到计算系统MPC1的推断请求可以包括用于计算系统MPC1的明文的第一查找表和用于计算系统MPC2的第二查找表的加密版本。可以使用计算系统MPC2的公钥来加密第二查找表。例如,可以使用计算系统MPC2的公钥来加密包括第二查找表和应用的公钥的合成消息(例如,PubKeyEncrypt(lookuptable2||application_public_key,MPC2)。
由计算系统MPC1发送的推断响应可以包括由计算系统MPC1生成的推断结果的第一份额[Lresult1]。类似于二元分类,为了防止第二份额被计算系统MPC1访问并因此使得计算系统MPC1能够获得明文的推断结果,计算系统MPC2可以将推断结果的第二份额[Lresult,2]的加密(并且可选地数字签名)版本(例如,PubKeySign(PubKeyEncrypt([Lresult,2],application_public_key),MPC2)发送到计算系统MPC1,以包括在发送到应用112的推断结果中。应用112可以从[Lresult1]和[Lresult2]重构推断结果Lresult。
假设对于多类分类问题存在w个有效标签{l1,l2,…lw}。为了确定多类分类中的推断结果Lresult的份额[Lresult1]和[Lresult2],计算系统MPC1将ID(即,{id1,…idk})发送到计算系统MPC2。计算系统MPC2可以验证ID中的行标识符的数量大于实施k匿名的阈值。通常,k-NN中的k可以显著大于k匿名中的k。然后,计算系统MPC2可以计算使用下面的关系6定义的第j个标签[lj,2]的第二频率份额[frequencyj,2]。
关系6:
类似地,计算系统MPC1计算使用下面的关系7定义的第j个标签[lj,1]的第一频率份额[frequencyj,1]。
关系7:
假设k个最近邻内的标签的频率(frequencyi)不敏感,则计算系统MPC1和MPC2可以从该标签的两个份额[frequencyi,1]和[frequencyi,2]重构频率frequencyi。然后,计算系统MPC1和MPC2可以确定索引参数(index),其中frequencyindex具有最大值,例如index=argmaxi(frequencyi)。
然后,计算系统MPC2可以在其查找表中查找与具有最高频率的标签相对应的份额[Lresult,2],并将PubKeyEncrypt([Lresult,2],application_public_key)返回到计算系统MPC1。计算系统MPC1可以类似地在其查找表中查找与具有最高频率的标签相对应的份额[Lresult,1]。然后,计算系统MPC1可以向应用112发送包括两个份额(例如,[Lresult,1]和PubKeyEncrypt([Lresult,2],application_public_key)的推断响应。如上所述,第二份额可以由计算系统MPC2数字签名,以防止计算系统MPC1伪造计算系统MPC2的响应。然后,如上所述,应用112可以基于两个份额计算推断结果,并将用户添加到由推断结果识别的用户组。
示例回归推断技术
对于回归,与每个用户简档P相关联的标签必须是数字的。内容平台150可以指定阈值的有序列表,例如(-∞<t0<t1<…<tn<∞),以及用户组标识符的列表,例如{L0,L1,…Ln,Ln+1}。另外,内容平台150可以指定聚合函数,例如算术平均值或均方根。
在找到的k个最近邻内,MPC聚类130计算标签值的平均值(结果(result)),然后使用该结果查找映射以找到推断结果Lresult。例如,MPC集群130可以使用下面的关系8来基于标签值的平均值识别标签:
关系8:
如果result≤t0,Lresult←L0;
如果result>tn,Lresult←Ln+1;
如果tx<result≤tx+1,Lresult←Lx+1
也就是说,如果结果小于或等于阈值to,则推断结果Lresult为L0。如果结果大于阈值tn,则推断结果Lresult为Ln+1。否则,如果结果大于阈值tx且小于或等于阈值tx+1,则推断结果Lresult为Lx+1。然后,例如,通过向应用112发送包括推断结果Lresult的推断响应,计算系统MPC1请求应用112将用户添加到与推断结果Lresult相对应的用户组。
类似于上述其他分类技术,可以对计算系统MPC1和MPC2隐藏推断结果Lresult。为了这样做,来自应用112的推断请求可以包括用于计算系统MPC1的标签的第一份额[Li,1]和用于计算系统MPC2的标签的加密的第二份额[Li,2](例如,PubKeyEncrypt([L0,2||…||Ln+1,2||application_public_key,MPC2))。
由计算系统MPC1发送的推断结果可以包括由计算系统MPC1生成的推断结果的第一份额[Lresult1]。类似于二元分类,为了防止第二份额被计算系统MPC1访问并因此使得计算系统MPC1能够获得明文的推断结果,计算系统MPC2可以将推断结果的第二份额[Lresult,2]的加密(并且可选地数字签名)版本(例如,PubKeySign(PubKeyEncrypt([Lresult,2],application_public_key),MPC2))发送到计算系统MPC1,以包括在发送到应用112的推断结果中。应用112可以从[Lresult,1]和[Lresult,2]重构推断结果Lresult。
当聚合函数是算术平均值时,计算系统MPC1和MPC2计算标签之和sum_of_labels,类似于二元分类。如果标签之和不敏感,则计算系统MPC1和MPC2可以计算两个份额[sum_of_labels1]和[sum_of_labels2],然后基于两个份额重构sum_of_labels。然后,计算系统MPC1和MPC2可以通过将标签之和除以最近邻标签的数量(例如除以k)来计算标签的平均值。
然后,计算系统MPC1可以使用关系8将平均值与阈值进行比较,以识别与平均值相对应的标签的第一份额,并将第一份额[Lresult,1]设置为识别的标签的第一份额。类似地,计算系统MPC2可以使用关系8将平均值与阈值进行比较,以识别与平均值相对应的标签的第二份额,并将第二份额[Lresult,2]设置为标识符标签的第二份额。计算系统MPC2可以使用应用112的公钥来加密第二份额[Lresult,2](例如,PubKeyEncrypt([Lresult,2],application_public_key)),并且将加密的第二份额发送到计算系统MPC1。计算系统MPC1可以向应用112提供第一份额和加密的第二份额(其可以可选地被数字签名,如上所述)。然后,应用112可以将用户添加到由标签(例如,用户组标识符)识别的用户组Lresult。
如果标签之和是敏感的,则计算系统MPC1和MPC2可能无法构造明文的sum_of_labels。相反,对于,计算系统MPC1可以计算遮罩[maski,1]=[sum_of_labels1]>ti×k。该计算可以需要计算系统MPC1与MPC2之间的多次往返。接下来,计算系统MPC1可以计算/>并且计算系统MPC2可以计算。该操作中的相等性测试可能需要计算系统MPC1与MPC2之间的多次往返。
此外,计算系统MPC1可以计算并且计算系统MPC2可以计算/>。然后,当且仅当对于,acci==1,MPC集群130将返回Li,并且如果use_default==1,则MPC集群130将返回Ln+1。该条件可以在下面的关系9中表示。
关系9:
对应的密码实施方式可以由下面的关系10和11表示。
关系10:
关系11:
如果Li是明文的,则这些计算不需要计算系统MPC1与MPC2之间的任何往返计算,并且如果Li是秘密份额,则这些计算涉及一个往返计算。计算系统MPC1可以将结果的两个份额(例如,[Lresult,1]和[Lresult,2])提供给应用112,其中第二份额如上所述由计算系统MPC2加密并可选地数字签名。以这种方式,应用112可以确定推断结果Lresult而无需计算系统MPC1或MPC2学习关于立即或最终结果的任何内容。
对于均方根,计算系统MPC1将ID(即,{id1,…idk})发送到计算系统MPC2。计算系统MPC2可以验证ID中的行标识符的数量大于实施k匿名的阈值。计算系统MPC2可以使用下面的关系12来计算sum_of_square_labels参数的第二份额(例如,标签值的平方和)。
关系12:
类似地,计算系统MPC1可以使用下面的关系13来计算sum_of_square_labels参数的第一份额。
关系13:
假设sum_of_square_labels参数不敏感,则计算系统MPC1和MPC2可以从两个份额[sum_of_square_labels1]和[sum_of_square_labels2]重构sum_of_square_labels参数。计算系统MPC1和MPC2可以通过将sum_of_squares_labels除以最近邻标签的数量(例如除以k)然后计算平方根来计算标签的均方根。
无论平均值是经由算术平均值还是均方根计算的,计算系统MPC1然后都可以使用关系8将平均值与阈值进行比较,以识别对应于平均值的标签,并将第一份额[Lresult,1]设置为识别的标签。类似地,计算系统MPC2可以使用关系8将平均值与阈值进行比较,以识别与平均值相对应的标签(或标签的秘密份额),并将第二份额[Lresult,2]设置为标识符标签(或标识符标签的秘密份额)。计算系统MPC2可以使用应用112的公钥来加密第二份额[Lresult,2](例如,PubKeyEncrypt([Lresult,2],application_public_key)),并且将加密的第二份额发送到计算系统MPC1。计算系统MPC1可以向应用112提供第一份额和加密的第二份额(其可以可选地如上所述被数字签名)作为推断结果。然后,应用112可以将用户添加到由标签(例如,用户组标识符)识别的用户组Lresult。如果sum_of_square_labels参数是敏感的,则计算系统MPC1和MPC2可以执行与算术平均值示例中使用的类似的密码协议,以计算推断结果的份额。
在上述推断分类和回归问题的结果的技术中,所有k个最近邻对最终推断结果具有相等的影响,例如相等的权重。对于许多分类和回归问题,如果k个邻居中的每一个被分配当邻居与查询参数Pi之间的汉明距离增加时单调减小的权重,则可以改善模型质量。具有该属性的常见核函数是Epanechnikov(抛物线)核函数。汉明距离和权重都可以以明文计算。
稀疏特征向量用户简档
当电子资源的特征被包括在用户简档中并用于生成机器学习模型时,所得到的特征向量可以包括高基数分类特征,诸如域、URL和IP地址。这些特征向量是稀疏的,其中大多数元素具有零值。应用112可以将特征向量拆分为两个或更多个密集特征向量,但是机器学习平台将消耗太多客户端设备上传带宽而不实用。为了防止该问题,上述系统和技术可以适配为更好地处理稀疏特征向量。
当向客户端设备提供事件的特征向量时,包括在电子资源中的内容平台150的计算机可读代码(例如,脚本)可以调用应用(例如,浏览器)API来指定事件的特征向量。该代码或内容平台150可以确定特征向量(的某个部分)是密集的还是稀疏的。如果特征向量(或其某个部分)是密集的,则代码可以以数值的向量传递作为API参数。如果特征向量(或其某个部分)是稀疏的,则代码可以以映射传递,例如,具有非零特征值的那些特征元素的索引键/值对,其中键是这样的特征元素的名称或索引。如果特征向量(或其某个部分)是稀疏的,并且非零特征值总是相同的值,例如1,则代码可以以集合传递,所述集合的元素是这样的特征元素的名称或索引。
当聚合特征向量以生成用户简档时,应用112可以不同地处理密集和稀疏特征向量。从密集向量计算的用户简档(或其某个部分)仍然是密集向量。从映射计算的用户简档(或其某个部分)仍然是映射,直到填充率足够高,使得映射不再节省存储成本。此时,应用112将把稀疏向量表示转换成密集向量表示。
在一些实施方式中,应用112可以将特征向量中的一些或特征向量的一些部分分类为稀疏特征向量并且将一些分类为密集特征向量。然后,应用112可以在生成用户简档和/或用户简档的份额时不同地处理每种类型的特征向量。
如果聚合函数是求和(sum),则从集合计算的用户简档(或其某个部分)可以是映射。例如,每个特征向量可以具有分类特征“已访问域”。聚合函数(即sum)将计算用户访问发布者域的次数。如果聚合函数是逻辑或(OR),则从集合计算的用户简档(或其某个部分)可以仍然是集合。例如,每个特征向量可以具有分类特征“已访问域”。聚合函数(即逻辑OR)将计算用户访问的所有发布者域,而不管访问的频率如何。
为了将用户简档发送到MPC集群130以用于ML训练和预测,应用112可以利用支持秘密份额的任何标准加密库来拆分用户简档的密集部分。为了拆分用户简档的稀疏部分而不显著增加客户端设备上传带宽和计算成本,可以使用函数秘密共享(FSS)技术。在该示例中,内容平台150向用户简档的稀疏部分中的每个可能元素分配唯一索引,顺序地从1开始。假设索引的有效范围在[1,N]的范围内,包括1和N。
对于由应用计算的用户简档中具有非零值Pi的第i个元素,1≤i≤N,应用112可以创建具有以下属性的两个伪随机函数(PRF)gi和hi:
对于任何j,gi(j)+hi(j)=0,其中1≤j≤N且j≠i
否则,gi(j)+hi(j)=Pi。
使用FSS,例如通过log2(N)×size_of_tag位,gi或hi可以简洁地表示,并且不可能从gi或hi推断i或Pi。为了防止暴力安全攻击,size_of_tag通常为96位或更大。在N个维度中,假设存在具有非零值的n个维度,其中n<<N。对于n个维度中的每一个,应用112可以构造如上所述的两个伪随机函数g和h。此外,应用112可以将所有n个函数g的简洁表示封装到向量G中,并且以相同的顺序将n个函数h的简洁表示封装到另一向量H中。
此外,应用112可以将用户简档P的密集部分拆分为两个附加秘密份额[P1]和[P2]。然后,应用112可以将[P1]和G发送到计算系统MPC1,并将[P2]和H发送到MPC2。发送G需要|G|×log2(N)×size_of_tag=n×log2(N)×size_of_tag位,当n<<N时,这可能远小于如果应用112以密集向量发送用户简档的稀疏部分所需的N位。
当计算系统MPC1接收g1并且计算系统MPC2接收h1时,两个计算系统MPC1和MPC2可以独立地创建Shamir秘密份额。对于任何j,其中1≤j≤N,计算系统MPC1在二维坐标[1,2×gi(j)]上创建点,并且计算系统MPC2在二维坐标[-1,2×hi(j)]上创建点。如果两个计算系统MPC1和MPC2协作地构造通过两个点的线y=a0+a1×x,则形成关系14和15。
关系14:2×gi(j)=a0+a1
关系15:2×hi(j)=a0-a1
如果将两个关系加在一起,则得到2×gi(j)+2×hi(j)=(a0+a1)+(a0-a1),这简化为a0=gi(j)+hi(j)。因此,[1,2×gi(j)]和[-1,2×hi(j)]是稀疏阵列中的第i个非零元素(即Pi)的两个秘密份额。
在机器学习训练过程的随机投射操作期间,计算系统MPC1可以从[P1]和G两者独立地组装其用于用户简档的秘密份额的向量。根据以上描述,已知|G|=n,其中n是用户简档的稀疏部分中的非零元素的数量。此外,已知用户简档的稀疏部分是N维的,其中n<<N。
假设G={g1,…gn}。对于第j维度,其中1≤j≤N,并且1≤k≤n,令类似地,令H={h1,…hn}。计算系统MPC2可以独立地计算容易证明[SPj,1]和[SPj,2]是SPj的秘密份额,即用户简档的原始稀疏部分中的第j个元素的秘密值。
令[SP1]={[SP1,1],…[SPN,1]},即,用户简档的稀疏部分在密集表示中的重构秘密份额。通过级联[P1]和[SP1],计算系统MPC1可以重构原始用户简档的完整秘密份额。然后,计算系统MPC1可以随机地投射[P1]||[SP1]。类似地,计算系统MPC2可以随机地投射[P2]||[SP2]。在投射之后,上述技术可以用于以类似的方式生成机器学习模型。
图6是可以用于执行上述操作的示例计算机系统600的框图。系统600包括处理器610、存储器620、存储设备630和输入/输出设备640。组件610、620、630和640中的每一个可以例如使用系统总线650互连。处理器610能够处理用于在系统600内执行的指令。在一些实施方式中,处理器610是单线程处理器。在另一实施方式中,处理器610是多线程处理器。处理器610能够处理存储在存储器620中或存储设备630上的指令。
存储器620存储系统600内的信息。在一个实施方式中,存储器620是计算机可读介质。在一些实施方式中,存储器620是易失性存储器单元。在另一实施方式中,存储器620是非易失性存储器单元。
存储设备630能够为系统600提供大容量存储。在一些实施方式中,存储设备630是计算机可读介质。在各种不同的实施方式中,存储设备630可以包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)、或一些其他大容量存储设备。
输入/输出设备640为系统600提供输入/输出操作。在一些实施方式中,输入/输出设备640可以包括网络接口设备(例如以太网卡)、串行通信设备(例如RS-232端口)和/或无线接口设备(例如802.11卡)中的一个或多个。在另一实施方式中,输入/输出设备可以包括驱动器设备,其被配置为接收输入数据并将输出数据发送到外部设备660,例如键盘、打印机和显示设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图6中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中实现,或者在它们中的一个或多个的组合中实现。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中实现,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其编码在(一个或多个)计算机存储介质上,用于由数据处理装置执行或控制数据处理装置的操作。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合,或者被包括在其中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是在人工生成的传播信号中编码的计算机程序指令的源或目的地。计算机存储介质还可以是一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备),或者被包括在一个或多个单独的物理组件或介质(例如,多个CD、磁盘或其他存储设备)中。
本说明书中描述的操作可以被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述中的多个或组合。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以但不必对应于文件系统中的文件。程序可以存储在保存其他程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或在位于一个站点处或分布在多个站点上并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程处理器执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且装置也可以被实现为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
适合于执行计算机程序的处理器包括例如通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),或者可操作地耦合到一个或多个大容量存储设备以从其接收数据或向其传输数据或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如,仅举几例,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和定点设备(例如,鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户的客户端设备上的网络浏览器。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或网络浏览器的客户端计算机,用户可以通过该图形用户界面或网络浏览器与本说明书中描述的主题的实施方式交互),或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网络(例如,互联网)和对等网络(例如,自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,用于向与客户端设备交互的用户显示数据和从与客户端设备交互的用户接收用户输入的目的)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多具体实现细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求以所示的特定顺序或按相继顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在所附权利要求书的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。另外,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (15)
1.一种计算机实现的方法,包括:
由多个多方计算(MPC)系统的第一计算系统接收包括给定用户简档的第一份额的推断请求;
识别多个用户简档中被认为与给定用户简档最相似的数量为k个的最近邻用户简档,包括:
由第一计算系统基于给定用户简档的第一份额和使用多个用户简档训练的第一k-最近邻模型来识别第一组最近邻用户简档;
由第一计算系统从多个MPC系统的一个或多个第二计算系统中的每一个接收指示由第二计算系统基于给定用户简档的相应第二份额和由第二计算系统训练的相应第二k-最近邻模型识别的相应第二组最近邻简档的数据;
由第一计算系统基于第一组最近邻用户简档和每个第二组最近邻用户简档来识别数量为k个的最近邻用户简档;
由第一计算系统基于k个最近邻用户简档中的每一个的相应标签来生成推断结果的第一份额,其中,每个用户简档的标签预测与用户简档相对应的用户将被添加到的一个或多个用户组,并且其中,推断结果指示与给定用户简档相对应的给定用户是否将被添加到给定用户组;以及
由第一计算系统向客户端设备提供推断结果的第一份额和从一个或多个第二计算系统中的每一个接收的推断结果的相应第二份额。
2.根据权利要求1所述的计算机实现的方法,其中,所述推断请求包括使用第二计算系统的加密密钥加密的给定用户简档的加密的第二份额,所述方法还包括将给定用户简档的加密的第二份额发送到第二计算系统。
3.根据权利要求1或2所述的计算机实现的方法,其中,使用客户端设备的应用的加密密钥来加密推断结果的第二份额。
4.根据任一前述权利要求所述的计算机实现的方法,其中:
每个用户简档的标签具有用于二元分类的布尔类型;以及
生成推断结果的第一份额包括:
确定k个最近邻用户简档的标签之和的第一份额;
从第二计算系统接收k个最近邻用户简档的标签之和的第二份额;
基于标签之和的第一份额和标签之和的第二份额确定标签之和;
确定标签之和超过阈值;
响应于确定标签之和超过阈值,确定将给定用户添加到给定用户组作为推断结果;以及
基于推断结果生成推断结果的第一份额。
5.根据权利要求1至3中任一项所述的计算机实现的方法,其中:
每个用户简档的标签具有数值;以及
生成推断结果的第一份额包括:
确定k个最近邻用户简档的标签之和的第一份额;
从第二计算系统接收k个最近邻用户简档的标签之和的第二份额;
基于标签之和的第一份额和标签之和的第二份额确定标签之和;
基于标签之和确定给定用户要加入给定用户组作为推断结果;
基于推断结果生成推断结果的第一份额。
6.根据权利要求1至3中任一项所述的计算机实现的方法,其中,每个用户简档的标签具有分类值;以及
生成推断结果的第一份额包括,
对于标签的集合中的每个标签:
确定k个最近邻简档中的用户简档具有标签的频率的第一份额;
从第二计算系统接收k个最近邻简档中的用户简档具有标签的频率的第二份额;以及
基于k个最近邻简档中的用户简档具有标签的频率的第一份额和第二份额来确定k个最近邻简档中的用户简档具有标签的频率,
所述方法还包括:
识别具有最高频率的标签;
分配给定用户将加入与具有最高频率的标签相对应的给定用户组作为推断结果;以及
基于推断结果生成推断结果的第一份额。
7.根据任一前述权利要求所述的计算机实现的方法,还包括使用由第一计算系统维护的多个用户简档的第一秘密份额和由一个或多个第二计算系统维护的多个用户简档的相应第二秘密份额,与一个或多个第二计算系统协作地使用安全MPC过程来训练第一k-最近邻模型。
8.根据任一前述权利要求所述的计算机实现的方法,还包括训练第一k-最近邻模型,所述训练包括:
与第二计算系统协作地创建随机位翻转模式的第一份额;
通过将多个用户简档中的每个用户简档的第一份额投射到一组随机投射平面上来生成位矩阵的第一份额;
通过使用位翻转模式的第一份额修改位矩阵的第一份额的一个或多个位来修改位矩阵的第一份额;
将修改的位矩阵的第一份额的第一部分提供给第二计算系统;
从第二计算系统接收由第二计算系统使用多个用户简档中的用户简档的第二份额和随机位翻转模式的第二份额生成的修改的位矩阵的第二份额的后半部分;以及
由第一计算系统使用修改的位矩阵的第一份额的后半部分和修改的位矩阵的第二份额的后半部分来重构第一位矩阵的后半部分的位向量。
9.根据权利要求8所述的计算机实现的方法,其中,与第二计算系统协作地创建随机位翻转模式的第一份额包括:
生成第一m维向量,所述第一m维向量包括多个第一元素,第一元素各自具有零或一的值;
将第一m维向量拆分为两个份额;
将第一m维向量的第一份额提供给第二计算系统;
从第二计算系统接收第二m维向量的第一份额;以及
与第二计算系统协作地使用第一m维向量和第二m维向量的份额来计算随机位翻转模式的第一份额。
10.根据权利要求1所述的计算机实现的方法,其中,多个MPC计算系统包括多于两个MPC计算系统。
11.根据权利要求1所述的计算机实现的方法,其中,所述客户端设备使用多个特征向量来计算给定用户简档,所述多个特征向量各自包括与客户端设备的用户的事件相关的特征值和每个特征向量的衰减率。
12.根据权利要求1所述的计算机实现的方法,其中,所述客户端设备使用多个特征向量来计算给定用户简档,所述多个特征向量各自包括与客户端设备的用户的事件相关的特征值,其中,计算给定用户简档包括:
将所述多个特征向量中的一个或多个分类为稀疏特征向量;以及
将所述多个特征向量中的一个或多个分类为密集特征向量,所述方法还包括:
使用稀疏特征向量和密集特征向量生成给定用户简档的第一份额和针对一个或多个第二计算系统的给定用户简档的相应第二份额,其中,生成给定用户简档的第一份额和相应一个或多个第二份额包括使用函数秘密共享(FSS)技术拆分稀疏特征向量。
13.一种系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储设备,所述指令在由一个或多个处理器执行时使一个或多个处理器执行根据任一前述权利要求所述的方法。
14.一种携带指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时使一个或多个处理器执行根据权利要求1至12中任一项所述的方法。
15.一种包括指令的计算机程序产品,所述指令在由计算机执行时使计算机执行根据权利要求1至12中任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL277761A IL277761A (en) | 2020-10-02 | 2020-10-02 | Machine learning preserves privacy through secure multilateral computation |
IL277761 | 2020-10-02 | ||
PCT/US2021/052540 WO2022072415A1 (en) | 2020-10-02 | 2021-09-29 | Privacy preserving machine learning using secure multi-party computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116529730A true CN116529730A (zh) | 2023-08-01 |
Family
ID=80950820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180079925.8A Pending CN116529730A (zh) | 2020-10-02 | 2021-09-29 | 使用安全多方计算的隐私保护机器学习 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230214684A1 (zh) |
EP (1) | EP4208808A1 (zh) |
CN (1) | CN116529730A (zh) |
IL (1) | IL277761A (zh) |
WO (1) | WO2022072415A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11829512B1 (en) * | 2023-04-07 | 2023-11-28 | Lemon Inc. | Protecting membership in a secure multi-party computation and/or communication |
US11836263B1 (en) | 2023-04-07 | 2023-12-05 | Lemon Inc. | Secure multi-party computation and communication |
US11868497B1 (en) | 2023-04-07 | 2024-01-09 | Lemon Inc. | Fast convolution algorithm for composition determination |
US11886617B1 (en) | 2023-04-07 | 2024-01-30 | Lemon Inc. | Protecting membership and data in a secure multi-party computation and/or communication |
US11809588B1 (en) | 2023-04-07 | 2023-11-07 | Lemon Inc. | Protecting membership in multi-identification secure computation and communication |
US11811920B1 (en) | 2023-04-07 | 2023-11-07 | Lemon Inc. | Secure computation and communication |
US11874950B1 (en) | 2023-04-07 | 2024-01-16 | Lemon Inc. | Protecting membership for secure computation and communication |
-
2020
- 2020-10-02 IL IL277761A patent/IL277761A/en unknown
-
2021
- 2021-09-29 US US17/927,923 patent/US20230214684A1/en active Pending
- 2021-09-29 EP EP21795207.6A patent/EP4208808A1/en active Pending
- 2021-09-29 CN CN202180079925.8A patent/CN116529730A/zh active Pending
- 2021-09-29 WO PCT/US2021/052540 patent/WO2022072415A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022072415A1 (en) | 2022-04-07 |
US20230214684A1 (en) | 2023-07-06 |
EP4208808A1 (en) | 2023-07-12 |
IL277761A (en) | 2022-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116529730A (zh) | 使用安全多方计算的隐私保护机器学习 | |
JP7361928B2 (ja) | 勾配ブースティングを介したプライバシーを守る機械学習 | |
US20240163341A1 (en) | Privacy preserving centroid models using secure multi-party computation | |
JP7457131B2 (ja) | プライバシーを守る機械学習ラベリング | |
JP7422892B2 (ja) | 分類の正確さを改善するための機械学習モデリングデータの処理 | |
Xiong et al. | A lightweight privacy protection scheme based on user preference in mobile crowdsensing | |
JP7471445B2 (ja) | コンテンツの配信と分析のためのプライバシーを守る機械学習 | |
Elmisery | Private personalized social recommendations in an IPTV system | |
Firdaus et al. | A Blockchain-Assisted Distributed Edge Intelligence for Privacy-Preserving Vehicular Networks. | |
Datta et al. | Private data aggregation over selected subsets of users | |
Xu et al. | FedG2L: a privacy-preserving federated learning scheme base on “G2L” against poisoning attack | |
JP2024073565A (ja) | プライバシーを守る機械学習ラベリング | |
Alamri et al. | Preserving privacy in mobile crowdsensing | |
Jung | Ensuring Security and Privacy in Big Data Sharing, Trading, and Computing | |
Wu et al. | Privacy‐preserving and efficient user matching based on attribute encryption in mobile social networks |
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 |