Multiple platforms can track frequencies for one or more types of activities of a set of users. For example, multiple platforms can track a number of ad exposures to a set of users. Estimating a histogram of the total frequency of each user of the set of users across the multiple platforms, while maintaining accuracy, security, privacy, and/or computational efficiency standards, can be difficult when each platform of the multiple platforms only knows the frequency of each user on their side.
Aspects of the disclosure are directed to estimating a frequency histogram for users across multiple platforms while maintaining accuracy, security, privacy, and/or computational efficiency thresholds. The frequency histogram can be estimated in an unbiased manner with a configurable variance. The computations for generating the frequency histogram can be differentially private, satisfy provable security, and be computationally efficient.
An aspect of the disclosure is directed to a method for estimating a frequency histogram, including: receiving, by one or more processors, a plurality of secret-shared sketches from a plurality of event data providers; obliviously merging, by the one or more processors, the secret-shared sketches to generate registers; aggregating, by the one or more processors, the registers to generate a frequency histogram; and adding, by the one or more processors, differentially private noise to the frequency histogram. Another aspect of the disclosure is directed to a system including: one or more processors; and one or more storage devices coupled to the one or more processors and storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations for the method for estimating a frequency histogram. Yet another aspect of the disclosure is directed to a non-transitory computer readable medium for storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations for the method for estimating a frequency histogram.
In an example, estimating the frequency histogram further includes debiasing, by the one or more processors, frequency histogram based on a reach estimate. In another example, debiasing the frequency histogram further includes debiasing frequency folding.
In yet another example, in merging the secret-shared sketches, fingerprints are binary shares and frequencies are arithmetic shares. In yet another example, in merging the secret-shared sketches, if fingerprints of two secret-shared sketches are different, then the greater fingerprint is kept together with its frequency, while if the fingerprints are the same, then the frequencies are added together. In yet another example, aggregating the registers further includes: converting arithmetic shares to binary shares; performing an equality/inequality check on the binary shares; adding the binary shares together; and converting the binary shares to arithmetic shares.
In yet another example, estimating the frequency histogram further includes: non-uniformly mapping, by the one or more processors, a user identifier to a fingerprint; generating, by the one or more processors, a sketch based on the mapping; and secret-sharing, by the one or more processors, the sketch to generate a secret-shared sketch of the plurality of secret-shared sketches. In yet another example, in non-uniformly mapping the user identifier to the fingerprint, the largest fingerprint tracked is unlikely to have collisions with other user identifiers. In yet another example, generating the sketch further includes compressing events from the user identifier and estimating a frequency distribution by tracking the frequency of the largest fingerprint per register. In yet another example, secret-sharing the sketch further comprises splitting fingerprints into binary shares and frequencies into arithmetic shares.
The technology generally relates to estimating a frequency histogram for users across multiple platforms while maintaining accuracy, security, privacy, and/or computational efficiency standards. For example, about 90% of cost in computation efficiency can be reduced compared to alternative approaches while maintaining accuracy, privacy, and security thresholds. Further, information like reach or frequency does not need to be revealed during multi-party computation.
From the data provided by the event data providers 102A-N, the multi-party computation system 100 can be configured to output data associated with estimating a frequency histogram. As an example, the multi-party computation system 100 can send the output data for display on a client or user device, such as client device 106, such as for an ad agency that would utilize the frequency histogram. As another example, the multi-party computation system 100 can provide the output data as a set of computer-readable instructions, such as one or more computer programs. The computer programs can be written in any type of programming language, and according to any programming paradigm, e.g., declarative, procedural, assembly, object-oriented, data-oriented, functional, or imperative. The computer programs can be written to perform one or more different functions and to operate within a computing environment, e.g., on a physical device, virtual machine, or across multiple devices. The computer programs can also implement functionality described herein, for example, as performed by a system, engine, module, or model. The multi-party computation system 100 can further forward the output data to one or more other devices configured for translating the output data into an executable program written in a computer programming language. The multi-party computation system 100 can also send the output data to a storage device for storage and later retrieval.
Each event data provider 102A-N i can determine the frequency freq(x,i) of their own user identifiers x on respective event data providers 102A-N, for all event data providers 1≤i≤p and for all identifiers 1≤x≤U. Here, p denotes the number of event data providers 102A-N, which can be any number, and U denotes the universe size, which can be any number of identifiers. Universe size can refer to the population size of all users. The multi-party computation system 100 or the client computing device 106 can determine a reach estimate {circumflex over (n)}. For example, reach can be expressed as n=Σx=1UI(Σi=1pfreq(x,i)>0), where I is an indicator function.
The event data providers 102A-N can be configured to compute predetermined hash functions that randomly map a string or integer into a float uniformly distributed in (0,1). The hash functions can include a hash hfgp to determine fingerprints and a hash hs to construct a sketch. The event data providers 102A-N can also be configured to perform computations using predetermined fingerprint bit length Bfgp, fingerprint skewness rate a, and frequency bit length Bfreq. As an example, Bfgp=8, a=8.0, and Bfreq=16. The multi-party computation system 100 can include a plurality of workers for performing computations to determine the frequency histogram. The client computing device 106 can specify estimation configurations for the frequency histogram, such as sketch size m, noise variance σ2, and maximum frequency K.
An estimate of the frequency histogram can be expressed as (n1, . . . , nK−1, nK+), where for 1≤k≤K−1, nk can be the k reach nk=Σx=1UI(Σi=1pfreq(x,i)=k), and nK+ is the K+ reach nK+=Σx=1UI(Σi=1pfreq(x,i)≥K).
The event data providers 102A-N can map each of their user identifiers to a fingerprint, construct sketches based on the mapping, and secret-share the sketches. The multi-party computation system 100 can merge the sketches to generate noise registers and aggregate the noise registers to compute a frequency histogram. The client computing device 106 can debias the frequency histogram based on a reach estimate.
As an example, a plurality of ad publishers can generate encrypted sketches representing ad exposure tracking for a number of users. The plurality of ad publishers can each send the encrypted sketches to a multiparty computation environment for different ad analysis companies, e.g., ad measurement companies, ad associations, etc. Through the multiparty computation environment, one or more of the different ad analysis companies merges and aggregates the encrypted sketches and generates a frequency histogram based on the aggregated encrypted sketches. The ad analysis companies can also add noise to the frequency histogram. The ad analysis companies can send the frequency histogram to an ad agency. The ad agency can debias the frequency histogram if higher accuracy is required to utilize the frequency histogram.
The event data providers 102A-N can each include a map engine 108A-N, a sketch engine 110A-N, and a secret share engine 112A-N. The map engines 108A-N, sketch engines 110A-N, and secret share engines 112A-N can be implemented as one or more computer programs, specially configured electronic circuitry, or any combination thereof. The map engines 108A-N can be configured to map each user identifier to a fingerprint. The map engines 108A-N can be configured to non-uniformly map user identifiers to fingerprints so that the largest fingerprints being tracked are unlikely to have collisions. The sketch engines 110A-N can be configured to construct a sketch based on the fingerprints. The sketch engines 110A-N can be configured to compress events into a sketch and estimate a frequency distribution of the users by tracking the frequency of the largest fingerprint per register of the sketch. The secret share engines 112A-N can be configured to secret-share the sketch. The secret share engine 112A-N can be configured to utilize any secret sharing technique, such as splitting different quantities into different types of secret shares, e.g., splitting fingerprints into binary shares but frequencies into arithmetic shares.
The multi-party computation system 100 can include a merge engine 114, an aggregation engine 116, and a histogram engine 118. The merge engine 114, aggregation engine 116, and histogram engine 118 can be implemented as one or more computer programs, specially configured electronic circuitry, or any combination thereof. The merge engine 114 can be configured to merge registers representing the sketches. The merge engine 114 can be configured to merge the sketches, where the fingerprints are binary shares and the frequencies are arithmetic shares. The aggregation engine 116 can be configured to aggregate the registers. The histogram engine 118 can be configured to compute a frequency histogram based on the aggregated registers. The histogram engine 118 can be configured to generate a reach and frequency histogram with differentially private noises added to produce a noisy output.
The client computing device 106 can include a debias engine 120. The debias engine 120 can be implemented as one or more computer programs, specially configured electronic circuitry, or any combination thereof. The debias engine 120 can be configured to debias the frequency histogram based on the reach estimate. The debias engine 120 can be configured to debias frequency folding.
The MPC server computing device 204 can include one or more processors 214 and memory 216. The memory 216 can store information accessible by the processors 214, including instructions 218 that can be executed by the processors 214. The memory 216 can also include data 220 that can be retrieved, manipulated, or stored by the processors 214. The memory 216 can be a type of transitory or non-transitory computer readable medium capable of storing information accessible by the processors 214, such as volatile and non-volatile memory. The processors 214 can include one or more central processing units (CPUs), graphic processing units (GPUs), field-programmable gate arrays (FPGAs), and/or application-specific integrated circuits (ASICs), such as tensor processing units (TPUs).
The instructions 218 can include one or more instructions that, when executed by the processors 214, cause the one or more processors 214 to perform actions defined by the instructions 218. The instructions 218 can be stored in object code format for direct processing by the processors 214, or in other formats including interpretable scripts or collections of independent source code modules that are interpreted on demand or compiled in advance. The instructions can include instructions for implementing a multi-party computation system 202, which can correspond to the multi-party computation system 100 of
The data 220 can be retrieved, stored, or modified by the processors 214 in accordance with the instructions 218. The data 220 can be stored in computer registers, in a relational or non-relational database as a table having a plurality of different fields and records, or as JSON, YAML, proto, or XML documents. The data 220 can also be formatted in a computer-readable format such as, but not limited to, binary values, ASCII, or Unicode. Moreover, the data 220 can include information sufficient to identify relevant information, such as numbers, descriptive text, proprietary codes, pointers, references to data stored in other memories, including other network locations, or information that is used by a function to calculate relevant data.
The one or more EDP server computing devices 208 can be configured similarly to the MPC server computing device 204, with one or more processors 222, memory 224, instructions 226, and data 228. The client computing device 206 can also be configured similarly to the MPC server computing device 204, with one or more processors 230, memory 232, instructions 234, and data 236. The client computing device 206 can also include a user input 238 and a user output 240. The user input 238 can include any appropriate mechanism or technique for receiving input from a user, such as keyboard, mouse, mechanical actuators, soft actuators, touchscreens, microphones, and sensors.
The MPC server computing device 204 and/or the EDP server computing devices 208 can be configured to transmit data to the client computing device 206, and the client computing device 206 can be configured to display at least a portion of the received data on a display implemented as part of the user output 240. The user output 240 can also be used for displaying an interface between the client computing device 206 and the MPC server computing device 204 and/or EDP server computing devices 208. The user output 240 can alternatively or additionally include one or more speakers, transducers or other audio outputs, a haptic interface or other tactile feedback that provides non-visual and non-audible information to the platform user of the client computing device 206.
Although
The computing devices 204-208 can be capable of direct and indirect communication over the network 212. For example, using a network socket, the client computing device 206 can connect through an Internet protocol. The computing devices 204-208 can set up listening sockets that may accept an initiating connection for sending and receiving information. The network 212 itself can include various configurations and protocols including the Internet, World Wide Web, intranets, virtual private networks, wide area networks, local networks, and private networks using communication protocols proprietary to one or more companies. The network 212 can support a variety of short-and long-range connections. The short-and long-range connections may be made over different bandwidths, such as 2.402 GHz to 2.480 GHz, commonly associated with the Bluetooth® standard, 2.4 GHz and 5 GHz, commonly associated with the Wi-Fi® communication protocol; or with a variety of communication standards, such as the LTE® standard for wireless broadband communication. The network 212, in addition or alternatively, can also support wired connections between the computing devices 204-208, including over various types of Ethernet connection.
Although a single MPC server computing device 204, client computing device 206, and EDP server computing device 208 are shown in
As shown in block 310, each event data provider 102A-N can map a user identifier to a fingerprint. Each event data provider 102A-N can non-uniformly map its user identifiers to fingerprints, where the largest fingerprint tracked is unlikely to have collisions with other user identifiers, therefore corresponding to a unique user identifier. For example, for each user identifier x, each event data provider 102A-N can define the fingerprint of the respective user identifier as a fingerprint bit length integer: fgp(x)=floor(2B
As shown in block 320, each event data provider 102A-N can generate a sketch based on the fingerprints. Each event data provider 102A-N can compress events from the user identifiers into a sketch and estimate frequency distribution of the users by tracking the frequency of the largest fingerprint per register of the sketch. For example, each event data provider 102A-N can construct a sketch that is an array of length m. Each element of the array can be referred to as a register. Each register can contain information to be defined below. For each user identifier x, each event data provider i can determine its register index as: register(x)=floor(m×hs(x)). Then, for 1≤r≤m, each event data provider 102A-N can collect the reached user identifiers that fall in the rth register, e.g., find the set Xr(i)={x: freq(x,i)>0 and register(x)=r}. From Xr(i), each event data provider 102A-N can pick the user identifier with the largest frequency and record its frequency. For example, each event data provider 102A-N can have xr(i)=arg maxx∈X
As shown in block 330, each event data provider 102A-N can secret-share the sketch. Each event data provider 102A-N can be configured to utilize any secret sharing technique. For example, each event data provider 102A-N can split different quantities into different types of secret shares, such as splitting fingerprints into binary shares and frequencies into arithmetic shares. For each register r, each event data provider i 102A-N can randomly split the tuple (fgpr(i), freqr(i)) into W shares. Each event data provider 102A-N can split fgpr(i) into W binary shares [fgpr(i)]WB, each of Bfgp bits, where ⊕w=1W[fgpr(i)]WB=fgpr(i). As an example, Bfgp can be 8. Each event data provider 102A-N can split freqr(i) into W arithmetic shares in the Bfreq-bit field Zp, e.g., generate W integers [freqr(i)]w∈Zp, each of Bfreq bits, where Σw=1W[freqr(i)]w=freqr(i)(mod p). As an example, Bfreq can be 16. Each event data provider i can send the wth share of the sketch ([fgpr(i)]WB, [freqr(i)]W)1≤r≤m to worker w, for 1≤w≤W.
As shown in block 410, the multi-party computation system 100 can merge registers. The multi-party computation system 100 can merge sketches where the fingerprints are binary shares and the frequencies are arithmetic shares. For example, the multi-party computation system 100 can receive the shares of the sketches from the event data providers 102A-N. The multi-party computation system 100 can obliviously merge the sketches using multi-party computation. The sketches are merged obliviously due to different workers of the multi-party computation system 100 receiving random shares of the sketches. For example, two registers (fgpr(1), freqr(1)) and (fgpr(2), freqr(2)) can be merged as follows: If the fingerprints are different, then the greater fingerprint is kept together with its frequency; otherwise, the frequencies are added. The multi-party computation system 100 can perform the oblivious merging via a mixed circuit that includes both binary gates, e.g., AND, XOR, and/or NOT, and arithmetic gates, e.g., ADD and/or MUL. Below is an example procedure for merging registers.
Input: shares {([fgpr(1)]B, [freqr(1)])1≤r≤m, . . . , ([fgpr(p)]B, [freqr(p)])1≤r≤m}.
Output: shares of merged tuples ([fpgr]B, [freqr])1≤r≤m.
Protocol: ([fpgr]B, [freqr])1≤r≤m←([fpgr(1)]B, [freqr(1])1≤r≤m;
For r=1, . . . , m, and j=2, . . . , p, the workers compute:
The multi-party computation system 100 can set a temporary output to be the vector of shares of the first EDP. The multi-party computation system 100 can start merging the temporary output with the input of the next EDP, one by one. The multi-party computation system 100 compares the two fingerprints and obtains the binary shares [ur]B and [vr]B. The bit ur can indicate whether the two fingerprints are equal, e.g., 1=yes and 0=no. The bit vr can indicate whether the fingerprint of the temporary output is greater than that of the output of the next EDP. The multi-party computation system 100 can compute the merged fingerprint, convert the binary shares [ur]B and [vr]B to arithmetic shares [ur] and [vr], and compute the merged frequency count between the temporary output and the frequency count of the next EDP.
As shown in block 420, the multi-party computation system 100 can aggregate the merged registers to generate aggregated registers. For example, the multi-party computation system 100 can add the merged registers.
As shown in block 430, the multi-party computation system 100 can compute a frequency histogram based on the aggregated registers and add differentially private noise to produce a noisy output. For example, once the sketches have been merged and aggregated, the multi-party computation system 100 can proceed with the computation of the frequency histogram.
Input: ([freqr])1≤r≤m.
Output: [{circumflex over (n)}], (])1≤k≤K−1, and [
]. Protocol:
Convert arithmetic share to binary share for frequencies:
For r=1, . . . , m, [freqr]B←A2B([freqr]).
Compute the reach and frequency histogram:
Sample differential privacy noises and generate the estimated reach and frequency histogram:
For k=0, . . . , K−1:
Worker w samples differentially private noise λw,k; and
[]w←[nk]w+λw,k; and
Worker w samples differentially private noises λw and λw,K+ and sets:
The input can be a vector of arithmetic shares having a size m and index r. The output can be a share of the noisy reach, the noisy frequency count, and the noisy count for all frequencies that are greater than or equal to the maximum frequency. The multi-party computation system 100 can convert arithmetic shares to binary shares. freqr can be decomposed into binary bits, where the workers hold the binary shares [freqr]B of these bits. The multi-party computation system 100 can check if [freqr]B is equal to the frequency value k. The output of the equality check is [br]B where the workers hold a binary share of [br]B. The multi-party computation system 100 can count the number of registers that have the frequency value k by adding all the bits obtained from the equality check. The workers can hold the binary shares of the output bits. The multi-party computation system 100 can convert the binary shares representing the frequency count k to the arithmetic shares. The multi-party computation system 100 can obtain the total number of registers with a frequency of at least K, the maximum frequency, by subtracting the lower frequency counts from the number of registers. The multi-party computation system 100 can compute reach by subtracting the number of registers with frequency 0 from the number of registers. The multi-party computation system 100 can add differential privacy noise, e.g., Gaussian noise, to the output.
As shown in block 510, the multi-party computation system 100 can convert arithmetic shares to binary shares for frequencies. For example, the multi-party computation system 100 can convert the arithmetic shares ([freqr])1≤r≤m to binary shares ([freqr]B)1≤r≤m. Any arithmetic to binary procedure can be utilized. For instance, below is an example procedure for converting arithmetic shares to binary shares.
Input: [x] is the arithmetic share of x in Zq.
Output: [x]B=([xl−1]B, . . . , [x0]B) is the binary share where x=Σi=0l−12ixi(mod q).
Protocol: The workers first sample random binary share [r]B=([rl−1]B, . . . , [r0]B) and compute:
The multi-party computation system 100 can sample a random binary share and convert each binary share to an arithmetic share. The multi-party computation system 100 can compute the arithmetic share of r, which has the binary representation (rl−1, . . . , r0). The multi-party computation system 100 can compute a masked value (x−r) of xand add it with [r]B, the binary shares of r. The multi-party computation system 100 can then obtain a binary share of x. The multi-party computation system 100 can check if the sum is greater than or equal to a value qand ensure that x is in [0, q−1].
As shown in block 520, the multi-party computation system 100 can compute a reach and frequency histogram. Computing the reach and frequency histogram can include performing a secure equality check and comparison.
For a frequency k∈[0, . . . , (K−1)], the multi-party computation system 100 can go through the registers and check if each frequency is equal to k. Each check yields a binary share of an indication bit 0/1. For the equality/inequality check, the multi-party computation system 100 can securely compare two binary shares, where the output is binary shares of two bits: one indicating whether the two input binary shares are equal and the other indicating if the first input is greater than the second input. First, the multi-party computation system 100 can split the input shares of equal length into two halves: x=xleft∥xright and y=yleft∥yright. The left can contain the most significant bits and length(xleft)=length(yleft), length(xright)=length(yright). The two numbers x and y can be equal to each other if both the left and the right part are equal, and x can be greater than y if either xleft>yleft or xleft==yleft AND xright>yright. Below is an example procedure for a secure equality check and comparison.
Input: two binary shares [x]B=([xl−1]B, . . . , [x0]B) and [y]B=([yl−1]B, . . . , [y0]B) where xi, yi∈{0,1} and x=Σi=0l−12ixi and y=Σi=0l−12iyi.
Output: shares of two indication bits [e]←eq([x]B, [y]B)←[x==y]B and [g]←gt([x]B, [y]B)≡[x>y]B.
Protocol:
Base cases: for two bits b1 and b2:
eq([b1]B, [b2]B)≡1⊕[b1]B⊕[b2]B//Free;
gt([b1]B, [b2]B)≡[b1]·(1⊕[b2])//Cost 1 multiplication;
Let x=xleft∥xright and y=yleft∥yright:
The multi-party computation system 100 can start with a base case where inputs are 1-bit binary shares. If the inputs are longer than 1 bit, the multi-party computation system 100 can split the inputs into 2 halves, where the left half contains the most significant bits. The multi-party computation system 100 can continue to perform the equality check for both halves. x and y are equal if the left of x and y are equal, and the right of x and y are equal. x is greater than y if the left of x is greater than that of y or the left of x is equal to that of y and the right of x is greater than that of y.
Computing the reach and frequency histogram can further include adding the bits, such as to get the binary share [nk]B of nk. The multi-party computation system 100 can add binary shares of m bits ([br]B)1≤r≤m together. Any procedure for adding bits can be utilized, such as a recursive approach. For instance, below is an example procedure for adding bits.
Input: binary shares of m bits ([br]B)1≤r≤m.
Output: binary shares [sum]B←[Σr=1mbr]B.
Protocol:
If m=1, return [b1]B;
Else if m=2, return RippleCarryAdder([b1]B, [b2]B);
Else:
[sum]B←RippleCarryAdder(suml, sumr);
Return [sum]B.
If there is only 1 bit, the multi-party computation system 100 can return that bit. Otherwise, the multi-party computation system 100 can use the ripple carry adder to add two bits if the length is 2 and, if the length is greater than 2 bits, the multi-party computation system 100 can split the input bits into 2 parts, calling the add function on the first m/2 bits and the add function on the second m/2 bits, and adding the left and right sum to get the result.
As another example, below is an example procedure for adding two binary shares of equal bit length.
Input: two binary shares [x]B=([xl−1]B, . . . , [x0]B) and [y]B=([yl−1]B, . . . , [y0]B).
Output: binary share [z]B=([zl]B, . . . , [z0]B).
Protocol:
[c]B←0;
For i=0, . . . , l−1, do:
The multi-party computation system 100 can set the carry bit to 0, compute the ith output bit, and compute the carry bit. The sum will be 1 bit longer than the input, where the extra bit will be the final carry bit.
Computing the reach and frequency histogram can also include converting the binary shares to arithmetic shares, such as the binary share [nk]B to the arithmetic share [nk]. Any binary to arithmetic procedure can be utilized. For instance, below is an example procedure for converting binary shares to arithmetic shares.
Input: [x]B is the binary share of the bit x∈{0,1}.
Output: [x] be the arithmetic share of x in Zq.
Protocol: Each worker Pw samples rw←Z2 uniformly at random and creates a pair of secret shares ([rw]B, [rw]) and distributes them to other workers, who compute:
[r]←[r1];
For w=2, . . . , W, [r]←[r]+[rw]−2([r]*[rw]);
[r]B←⊕w=1W[rw]B//Compute locally;
[d]B←[x]B⊕[r]B//Compute locally;
Reveal d∈{0,1};
Compute [x]=d⊕[r]A=d+[r]A−2(d*[r]).
The multi-party computation system 100 can compute the XOR of ri in arithmetic form, compute the XOR of ri in binary form, and compute the masked value of x. The multi-party computation system 100 can remove the mask from (x\XOR r) to get the arithmetic share of x.
As shown in block 530, the multi-party computation system 100 can sample differentially private noise, which can be added to the arithmetic share [nk] to get an estimated arithmetic share []. The multi-party computation system 100 can compute reach [{circumflex over (n)}] and count k+ reaches [{circumflex over (n)}K+] based on sketch size m and previously computed [
]0≤k≤K−1. Once the multi-party computation system 100 computes the shares, they can output them, such as to the client computing device 106.
The client computing device 106 can compute a frequency probability mass function (pmf) [r1, . . . , rK−1, rK+] where rk={circumflex over (n)}k/Σi∈{1, . . . , K−1, K+}{circumflex over (n)}i. The client computing device 106 can be configured to debias the frequency histogram based on the reach estimate. The client computing device 106 can be configured to debias frequency folding. Frequency folding can refer to multiple user identifiers having the largest fingerprint in a register. Here, total frequency of these user identifiers is tracked. With Bfgp=8, a=8.0, and Bfreq=16, the probability of frequency folding can be controlled below 2%, so the bias can be about below 2%. Under a 95-10 target accuracy, this bias is negligible, but under stricter target accuracies, such as 95-2, this bias can be corrected with a reach estimate ñ.
The client computing device 106 can estimate frequency folding probabilities from {circumflex over (n)}. Each register can have {circumflex over (n)}/m reached user identifiers on average. The client computing device 106 can simulate mapping these {circumflex over (n)}/m user identifiers to fingerprints as if they were event data providers and determine how many user identifiers have the largest fingerprint. With multiple replicates, the client computing device 106 can estimate πk, which is the probability that k user identifiers share the largest fingerprint for k=1,2, . . .
The client computing device 106 can debias a frequency probability mass (pmf) based on the frequency folding probabilities. As an example, given [r1, . . . , rK−1, rK+] as the frequency pmf that is provided to the client computing device 106, the client computing device 106 can determine [d, . . . , dK−1, dK+] as the debiased pmf based on the following sequentially solving for dk's using dynamic programming:
. . . etc.
As illustrated in the below tables, the multi-party computation system 100 can significantly reduce computational cost, e.g., computational resources to run the system, by about 90%, in estimating frequency histograms while maintaining or improving accuracy and/or security. The first table depicts the computational cost per ad analysis report of the multi-party computation system 100 compared to a baseline approach for different regions as well as a total of all regions. The second table depicts the computation cost per day for 200 ad analysis reports of the multi-party computation system 100 compared to the baseline approach for different regions as well as a total of all regions.
The multi-party computation system 100 can use frequency information from all registers, whereas the baseline approach may only use partial registers, e.g., registers that contain only one identifier. By using all registers, the multi-party computation system 100 can achieve the same or improved accuracy with fewer registers with the same level of noise for privacy. Further, the multi-party computation system 100 can maintain secret sharing techniques where no particular worker can see the estimated frequency histograms being output. Overall, the multi-party computation system can save about 90% cost while maintaining accuracy, privacy, and security.
Aspects of this disclosure can be implemented in digital electronic circuitry, in tangibly embodied computer software or firmware, and/or in computer hardware, such as the structure disclosed herein, their structural equivalents, or combinations thereof. Aspects of this disclosure can further be implemented as one or more computer programs, such as one or more modules of computer program instructions encoded on a tangible non-transitory computer storage medium for execution by, or to control the operation of, one or more data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or combinations thereof. The computer program instructions can be encoded on an artificially generated propagated signal, such as a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
The term “configured” is used herein in connection with systems and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination thereof that cause the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by one or more data processing apparatus, cause the apparatus to perform the operations or actions.
The term “data processing apparatus” refers to data processing hardware and encompasses various apparatus, devices, and machines for processing data, including programmable processors, computers, or combinations thereof. The data processing apparatus can include special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC). The data processing apparatus can include code that creates an execution environment for computer programs, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or combinations thereof.
The term “computer program” refers to a program, software, a software application, an app, a module, a software module, a script, or code. The computer program can be written in any form of programming language, including compiled, interpreted, declarative, or procedural languages, or combinations thereof. The computer program can be deployed in any form, including as a stand alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. The computer program can correspond to a file in a file system and can be stored in a portion of a file that holds other programs or data, such as one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, such as files that store one or more modules, sub programs, or portions of code. The computer program can be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a data communication network.
The term “database” refers to any collection of data. The data can be unstructured or structured in any manner. The data can be stored on one or more storage devices in one or more locations. For example, an index database can include multiple collections of data, each of which may be organized and accessed differently.
The term “engine” refers to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. The engine can be implemented as one or more software modules or components, or can be installed on one or more computers in one or more locations. A particular engine can have one or more computers dedicated thereto, or multiple engines can be installed and running on the same computer or computers.
The processes and logic flows described herein can be performed by one or more computers executing one or more computer programs to perform functions by operating on input data and generating output data. The processes and logic flows can also be performed by special purpose logic circuitry, or by a combination of special purpose logic circuitry and one or more computers.
A computer or special purpose logic circuitry executing the one or more computer programs can include a central processing unit, including general or special purpose microprocessors, for performing or executing instructions and one or more memory devices for storing the instructions and data. The central processing unit can receive instructions and data from the one or more memory devices, such as read only memory, random access memory, or combinations thereof, and can perform or execute the instructions. The computer or special purpose logic circuitry can also include, or be operatively coupled to, one or more storage devices for storing data, such as magnetic, magneto optical disks, or optical disks, for receiving data from or transferring data to. The computer or special purpose logic circuitry can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS), or a portable storage device, e.g., a universal serial bus (USB) flash drive, as examples.
Computer readable media suitable for storing the one or more computer programs can include any form of volatile or non-volatile memory, media, or memory devices. Examples include semiconductor memory devices, e.g., EPROM, EEPROM, or flash memory devices, magnetic disks, e.g., internal hard disks or removable disks, magneto optical disks, CD-ROM disks, DVD-ROM disks, or combinations thereof.
Aspects of the disclosure can be implemented in a computing system that includes a back end component, e.g., as a data server, a middleware component, e.g., an application server, or a front end component, e.g., a client computer having a graphical user interface, a web browser, or an app, or any combination thereof. The components of the system can be interconnected by any form or medium of digital data communication, such as a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.
The computing system can include clients and servers. A client and server can be remote from each other and interact through a communication network. The relationship of client and server arises by virtue of the computer programs running on the respective computers and having a client-server relationship to each other. For example, a server can transmit data, e.g., an HTML page, to a client device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device. Data generated at the client device, e.g., a result of the user interaction, can be received at the server from the client device.
Unless otherwise stated, the foregoing alternative examples are not mutually exclusive, but may be implemented in various combinations to achieve unique advantages. As these and other variations and combinations of the features discussed above can be utilized without departing from the subject matter defined by the claims, the foregoing description of the embodiments should be taken by way of illustration rather than by way of limitation of the subject matter defined by the claims. In addition, the provision of the examples described herein, as well as clauses phrased as “such as,” “including” and the like, should not be interpreted as limiting the subject matter of the claims to the specific examples; rather, the examples are intended to illustrate only one of many possible embodiments. Further, the same reference numbers in different drawings can identify the same or similar elements.
The present application claims the benefit of the filing date of U.S. Provisional Patent Application No. 63/467,665, filed May 19, 2023, the disclosure of which is hereby incorporated herein by reference.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2023/083736 | 12/13/2023 | WO |
Number | Date | Country | |
---|---|---|---|
63467665 | May 2023 | US |