CN115461744A - 处理机器学习建模数据以提高分类的准确性 - Google Patents
处理机器学习建模数据以提高分类的准确性 Download PDFInfo
- Publication number
- CN115461744A CN115461744A CN202180019134.6A CN202180019134A CN115461744A CN 115461744 A CN115461744 A CN 115461744A CN 202180019134 A CN202180019134 A CN 202180019134A CN 115461744 A CN115461744 A CN 115461744A
- Authority
- CN
- China
- Prior art keywords
- user
- mpc
- application
- model
- computing system
- 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
Images
Classifications
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/02—Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Linguistics (AREA)
- Information Transfer Between Computers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
多方计算(MPC)集群的第一MPC系统能够从客户端设备上的应用接收推断请求,该推断请求包括应用的用户的给定用户简档的第一份额和性能阈值。能够通过与一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别用户简档的最近邻集合。能够从该最近邻集合中选择具有满足性能阈值的性能度量的一个或多个最近邻。第一MPC系统能够将从一个或多个最近邻导出的数据传送到应用。
Description
技术领域
本文描述的主题涉及以保护用户隐私、确保数据安全和提高分类准确性的方式训练和使用机器学习模型。
背景技术
一些机器学习模型是基于从多个源(例如,跨多个网站和/或本机应用)收集的数据来训练的。然而,该数据可能包括不应该被共享或允许泄露给其他方的私有或敏感数据。
发明内容
本公开涉及以保护用户隐私和确保数据安全的方式训练和使用机器学习模型。例如,本公开的各方面涉及机器学习模型、输入到这样的模型的数据、以及从这样的模型输出的数据,以将用户准确地分类到用户组中,同时即使在第三方cookie被阻止(例如,被浏览器阻止)或以其他方式不被使用的情况下也保护用户隐私和确保数据安全。输入到模型中的数据的修改能够被称为预处理,并且从模型输出的数据的修改能够被称为后处理。如本文所述,对输入到机器学习模型中的数据的预处理和/或对从机器学习模型输出的数据的后处理允许更准确地扩展用户组,以便更准确地将用户分类到相应的一个或多个用户组中。
在一个方面中,多方计算(MPC)集群的第一MPC系统能够从客户端设备上的应用接收推断请求,该推断请求包括应用的用户的给定用户简档的第一份额和性能阈值。能够通过与一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别用户简档的最近邻集合。能够从最近邻集合中选择具有满足性能阈值的性能度量的一个或多个最近邻。第一MPC系统能够将从一个或多个最近邻导出的数据传送到应用。
在一些实施方式中,能够另外单独地或以任何可行的组合实现以下中的一个或多个。用户简档能够由应用生成。用户简档能够包括指示应用的用户与在应用上呈现的数字内容之间的交互的数据。交互能够包括转化和转化的缺少。机器学习模型能够是最近邻模型。最近邻模型的最近邻能够由与对应用户组相关联的相应质心表示。第一MPC系统能够向对应用户组的每个用户分配权重以计算相应质心。权重能够是基于用户的交互或与性能度量相关的用户信息中的至少一个。每个用户组的质心能够是由作为用户组的成员的用户的用户简档的平均值表示的中心。机器学习模型能够是质心模型或最近邻模型中的一个或多个。每个最近邻的性能度量能够包括与对应于最近邻的一个或多个数字组件的用户交互率或对应于最近邻的一个或多个数字组件的转化率中的至少一个。机器学习模型能够包括k最近邻模型,并且k最近邻模型中的每个邻居表示用户的用户简档。机器学习模型能够包括k最近邻模型,并且k最近邻模型中的每个邻居表示多个用户的用户组。性能阈值是阈值。一个或多个数字组件的转化率能够是转化数量除以一个或多个数字组件被显示给用户组中的用户的次数。推断请求能够是推断用户是否要被添加到用户组的请求。
还描述了相关的方法、技术、系统和计算机程序产品。例如,在另一方面中,描述了一种系统,该系统能够包括至少一个可编程处理器和存储指令的机器可读介质,这些指令在由至少一个可编程处理器执行时使至少一个可编程处理器执行本文所述的操作。在另一方面中,描述了一种或多种计算机程序产品(在一些实施方式中,其能够是非暂时性计算机程序产品),其能够存储指令,这些指令在由至少一个可编程处理器执行时,使至少一个可编程处理器执行本文所述的操作。
本说明书中描述的主题能够在特定实施例中实现,以便实现以下优点中的一个或多个。诸如安全多方计算(MPC)的加密技术能够被用于解决当第三方cookie不能被用于收集数据时出现的问题。例如,加密技术使得能够在不使用第三方cookie的情况下基于用户简档中的相似性来扩展用户组,这保护了用户隐私而不会负面地影响扩展用户组的能力,并且在一些情况下,基于比使用第三方cookie可实现的更完整的简档来提供更好的用户组扩展。MPC技术能够确保,只要MPC集群中的计算系统之一是老实的(例如,不以明文披露其底层数据的部分),任何计算系统或另一方就都不能以明文获得用户数据。因此,所要求保护的方法允许以安全的方式对包括跨域用户数据的用户数据进行识别、分组和传输,而不需要使用第三方cookie来确定用户数据之间的任何关系。这是与使用通常由第三方cookie收集的明文用户简档来确定数据之间的关系(其能够将用户数据暴露给接收第三方cookie的实体)不同的隐私保护方法。通过以这种方式对用户数据进行分组,提高了向用户设备传送数据内容的效率,因为不需要传送与特定用户不相关的数据内容。特别地,不需要第三方cookie,从而避免了第三方cookie的存储,提高了存储器使用。指数衰减技术能够被用于在客户端设备处构建用户简档,以减小构建用户简档需要的原始数据的数据大小,从而减少数据存储需求。
此外,建模数据的预处理和后处理确保将用户更准确地分类到一个或多个相应用户组中。在一些实施方式中,k-NN模型能够是基于这样的用户组;这样的建模能够有利地没有其中用户在高维空间中形成不同点的k-NN模型那么复杂,因为通常存在比用户显著更少的用户组。例如,内容平台能够具有几十亿个用户,但有几百万个用户组。在这种情况下,训练每个邻居被定义为用户组而不是用户的k-NN模型能够将模型缩小1000倍。模型的这种缩小能够有利地需要较低的数据存储需求来存储数据(在此,为用户组和相关联的数据,诸如不同元素之间的映射)以及更快的处理来确定是否将用户添加到用户组。
本文描述的主题的一个或多个变型的细节在附图和以下描述中阐述。根据说明书、附图和权利要求,本文描述的主题的其他特征和优点将是显而易见的。
附图说明
图1是其中安全MPC集群生成机器学习模型并且机器学习模型被用于扩展用户组的环境的框图。
图2是用于生成质心模型并且使用质心模型将用户添加到用户组的示例性过程的泳道图。
图3是示出用于生成用户简档并且将用户简档发送到MPC集群的示例性过程的流程图。
图4是示出用于生成质心模型的示例性过程的流程图。
图5是示出用于使用质心模型将用户添加到用户组的示例性过程的泳道图。
图6是示出用于生成质心模型并且使用质心模型将用户添加到与质心模型相对应的用户组的示例性过程的泳道图。
图7是示出用于基于用户的用户简档数据和质心模型来确定用户组结果的示例性过程的流程图。
图8是用于训练k-NN模型并且使用k-NN模型将用户添加到用户组的示例性过程的泳道图。
图9是示出用于生成用户简档并且将用户简档的份额发送到MPC集群的示例性过程的流程图。
图10是示出用于生成k-NN模型的示例性过程的流程图。
图11是示出用于使用k-NN模型将用户添加到用户组的示例性过程的流程图。
图12是示出用于训练和部署k-NN模型以有效地将用户分类到一个或多个相应用户组中的示例性过程的流程图。
图13是示例性计算机系统的框图。
在各个附图中,相同的附图标记指示相同的元件。
具体实施方式
通常,本文档描述了用于训练和使用机器学习模型来扩展用户组成员资格同时即使在第三方cookie被阻止(例如,被浏览器阻止)和/或用户简档的收集以其他方式不可行的情况下也保护用户隐私和确保数据安全的系统和技术。通常,不是在诸如内容平台的其他实体的计算系统处创建和维护用户简档,而是在用户的客户端设备处维护用户简档。为了训练机器学习模型,用户的客户端设备能够可选地经由内容平台将其加密的用户简档(例如,作为用户简档的秘密份额)连同其他数据一起发送到安全多方计算(MPC)集群的多个计算系统。例如,每个客户端设备能够生成用户简档的两个或更多个份额,例如秘密份额,并且将相应秘密份额发送到每个计算系统。在一些实施方式中,将每个用户简档中的信息的不同子集提供给每个计算系统,使得在发送到每个计算系统的用户简档数据中不存在重叠。
MPC集群的计算系统能够使用MPC技术来训练机器学习模型,用于以防止MPC集群的任何计算系统(或不是用户本身的其他方)以明文获得任何用户的简档的方式,基于用户的简档为用户建议用户组,从而保护用户隐私。明文(其也能够称为纯文本)是以能够在不需要密钥或其他解密设备或其他解密过程的情况下被查看或使用的形式的未经计算标记、特殊格式化或以代码或数据(包括二进制文件)编写的文本。机器学习模型能够是质心模型和/或k最近邻(k-NN)模型。在质心模型中,用户组的质心模型能够表示用户简档的中心,诸如作为用户组的成员的用户的用户简档的中心(例如,平均值)。在k-NN模型中,该模型假设相似的用户紧密接近地存在,使得相似的用户能够被分类到相同或相似的用户组中。
在机器学习模型被训练之后,机器学习模型能够被用于基于他们的简档为每个用户建议一个或多个用户组。例如,用户的客户端设备能够向MPC集群查询该用户的建议的用户组,或者确定是否应该将用户添加到特定用户组。在部署质心模型的实施方式中,MPC集群能够使用用户的用户简档来识别具有在用户的用户简档的阈值距离内的质心的用户组。在使用k-NN模型的实施方式中,能够使用各种推断技术,诸如二元分类、回归(例如,使用算术平均值或均方根)和/或多类分类来识别用户组。用户的用户组成员资格能够以隐私保护和安全的方式被使用,以向用户提供内容(例如,数字内容)。
MPC群集能够基于用户组的性能度量为用户选择用户组。例如,MPC集群能够选择具有满足(例如,满足或超过)性能阈值的用户交互率(例如,点击率(CTR))或转化率的用户组。用户组的性能度量能够反映与用户组相对应的一个或多个数字组件的性能,例如,基于用户是用户组的成员而分发给用户的数字组件的性能。
用于生成和使用机器学习模型的示例性系统
图1是其中安全MPC 130集群训练机器学习模型并且机器学习模型被用于扩展用户组的环境100的框图。示例性环境100包括数据通信网络105,诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合。网络105连接客户端设备110、安全MPC集群130、发布者140、网站142和内容平台150。示例性环境100可以包括许多不同的客户端设备110、安全MPC集群130、发布者140、网站142和内容平台150。
客户端设备110是能够通过网络105进行通信的电子设备。示例性客户端设备110包括个人计算机、移动通信设备(例如,智能电话)以及能够通过网络105发送和接收数据的其他设备。客户端设备还能够包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热词”或“热短语”时,能够将数字助理置于收听模式(例如,准备好接受音频输入)。数字助理设备还能够包括相机和/或显示器以捕获图像并在视觉上呈现信息。数字助理能够以不同形式的硬件设备来实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备还能够包括数字媒体设备,例如插入电视或其他显示器中以将视频流式传输到电视的流式传输设备、游戏控制台或虚拟现实系统。
客户端设备110通常包括应用112,诸如web浏览器和/或本机应用,以便于通过网络105发送和接收数据。本机应用是为特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发布者140能够开发本机应用并将其提供给客户端设备110,例如,使其可用于下载。web浏览器能够从托管发布者140的网站142的web服务器请求资源145,例如,响应于客户端设备110的用户在web浏览器的地址栏中输入资源145的资源地址或选择引用资源地址的链接。类似地,本机应用能够从发布者的远程服务器请求应用内容。
一些资源、应用页面或其它应用内容能够包括用于呈现具有资源145或应用页面的数字组件的数字组件槽。如贯穿本文档所使用的,短语“数字组件”是指数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件能够作为单个文件或以文件集合电子地存储在物理存储器设备中,并且数字组件能够采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充由应用112呈现的网页或其他资源的内容的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以涉及与网页内容相同的主题,或者涉及相关主题)。因此,数字组件的提供能够补充并且通常增强网页或应用内容。
当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112能够为每个槽请求数字组件。在一些实施方式中,数字组件槽能够包括使得应用112从数字组件分发系统请求数字组件的代码(例如,脚本),该数字组件分发系统选择数字组件并将数字组件提供给应用112以用于呈现给客户端设备110的用户。
内容平台150能够包括供应方平台(SSP)和需求方平台(DSP)。通常,内容平台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呈现数字组件的数据。
在一些情况下,接收与用户先前访问和/或交互的网页、应用页面或其他电子资源相关的数字组件对于用户是有益的。为了将这样的数字组件分发给用户,当用户访问特定资源或在资源处执行特定动作——例如,与网页上呈现的特定物品交互,诸如(a)点击特定物品的链接,(b)通过例如将物品添加到虚拟购物车或购买物品来完成特定物品的转化,和/或(c)查看特定物品超过预设时间量——时,能够将用户分配给用户组,例如,用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。虽然模型被描述为响应于交互而生成或识别用户的用户组,但是在其他实施方式中,模型能够响应于并且基于用户执行一些交互但缺少后续交互——例如,查看数字组件,但不点击;点击组件,但不转化等——而生成或识别用户组。为了进行这样的分发,首先在指示用户的特定交互类型的这样的数据(即信号)上训练模型。基于其中用户执行特定交互但缺少后续交互(例如,用户被显示数字组件但不点击它,或者用户点击数字组件但不转化它)的信号来训练模型能够比不考虑这种信号的模型有利,因为它能够允许更准确地训练模型以及后续部署那些训练的模型。
用户组能够由数字组件提供者160或内容平台150或发布者140生成。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160能够将用户分配给其用户组。在另一示例中,内容平台150能够为数字组件提供者160创建用户组。在另一示例中,发布者140能够为访问其网站的用户创建用户组。
为了保护用户隐私,能够例如,通过应用112之一或客户端设备110的操作系统,而不是通过数字组件提供者、内容平台或其他方,在用户的客户端设备110处维护用户的组成员资格。在特定示例中,可信程序(例如,web浏览器或操作系统)能够维护使用web浏览器或另一应用的用户的用户组标识符的列表(“用户组列表”)。用户组列表能够包括用户已经被添加到的每个用户组的组标识符。创建用户组的数字组件提供者160能够为其用户组指定用户组标识符。用户组的用户组标识符能够描述组(例如,园艺组)或表示组的代码(例如,非描述性的字母数字序列)。用户的用户组列表能够被存储在客户端设备110处的安全存储设备中和/或能够在存储时被加密以防止其他人访问该组。
当应用112呈现与数字组件提供者160或网站142上的网页相关的资源或应用内容时,资源能够请求应用112将一个或多个用户组标识符添加到用户组列表。作为响应,应用112能够将一个或多个用户组标识符添加到用户组列表并安全地存储用户组列表。
内容平台150能够使用用户的用户组成员资格来选择可能是用户感兴趣的或者可能以另一种方式对用户/用户设备有益的数字组件或其他内容。例如,这样的数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或者以某种其他方式有益于用户或用户设备的数据。然而,用户的用户组列表的用户组标识符能够以防止内容平台150将用户组标识符与特定用户相关的方式提供,或者以其他方式访问明文的用户组标识符,从而在使用用户组成员资格数据来选择数字组件时保护用户隐私。
应用112能够将来自用户组列表的用户组标识符提供给与内容平台150交互的可信计算系统,从而以防止内容平台150或不是用户本身的任何其他实体知道用户的完整用户组成员资格的方式,基于用户组成员资格来选择用于在客户端设备110处呈现的数字组件。
在一些情况下,将用户组扩展为包括与已经是用户组成员的用户具有相似的兴趣或其他相似的数据的用户对用户和对数字组件提供者是有益的。有效地,这可以在不使用第三方cookie的情况下实现。例如,第一用户可以对滑雪感兴趣,并且可以是特定滑雪胜地的用户组的成员。第二用户也可以对滑雪感兴趣,但不知道该滑雪胜地,并且不是该滑雪胜地的成员。如果这两个用户具有相似的兴趣或数据,例如相似的用户简档,则可以将第二用户添加到该滑雪胜地的用户组,使得第二用户接收与该滑雪胜地相关的内容,例如数字组件,并且该内容可以是第二用户或其用户设备感兴趣的或以其他方式对第二用户或其用户设备有益。换句话说,可以扩展用户组以包括具有相似用户数据的其他用户。
安全MPC集群130能够训练机器学习模型,该机器学习模型基于用户的简档向用户(或其应用112)建议用户组或能够被用于基于用户的简档向用户(或其应用112)生成用户组的建议。安全MPC集群130包括执行安全MPC技术以训练机器学习模型的两个计算系统MPC1和MPC2。尽管示例性MPC集群130包括两个计算系统,但是也能够使用更多的计算系统来执行MPC过程,只要MPC集群130包括多于一个计算系统。例如,MPC集群130能够包括三个计算系统、四个计算系统或另一适当数量的计算系统。在MPC集群130中使用更多计算系统能够提供更多安全性和容错性,但是也能够增加MPC过程的复杂性。
在MPC集群130内的计算系统MPC1和MPC2能够由不同的实体操作。以这种方式,每个实体可能无法访问明文的完整用户简档。例如,计算系统MPC1或MPC2中的一个能够由与用户、发布者140、内容平台150和数字组件提供者160不同的可信方操作。例如,行业团体、政府团体或浏览器开发者可以维护和操作计算系统MPC1和MPC2中的一个。另一个计算系统可以由这些组中的不同组操作,使得不同的可信方操作每个计算系统MPC1和MPC2。优选地,操作不同计算系统MPC1和MPC2的不同方没有共谋来危害用户隐私的动机。在一些实施方式中,计算系统MPC1和MPC2在架构上是分离的,并且被监视以在执行本文档中描述的安全MPC过程之外不与彼此通信。
在一些实施方式中,MPC集群130为每个内容平台150(例如,每个DSP和/或每个SSP)和/或为每个数字组件提供者160训练一个或多个机器学习模型(例如,质心模型和/或k-NN模型)。例如,内容平台150能够使MPC集群130为由内容平台150管理的或内容平台对其具有至少读取访问的一个或多个用户组的任何子集训练机器学习模型(例如,质心模型或k-NN模型)。例如,每个内容平台150能够管理一个或多个数字组件提供者160的数字组件的分发。内容平台150能够请求MPC集群130为内容平台150为其管理数字组件的分发的数字组件提供者160中的一个或多个训练机器学习模型(例如,质心模型或k-NN模型)。通常,数字组件提供者160能够使MPC集群130为由数字组件提供者160创建和维护的一个或多个用户组训练质心模型和/或k-NN模型。每个内容平台可以实现不同的机器学习模型,其能够由相应的独特模型标识符独特地标识。下面进一步更详细地描述用于训练质心模型和k-NN模型的示例性过程。
对于部署质心模型的实施方式,质心模型能够将用户嵌入到n维空间中。简档空间中的用户由n维向量X={x1,x2,...xn}表示。用户组R具有m个用户:{X1,X2,...Xm}。模型中的用户组R的质心能够是给定用户X′={x1′,x2′,...xn′},内容平台150或数字组件提供者160可能想要找到所有用户组R,使得|X′-Centroid(model,R)|<d,其中,d是表示例如由内容平台150指定的质心模型的阈值距离的参数。为了便于后续描述和简洁性,与质心模型相关的其余描述主要是在为内容平台150(例如DSP和SSP)训练和部署质心模型方面。然而,还能够执行用于为数字组件提供者160、发布者140或其他实体生成质心模型并且代表数字组件提供者160或其他实体查询质心模型的系统和技术。
在为内容平台150训练机器学习模型(例如,质心或k-NN模型)之后,内容平台150能够查询或使客户端设备110的应用112查询机器学习模型以识别客户端设备110的用户的一个或多个用户组。
更具体地,在使用质心模型的实施方式中,内容平台150能够查询或请求应用112查询内容平台150的质心模型以确定用户是否应该加入内容平台150的任何用户组。通常,MPC集群130能够确定用户的用户简档是否在内容平台150的用户组的质心的阈值距离内。如果是,则MPC集群130能够请求应用112将用户简档在质心的阈值距离内的用户添加到用户组。在一些实施方式中,可以基于性能度量(例如,交互率或转化率)来查询模型,并且如果性能度量满足相应阈值,则能够将用户添加到特定用户组。
在使用k-NN模型的一些实施方式中,内容平台150能够查询或请求应用112查询k-NN模型以确定最接近用户的阈值数量“k”个用户简档是否是特定用户组的成员。如果是,则内容平台150可以将用户添加到该用户组。如果为用户识别出用户组,则内容平台150或MPC集群130能够请求应用112将用户添加到用户组。
在一些实施方式中,能够另外地或替代地基于阈值性能度量来查询机器学习模型。在查询时,MPC集群130能够识别最接近用户的用户简档的k个用户简档。对于包括k个用户中的至少一个用户作为成员的每个用户组,MPC集群130能够基于用户关于用户组的一个或多个数字组件的交互或转化以及交互和转化的缺少来计算该组的性能度量。MPC集群130能够将所计算的性能度量与阈值进行比较。对于具有满足阈值的性能度量的任何用户组,MPC集群130能够请求将用户添加到该用户组。对于具有不满足阈值的性能度量的用户组,MPC集群130可以不请求将用户添加到用户组。
在一些实施方式中,MPC集群130基于用户组而不是个体用户来训练机器学习模型。例如,能够基于用户组而不是个体用户来训练k-NN模型。在这样的示例中,能够在k-NN模型中为每个用户组计算性能度量。然后能够使用阈值性能度量来查询k-NN模型。在该示例中,MPC集群130能够识别具有最接近用户的用户简档的聚合的用户简档(例如,基于该组的质心)的k个用户组。对于具有满足阈值的性能度量的任何用户组,MPC集群130能够请求将用户添加到该用户组。对于具有不满足阈值的性能度量的用户组,MPC集群130可以不请求将用户添加到用户组。
如果被用户和/或应用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集群也能够被用于执行类似的过程。
在该示例性过程中,质心模型被用于将用户添加到用户组。用户组的质心的计算也能够被用作用于其他机器学习模型(例如,基于用户组而不是个体用户简档的k-NN模型)的预处理阶段。例如,k-NN模型中的每个用户组能够由用户组的质心呈现。
内容平台150能够通过请求在客户端设备110上运行的应用112为它们的相应用户生成用户简档并将用户简档的秘密份额和/或加密版本上传到MPC集群130来发起其质心模型中的一个或多个质心模型的生成和/或更新。出于本文档的目的,用户简档的秘密份额能够被认为是用户简档的加密版本,因为秘密份额不是明文。在生成中,每个应用112能够存储用户简档的数据,并且响应于从内容平台150接收到请求而生成更新的用户简档。由于用户简档的内容和机器学习模型对于不同的内容平台150不同,因此在用户的客户端设备110上运行的应用112能够维护多个用户简档的数据并生成多个用户简档,每个用户简档特定于特定内容平台或特定于特定质心模型。
由于内容平台150(或数字组件提供者160)能够具有多个质心模型,例如,对于一个或多个用户组的每个集合各一个质心模型,内容平台150(或数字组件提供者160)能够请求应用112生成用户简档并且同时例如在单个请求的情况下上传多个用户组和/或多个质心模型的用户简档。
在客户端设备110上运行的应用112为客户端设备110的用户构建用户简档(202)。用户的用户简档能够包括与由用户发起的事件和/或能够已经由用户关于电子资源(例如,网页或应用内容)发起的事件相关的数据。事件能够包括电子资源的查看、数字组件的查看、用户交互(例如,用户对电子资源和/或数字组件的查看、点击或转化中的一个或多个)、或用户与电子资源或数字组件的交互的缺少(例如,用户对电子资源和/或数字组件的查看、点击或转化的缺少)、在用户与电子资源交互之后发生(或未发生)的转化、和/或与用户和电子资源相关的其他适当事件。由于用户简档能够随时间改变,因此构建的用户简档能够被称为当前用户简档Pcurrent。
用户的用户简档能够特定于内容平台150或由内容平台150拥有的选定质心模型。例如,如下面参考图3更详细所述,每个内容平台150能够请求应用112生成或更新特定于该内容平台150的用户简档。在另一示例中,内容平台150能够请求应用生成或更新内容平台150的每个质心模型的相应用户简档。
用户的用户简档Pcurrent能够是特征向量的形式。例如,用户简档Pcurrent能够是n维特征向量。N个维度中的每个能够对应于特定特征,并且每个维度的值能够是用户的特征的值。例如,一个维度可以用于特定数字组件是否被呈现给用户(或与用户交互)。在该示例中,如果数字组件被呈现给用户(或与用户交互),则该特征的值能够是“1”,或者如果数字组件尚未被呈现给用户(或与用户交互),则该特征的值能够是“0”。用于生成用户的用户简档的示例性过程在图3中示出并在下面描述。
应用112生成用户的用户简档Pcurrent的秘密份额(204)。在该示例中,应用112生成用户简档Pcurrent的两个秘密份额[Pcurrent,1]和[Pcurrent,2],对于MPC集群130的每个计算系统各一个秘密份额。出于本文档的目的,使用方括号[]围绕被秘密共享的元素(例如,值、向量等)来表示秘密份额,例如,对于元素“secret share”的秘密份额,[secret share]。例如,应用能够将用户简档Pcurrent拆分成秘密份额,以保护用户简档Pcurrent的值免受MPC集群130中的受损计算系统的影响。注意,每个秘密份额本身能够是随机值,其本身不会披露关于用户简档的任何内容。两个秘密份额将需要被组合以获得用户简档。如果MPC集群130包括参与机器学习模型的训练的更多计算系统,则应用112将生成更多秘密份额,对于每个计算系统各一个秘密份额。用于构建用户简档并生成用户简档的秘密份额的示例性过程在图3中示出并在下面描述。
应用112将用户简档Pcurrent的第一秘密份额[Pcurrent,1]提供给计算系统MPC1(206)。应用112还将用户简档的第二秘密份额[Pcurrent,2]提供给计算系统MPC2(208)。如下面参考图3所述,存在各种方式来将用户简档Pcurrent的两个秘密份额[Pcurrent,1]和[Pcurrent,2]提供给MPC集群130,使得用户隐私和数据的安全性受到保护。
在期望基于用户对数字组件的转化来训练模型的某些实施方式中,可以考虑转化的发生经常能够在展示或点击之后很长时间才发生,在这种情况下,保持MPC集群130可用于执行其他任务以便优化内容平台150的带宽、存储和处理能够是有利的。在这样的实施方式中,操作206和208能够由另一替代过程代替,其中,(i)应用112将用户简档和标签的加密份额连同第一方cookie一起传送到需求方平台(DSP),该需求方平台在一些实施方式中可以是内容平台150的一部分,并且在其他实施方式中与内容平台150分离,(ii)DSP然后使用第一方cookie来将用户简档和标签的加密份额与能够特定于转化的交互数据(例如,转化是否在诸如30天的预设时间段内发生)映射(即,关联),以及(iii)DSP然后将该映射传送到计算系统MPC1或MPC2以训练机器学习模型。虽然该描述集中于转化的交互,但该架构和功能性能够被扩展到任何其他交互(例如,展示或点击),或交互的任何组合(例如,展示、点击和/或转化)。
计算系统MPC1和MPC2生成质心模型(210)。计算系统MPC1和MPC2能够为请求客户端设备110上传用户简档的内容平台150或数字组件提供者160的多个用户组生成质心模型。每次基于用户简档数据来生成新的机器学习模型能够被称为训练会话。计算系统MPC1和MPC2能够基于从多个客户端设备接收到的用户简档的秘密份额来生成质心模型。例如,计算系统MPC1和MPC2能够使用MPC技术以基于用户简档的秘密份额来生成质心模型。通常,为用户组生成质心模型包括计算作为用户组的成员的用户的用户简档的质心。用于生成质心模型的示例性过程在图4和图6中示出并在下面描述。
由MPC集群130生成和维护的每个质心模型能够具有对应的独特标识符。这使得应用112能够使用模型标识符来查询质心模型。例如,生成质心模型的请求能够包括质心模型的模型标识符,其可以由所有者(例如,内容平台150或数字组件提供者160)分配。然后,所有者能够使用模型标识符来请求应用112查询质心模型以确定是否将用户添加到与质心模型相对应的用户组。
应用112向MPC集群130提交用户组更新请求(212)。用户组更新请求能够包括用户的当前用户简档Pcurrent。在一些实施方式中,应用112能够将完整的用户简档Pcurrent发送到每个计算系统MPC1和MPC2。在其他实施方式中,为了保护用户隐私,应用112能够将用户简档Pcurrent的相应部分或秘密份额发送到每个计算系统MPC1和MPC2。
用户组更新请求还能够包括要查询的一个或多个质心模型中的每个质心模型的模型标识符,以确定是否应该将用户添加到与该质心模型相对应的用户组。在一些实施方式中,应用112发送针对每个质心模型的单独的用户组更新请求。在该示例中,每个用户组请求包括一个质心模型的模型标识符。
每个用户组更新请求还能够包括查询的阈值距离,例如最大距离。如果用户的用户简档在用户组的质心的阈值距离内,则MPC集群130能够请求应用112将用户添加到对应的用户组。参考图5描述了用于传送用户组更新请求的示例性数据格式和技术。
MPC集群130确定是否应该将用户添加到一个或多个用户组(214)。通常,这能够包括确定用户的用户简档是否在一个或多个用户组中的每个用户组的质心的阈值距离内。计算系统MPC1和MPC2能够执行安全MPC过程以确定用户是否应该被添加到一个或多个用户组,使得计算系统MPC1和MPC2都不能访问明文的任何用户简档或者明文的将为用户建议的用户组标识符。用于确定用户的用户组的示例性过程在图5和图6中示出并在下面描述。
MPC集群130向应用112提供零个或更多个用户组标识符(216)。MPC集群130能够为用户应该被添加到的每个用户组提供用户组标识符。也就是说,MPC集群130能够为具有用户的用户简档在阈值距离内的质心的每个用户组提供用户组标识符。为了保护用户隐私,每个计算系统MPC1和MPC2提供用户组标识符的一部分或用户组标识符的秘密份额,如下面参考图5和图6所描述的。
应用112更新用户的用户组列表(218)。例如,应用112能够将用户添加到用户简档在其质心的阈值距离内的每个用户组。也就是说,应用112能够将从MPC集群130接收到的每个用户组标识符添加到在用户的客户端设备110处维护的用户组列表。在一些实施方式中,应用112能够提示用户允许将用户添加到每个用户组。
应用112传送对内容的请求(220)。例如,应用112能够响应于加载具有数字组件槽的电子资源而向内容平台150传送对数字组件的请求。在一些实施方式中,请求能够包括针对包括用户作为成员的用户组的一个或多个用户组标识符。例如,应用112能够从用户组列表获得一个或多个用户组标识符,并将(一个或多个)用户组标识符与请求一起提供。在一些实施方式中,能够使用技术来防止内容平台能够将用户组标识符与从其接收到请求的用户、应用112和/或客户端设备112相关联。
内容平台150将内容传送到应用112(222)。例如,内容平台150能够基于(一个或多个)用户组标识符来选择数字组件,并将数字组件提供给应用112。在一些实施方式中,内容平台150与应用112或设备操作系统协作地基于(一个或多个)用户组标识符来选择数字组件,而不将(一个或多个)用户组标识符泄露到应用112或用户设备110之外。
应用112显示或以其他方式实现接收到的内容(224)。例如,应用112能够在电子资源的数字组件槽中显示接收到的数字组件。
用于生成质心模型的用户简档的示例性过程
图3是示出用于生成用户简档并且将用户简档发送到MPC集群的示例性过程300的流程图。过程300的操作能够例如由图1的客户端设备110,例如由在客户端设备110上运行的应用112或客户端设备110的操作系统来实现。过程300的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程300的操作。
在用户的客户端设备110上执行的应用112接收事件的数据(302)。事件能够是例如在客户端设备110处呈现电子资源、在客户端设备110处呈现数字组件、在客户端设备110处与电子资源或数字组件的用户交互、或数字组件的转化、或与呈现的电子资源或数字组件的用户交互或转化的缺少。由用户进行的用户交互的一些示例能够是与呈现在网页上的特定物品的交互,诸如以下中的一个或多个:(a)点击特定物品的链接,(b)通过例如将物品添加到虚拟购物车或购买物品来完成特定物品的转化,(c)查看特定物品超过预设时间量。特定用户交互的缺少的一些示例能够是用户执行一些交互但缺少后续交互,例如,用户查看数字组件,但不点击;点击数字组件,但不转化(例如,点击以转到结账网页但不购买物品);等等。在不同的实施方式中能够不同地定义转化。例如,在一些实施方式中,转化能够是用户导航到结账页面。在某些实施方式中,转化能够是用户试图购买物品。在其他实施方式中,转化能够是用户购买物品。当事件发生时,内容平台150或数字组件提供者160能够向应用112提供与事件相关的数据,以用于在生成用户的用户简档中使用。
应用112能够为每个内容平台150或数字组件提供者160生成不同的用户简档。也就是说,用户的和用于特定内容平台150的用户简档可以仅包括从特定内容平台150接收到的事件数据。这通过不与内容平台共享与其他内容平台的事件相关的数据来保护用户隐私。在一些实施方式中,根据内容平台150的请求,应用112可以为由内容平台150拥有的每个质心模型生成不同的用户简档。基于设计目标,不同的质心模型可能需要不同的训练数据。例如,第一模型可以被用于确定是否将用户添加到用户组。第二模型可以被用于预测用户是否将与数字组件交互(例如,查看、点击和/或转化)。在该示例中,第二模型的用户简档能够包括第一模型的用户简档不具有的附加数据,例如,用户是否与数字组件交互。
内容平台150能够以简档更新令牌Mupdate的形式发送事件数据。简档更新令牌Mupdate具有在下表1中示出和描述的以下条目。
表1
模型标识符识别质心模型,对于该质心模型,用户简档将被用于训练或被用于进行用户组推断。简档记录是n维特征向量,其包括特定于事件的数据,例如,事件的类型、电子资源或数字组件、事件发生的时间和/或内容平台150(或数字组件提供者160)想要在训练质心模型和进行用户组推断中使用的其他适当的事件数据。操作指示应用112基于简档记录来更新用户简档。使用内容平台150的私钥,基于七个条目来生成数字签名。
在一些实施方式中,为了在传输期间保护更新令牌Mupdate,内容平台150在将更新令牌Mupdate发送到应用112之前对更新令牌Mupdate进行加密。例如,内容平台150能够使用应用的公钥(例如,PubKeyEnc(Mupdate,application_public_key))来加密更新令牌Mupdate。
在一些实施方式中,内容平台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维特征向量(例如,更新令牌的简档记录)的数据结构,并且针对每个特征向量维护过期时间。模型标识符的示例性数据结构在下表2中示出。
特征向量 | 过期 |
n维特征向量 | 过期时间 |
… | … |
表2
在接收到有效的更新令牌Mupdate时,应用112能够通过将更新令牌Mupdate的特征向量和过期时间添加到数据结构来更新包括在更新令牌Mupdate中的模型标识符的数据结构。周期性地,应用112能够从数据结构中清除过期的特征向量以减小存储大小。表2中的过期时间与表1中所示的更新令牌Mupdate中的过期时间相同。
应用112确定是否生成用户简档(306)。例如,应用112可以响应于来自内容平台150的请求而生成特定质心模型的用户简档。该请求可以是生成用户简档并将用户简档上传到MPC集群130。为了确保生成和上传用户简档的请求的安全性,内容平台150能够向应用112发送上传令牌Mupload。
上传令牌Mupload能够具有与更新令牌Mupdate类似的结构,但是具有不同的操作(例如,“更新服务器”而不是“累积用户简档”)。上传令牌Mupload还能够包括用于操作延迟的附加条目。当应用112累积更多事件数据(例如,更多特征向量)时,操作延迟能够指示应用112延迟计算和上传用户简档的秘密份额。这使得质心模型能够在一些关键事件(例如,加入用户组)之前和之后立即捕获用户事件数据。操作延迟能够指定延迟时间段。在该示例中,能够使用内容平台的私钥,基于表1中的其他七个条目和操作延迟来生成数字签名。内容平台150能够以与更新令牌Mupdate(例如,PubKeyEnc(Mupload,application_public_key))类似的方式使用应用的公钥来加密上传令牌Mupload,以在传输期间保护上传令牌Mupload。
应用112能够接收上传令牌Mupload,如果上传令牌Mupload被加密,则对上传令牌Mupload进行解密,并验证上传令牌Mupload。该验证能够类似于验证更新令牌Mupdate的方式。应用112能够通过以下操作来验证上传令牌Mupload:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在进行验证的当前时间的阈值时间量内。如果上传令牌Mupload有效,则应用112能够生成用户简档。如果任何验证失败,则应用112可以例如通过不生成用户简档来忽略上传请求。
在一些实施方式中,内容平台150能够请求应用112上传用户简档,而不以简档上传令牌Mupload的形式编码上传请求。例如,源自在应用112内部运行的内容平台150的脚本可以经由脚本API直接将上传请求传送到应用112,其中,应用112依赖于基于W3C起源的安全模型和/或HTTPS来保护上传请求免受伪造或泄露或中间人攻击。
如果做出不生成用户简档的确定,则过程302能够返回到操作302并等待来自内容平台150的附加事件数据。如果做出生成用户简档的确定,则应用112生成用户简档(308)。
应用112能够基于存储的事件数据,例如存储在表2所示的数据结构中的数据,来生成用户简档。应用112能够基于包括在请求中的模型标识符(例如,上传令牌Mupload的条目1的内容平台eTLD+1域和条目2的模型标识符)来访问适当的数据结构。
应用112能够通过在尚未过期的研究时段中聚合数据结构中的n维特征向量来计算用户简档。例如,用户简档可以是在尚未过期的研究时段中的数据结构中的n维特征向量的平均值。结果是表示简档空间中的用户的n维特征向量。可选地,应用112可以例如使用L2归一化将n维特征向量归一化到单位长度。内容平台150可以指定可选的研究时段。
在一些实施方式中,衰减率能够用于计算用户简档。由于可能存在使用MPC集群130来训练质心模型的许多内容平台150,并且每个内容平台150可以具有多个质心模型,因此存储用户特征向量数据可能导致显著的数据存储需求。为了生成用于训练机器学习模型的用户简档的目的,使用衰减技术能够显著减少存储在每个客户端设备110处的数据量。
假设,对于给定的质心模型,存在k个特征向量{F1,F2,…Fk},每个特征向量是n维向量和它们的对应存在时间(record_age_in_secondsi)。应用112能够使用下面的关系式1来计算用户简档:
在该关系式中,参数record_age_in_secondsi是简档记录已经被存储在客户端设备110处的以秒为单位的时间量,而参数decay_rate_in_seconds是(例如,在更新令牌Mupdate的条目6中接收到的)以秒为单位的简档记录的衰减率。以这种方式,更新的特征向量携带更多的权重。这还使得应用112能够避免存储特征向量,并且仅利用恒定存储来存储简档记录。应用112仅需要为每个模型标识符存储n维向量P和时间戳user_profile_time,而不是为每个模型标识符存储多个单独的特征向量。
在该关系式中,参数record_age_in_secondsi是简档记录已经被存储在客户端设备110处的以秒为单位的时间量,而参数decay_rate_in_seconds是(例如,在更新令牌Mupdate的条目6中接收到的)以秒为单位的简档记录的衰减率。以这种方式,更新的特征向量携带更多的权重。这还使得应用112能够避免存储特征向量,并且仅利用恒定存储来存储简档记录。应用112仅需要为每个模型标识符存储n维向量P和时间戳user_profile_time,而不是为每个模型标识符存储多个单独的特征向量。
为了初始化n维向量用户简档P和时间戳,应用能够将向量P设置为n维的向量,其中,每个维度的值为零,并且将user_profile_time设置为纪元。为了在任何时间用新的特征向量Fx更新用户简档P,应用112能够使用下面的关系式2:
当利用关系式2来更新用户简档时,应用112还能够将用户简档时间更新为当前时间(current_time)。注意,如果应用112用上述衰减率算法计算用户简档,则省略操作304。
应用112生成用户简档的秘密份额(310)。应用112能够使用伪随机函数来将用户简档Pcurrent(例如,n维向量Pcurrent)拆分成秘密份额。也就是说,应用112能够使用伪随机函数PRF(Pi)来生成用户简档Pcurrent的两个秘密份额{[Pcurrent,1],[Pcurrent,2]}。精确拆分能够取决于由应用112使用的秘密共享算法和密码库。在一些实施方式中,应用使用Shamir秘密共享方案。
在一些实施方式中,应用使用加性秘密共享方案,即,应用112生成随机(或伪随机)n维向量nonce。在该示例中,应用能够生成作为Pcurrent+nonce的第一秘密份额和作为Pcurrent-nonce的第二秘密份额。然后,应用112能够删除n维向量nonce。
为了阻止恶意应用112滥用用于上传用户简档的秘密份额的上传API,MPC集群130能够要求信任令牌发行者签署秘密份额。对于由用户组标识符Li表示的m个用户组中的每一个以及MPC集群130中的计算系统MPC1和MPC2中的每一个,应用112能够发起与信任令牌发行者的信任令牌兑换过程以获得签名的兑换记录(SRR)。m个用户组能够是(i)由发送上传令牌Mupload的内容平台150(或数字组件提供者160)管理并且(ii)包括用户作为成员的用户组,例如,在由应用112维护的用户组列表中标识的用户组。
在信任令牌兑换过程中,应用112能够基于应用112和/或客户端设备110被认为是可信的来兑换先前发行给应用112的信任令牌。这能够包括将信任令牌和信息(例如,计算系统MPC1或MPC2的绑定和eTLD+1)与兑换信任令牌的请求一起发送到信任令牌发行者。信任令牌发行者能够通过向应用112提供SRR来做出响应。应用112能够兑换每个SRR的信任令牌。SRR的示例性格式在下表3中示出。
表3
应用112能够将模型标识符的消息认证码(例如,基于散列的消息认证码(HMAC))、为其生成SRR的用户简档的秘密份额、用户组Li和应用112的公钥(application_public_key)计算作为绑定。例如,绑定能够被表示为HMAC(model_id,share,Li,application_public_key)。对于给定用户简档和给定质心模型,应用112能够计算该代码两次,对于用户简档Pcurrent的每个秘密份额各一次,因此对于每个计算系统MPC1和MPC2各一次。例如,计算系统MPC1的SRR的参数“share”能够是[Pcurrent,1],而计算系统MPC2的SRR的参数“share”能够是[Pcurrent,2]。
信任令牌发行者能够生成时间戳和数字签名。信任令牌发行者能够使用信任令牌发行者的私钥来生成数字签名。这使得SRR的接收者能够使用与私钥相对应的公钥来验证签名。
对于由用户组标识符Li表示的m个用户组中的每一个以及MPC集群130中的计算系统MPC1和MPC2中的每一个,应用112然后能够创建用户简档更新令牌Mprofileupdate以用于传输到MPC集群130。用户简档更新令牌Mprofileupdate的示例性格式在下表4中示出。
表4
应用112能够生成时间戳和数字签名。应用112能够使用与条目4中的公钥相对应的应用112的私钥来生成数字签名。这使得用户简档更新令牌Mprofileupdate的接收者能够使用与私钥相对应的公钥来验证签名。
受损的应用112可以自己发起用户简档更新操作,而不是根据内容平台150使用用户简档更新令牌Mprofileupdate的请求进行动作。为了使得MPC集群130能够检测这种情况,应用112能够可选地将从内容平台150接收到的更新令牌Mupdate包括在用户简档更新令牌Mprofileupdate中。
应用112传送使用用户的用户简档来更新在MPC集群130处的(一个或多个)模型的用户简档的请求(312)。每个请求能够包括用户简档的秘密份额。例如,应用112能够将具有用户简档Pcurrent的第一秘密份额[Pcurrent,1]的用户简档更新令牌Mprofileupdate传送到计算系统MPC1,并且将具有用户简档Pcurrent的第二秘密份额[Pcurrent,2]的用户简档更新令牌Mprofileupdate传送到计算系统MPC2。应用112能够对为其创建用户简档更新令牌的每个模型标识符执行该操作。
在该过程中,对于MPC集群130中的两个计算系统MPC1和MPC2中的每一个,应用112发送m个更新用户简档的请求,对于m个用户组中的每一个各一个请求。MPC集群130中的受损计算系统可能使这m个请求相关。这样的攻击可以允许受损的计算系统得知应用112(以及其用户)可能属于多个用户组以及那些组的标识符。
为了减轻这种风险,能够利用MPC集群130。为了将秘密份额上传到计算系统MPC1,应用112能够向计算系统MPC2发送单个请求,其中,具有用户简档的第一秘密份额[Pcurrent,1]的所有用户简档更新令牌旨在用于计算系统MPC1单独地利用计算系统MPC1的公钥来加密。该单个请求能够包括以下形式的一组加密结果:PubKeyEnc(Mprofileupdate_1,MPC1),PubKeyEnc(Mprofileupdate_2,MPC1),…PubKeyEnc(Mprofileupdate_m,MPC1),其中,PubKeyEnc表示概率非对称加密算法,而MPC1表示计算系统MPC1的非对称公钥。
PubKeyEnc的概率性质提供语义安全性。语义安全方案是其中仅可忽略的信息能够从加密结果中提取的方案。在不与计算系统MPC1共谋的情况下,计算系统MPC2不能从加密令牌列表推断任何信息。计算系统MPC2能够分解令牌列表并向计算系统MPC1发送m个请求,每个用户简档更新令牌Mprofileupdate各一个请求。计算系统MPC2能够使用连续请求之间的随机或伪随机延迟。在另一示例中,计算系统MPC2能够将来自在多个客户端设备110上运行的多个应用112的多个请求批量上传到计算系统MPC1,以防止将来自相同应用112的请求相关。
应用112能够使用类似的技术来上传针对计算系统MPC2的第二秘密份额。也就是说,应用112能够向计算系统MPC1发送单个请求,其中,具有用户简档的第二秘密份额[Pcurrent,2]的所有用户简档更新令牌旨在用于计算系统MPC2单独地利用计算系统MPC2的公钥来加密。该单个请求能够包括以下形式的一组加密结果:PubKeyEnc(Mprofileupdate_1,MPC2),PubKeyEnc(Mprofileupdate_2,MPC2),…PubKeyEnc(Mprofileupdate_m,MPC2),其中,MPC2表示计算系统MPC2的非对称公钥。计算系统MPC1能够分解令牌列表并向计算系统MPC2发送m个请求,每个用户简档更新令牌Mprofileupdate各一个请求,例如使用如上所述的延迟或批量上传。给定可以由计算系统MPC1和MPC2接收到的大量请求,计算系统MPC1或MPC2使用这些技术将令牌与个体客户端设备110相关将是困难的(如果不是不可能的话)。
计算系统MPC1和MPC2能够验证每个接收到的更新用户简档的请求。在接收到具有加密结果PubKeyEnc(Mprofileupdate_i,MPCj)的请求时,其中,取决于计算系统,j为1或2,计算系统MPCj对加密结果进行解密以恢复明文的用户简档更新令牌Mprofileupdate_i。计算系统MPCj证实用户简档更新令牌Mprofileupdate_i。为此,计算系统MPCj使用从SRR的条目1.4中的信任令牌发行者域提取的公钥来验证SRR的条目1.5中的数字签名(参见表3)。计算系统MPCj还能够使用将Mprofileupdate_i发送到MPC集群130的应用112的公钥来验证用户简档更新令牌Mprofileupdate_i的条目7中的数字签名(参见表4)。
计算系统MPCj还能够例如通过确保时间戳在执行验证的当前时间的阈值持续时间内来验证SRR的条目1.3的签名时间戳的陈旧性。计算系统MPCj还能够验证SRR的条目1.2中的发布者来源与当前计算系统MPCj的身份匹配。计算系统MPCj还能够验证SRR的条目1.1中的绑定的值与从用户简档更新令牌Mprofileupdate_i中的条目1-4计算的HMAC(model_id,share,Li,application_public_key)匹配。计算系统MPC还能够例如通过确保令牌创建时间戳在正在执行验证的当前时间的阈值持续时间内来验证用户简档更新令牌Mprofileupdate_i的条目5中的令牌创建时间戳不是陈旧的。计算系统MPCj还能够使用令牌创建时间戳来检测潜在重放攻击,例如,基于具有相同令牌创建时间戳的多个用户简档更新令牌。如果这些验证中的任何一个失败,则计算系统MPCj能够忽略该请求。
每个计算系统MPC1和MPC2能够维护包括每个质心模型的数据的表(或其它适当的数据结构)。例如,该表能够是以下表5的形式。
模型ID | 用户组ID | 所有份额的总和 | 应用的数量 |
model_id | L<sub>i</sub> | sum_of_shares | number_of_applications |
… | … | … | … |
表5
质心模型的行包括模型标识符(model_id)、模型中包括的用户组的用户组标识符(Li)、针对质心模型接收到的用户简档的所有份额的总和,以及提交了质心模型的用户简档的秘密份额并且其秘密份额被包括在质心模型的所有份额的总和中的独特应用112的数量(例如,独特客户端设备的数量)。所有份额的总和是与用户简档的n维向量相对应的n维向量。
当接收到计算系统MPCj之前从未接收到的模型/用户组对{model_id,Li}时,计算系统MPCj能够将质心模型的所有份额的总和初始化为零向量,并将应用的数量初始化为零。为了处理更新针对包括特定模型/用户组对的质心模型的用户简档的有效请求,计算系统MPCj能够在表中找到针对质心模型/用户组对的行,并更新针对质心模型/用户组对的所有份额的总和和应用的数量。例如,计算系统MPCj能够将接收到的用户简档的秘密份额添加到质心模型/用户组对的所有份额的总和,并且将应用的数量增加一。
用于生成和使用质心模型的示例性过程
图4是示出用于生成质心模型的示例性过程400的流程图。过程400的操作能够例如由图1的MPC集群130实现。过程400的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使得一个或多个数据处理装置执行过程400的操作。尽管在生成多个质心模型方面描述了过程400,但是过程400也能够用于为单个用户组生成单个质心模型。如上所述,用于计算质心的过程也能够被使用在用于基于用户组而不是个体用户简档的k-NN或其他机器学习模型的预处理阶段中。
每个计算系统MPC1和MPC2获得用户简档数据表(402)。例如,该表能够是以上表5的形式。计算系统MPC1能够获得针对每个模型标识符和用户组对包括通过模型标识符和用户组ID从应用112接收到的针对质心模型标识符中包括的用户组的第一秘密份额[Pcurrent,1]的总和的表。类似地,计算系统MPC2能够获得针对每个模型标识符和用户组对包括通过模型标识符和用户组ID从应用112接收到的针对质心模型标识符中包括的用户组的第二秘密份额[Pcurrent,2]的总和的表。
每个计算系统MPC1和MPC2对每个模型标识符强制执行用户组大小阈值(404)。例如,每个计算系统MPC1和MPC2能够在其表的每一行上强制执行大小阈值。为了强制执行用户组大小阈值,每个计算系统MPC1和MPC2能够确定针对模型标识符的应用的数量是否超过预定义大小阈值。
计算系统MPC1和MPC2向彼此通知表的满足大小阈值的行(例如,针对每个模型标识符/用户组ID对的信息)(406)。例如,计算系统MPC1能够向计算系统MPC2发送模型标识符、用户组标识符以及应用的数量超过大小阈值的每行的应用的数量。另外,计算系统MPC1能够向计算系统MPC2发送这些行中的每行的份额向量的总和(sum_of_shares1)的后半部(second half)到计算系统MPC2。仅sum_of_shares1的后半部的传输基于下面讨论的水平分区策略。
类似地,计算系统MPC2能够向计算系统MPC1发送模型标识符、用户组标识符以及应用的数量超过大小阈值的每行的应用的数量。另外,计算系统MPC2能够向计算系统MPC1发送这些行中的每行的份额向量总和(sum_of_shares2)的前半部(first half)到计算系统MPC1。
计算系统MPC1将其表中应用的数量超过大小阈值的行与从计算系统MPC2接收到的行进行匹配。例如,计算系统MPC1能够使用行的模型标识符和/或用户组标识符来匹配针对相同模型和用户组的对应行。类似地,计算系统MPC2将其表中应用的数量超过大小阈值的行与从计算系统MPC1接收到的行进行匹配。例如,计算系统MPC2能够使用行的模型标识符和/或用户组标识符来匹配针对相同模型和用户组的对应行。在下表6中示出了在计算系统MPC1处以表格形式的该大小阈值强制执行和交叉通知的示例结果。
表6
类似地,在下表7中示出了在计算系统MPC2处以表格形式的大小阈值强制执行和交叉通知的示例结果。
表7
对于每一行,在理想情况下,“来自MPC1的应用的数量”和“来自MPC2的应用的数量”中的值在两者对于给定模式标识符都存在的情况下应该是相同的。由于处理的延迟,这两个值可能具有微小的差异。如果这两个值都存在并且这两个值都显著变化,或者如果这两个值之一不超过大小阈值,则提供不超过大小阈值的值的计算系统可能受到损害。对于“来自MPC1的应用的数量”和“来自MPC2的应用的数量”中的值满足接近度阈值(例如,在彼此的阈值差内)并且两者都超过大小阈值的那些行,计算系统能够计算其质心。
计算系统MPC1和MPC2计算质心模型的质心(408)。计算系统MPC1能够计算满足接近度(例如,在阈值差内)和大小阈值的行中的用户组的质心向量的前半部。计算系统MPC1能够使用下面的关系式3来计算(例如,针对行的)模型标识符和用户组的质心(centroid)。
关系式3:
类似地,计算系统MPC2能够使用下面的关系式4来计算(例如,针对行的)模型标识符和用户组的质心。
关系式4:
用户组的质心通常不是隐私敏感的,并且不能容易地被操纵以允许MPC集群130的恶意应用112、内容平台150或计算系统MPC1和MPC2窃取用户简档。
在该过程结束时,计算系统MPC1具有超过列表大小阈值的所有列表的质心的前半部。该过程的结果的示例在下表8中以表格形式示出。计算系统MPC2对于每个模型标识符和用户组标识符的质心向量的后半部具有相同的数据。用户组的经训练的质心模型能够包括第一质心模型和第二质心模型,第一质心模型包括这些用户组中的每一个用户组的质心的前半部,第二质心模型包括每个用户组的质心的后半部。
表8
图5是示出用于使用质心模型将用户添加到用户组的示例性过程500的泳道图。过程500的操作能够例如由图1的MPC集群130和客户端设备110(例如,在客户端设备110上运行的应用112)来实现。过程500的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程500的操作。
在客户端设备110上运行的应用112能够响应于来自内容平台150或数字组件提供者160的请求而向MPC集群130查询用户的建议的用户组。例如,该请求能够是使用为请求者生成并由请求者拥有的质心模型来确定是否应该将用户添加到由请求者拥有的用户组。例如,内容平台150能够管理许多用户组,并且MPC集群130能够训练和使用用户组的一个或多个质心模型以确定是否应该将用户添加到那些用户组。
为了请求应用查询质心模型,请求者能够向客户端设备110传送下载组令牌Mdownload。令牌Mdownload能够具有在下表9中示出和描述的以下条目。
表9
在一些实施方式中,内容平台150能够使用应用112的公钥来加密下载组令牌Mdownload。然后,内容平台150能够调用应用的API以经由其自己的脚本或SSP的脚本提取用户组标识符。应用112能够以与其解密和验证用户简档更新令牌Mprofileupdate相同的方式来解密和验证下载组令牌Mdownload。
对于给定的model_id、用户简档P和阈值距离d的元组,应用112应该提取所有用户组标识符Li,其中,|P-Centroid(model_id,Li)|<d。在该示例中,函数Centroid(model_id,Li)返回来自由表8中的model_id和Li标记的行的质心(Centroid)列中的值。
为了防止计算系统MPC1或MPC2得知用户简档P整体,应用112将用户的用户简档P划分成多个部分(502)。应用112能够将用户简档划分成用于MPC集群130的每个计算系统的相应部分。在该示例中,应用112能够将用户简档拆分成两个部分,第一部分用于计算系统MPC1,而第二部分用于计算系统MPC2。假设用户简档P是n维向量并且用户简档P={p1,p2,…,pn},则两个半部P1和P2将是P1={p1,p2,…,pn/2}和P2={pn/2+1,…,pn}。计算系统MPC1和MPC2能够相应地计算它们的用户组的质心,即质心Centroid(model_id,Li)变成Centroid1(model_id,Li)和Centroid2(model_id,Li)。
在一些实施方式中,应用112还能够添加差分隐私噪声以更好地保护用户隐私。例如,应用112能够例如在将用户简档P拆分成多个部分之前将一次性用户噪声ΔP添加到用户简档P。
令P’=P+ΔP。应用112应用水平分区以将P’划分成两个半部,P1’和P2’。令d’=d+|ΔP|。应用112将前半部P1’发送到计算系统MPC1(504)。例如,应用112能够向计算系统MPC1发送具有两个参数{P1’,d’}的请求。该请求能够是提取所有用户组标识符Li,其中,|P1’–Centroid1(model_id,Li)|<d’。
类似地,应用112将后半部P2’发送到计算系统MPC2(506)。例如,应用112能够向计算系统MPC2发送具有两个参数{P2’,d’}的请求。该请求能够是提取所有用户组标识符Li,其中,|P2’–Centroid1(model_id,Li)|<d’。
在期望基于用户对数字组件的转化来训练模型的某些实施方式中,可以考虑转化的发生经常能够在展示或点击之后很长时间才发生,在这种情况下,保持MPC集群130可用于执行其他任务以便优化内容平台150的带宽、存储和处理能够是有利的。在这样的实施方式中,操作504和508能够由替代过程代替,其中,(i)应用112将用户简档和标签的加密份额连同第一方cookie一起传送到需求方平台(DSP),该需求方平台在一些实施方式中可以是内容平台150的一部分,并且在其他实施方式中与内容平台150分离,(ii)DSP然后使用第一方cookie来将用户简档和标签的加密份额与能够特定于转化的交互数据(例如,转化是否在诸如30天的预设时间段内发生)映射(即,关联),以及(iii)DSP然后将该映射传送到计算系统MPC1或MPC2以训练机器学习模型。虽然该描述集中于转化的交互,但该架构和功能性能够被扩展到任何其他交互(例如,展示或点击),或交互的任何组合(例如,展示、点击和/或转化)。
计算系统MPC1能够确定具有在用户简档P’的前半部P1’的阈值距离d’内的质心的用户组(508)。计算系统MPC1能够为每个用户组确定前半部P1’与用户组的质心之间的距离,即|P1’–Centroid1(model_id,Li)|。然后,应用112能够确定哪些用户组具有小于距离d’的距离。这些用户组的用户组标识符能够由U1表示。
类似地,计算系统MPC2能够确定具有在用户简档P’的后半部P2’的阈值距离d’内的质心的用户组(510)。计算系统MPC2能够为每个用户组确定后半部P2’与用户组的质心之间的距离,即|P2’–Centroid2(model_id,Li)|。然后,应用112能够确定哪些用户组具有小于距离d’的距离。这些用户组的用户组标识符能够由U2表示。
计算系统MPC1将用户组标识符集合U1传送到应用110(512)。类似地,计算系统MPC2将用户组标识符集合U2传送到应用110(514)。
应用112能够使用集合U1和U2来计算满足|P–Centroid(model_id,Li)|<d的所有用户组标识符Li的集合U。由于因此应用112能够从U1和U2计算集合U,因为U={Li},其中,|P-Centroid(model_id,Li)|<d且Li∈U1∪U2。
先前的方法假设用户组的质心不是隐私敏感的,并且泄露浏览器应该加入MPC1和MPC2中的任一个的用户组的超集(即U1U1和U2U2)是可接受的。在需要更强隐私保护的情况下,能够使用以下方法。图6是示出用于生成质心模型并且使用质心模型将用户添加到与具有更强隐私保护的质心模型相对应的用户组的示例性过程600的泳道图。过程600的操作能够例如由图1的MPC集群130和客户端设备110(例如,在客户端设备110上运行的应用112)来实现。过程600的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程600的操作。
MPC集群130能够训练一个或多个用户组的质心模型。在该示例中,使用用户简档的秘密份额来查询质心模型。因此,每个计算系统MPC1和MPC2能够使用训练集的用户简档的秘密份额(例如,由客户端设备110上传的用户简档的秘密份额)来确定用户组的质心的相应秘密份额。
对于每个用户组,计算系统MPC1计算用户组的质心的第一秘密份额(602)。由模型标识符model_id标识的质心模型和由用户组标识符Li标识的用户组的质心能够被表示为sum_of_profile(model_id,Li)。对于作为用户组Li的成员的所有用户简档Pi,第一秘密份额[sum_of_profilemodel_id,i,1]=Σ[Pj,1]。也就是说,用户组Li的质心的第一秘密份额表示用户组Li中的用户简档Pi的第一秘密份额的总和。
对于每个用户组,计算系统MPC2计算用户组的质心的第二秘密份额(604)。由模型标识符model_id标识的质心模型和由用户组标识符Li标识的用户组的质心能够被表示为sum_of_profile(model_id,Li)。对于作为用户组Li的成员的所有用户简档Pi,第二秘密份额[sum_of_profilemodel_id,i,2]=Σ[Pj,2]。也就是说,用户组Li的质心的第二秘密份额表示用户组Li中的用户简档Pi的第二秘密份额的总和。
质心模型能够包括每个用户组的质心的第一份额和每个用户组的质心的第二份额。能够在计算系统MPC1处机密地维护每个质心的第一份额,并且能够在计算系统MPC2处机密地维护每个质心的第二份额。
在客户端设备110上运行的应用112将用户的用户简档划分成秘密份额(606)。例如,应用112能够计算用于计算系统MPC1的用户简档P的第一秘密份额[P1]和用于计算系统MPC2的用户简档P的第二秘密份额[P2]。精确拆分能够取决于由应用112使用的秘密共享算法和密码库。在一些实施方式中,应用使用Shamir秘密共享方案。
应用112向计算系统MPC1发送提取用户的用户组标识符的请求(608)。该请求能够包括用户简档P的第一秘密份额[P1]。在一些实施方式中,该请求包括查询令牌Mquery1。查询令牌的示例格式在下表9中示出。
应用112向计算系统MPC2发送提取用户的用户组标识符的请求(610)。该请求能够包括用户简档P的第二秘密份额[P2]。在一些实施方式中,该请求包括查询令牌Mquery2。查询令牌的示例格式在下表9中示出。
表9
在一些实施方式中,应用112能够发送两个单独的请求,如图6所示。为了节省客户端设备110的带宽和电池消耗,应用112能够将两个请求(例如,两个查询令牌Mquery1和Mquery2)组合成单个请求,并将该单个请求发送到计算系统MPC1或MPC2之一。为此,应用112能够对旨在用于另一计算系统MPC1或MPC2的查询令牌进行加密。例如,应用112能够使用计算系统MPC2的加密公钥(例如,使用概率非对称公钥算法)来加密查询令牌Mquery2。例如,应用112能够使用计算系统MPC2的公钥来生成加密结果PubKeyEnc(Mquery2,MPC2)。然后,应用112能够将查询令牌Mquery1和加密结果PubKeyEnc(Mquery2,MPC2)发送到计算系统MPC1。
计算系统MPC1能够以与计算系统MPC1验证更新令牌Mprofileupdate类似的方式验证查询令牌Mquery1,如上面参考图3所述。计算系统MPC1还能够将具有加密结果PubKeyEnc(Mquery2,MPC2)的请求传送到计算系统MPC2。计算系统MPC2能够使用与用于加密查询令牌Mquery2的公钥相对应的其私钥来解密加密结果。然后,计算系统MPC2能够以与计算系统MPC2验证更新令牌Mprofileupdate类似的方式验证查询令牌Mquery2,如上面参考图3所述。
在一些实施方式中,每个计算系统MPC1和MPC2能够为与质心模型相关联的多个用户组中的每一个用户组确定该用户组的用户组资格eligible_groupi的相应秘密份额。用户简档和用户组的用户组资格eligible_groupi基于质心模型指示用户的用户简档是否在用户组的质心的阈值距离内。
在该示例中,每个计算MPC1和MPC2能够查找与模型标识符model_id相关联的所有用户组Li,其中1≤i≤N并且N是与模型标识符model_id相关联的用户组的数量。对于每个用户组Li,计算系统MPC1能够使用下面的关系式5来计算欧几里德距离[di,1]的平方的第一秘密份额。
关系式5:
[di,1]=∑([P1]×num_apps_groupi-[sum_of_profile_modgl_idi,1])2
在关系式5中,参数num_apps_groupi表示用户组中的应用的数量(例如,独特用户的数量),并且用户简档被用于为其生成用户组Li的质心。然后,计算系统MPC1能够使用下面的关系式6来计算用户简档和用户组的用户组资格eligible_groupi的第一秘密份额[eligible_groupi,1]:
关系式6:
[eligible_groupi,1]=[di,1]<(num_apps_groupi×d)2
也就是说,计算系统MPC1能够计算欧几里德距离的第一秘密份额是否小于阈值距离。计算系统MPC2能够使用下面的关系式7和8以类似的方式计算用户简档和用户组的用户组资格eligible_groupi的第二秘密份额[eligible_groupi,2]。
关系式7:
[di,2]=∑([P2]×num_apps_groupi-[sum_of_profile_model_idi,2])2
关系式8:
[eligible_groupi,2]=[di,2]<(num_apps_groupi×d)2
每个计算系统MPC1和MPC2能够将用户组资格的它们的相应秘密份额传送到应用112。然后,应用112能够组合秘密份额以确定是否将用户添加到用户组。由于响应大小与模型中的用户组的数量成比例,因此对于具有与质心模型相关联的大量用户组的内容平台,响应大小能够很大。然而,当用户组的数量小或者带宽消耗不是问题时,能够使用用于确定是否将用户添加到用户组的这种技术。该过程600的其余操作提供了对该技术的改进,该技术能够在用户组的数量可能很大时被使用,并且极大地减小响应大小。
在概念上,对于用户简档和用户组的用户组资格eligible_groupi,应用112能够随机地或伪随机地生成两个数gi和hi,每个数以相等概率具有零或一的值。在该示例中,gi和hi的总和将以25%的概率为零,以50%的概率为一,或以25%的概率为二。
应用112能够将用户组资格eligible_groupi的值估计为(gi+hi)==1。经由下表10,MPC集群130能够向应用112通知其估计是否正确。
表10
例如,如果gi+hi==1且eligible_groupi==1,则应用正确地估计eligible_groupi的值,使得对应单元的值为1。另一方面,如果gi+hi==2且eligible_groupi==1,则应用112不正确地估计eligible_groupi的值,使得对应单元的值为0。在这种情况下,应用112能够翻转其估计,使得应用112能够正确地估计eligible_groupi的值。能够验证,上表等同于:
(1-eligible_groupi)×(1-(gi+hi-1)2)+eligible_groupi×(gi+hi-1)2
为了使用安全MPC来实现这个概念,应用112能够生成(例如,16字节或另一适当数据大小的)两个随机(或伪随机)种子seed1和seed2(612)。应用112能够将第一种子seed1发送到计算系统MPC1。应用112能够将第二种子seed2发送到计算系统MPC2。
MPC集群130能够使用伪随机函数(PRF)和种子来生成数字gi和hi,它们可以是随机的或伪随机的。PRF能够是以50%概率生成0或1的值的函数。例如,PRF能够为一使得PRF(seed,i)→{0,1}。计算系统MPC1能够使用PRF和seed1来生成gi(例如,PRF(seed1,i)),并且计算系统MPC2能够使用PRF和seed2来生成hi(例如,PRF(seed2,i))。数字gi和hi是gi+hi的两个相加秘密份额(其是应用对用户是否应该被添加到用户组Li的估计),其能够被表示为[gi]和[hi]以指示它们是秘密份额。
MPC集群130不是以明文计算(1-eligible_groupi)×(1-(gi+hi-1)2)+eligible_groupi×(gi+hi-1)2,而是以秘密份额计算(1-[eligible_groupi])×(1-([gi+hi]-1)2)+[eligible_groupi]×([gi+hi]-1)2。注意,在该方程中,它包括秘密份额的平方和两个秘密份额之间的乘法。使用计算系统MPC1和MPC2之间的安全MPC过程的平方和乘法的计算能够需要两个计算系统MPC1和MPC2之间的一轮远程过程调用(RPC)。所有其他操作能够在每个计算系统MPC1和MPC2内本地执行。
特别地,计算系统MPC1和MPC2中的每一个能够计算每个用户组Li的估计标志flagi的秘密份额。用户组的估计标志flagi指示应用112是否正确地估计了用户是否应该被正确地添加到用户组。
计算系统MPC1计算每个用户组Li的估计标志flagi的第一秘密份额[flagi,1](618)。计算系统MPC1能够使用下面的关系式9来计算每个用户组Li的估计标志flagi的第一秘密份额[flagi,1]。
关系式9:
[flagi,1]=(1-[eligible_groupi,1])×(1-([gi]-1)2)+[eligible_groupi,1]×([gi]-1)2
计算系统MPC2计算每个用户组Li的估计标志flagi的第二秘密份额[flagi,2](620)。计算系统MPC2能够使用下面的关系式10来计算每个用户组Li的估计标志flagi的第二秘密份额[flagi,2]。
关系式10:
[flagi,2]=(1-[eligible_groupi,2])×(1-([hi]-1)2)+[eligible_groupi,2]×([hi]-1)2
计算系统MPC1和MPC2重建每个用户组Li的估计标志flagi(622)。计算系统MPC1和MPC2能够使用两个计算系统MPC1和MPC2之间的一个RPC,基于两个秘密份额[flagi,1]来重建每个用户组Li的估计标志flagi。如果用户组Li的估计标志flagi的值为一,则应用准确地估计是否应该将用户添加到用户组Li。因为计算系统MPC1和MPC2都不知道应用112实际估计的内容,所以知道用户组Li的估计标志flagi的值不会向计算系统MPC1或MPC2泄露任何信息。
计算系统MPC1将每个用户组Li的估计标志flagi传送到应用112(624)。例如,计算系统MPC1能够将用户组的{flag1,flag2,…}传送到应用112。明文flagi具有零或一的值,即,指示是正确地估计还是不正确地估计。也就是说,值一意味着应用112正确地估计是否应该将用户添加到第i组,如果不是,则值为零。因此,每个明文flagi能够由1位表示。
对于与质心模型相关联的每个用户组,计算系统MPC1能够返回单个位(flagi)。对于具有一百万个用户组的质心模型,响应大小将是128千字节(KB),其基于请求的所需延迟和请求被提交到MPC集群130的频率是实用的。
应用112基于估计标志来确定是否将用户添加到用户组(626)。对于每个用户组,应用能够计算flagi==(gi+hi==1)。操作“==”表示在两个值相等的情况下返回真的相等运算。如果计算结果为真,则应用112应该加入与质心模型相关联的第i个用户组。
然后,应用112能够从MPC集群130请求应用112应该加入的用户组的用户组标识符。为此,应用112能够利用任何合适的密集隐私信息检索(PIR)算法和实施方式来发起对计算系统MPC1和MPC2的密集隐私信息检索(PIR)。一些实施方式依赖于分布式点函数(DPF)。对于应用112应该加入的第i个用户组,应用112能够生成两个DPF,gi和hi,使得如果j=i,则gi(j)+hi(j)=1,否则gi(j)+hi(j)=0。
应用112能够向计算系统MPC1传送第一请求(630)。第一请求能够包括应用112应该加入的每个用户组的点函数gi。
应用112能够向计算系统MPC2传送第二请求(632)。第二请求能够包括应用112应该加入的每个用户组的点函数hi。
对于每个点函数gi,计算系统MPC1计算并向应用112返回用户组标识符结果的第一秘密份额(634)。应用112能够使用下面的关系式11来计算用户组标识符结果的第一秘密份额。
关系式11:resulti,1=∑jgi(j)×group_idj
对于每个点函数hi,计算系统MPC2计算并向应用112返回用户组标识符结果的第二秘密份额(636)。应用112能够使用下面的关系式12来计算用户组标识符结果的第二秘密份额。
关系式12:resulti,2=∑jhi(j)×group_idj
应用112能够将用户添加到一个或多个用户组(638)。应用112能够使用用户组的第一份额resulti,1和第二份额resulti,2来重建用户应该加入的每个用户组的用户组标识符。例如,如果两个秘密份额是加性秘密份额,则应用112能够计算两个秘密份额的总和以获得用户组的用户组标识符。然后,应用112能够将用户组标识符添加到用户组列表。
在图6的过程600中,MPC集群130中的计算系统都不知道明文的用户组的质心,也不知道应用查询参数,即用户简档,并且也不知道用户将加入的用户组,从而保护用户隐私。
在具有宽松隐私要求的情况下,例如,计算系统MPC1和MPC2能够知道明文的查询结果,计算系统MPC1和MPC2能够从两个秘密份额重建用户组资格eligible_groupi结果,并且如果对应eligible_groupi为真,则仅在查询响应中将用户组标识符Li返回给应用112。
在一些实施方式中,质心模型的训练和质心模型的查询能够由聚合服务执行。聚合服务能够包括MPC集群130并且与内容平台150通信,例如而不是与客户端设备110通信。在这种情况下,当查询应用112应该加入哪些用户组时,出于隐私原因,应用112可以不将用户的用户简档发送到内容平台150以用于转发到MPC集群130。一个选项将是配置内容平台150以将用户组的质心传送到应用112。然而,这能够消耗大量带宽。
另一选项是用于内容平台150基于用户的安全移动ID(例如,FLOC ID)、从第一方cookie接收到的第一方cookie数据和数字组件请求的URL来推断用户组以供使用。然而,这可能不如上述技术那么准确。
图7是示出用于基于用户的用户简档数据和质心模型来确定用户组结果(即,应用112是否应该加入一个或多个用户组)的示例性过程700的流程图。过程700的操作能够例如由MPC集群130实现。过程700的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程700的操作。
接收对用户组标识符的第一请求(702)。MPC集群130的第一计算系统(例如,MPC1)能够从在客户端设备110上运行的应用112接收第一请求。应用112能够向MPC集群130的每个其他计算系统(例如,MPC2)发送相应的第二请求。该请求能够是针对用户要被添加到的用户组的用户组标识符的,例如,用户的用户简档在用户组的质心的阈值距离内的每个用户组。
通常,每个请求能够包括用户的用户简档的用户简档数据。第一请求能够包括第一用户简档数据,并且发送到每个第二计算系统的每个第二请求能够包括相应的第二用户简档数据。用户简档数据能够基于所使用的密码技术而变化。
例如,如果使用MPC过程和水平分区来确定质心,如参考图4所述,则每个请求的用户简档数据能够包括用户的用户简档的相应部分。如果MPC集群130的每个计算系统具有质心的秘密份额,则每个请求的用户简档数据能够包括用户的用户简档的相应秘密份额。在任一种情况下,用户简档数据还能够包括质心模型的模型标识符和阈值距离。
识别对应于模型标识符的用户组集合(704)。例如,内容平台150或数字组件提供者160能够使MPC集群130为用户组集合生成质心模型。MPC集群130中的每个计算系统能够存储识别例如通过将模型标识符与每个用户组标识符链接对应于质心模型的用户组的用户组标识符的数据。第一计算系统能够基于存储的数据来识别用户组集合。每个用户组标识符和模型标识符能够被称为质心模型和用户组标识符对。
对于用户组集合中的每个用户组,识别用户组的质心(706)。当MPC集群130生成质心模型时,MPC集群130能够确定与质心模型相对应的每个用户组的质心。质心的形式能够基于所使用的密码技术而变化。例如,如果使用MPC过程和水平分区来确定质心,如参考图4所述,则MPC集群130的每个计算系统能够具有基于用于生成质心的用户简档的秘密份额的总和的部分(例如,半部)确定的用户组的质心。如果使用秘密份额,则MPC集群130的每个计算系统能够具有用户组的质心的秘密份额。
确定用户组结果(708)。用户组结果指示要向其添加用户的一个或多个用户组。例如,用户组结果能够指示具有在用户的用户简档的阈值距离内的质心的用户组。
传送用户组结果(710)。例如,第一计算系统能够将其用户组结果传送到在客户端设备110上运行的应用112。
第一计算系统能够取决于所使用的密码技术以不同的方式确定用户组结果,并且用户组结果能够基于所使用的密码技术而变化。例如,如果使用水平分区,则第一计算系统能够为用户组集合中的每个用户组确定包括在第一用户简档数据中的用户简档的第一部分是否在先前由第一计算系统确定的用户组的质心的阈值距离内,如参考图5所述。在该示例中,用户组结果能够包括质心在用户的用户简档的阈值距离内的用户组的用户组标识符。每个其他计算系统能够使用其质心和用户简档的接收到的部分来执行类似的过程。每个计算系统能够提供用户组结果,该用户组结果包括质心在用户的用户简档的阈值距离内的用户组的用户组标识符。然后,客户端设备的应用能够基于从每个计算系统接收到的用户组结果来确定要向其添加用户的用户组列表,如参考图5所述。
如果使用秘密份额,则用户组结果能够包括用户组集合中的每个用户组的估计标志,如参考图6所述。用户组的估计标志指示应用是否正确地估计了用户是否要被添加到用户组。应用112能够使用估计标志来确定是否将用户添加到用户组,例如,基于应用112是否估计了应该将用户添加到用户组以及估计是否正确。如果是,则应用112能够向MPC集群130查询与估计标志相对应的用户组标识符。
用于生成和使用k-NN模型的示例性过程
图8是用于训练机器学习模型并且使用机器学习模型将用户添加到用户组的示例性过程800的泳道图。过程800的操作能够例如由客户端设备110、MPC集群130的计算系统MPC1和MPC2以及内容平台150来实现。过程800的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程800的操作。尽管根据两个计算系统MPC集群130描述了过程800和下面的其他过程,但是具有多于两个计算系统的MPC集群也能够用于执行类似的过程。
机器学习模型能够是表示用户的用户简档或用户组的用户简档之间的距离的k-NN模型。当k-NN模型表示用户组的用户简档之间的距离时,能够在使用用户组的质心的模型中表示每个用户组。
内容平台150能够通过请求在客户端设备110上运行的应用112为它们的相应用户生成用户简档并将用户简档的秘密份额和/或加密版本上传到MPC集群130来启动其机器学习模型之一的训练和/或更新。出于本文档的目的,用户简档的秘密份额能够被认为是用户简档的加密版本,因为秘密份额不是明文。在生成中,每个应用112能够存储用户简档的数据,并且响应于从内容平台150接收到请求而生成更新的用户简档。由于用户简档的内容和机器学习模型对于不同的内容平台150是不同的,因此在用户的客户端设备110上运行的应用112能够维护多个用户简档的数据并生成各自特定于特定内容平台的多个用户简档。
在客户端设备110上运行的应用112为客户端设备110的用户构建用户简档(802)。用户的用户简档能够包括与由用户发起的事件和/或能够已经由用户关于电子资源(例如,网页或应用内容)发起的事件相关的数据。事件能够包括电子资源的查看、数字组件的查看、用户与电子资源或数字组件的交互(例如,对电子资源或数字组件的选择)或用户与电子资源或数字组件的交互(例如,对电子资源或数字组件的选择)的缺少、在用户与电子资源交互之后发生的转化和/或与用户和电子资源相关的其他适当事件。由用户进行的用户交互的一些示例能够是与呈现在网页上的特定物品的交互,诸如以下中的一个或多个:(a)点击特定物品的链接,(b)通过例如将物品添加到虚拟购物车或购买物品来完成特定物品的转化,(c)查看特定物品超过预设时间量。特定用户交互的缺少的一些示例能够是用户执行一些交互但缺少后续交互,例如,用户查看数字组件,但不点击;点击数字组件,但不转化(例如,点击以转到结账网页但不购买物品);等等。在不同的实施方式中能够不同地定义转化。例如,在一些实施方式中,转化能够是用户导航到结账页面。在某些实施方式中,转化能够是用户试图购买物品。在其他实施方式中,转化能够是用户购买物品。
用户的用户简档能够特定于内容平台150,或者由内容平台150拥有的选定机器学习模型。例如,如下面参考图9更详细所述,每个内容平台150能够请求应用112生成或更新特定于该内容平台150的用户简档。
用户的用户简档能够是特征向量的形式。例如,用户简档能够是n维特征向量。n个维度中的每个能够对应于特定特征,并且每个维度的值能够是用户的特征的值。例如,一个维度可以用于特定数字组件是否被呈现给用户(或与用户交互)。在该示例中,如果数字组件被呈现给用户(或与用户交互),则该特征的值能够是“1”,或者如果数字组件尚未被呈现给用户(或与用户交互),则该特征的值能够是“0”。用于生成用户的用户简档的示例性过程在图9中示出并在下面描述。
在一些实施方式中,内容平台150可能想要基于附加信号(诸如上下文信号、与特定数字组件相关的信号、或者应用112可能不知道或应用112可能无法访问的用户相关的信号,诸如在用户位置处的当前天气)来训练机器学习模型。例如,如果数字组件在特定上下文中被呈现给用户,则内容平台150可能想要训练机器学习模型以预测用户是否将与特定数字组件交互。在该示例中,对于数字组件向用户的每次呈现,上下文信号能够包括当时客户端设备110的地理位置(如果用户授予权限)、描述与其一起呈现数字组件的电子资源的内容的信号以及描述数字组件的信号,例如,数字组件的内容、数字组件的类型、在电子资源上的何处呈现数字组件等。在另一示例中,一个维度可以用于呈现给用户的数字组件是否是特定类型。在该示例中,该值对于旅行能够是1,对于烹饪能够是2,对于电影能够是3,等等。为了便于后续描述,Pi将表示用户简档和与第i个用户简档相关联的附加信号(例如,上下文信号和/或数字组件级信号)两者。
应用112生成用户的用户简档Pi的份额(804)。在该示例中,应用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]进行加密(806)。在一些实施方式中,应用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(808)。例如,应用112能够将用户简档和标签的加密份额传送到内容平台150。由于使用计算系统MPC1或MPC2的加密密钥对每个份额进行加密,因此内容平台150不能访问用户的用户简档或标签。
内容平台150能够从多个客户端设备接收用户简档的份额和标签的份额。内容平台150能够通过将用户简档的份额上传到计算系统MPC1和MPC2来发起对机器学习模型的训练。尽管在训练过程中可能不使用标签,但是内容平台150能够将标签的份额上传到计算系统MPC1和MPC2,以在评估模型质量或稍后查询模型时使用。
内容平台150将从每个客户端设备110接收到的第一加密份额(例如,PubKeyEncrypt([Pi,1]||[labeli,1],MPC1))上传到计算系统MPC1(810)。类似地,内容平台150将第二加密份额(例如,PubKeyEncrypt([Pi,2]||[labeli,2],MPC2))上传到计算系统MPC2(812)。两个上传能够是批量的,并且能够包括在用于训练机器学习模型的特定时间段期间接收到的用户简档和标签的加密份额。
在一些实施方式中,内容平台150将第一加密份额上传到计算系统MPC1的顺序必须与内容平台150将第二加密份额上传到计算系统MPC2的顺序相匹配。这使得计算系统MPC1和MPC2能够适当地匹配相同秘密的两个份额,例如,相同用户简档的两个份额。
在一些实施方式中,内容平台150可以明确地将相同的伪随机或顺序生成的标识符分配给相同秘密的份额,以便于匹配。虽然一些MPC技术能够依赖于输入或中间结果的随机混洗,但是本文档中描述的MPC技术可以不包括这种随机混洗,并且可以替代地依赖于上传顺序来匹配。
在一些实施方式中,操作808、810和812能够由替代过程代替,其中,应用112直接将[Pi,1]||[labeli,1]上传到MPC1,并将[Pi,2]||[labeli,2]上传到MPC2。该替代过程能够降低内容平台150的基础设施成本以支持操作808、810和812,并且减少开始训练或更新MPC1和MPC2中的机器学习模型的延迟。
在期望基于用户对数字组件的转化来训练模型的某些实施方式中,可以考虑转化的发生经常能够在展示或点击之后很长时间才发生,在这种情况下,保持内容平台150可用于执行其他任务以便优化内容平台150的带宽、存储和处理能够是有利的。在这样的实施方式中,操作808、810和812能够由另一替代过程代替,其中,(i)应用112将用户简档和标签的加密份额连同第一方cookie一起传送到需求方平台(DSP),该需求方平台在一些实施方式中可以是内容平台150的一部分,而在其他实施方式中与内容平台150分离,(ii)DSP然后使用第一方cookie来将用户简档和标签的加密份额与能够特定于转化的交互数据(例如,转化是否在诸如30天的预设时间段内发生)映射(即,关联),以及(iii)DSP将该映射传送到计算系统MPC1或MPC2以训练机器学习模型。如参考操作808、810和812所描述的内容平台150的其他功能能够在这些实施方式中由DSP执行。虽然该描述集中于转化的交互,但该架构和功能性能够被扩展到任何其他交互(例如,展示或点击),或交互的任何组合(例如,展示、点击和/或转化)。
计算系统MPC1和MPC2生成机器学习模型(814)。每次基于用户简档数据来生成新的机器学习模型能够被称为训练会话。计算系统MPC1和MPC2能够基于从客户端设备110接收到的用户简档的加密份额来训练机器学习模型。例如,计算系统MPC1和MPC2能够使用MPC技术以基于用户简档的份额来训练k-NN模型。
为了最小化或至少减少密码计算,并且因此最小化或至少减少在模型训练和推断两者期间为保护用户隐私和数据而置于计算系统MPC1和MPC2上的计算负担,MPC集群130能够使用随机投影技术,例如SimHash,以快速地、安全地且概率性地量化两个用户简档Pi和Pj之间的相似性。能够通过确定表示两个用户简档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的哪一侧。位值一表示正号,而位值零表示负号。
在多步计算的每次结束时,两个计算系统MPC1和MPC2中的每一个生成中间结果,该中间结果包括明文的每个用户简档的位向量、每个用户简档的份额以及每个用户简档的标签的份额。例如,计算系统MPC1的中间结果能够是下表11中所示的数据。计算系统MPC2将具有类似的中间结果,但是具有每个用户简档和每个标签的不同份额。为了添加额外的隐私保护,MPC集群130中的两个服务器中的每一个只能获得明文的m维位向量的半部,例如,计算系统MPC1获得所有m维位向量的前m/2维,计算系统MPC2获得所有m维位向量的后m/2维。
明文的位向量 | P<sub>i</sub>的MPC<sub>1</sub>份额 | label<sub>i</sub>的MPC<sub>1</sub>份额 |
… | … | … |
B<sub>i</sub> | … | … |
B<sub>i+1</sub> | … | … |
… | … | … |
表11
给定单位长度i≠j的两个任意用户简档向量Pi和Pj,已经表明,假设随机投影m的数量足够大,则两个用户简档向量Pi和Pj的位向量Bi和Bj之间的汉明距离以高概率与用户简档向量Pi和Pj之间的余弦距离成比例。
基于上面所示的中间结果并且因为位向量Bi是明文,所以每个计算系统MPC1和MPC2能够通过使用k-NN算法(例如通过训练)来独立地创建相应的k-NN模型。计算系统MPC1和MPC2能够使用相同或不同的k-NN算法。用于训练k-NN模型的示例性过程在图10中示出并在下面描述。一旦k-NN模型被训练,应用112就能够查询k-NN模型以确定是否将用户添加到用户组。
应用112向MPC集群130提交推断请求(816)。在该示例中,应用112将推断请求传送到计算系统MPC1。在其他示例中,应用112能够将推断请求传送到计算系统MPC2。应用112能够响应于来自内容平台150的提交推断请求的请求而提交推断请求。例如,内容平台150能够请求应用112查询k-NN模型以确定是否应该将客户端设备110的用户添加到特定用户组。该请求能够被称为推断请求,以推断是否应该将用户添加到用户组。
为了发起推断请求,内容平台150能够向应用112发送推断请求令牌Minfer。推断请求令牌Minfer使得MPC集群130中的服务器能够验证应用112被授权查询由特定域拥有的特定机器学习模型。如果模型访问控制是可选的,则推断请求令牌Minfer是可选的。推断请求令牌Minfer能够具有在下表12中示出和描述的以下条目。
表12
在该示例中,推断请求令牌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个最近邻用户简档来确定是否将用户添加到用户组。例如,聚合函数能够识别机器学习技术(例如,二元、多类、回归),并且聚合函数参数能够是基于聚合函数。
在一些实施方式中,聚合函数参数能够包括内容平台150正在为该用户查询k-NN模型的用户组的用户组标识符。例如,内容平台150可能想要知道是否将用户添加到与徒步旅行相关并且具有用户组标识符“徒步旅行”的用户组。通常,计算系统MPC1和MPC2能够基于作为用户组的成员的数量k个最近邻(例如,基于它们的标签)来确定是否将用户添加到用户组。
MPC集群130向应用112提供推断结果(818)。在该示例中,接收到查询的计算系统MPC1将推断结果发送到应用112。推断结果能够指示应用112是否应该将用户添加到零个或更多个用户组。例如,用户组结果能够指定用户组的用户组标识符。然而,在该示例中,计算系统MPC1将知道用户组。为了防止这种情况,计算系统MPC1可以计算推断结果的份额,并且计算系统MPC2能够计算相同推断结果的另一份额。计算系统MPC2能够向计算系统MPC1提供其份额的加密版本,其中,份额使用应用112的公钥来加密。计算系统MPC1能够向应用112提供推断结果的其份额和用户组结果的计算系统MPC2的份额的加密版本。应用112能够解密计算系统MPC2的份额并且根据两个份额来计算推断结果。用于查询k-NN模型以确定是否将用户添加到用户组的示例性过程在图11中示出并在下面描述。在一些实施方式中,为了防止计算系统MPC1伪造计算系统MPC2的结果,计算系统MPC2在使用应用112的公钥来加密其结果之前或之后对其结果进行数字签名。应用112使用MPC2的公钥来验证计算系统MPC2的数字签名。
应用112更新用户的用户组列表(820)。例如,如果推断结果是将用户添加到特定用户组,则应用112能够将用户添加到用户组。在一些实施方式中,应用112能够提示用户允许将用户添加到用户组。
应用112传送对内容的请求(822)。例如,应用112能够响应于加载具有数字组件槽的电子资源而向内容平台150传送对数字组件的请求。在一些实施方式中,请求能够包括包含用户作为成员的用户组的一个或多个用户组标识符。例如,应用112能够从用户组列表获得一个或多个用户组标识符,并将(一个或多个)用户组标识符与请求一起提供。在一些实施方式中,能够使用技术来防止内容平台能够将用户组标识符与从其接收到请求的用户、应用112和/或客户端设备112相关联。
内容平台150将内容传送到应用112(824)。例如,内容平台150能够基于(一个或多个)用户组标识符来选择数字组件,并将数字组件提供给应用112。在一些实施方式中,内容平台150与应用112协作地基于(一个或多个)用户组标识符来选择数字组件,而不将(一个或多个)用户组标识符泄露到应用112之外。
应用112显示或以其他方式实现接收到的内容(826)。例如,应用112能够在电子资源的数字组件槽中显示接收到的数字组件。
用于使用k-NN模型来生成用户简档的示例性过程
图9是示出用于生成用户简档并且将用户简档的份额发送到MPC集群的示例性过程900的流程图。过程900的操作能够例如由图1的客户端设备110实现,例如由在客户端设备110上运行的应用112实现。过程900的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程900的操作。
在用户的客户端设备110上执行的应用112接收事件的数据(902)。事件能够是例如在客户端设备110处呈现电子资源、在客户端设备110处呈现数字组件、在客户端设备110处与电子资源或数字组件的用户交互、或数字组件的转化、或与呈现的电子资源或数字组件的用户交互或转化的缺少。由用户进行的用户交互的一些示例能够是与呈现在网页上的特定物品的交互,诸如以下中的一个或多个:(a)点击特定物品的链接,(b)通过例如将物品添加到虚拟购物车或购买物品来完成特定物品的转化,(c)查看特定物品超过预设时间量。特定用户交互的缺少的一些示例能够是用户执行一些交互但缺少后续交互,例如,用户查看数字组件,但不点击;点击数字组件,但不转化(例如,点击以转到结账网页但不购买物品);等等。在不同的实施方式中能够不同地定义转化。例如,在一些实施方式中,转化能够是用户导航到结账页面。在某些实施方式中,转化能够是用户试图购买物品。在其他实施方式中,转化能够是用户购买物品。当事件发生时,内容平台150能够向应用112提供与事件相关的数据,以用于在生成用户的用户简档中使用。
应用112能够为每个内容平台150生成不同的用户简档。也就是说,用户的和用于特定内容平台150的用户简档可以仅包括从特定内容平台150接收到的事件数据。这通过不与内容平台共享与其他内容平台的事件相关的数据来保护用户隐私。在一些实施方式中,根据内容平台150的请求,应用112可以为由内容平台150拥有的每个机器学习模型生成不同的用户简档。基于设计目标,不同的机器学习模型可能需要不同的训练数据。例如,第一模型可以被用于确定是否将用户添加到用户组。第二模型可以被用于预测用户是否将与数字组件交互。在该示例中,第二模型的用户简档能够包括第一模型的用户简档不具有的附加数据,例如,用户是否与数字组件交互。
内容平台150能够以简档更新令牌Mupdate的形式发送事件数据。简档更新令牌Mupdate具有上表1中示出和描述的以下条目。
模型标识符识别机器学习模型,例如k-NN模型,对于该机器学习模型,用户简档将被用于训练或被用于进行用户组推断。简档记录是n维特征向量,其包括特定于事件的数据,例如,事件的类型、电子资源或数字组件、事件发生的时间和/或内容平台150想要在训练机器学习模型和进行用户组推断中使用的其他适当的事件数据。使用内容平台150的私钥基于七个条目来生成数字签名。
在一些实施方式中,为了在传输期间保护更新令牌Mupdate,内容平台150在将更新令牌Mupdate发送到应用112之前对更新令牌Mupdate进行加密。例如,内容平台150能够使用应用的公钥(例如,PubKeyEnc(Mupdate,application_public_key))来加密更新令牌Mupdate。
在一些实施方式中,内容平台150能够将事件数据发送到应用112,而不以简档更新令牌Mupdate的形式编码事件数据或更新请求。例如,源自在应用112内部运行的内容平台150的脚本可以经由脚本API直接将事件数据和更新请求传送到应用112,其中,应用112依赖于基于W3C起源的安全模型和/或HTTPS来保护事件数据和更新请求免受伪造或泄露。
应用112存储事件的数据(904)。如果事件数据被加密,则应用112能够使用与用于加密事件数据的公钥相对应的其私钥来解密事件数据。如果事件数据以更新令牌Mupdate的形式被发送,则应用112能够在存储事件数据之前验证更新令牌Mupdate。应用112能够通过以下操作来验证更新令牌Mupdate:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在进行验证的当前时间的阈值时间量内。如果更新令牌Mupdate有效,则应用112能够例如通过存储n维简档记录来存储事件数据。如果任何验证失败,则应用112可以例如通过不存储事件数据来忽略更新请求。
对于每个机器学习模型,例如,对于每个独特模型标识符,应用112能够存储该模型的事件数据。例如,应用112能够针对每个独特模型标识符维护包括一组n维特征向量(例如,更新令牌的简档记录)的数据结构,并且针对每个特征向量维护过期时间。模型标识符的示例性数据结构在上表2中示出。
在接收到有效的更新令牌Mupdate时,应用112能够通过将更新令牌Mupdate的特征向量和过期时间添加到数据结构来更新包括在更新令牌Mupdate中的模型标识符的数据结构。周期性地,应用112能够从数据结构中清除过期的特征向量以减小存储大小。
应用112确定是否生成用户简档(906)。例如,应用112可以响应于来自内容平台150的请求而生成特定机器学习模型的用户简档。该请求可以是生成用户简档并将用户简档的份额返回给内容平台150。在一些实施方式中,应用112可以将所生成的用户简档直接上传到MPC集群130,例如,而不是将它们发送到内容平台150。为了确保生成和返回用户简档的份额的请求的安全性,内容平台150能够向应用112发送上传令牌Mupload。
上传令牌Mupload能够具有与更新令牌Mupdate类似的结构,但是具有不同的操作(例如,“更新服务器”而不是“累积用户简档”)。上传令牌Mupload还能够包括用于操作延迟的附加条目。当应用112累积更多事件数据(例如,更多特征向量)时,操作延迟能够指示应用112延迟计算和上传用户简档的份额。这使得机器学习模型能够在一些关键事件(例如,加入用户组)之前和之后立即捕获用户事件数据。操作延迟能够指定延迟时间段。在该示例中,能够使用内容平台的私钥,基于表1中的其他七个条目和操作延迟来生成数字签名。内容平台150能够以与更新令牌Mupdate(例如,PubKeyEnc(Mupload,application_public_key))类似的方式使用应用的公钥来加密上传令牌Mupload,以在传输期间保护上传令牌Mupload。
应用112能够接收上传令牌Mupload,如果上传令牌Mupload被加密,则对上传令牌Mupload进行解密,并验证上传令牌Mupload。该验证能够类似于验证更新令牌Mupdate的方式。应用112能够通过以下操作来验证上传令牌Mupload:(i)使用与用于生成数字签名的内容平台150的私钥相对应的内容平台150的公钥来验证数字签名,以及(ii)确保令牌创建时间戳不陈旧,例如,由时间戳指示的时间在进行验证的当前时间的阈值时间量内。如果上传令牌Mupload有效,则应用112能够生成用户简档。如果任何验证失败,则应用112可以例如通过不生成用户简档来忽略上传请求。
在一些实施方式中,内容平台150能够请求应用112上传用户简档,而不以简档上传令牌Mupload的形式编码上传请求。例如,源自在应用112内部运行的内容平台150的脚本可以经由脚本API直接将上传请求传送到应用112,其中,应用112依赖于基于W3C起源的安全模型和/或HTTPS来保护上传请求免受伪造或泄露。
如果做出不生成用户简档的确定,则过程902能够返回到操作902并等待来自内容平台150的附加事件数据。如果做出生成用户简档的确定,则应用112生成用户简档(908)。
应用112能够基于存储的事件数据,例如存储在表2所示的数据结构中的数据,来生成用户简档。应用112能够基于包括在请求中的模型标识符(例如,上传令牌Mupload的条目1的内容平台eTLD+1域和条目2的模型标识符)来访问适当的数据结构。
应用112能够通过在尚未过期的研究时段中聚合数据结构中的n维特征向量来计算用户简档。例如,用户简档可以是在尚未过期的研究时段中的数据结构中的n维特征向量的平均值。结果是表示简档空间中的用户的n维特征向量。可选地,应用112可以例如使用L2归一化将n维特征向量归一化到单位长度。内容平台150可以指定可选的研究时段。
在一些实施方式中,衰减率能够用于计算用户简档。由于可能存在使用MPC集群130来训练机器学习模型的许多内容平台150,并且每个内容平台150可以具有多个机器学习模型,因此存储用户特征向量数据可能导致显著的数据存储需求。为了生成用于训练机器学习模型的用户简档的目的,使用衰减技术能够显著减少存储在每个客户端设备110处的数据量。
假设,对于给定的机器学习模型,存在k个特征向量{F1,F2,…Fk},每个特征向量是n维向量和它们的对应存在时间(record_age_in_secondsi)。应用112能够使用下面的关系式13来计算用户简档:
在该关系式中,参数record_age_in_secondsi是简档记录已经被存储在客户端设备110处的以秒为单位的时间量,而参数decay_rate_in_seconds是(例如,在更新令牌Mupdate的条目6中接收到的)以秒为单位的简档记录的衰减率。以这种方式,更新的特征向量携带更多的权重。这还使得应用112能够避免存储特征向量,并且仅利用恒定存储来存储简档记录。应用112仅需要为每个模型标识符存储n维向量P和时间戳user_profile_time,而不是为每个模型标识符存储多个单独的特征向量。
为了初始化n维向量用户简档P和时间戳,应用能够将向量P设置为n维的向量,其中,每个维度的值为零,并且将user_profile_time设置为纪元。为了在任何时间用新的特征向量Fx更新用户简档P,应用112能够使用下面的关系式14:
当利用关系式14来更新用户简档时,应用112还能够将用户简档时间更新为当前时间(current_time)。注意,如果应用112用上述衰减率算法计算用户简档,则省略操作904。。
应用112生成用户简档的份额(910)。应用112能够使用伪随机函数来将用户简档Pi(例如,n维向量P)拆分成份额。也就是说,应用112能够使用伪随机函数PRF(Pi)来生成用户简档Pi的两个份额{[Pi,1],[Pi,2]}。精确拆分能够取决于由应用112使用的秘密共享算法和密码库。在一些实施方式中,应用使用Shamir秘密共享方案。如果正在提供一个或多个标签的份额,则应用112也能够生成标签的份额。
应用112对用户简档Pi的份额{[Pi,1],[Pi,2]}进行加密(912)。例如,如上所述,应用112能够生成包括用户简档和标签的份额的合成消息,并加密合成消息以获得加密结果PubKeyEncrypt([Pi,1]||[labeli,1],MPC1)和PubKeyEncrypt([Pi,2]||[labeli,2],MPC2)。使用MPC集群130的加密密钥对份额进行加密防止内容平台150能够访问明文的用户简档。应用112将加密份额传送到内容平台(914)。注意,如果应用112将秘密份额直接传送到计算系统MPC1和MPC2,则省略操作914。
用于生成和使用k-NN模型的示例性过程
图10是示出用于生成机器学习模型的示例性过程1000的流程图。过程1000的操作能够例如由图1的MPC集群130实现。过程1000的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程1000的操作。
MPC集群130获得用户简档的份额(1002)。内容平台150能够通过将用户简档的份额传送到MPC集群130来请求MPC集群130训练机器学习模型。内容平台150能够在给定时间段内访问从客户端设备110接收到的用于机器学习模型的加密份额,并且将那些份额上传到MPC集群130。
例如,内容平台150能够向计算系统MPC1传送针对每个用户简档Pi的用户简档的加密的第一份额和其标签的加密的第一份额(例如,PubKeyEncrypt([Pi,1]||[labeli,1])。类似地,内容平台150能够向计算系统MPC2传送针对每个用户简档Pi的用户简档的加密的第二份额和其标签的加密的第二份额(例如,PubKeyEncrypt([Pi,2]||[labeli,2])。
在应用112直接向MPC集群130发送用户简档的秘密份额的一些实施方式中,内容平台150能够通过向MPC集群130传送训练请求来请求MPC集群130训练机器学习模型。
计算系统MPC1和MPC2创建随机投影平面(1004)。计算系统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都不能访问明文的随机投影平面。在其他实施方式中,能够使用秘密共享算法在随机投影结果上应用随机位翻转模式,如可选操作1006-1008中所描述的。
为了说明如何经由秘密份额来翻转位,假定存在两个秘密x和y,它们的值以相等概率为零或一。如果y==0,则等式运算[x]==[y]将翻转x的位,并且如果y==1,则将保持x的位。在该示例中,运算将以50%的概率随机地翻转位x。该运算能够需要两个计算系统MPC1和MPC2之间的远程过程调用(RPC),并且轮数取决于数据大小和选择的秘密共享算法。
每个计算系统MPC1和MPC2创建秘密m维向量(1006)。计算系统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技术来计算位翻转模式的份额(1008)。计算系统MPC1和MPC2能够使用具有计算系统MPC1和MPC2之间的多次往返的安全份额MPC等式测试来计算位翻转模式的份额。位翻转模式能够是基于上述运算[x]==[y]。也就是说,位翻转模式能够是{S1==T1,S2==T2,…Sm==Tm}。令每个STi=(Si==Ti)。每个STi具有零或一的值。在MPC运算完成之后,计算系统MPC1具有位翻转模式的第一份额{[ST1,1],[ST2,1],…[STm,1]},并且计算系统MPC2具有位翻转模式的第二份额{[ST1,2],[ST2,2],…[STm,2]}。每个STi的份额使得两个计算系统MPC1和MPC2能够以对两个计算系统MPC1和MPC2中的任一个不透明的方式翻转位向量中的位。
每个计算系统MPC1和MPC2将每个用户简档的其份额投影到每个随机投影平面上(1010)。也就是说,对于计算系统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重建位向量(1012)。计算系统MPC1和MPC2能够基于具有完全相同大小的矩阵R和R’来重建用户简档的位向量。例如,计算系统MPC1能够发送矩阵R的列的一部分,并且计算系统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生成机器学习模型(1014)。计算系统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能够查询模型以对用户的用户组进行推断。
用于使用k-NN模型来推断用户组的示例性过程
图11是示出用于使用机器学习模型将用户添加到用户组的示例性过程1100的流程图。过程1100的操作能够例如由图1的MPC集群130和客户端设备110(例如,在客户端设备110上运行的应用112)来实现。过程1100的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程1100的操作。
MPC集群130接收对给定用户简档的推断请求(1102)。在用户的客户端设备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个最近邻(1104)。计算系统MPC1能够使用给定用户简档的第一份额[Pi,1]来计算给定用户简档的位向量的其半部。为了生成位向量,计算系统MPC1能够使用图10的过程1000的操作1010和1012。也就是说,计算系统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利用水平分区来重建位向量,如图10中的操作1012中所述。在重建完成之后,计算系统MPC1具有给定用户简档的整体位向量的前半部,并且计算系统MPC2具有给定用户简档的整体位向量的后半部。
每个计算系统MPC1和MPC2使用给定用户简档的位向量的其半部以及其k-NN模型来识别k’个最近邻用户简档,其中,k’=ɑ×k,其中,ɑ是基于实际生产数据和统计分析凭经验确定的。例如,ɑ=3或另一适当的数。计算系统MPC1能够计算整体位向量的前半部与k-NN模型的每个用户简档的位向量之间的汉明距离。然后,计算系统MPC1基于所计算的汉明距离来识别k’个最近邻,例如,具有最低汉明距离的k’个用户简档。换句话说,计算系统MPC1基于给定用户简档的份额和使用多个用户简档训练的k最近邻模型来识别最近邻用户简档集合。以表格形式的示例结果在下表13中示出。
行ID | 汉明距离(以明文) | 用户简档的份额 | 标签的份额 |
i | d<sub>i1</sub> | [P<sub>i1</sub>] | [label<sub>i1</sub>] |
… | … | … | … |
表13
在表13中,每行用于特定最近邻用户简档,并且包括该用户简档与由计算系统MPC1计算的给定用户简档之间的汉明距离。用于特定最近邻用户简档的行还包括该用户简档的第一份额和与该用户简档相关联的标签的第一份额。
类似地,计算系统MPC2能够计算整体位向量的后半部与k-NN模型的每个用户简档的位向量之间的汉明距离。然后,计算系统MPC2基于所计算的汉明距离来识别k’个最近邻,例如,具有最低汉明距离的k’个用户简档。以表格形式的示例结果在下表14中示出。
行ID | 汉明距离(以明文) | 用户简档的份额 | 标签的份额 |
j | d<sub>j2</sub> | [P<sub>j2</sub>] | [label<sub>j2</sub>] |
… | … | … | … |
表14
在表14中,每行用于特定最近邻用户简档,并且包括该用户简档与由计算系统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个最近邻。然而,ɑ的较大值导致高计算成本。
做出是否将用户添加到用户组的确定(1106)。能够基于k个最近邻简档以及其相关联的标签来做出该确定。该确定还是基于所使用的聚合函数和该聚合函数的任何聚合参数。聚合函数能够包括例如二元分类、回归(例如,使用算术平均值或均方根)、多类分类以及加权k-NN。确定是否将用户添加到用户组的每种方式能够包括MPC集群130与在客户端110上运行的应用112之间的不同交互,如下面更详细所述。
如果做出不将用户添加到用户组的确定,则应用112可以不将用户添加到用户组(1108)。如果做出将用户添加到用户组的确定,则应用112能够例如通过更新存储在客户端设备110处的用户组列表以包括用户组的用户组标识符来将用户添加到用户组(1110)。
使用k-NN模型的示例性二元分类推断技术
对于二元分类,推断请求能够包括threshold、Ltrue和Lfalse作为聚合函数参数。标签值是布尔类型,即真或假。threshold参数能够表示必须具有真值标签以便将用户添加到用户组Ltrue的k个最近邻简档的阈值百分比。否则,用户将被添加到用户组Lfalse。在一种方法中,如果具有为真的标签值的最近邻用户简档的数量大于threshold和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),其中,总和由下面的关系式15表示:
关系式15:sum_of_labels=∑i∈{id1,...idk}labeli
为了确定总和,计算系统MPC1向计算系统MPC2发送ID(即,{id1,…idk})。计算系统MPC2能够验证ID中的行标识符的数量大于阈值以强制执行k匿名。然后,计算系统MPC2能够使用下面的关系式16来计算标签的总和的第二份额[sum_of_labels2]:
关系式16:[sum_of_labels2]=∑i∈{id1,...idk}[labeli,2]
计算系统MPC1还能够使用下面的关系式17来计算标签的总和的第一份额[sum_of_labels1]:
关系式17:[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能够向计算系统MPC1返回推断结果的加密的第二份额(PubKeyEncrypt(Lresult,2],application_public_key))或该结果的数字签名版本。
类似地,计算系统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能够基于两个份额来计算推断结果,如上所述。
使用k-NN模型的示例性多类分类推断技术
对于多类分类,与每个用户简档相关联的标签能够是分类特征。内容平台150能够指定将任何可能的分类值映射到对应用户组标识符的查找表。查找表能够是推断请求中包括的聚合函数参数之一。
在找到的k个最近邻内,MPC群集130找到最常见的标签值。然后,MPC集群130能够在查找表中找到与最常见的标签值相对应的用户组标识符,并且例如通过将用户组标识符添加到存储在客户端设备110处的用户组列表来请求应用112将用户添加到与用户组标识符相对应的用户组。
类似于二元分类,可能优选的是向计算系统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能够计算第j个标签[lj,2]的第二频率份额[frequencyj,2],其使用下面的关系式18定义。
类似地,计算系统MPC1计算第j个标签[lj,1]的第一频率份额[frequencyj,1],其使用下面的关系式19定义。
假定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))。如上所述,能够对第二份额进行数字签名以防止计算系统MPC1伪造计算系统MPC2的响应。然后,如上所述,应用112能够基于两个份额来计算推断结果,并且将用户添加到由推断结果标识的用户组。
示例性回归推断技术
为了回归,与每个用户简档P相关联的标签必须是数字的。内容平台150能够指定阈值的有序列表(例如,-∞<t0<t1<…<tn<∞)和用户组标识符的列表(例如,{L0,L1,…Ln,Ln+1})。另外,内容平台150能够指定聚合函数,例如算术平均值或均方根。
在找到的k个最近邻内,MPC集群130计算标签值的平均值(result),然后使用result来查找映射以找到推断结果Lresult。例如,MPC集群130能够使用下面的关系式20以基于标签值的平均值来识别标签:
关系式20:
如果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。然后,计算系统MPC1例如通过向应用112发送包括推断结果Lresult的推断响应来请求应用112将用户添加到与推断结果Lresult相对应的用户组。
类似于上述的其它分类技术,推断结果Lresult能够对计算系统MPC1和MPC2隐藏。为此,来自应用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能够使用关系式20将平均值与阈值进行比较,以识别与平均值相对应的标签,并将第一份额[Lresult,1]设置为所识别的标签。类似地,计算系统MPC2能够使用关系式20将平均值与阈值进行比较,以识别与平均值相对应的标签,并将第二份额[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能够计算 然后,MPC集群130将对在且仅在acci==1的情况下返回Li,并且在use_default==1的情况下返回Ln+1。该条件能够在下面的关系式21中表示。
对应密码实施方式能够由下面的关系式22和23表示。
这些计算不需要计算系统MPC1和MPC2之间的任何往返计算。计算系统MPC1能够向应用112提供结果的两个份额(例如,[Lresult,1]和[Lresult,2]),其中,第二份额如上所述被加密并且可选地被数字签名。以这种方式,应用112能够确定推断结果Lresult,而无需计算系统MPC1或MPC2得知关于即时或最终结果的任何内容。
对于均方根,计算系统MPC1向计算系统MPC2发送ID(即,{id1,…idk})。计算系统MPC2能够验证ID中的行标识符的数量大于阈值以强制执行k匿名。计算系统MPC2能够使用下面的关系式24来计算sum_of_square_labels参数的第二份额(例如,标签值的平方和)。
类似地,计算系统MPC1能够使用下面的关系式25来计算sum_of_square_labels参数的第一份额。
假设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然后都能够使用关系式20将平均值与阈值进行比较,以识别与平均值相对应的标签,并将第一份额[Lresult,1]设置为所识别的标签。类似地,计算系统MPC2能够使用关系式20将平均值与阈值进行比较,以识别与平均值相对应的标签,并将第二份额[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(抛物线)核函数。汉明距离和权重两者都能够以明文计算。
k-NN模型中的邻居的定义的改进
在一些实施方式中,k个最近邻指的是在高维空间中与进行查询的应用(例如浏览器)的用户最相似的k个用户,如上所述。然而,用于训练或部署k-NN模型的算法能够与如何定义邻居无关。因此,在一些附加实施方式中,术语邻居能够指一组用户,其中,高维空间中的点是用户组而不是用户。在该示例中,每个用户组能够由其质心表示。
基于这样的用户组的k-NN模型能够有利地没有其中用户在高维空间中形成不同点的k-NN模型那么复杂,因为通常存在比用户数量少得多的用户组数量。例如,内容平台能够具有几十亿个用户,但几百万个用户组;在这种情况下,在每个邻居被定义为用户组而不是用户的情况下训练k-NN模型能够将模型缩小1000倍。模型的这种缩小能够有利地需要较低的数据存储需求来存储数据(在此是用户组和相关联的数据,诸如不同元素之间的映射)以及更快的处理来确定是否将用户添加到用户组。
为了实现其中高维空间中的每个点是相应用户组的k-NN模型,如下建立高维点中的点。两个计算系统MPC1和MPC2评估每个用户组以确定每个用户组中的用户数量。如果列表中的用户数量小于预设阈值,则该列表不被认为是高维空间中的点。这能够帮助确定高维空间中的点仅由具有多于预设数量的用户(例如,100个用户、1000个用户或任何其他阈值数量的用户)的列表占据。这能够通过确保用户组不以特定用户为目标来保护用户隐私。
一旦建立了列表,两个计算系统MPC1和MPC2就能够基于用户组中的用户数量来确定每个用户组的质心。质心能够被定义为平均值,如上所述,但是是针对用户组中的所有用户计算的。如上所述的平均值涉及组中的用户的所有用户简档的总和除以组中的用户数量的计算。为了确定该平均值以确定质心,两个计算系统MPC1和MPC2能够具有如从用户的客户端设备接收到的每个用户简档的秘密份额。例如,每个客户端设备能够生成用户简档的两个或更多个秘密份额,并且在确定质心之前向每个计算系统发送相应秘密份额。在一些实施方式中,将每个用户简档中的信息的不同子集提供给每个计算系统,使得在被发送到每个计算系统的用户简档数据中不存在重叠。用于确定质心的平均值的计算可能需要MPC集群130与客户端设备110之间的数据的来回,并且特定数据的这种来回可以基于正在实现的特定秘密共享算法而变化。能够如上所述地计算质心(例如,参见图1的讨论)。
每个用户组的这种质心形成高维空间中的点。对于进行查询的每个应用,k个最近邻由该高维空间内的k个点(其表示k个用户组)表示。每个邻居是相应用户组。上面参考图8-11提到的其他建模方面和技术能够用于训练和部署这样的k-NN模型,不同之处在于在此高维空间中的每个点(其表示邻居)是用户组。
计算系统MPC1和MPC2能够使用若干可能的机器学习技术中的一种(诸如多类分类)以基于k个最近邻用户简档来确定是否将用户添加到用户组的组中。与在其中高维空间中的点表示用户的上述实施方式中使用的更多机器学习技术(包括回归和二元分类)不同,用于其中每个用户组形成高维空间中的点的实施方式的机器学习技术可以排除回归或二元分类。
向用户添加基于交互的权重
对于数字组件提供者160,所有用户的交互(例如,查看、点击和/或转化)可能不具有相等的价值,并且一些用户的交互可能比其他用户的相同交互更重要。例如,看起来具有较高购买能力(例如,凭借生活在昂贵的邮政编码区、在过去的预设时间量内花费更多等)的用户的特定交互(例如,查看、点击或转化)可能比看起来具有较低购买能力的另一用户的特定交互更重要。
对于其中高维空间中的每个点是相应用户组的模型,在模型正在被训练的同时,通过向与促销更昂贵产品的数字组件交互的用户分配较高的基于交互的权重,并且向与促销更便宜产品的数字组件交互的用户分配较低的基于交互的权重,在质心的计算期间考虑基于交互的重要性的这种变化。在一些实施方式中,基于其他业务目标来确定权重。上面将质心计算描述为所有用户的平均值。然而,在此,质心被计算为所有用户的加权平均值。加权平均值是加权值的总和除以权重的总和。
对于其中高维空间中的每个点是用户的模型,在模型已经被训练之后并且当模型被用于预测时,考虑基于交互的重要性。对于该模型,由于所使用的算法,用于考虑交互的重要性的变化的定时(即,在预测期间,其发生在模型的训练之后)不同于用于其中高维空间中的每个点是用户的模型的定时(即,在质心的计算之后)。在其中高维空间中的每个点是用户的该模型中,如上所述地实现该模型,使得该模型做出用户被分配了特定类别或用户组的预测。基于交互的重要性能够通过两种方式来考虑,其能够单独地或组合地实现。
在第一种方式下,如果少于预设量的最近邻是该用户组的一部分,则可以从所分配的用户组中排除该用户。例如,如果10个最近邻中只有3个或更少的邻居是用户组的一部分,则将该用户从该分配的组中排除。
在第二种方式下,基于每个用户的交互为该用户分配权重(例如,更大权重用于与促销昂贵产品的数字组件的交互,而更小权重用于与促销廉价产品的数字组件的交互),并且如果权重与作为该用户组的一部分的最近邻的预设量的数学乘积小于阈值,则将用户从所分配的组中排除。例如,如果阈值是4,则用户的仅2个邻居是所分配的组的一部分(这将在上述第一种方式下将用户从所分配的组中排除),并且分配给用户的权重是3,则在该第二种方式下将不从所分配的组中排除用户,因为权重与作为该用户组的一部分的最近邻的预设量的数学乘积——即,通过将3乘以2计算的6——超过阈值4。
分配给用户的权重能够由需求方平台(DSP)指定,该需求方平台能够是内容平台150的一部分。在一些实施方式中,权重能够被定义为或考虑由用户与之交互(例如,通过展示、点击和/或转化)的数字组件响应于用户与促销该产品的数字组件的交互而促销的产品的购买价格。在一些实施方式中,权重能够被定义为或考虑要在这种产品上获得的利润。在某些实施方式中,能够基于频率度量(例如,权重被定义为用户购买价格大于预设值的产品的次数)和/或新近度度量(例如,权重被定义为在过去的预设时间量内购买产品的次数)来定义权重。DSP可以以任何其他方式定义权重。
DSP可以通过将权重提供给在应用(例如浏览器)内部运行的脚本来将用户的权重提供给MPC集群130以用于建模计算,包括预处理或后处理计算。脚本被配置为在它将用户的用户简档上传到MPC集群130时向MPC集群130提供权重或脚本在它将用户的用户简档上传到MPC集群130时向MPC集群130提供权重。脚本能够以秘密份额或纯文本发送权重,这取决于由架构施加的安全要求。例如,因为权重仅仅是没有太多附加数据的数,所以在一些实施方式中,安全性可以不会因以纯文本发送权重而受损。在其他实施方式中,权重也可以在秘密份额中传输以进一步改善隐私。
图12是示出用于训练和部署k-NN模型以有效地将用户分类到一个或多个相应用户组中的示例性过程的流程图。能够使用个体用户的用户简档或用户组的质心来训练k-NN模型。
在训练k-NN模型之前,训练数据能够由MPC集群130预处理。例如,如果k-NN模型是基于用户组,则MPC集群130能够计算每个用户组的质心。另外,MPC集群130能够计算每个用户组的一个或多个性能度量。如上所述,性能度量能够包括交互率和转化率。当使用权重时,MPC集群130能够使用权重来计算性能度量,如上所述。
为了计算用户组的用户交互率,MPC集群130能够为用户组中的用户确定为其训练模型的一个或多个数字组件被显示给用户组中的用户的总次数以及由用户组中的用户与数字组件的用户交互的总次数。MPC集群130能够通过将用户交互的总数除以(一个或多个)数字组件被显示给用户组中的用户的总次数来确定商作为用户交互率。
为了计算用户组的转化率,MPC集群130能够确定由用户组的用户进行的转化的总数。MPC集群130能够通过将转化总数除以(一个或多个)数字组件被显示给用户组中的用户的总次数来确定商作为转化率。
MPC集群130的第一MPC系统能够从客户端设备110上的应用112接收推断请求,该推断请求包括应用112的用户的给定用户简档的第一份额和性能阈值(1202)。MPC集群130的一个或多个第二MPC系统能够各自接收给定用户简档的对应第二份额。
每个推断请求能够包括用户简档的份额、用于推断请求的机器学习模型的标识符、使用机器学习模型识别的数量k个最近邻以及用于在推断中使用的阈值性能度量。在一些实施方式中,推断请求还能够包括模型的所有者的域(例如,所有者的eTLD+1)和推断请求的其余内容的数字签名。使用数字签名确保从适当的客户端设备110接收到请求,并且在生成请求之后不修改推断请求的内容。
第一MPC系统能够通过与MPC集群130内的一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别用户简档的k个最近邻集合(1204)。MPC集群130能够使用推断请求中包括的k的值以与参考图11描述的类似的方式识别最近邻集合。
第一MPC系统130能够从最近邻集合中选择具有满足性能阈值的性能度量的一个或多个最近邻(1206)。这能够基于查询中包括的性能度量并且基于如何训练k-NN模型而变化。
如果使用用户组而不是个体用户的用户简档来训练k-NN模型,则第一MPC系统能够在最近邻集合中识别具有满足性能阈值的性能度量的每个用户组。也就是说,第一MPC系统能够将k个用户组中的每个用户组的性能度量与阈值性能度量进行比较,以确定性能度量是否满足或超过阈值性能度量。
如果使用用户简档而不是用户组来训练k-NN模型,则第一MPC系统能够识别包括k个用户简档中的至少一个用户简档作为成员的用户组。例如,考虑k的值为三,其中,用户A、B和C是推断请求的用户简档的最近邻。如果用户A是组1和2的成员,用户B是组2的成员,并且用户C是组3、4和5的成员,则该示例中的用户组将是1、2、3、4和5,因为这些组中的每一个都包括k个最近邻中的至少一个成员。
对于每个组,第一MPC系统计算组中的用户简档的聚合性能度量。如果阈值性能度量是用户交互率,则第一MPC系统能够例如通过将组中的用户的用户交互的数量除以(一个或多个)数字组件被显示给组中的用户的总次数来计算用户简档的(一个或多个)数字组件的用户交互率。如果阈值性能度量是转化率,则第一MPC系统能够例如通过将组中对应的用户的转化次数除以(一个或多个)数字组件被显示给组中的用户的总次数来计算组中的用户的(一个或多个)数字组件的转化率。在计算性能度量之后,第一MPC系统能够将所计算的性能度量与阈值性能度量进行比较。然后,第一MPC系统能够确定哪些组具有满足或超过阈值性能度量的性能度量。每个第二MPC系统能够执行相同的过程以识别满足阈值性能度量的用户组。
第一MPC系统能够将表示一个或多个最近邻的数据传送到应用112(1208)。例如,第一MPC系统能够传送表示具有满足或超过阈值性能度量的性能度量的每个用户组的数据。类似地,每个第二MPC系统能够传送表示具有满足或超过阈值性能度量的性能度量的每个用户组的数据。
用户简档可以由应用112生成。用户简档能够包括指示应用112的用户与在应用112上呈现的数字内容之间的交互的数据。交互能够包括转化和转化的缺少。
机器学习模型能够是最近邻模型。最近邻模型的最近邻由与对应用户组相关联的相应质心表示。第一MPC系统能够向对应用户组的每个用户分配权重以计算相应质心。权重能够是基于用户的交互。每个用户组的质心能够是由作为用户组的成员的用户的用户简档的平均值表示的中心。
机器学习模型能够是质心模型或最近邻模型中的一个或多个。例如,k-NN能够用于将用户分类为用户组或列表,并且质心模型能够用于预处理用户组方法的数据。
每个最近邻的性能度量能够包括与对应于最近邻的一个或多个数字组件的用户交互率或对应于最近邻的一个或多个数字组件的转化率中的至少一个。
机器学习模型能够包括k最近邻模型。在一些实施方式中,k最近邻模型中的每个邻居能够表示用户的用户简档。在某些实施方式中,k最近邻模型中的每个邻居能够表示多个用户的用户组。
图13是能够用于执行上述操作的示例计算机系统1300的框图。系统1300包括处理器1310、存储器1320、存储设备1330和输入/输出设备1340。组件1310、1320、1330和1340中的每一个都能够例如使用系统总线1350来互连。处理器1310能够处理用于在系统1300内执行的指令。在一些实施方式中,处理器1310是单线程处理器。在另一实施方式中,处理器1310是多线程处理器。处理器1310能够处理存储在存储器1320或存储设备1330中的指令。
存储器1320存储系统1300内的信息。在一个实施方式中,存储器1320是计算机可读介质。在一些实施方式中,存储器1320是易失性存储器单元。在另一实施方式中,存储器1320是非易失性存储器单元。
存储设备1330能够为系统1300提供大容量存储。在一些实施方式中,存储设备1330是计算机可读介质。在各种不同的实施方式中,存储设备1330能够包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或一些其他大容量存储设备。
输入/输出设备1340为系统1300提供输入/输出操作。在一些实施方式中,输入/输出设备1340能够包括以下各项中的一项或多项:网络接口设备,例如以太网卡,串行通信设备,例如RS-232端口,和/或无线接口设备,例如802.11卡。在另一实施方式中,输入/输出设备能够包括被配置成接收输入数据并将输出数据发送到外部设备1360(例如,键盘、打印机和显示设备)的驱动设备。然而,也能够使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图13中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式能够在其他类型的数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。
本说明书中描述的主题和操作的实施方式能够在数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施方式能够被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或介质)上以用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器装置,以用于由数据处理装置执行。计算机存储介质能够是计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质能够是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也能够是一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。
本说明书中描述的操作能够被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还能够包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)能够用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序能够被存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序能够被部署以在一个计算机上或位于一个站点或跨多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也能够由专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令来执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传递数据,或两者。然而,计算机不需要有这样的设备。此外,计算机能够被嵌入在另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等等。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路来补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施方式能够在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从应用(例如浏览器)接收到的请求,向用户的客户端设备上的应用发送网页。
本说明书中描述的主题的实施方式能够在计算系统中实施,该计算系统包括后端组件(例如作为数据服务器)或者包括中间件组件(例如应用服务器)或者包括前端组件(例如具有用户能够通过其与本说明书中描述的主题的实施方式进行交互的图形用户界面或Web浏览器的客户端计算机)或者包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合。该系统的组件能够通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在相应的计算机上运行的计算机程序而产生的,并且与彼此具有客户端-服务器关系。在一些实施方式中,服务器将数据(例如,HTML页面)传送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从用户接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)能够在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实现细节,但是这些不应当被解释为对任何创新的范围或可能要求保护的范围的限制,而是对特定于特定创新的特定实施方式的特征的描述。本说明书中在单独的实施方式的上下文中描述的某些特征也能够在单个实施方式中组合实现。相反,在单个实施方式的上下文中描述的各种特征也能够在多个实施方式中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为以某些组合起作用,并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下能够从该组合中删除,并且要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应当被理解为要求这样的操作以所示的特定顺序或先后顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施方式中的各种系统组件的分离不应当被理解为在所有实施方式中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常能够一起被集成在单个软件产品中或者打包成多个软件产品。
因此,已经描述了主题的特定实施方式。其他实施方式处在所附权利要求的范围内。在一些情况下,权利要求中记载的动作能够以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
Claims (20)
1.一种方法,包括:
由多方计算(MPC)集群的第一MPC系统从客户端设备上的应用接收推断请求,所述推断请求包括所述应用的用户的给定用户简档的第一份额和性能阈值;
通过与一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别所述用户简档的最近邻集合;
从所述最近邻集合中选择具有满足所述性能阈值的性能度量的一个或多个最近邻;
由所述第一MPC系统将从所述一个或多个最近邻导出的数据传送到所述应用。
2.根据权利要求1所述的方法,其中,所述用户简档由所述应用生成,其中,所述用户简档包括指示所述应用的用户与在所述应用上呈现的数字内容之间的交互的数据,其中,所述交互包括转化和转化的缺少。
3.根据权利要求1或2所述的方法,其中,所述机器学习模型是最近邻模型,其中,所述最近邻模型的最近邻由与对应用户组相关联的相应质心表示。
4.根据权利要求3所述的方法,其中,所述第一MPC系统向所述对应用户组中的每个用户分配权重以计算相应质心,其中,所述权重是基于所述用户的交互或与所述性能度量相关的用户信息中的至少一个。
5.根据权利要求4所述的方法,其中,每个用户组的质心是由作为所述用户组的成员的用户的用户简档的平均值表示的中心。
6.根据任一前述权利要求所述的方法,其中,所述机器学习模型是质心模型或最近邻模型中的一个或多个。
7.根据任一前述权利要求所述的方法,其中,每个最近邻的性能度量包括与对应于所述最近邻的一个或多个数字组件的用户交互率或对应于所述最近邻的所述一个或多个数字组件的转化率中的至少一个。
8.根据任一前述权利要求所述的方法,其中,所述机器学习模型包括k最近邻模型,并且所述k最近邻模型中的每个邻居表示用户的用户简档。
9.根据权利要求1至7中的任一项所述的方法,其中,所述机器学习模型包括k最近邻模型,并且所述k最近邻模型中的每个邻居表示多个用户的用户组。
10.根据任一前述权利要求所述的方法,其中,所述性能阈值是阈值,其中,所述一个或多个数字组件的所述转化率是转化的数量除以所述一个或多个数字组件被显示给用户组中的用户的次数,其中,所述推断请求是推断所述用户是否要被添加到用户组的请求。
11.一种系统,包括:
至少一个可编程处理器;以及
存储指令的机器可读介质,所述指令在由所述至少一个可编程处理器执行时,使所述至少一个可编程处理器执行操作,所述操作包括:
由多方计算(MPC)集群的第一MPC系统从客户端设备上的应用接收推断请求,所述推断请求包括所述应用的用户的给定用户简档的第一份额和性能阈值;
通过与一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别所述用户简档的最近邻集合;
从所述最近邻集合中选择具有满足所述性能阈值的性能度量的一个或多个最近邻;
由所述第一MPC系统将从所述一个或多个最近邻导出的数据传送到所述应用。
12.根据权利要求11所述的系统,其中,所述用户简档由所述应用生成,其中,所述用户简档包括指示所述应用的用户与在所述应用上呈现的数字内容之间的交互的数据,其中,所述交互包括转化和转化的缺少。
13.根据权利要求11或12所述的系统,其中,所述机器学习模型是最近邻模型,其中,所述最近邻模型的最近邻由与对应用户组相关联的相应质心表示。
14.根据权利要求13所述的系统,其中,所述第一MPC系统向所述对应用户组中的每个用户分配权重以计算相应质心,其中,所述权重是基于所述用户的交互或与所述性能度量相关的用户信息中的至少一个。
15.根据权利要求14所述的系统,其中,每个用户组的质心是由作为所述用户组的成员的用户的用户简档的平均值表示的中心。
16.根据权利要求11至15中的任一项所述的系统,其中,所述机器学习模型是质心模型或最近邻模型中的一个或多个。
17.根据权利要求11至16中的任一项所述的系统,其中,每个最近邻的性能度量包括与对应于所述最近邻的一个或多个数字组件的用户交互率或对应于所述最近邻的所述一个或多个数字组件的转化率中的至少一个。
18.根据权利要求11至17中的任一项所述的系统,其中,所述机器学习模型包括k最近邻模型,并且所述k最近邻模型中的每个邻居表示用户的用户简档。
19.根据权利要求11至18中的任一项所述的系统,其中,所述机器学习模型包括k最近邻模型,并且所述k最近邻模型中的每个邻居表示多个用户的用户组。
20.一种或多种存储指令的计算机程序产品,所述指令在由至少一个可编程处理器执行时,使所述至少一个可编程处理器执行操作,所述操作包括:
由多方计算(MPC)集群的第一MPC系统从客户端设备上的应用接收推断请求,所述推断请求包括所述应用的用户的给定用户简档的第一份额和性能阈值;
通过与一个或多个第二MPC系统协作地使用经训练的机器学习模型执行安全MPC过程来识别所述用户简档的最近邻集合;
从所述最近邻集合中选择具有满足所述性能阈值的性能度量的一个或多个最近邻;
由所述第一MPC系统将从所述一个或多个最近邻导出的数据传送到所述应用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2021/026618 WO2022216293A1 (en) | 2021-04-09 | 2021-04-09 | Processing of machine learning modeling data to improve accuracy of categorization |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115461744A true CN115461744A (zh) | 2022-12-09 |
Family
ID=75888152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180019134.6A Pending CN115461744A (zh) | 2021-04-09 | 2021-04-09 | 处理机器学习建模数据以提高分类的准确性 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230274183A1 (zh) |
EP (1) | EP4097619A1 (zh) |
JP (1) | JP7422892B2 (zh) |
KR (1) | KR20220140759A (zh) |
CN (1) | CN115461744A (zh) |
WO (1) | WO2022216293A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11907392B2 (en) * | 2021-05-12 | 2024-02-20 | Seagate Technology Llc | System and method utilizing function secret sharing with conditional disclosure of secrets |
US20230117402A1 (en) * | 2021-10-18 | 2023-04-20 | Perion Network Ltd | Systems and methods of request grouping |
CN118401933A (zh) * | 2022-06-02 | 2024-07-26 | 谷歌有限责任公司 | 基于所预测的属性来分发数字组件 |
CN115408985B (zh) * | 2022-10-31 | 2023-04-07 | 天津联想协同科技有限公司 | 在线电子表格工作表名称显示方法、装置及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011007631A1 (ja) * | 2009-07-14 | 2011-01-20 | ソニー株式会社 | コンテンツ推薦システム、コンテンツ推薦方法、コンテンツ推薦装置及び情報記憶媒体 |
JP5369066B2 (ja) * | 2010-08-02 | 2013-12-18 | 日本電信電話株式会社 | リコメンデーションシステム、発言端末、検索端末、リコメンデーション方法 |
EP2688264B1 (en) * | 2012-07-16 | 2016-08-24 | Alcatel Lucent | Method and apparatus for privacy protected clustering of user interest profiles |
CN105009505A (zh) * | 2013-08-09 | 2015-10-28 | 汤姆逊许可公司 | 基于矩阵因子分解和岭回归的隐私保护推荐的方法和系统 |
JP6750195B2 (ja) * | 2015-06-24 | 2020-09-02 | 日本電気株式会社 | 広告配信装置、広告受信装置、広告配信システム、広告配信方法、広告受信方法、およびプログラム |
WO2018135334A1 (ja) * | 2017-01-19 | 2018-07-26 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
WO2019063503A1 (en) * | 2017-09-29 | 2019-04-04 | Robert Bosch Gmbh | METHOD FOR CALCULATING FASTER SECURED MULTIPARTITE INTERNAL PRODUCT USING SPDZ |
EP3659049A1 (en) * | 2018-10-17 | 2020-06-03 | Alibaba Group Holding Limited | Secret sharing with a trusted initializer |
-
2021
- 2021-04-09 WO PCT/US2021/026618 patent/WO2022216293A1/en unknown
- 2021-04-09 US US17/798,152 patent/US20230274183A1/en active Pending
- 2021-04-09 EP EP21724827.7A patent/EP4097619A1/en active Pending
- 2021-04-09 JP JP2022553151A patent/JP7422892B2/ja active Active
- 2021-04-09 KR KR1020227029827A patent/KR20220140759A/ko unknown
- 2021-04-09 CN CN202180019134.6A patent/CN115461744A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022216293A1 (en) | 2022-10-13 |
KR20220140759A (ko) | 2022-10-18 |
JP2023524356A (ja) | 2023-06-12 |
US20230274183A1 (en) | 2023-08-31 |
EP4097619A1 (en) | 2022-12-07 |
JP7422892B2 (ja) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230214684A1 (en) | Privacy preserving machine learning using secure multi-party computation | |
US20230274183A1 (en) | Processing of machine learning modeling data to improve accuracy of categorization | |
JP7471445B2 (ja) | コンテンツの配信と分析のためのプライバシーを守る機械学習 | |
JP7361928B2 (ja) | 勾配ブースティングを介したプライバシーを守る機械学習 | |
JP7438361B2 (ja) | 安全なマルチパーティ計算を使用するプライバシー保護重心モデル | |
US20220405407A1 (en) | Privacy preserving cross-domain machine learning | |
US20230078704A1 (en) | Privacy preserving machine learning labelling | |
CN114450919A (zh) | 在线隐私保护技术 | |
Ma et al. | Blockchain-Based Privacy-Preserving Federated Learning for Mobile Crowdsourcing | |
Gao et al. | A verifiable and privacy-preserving framework for federated recommendation system |
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 |