Proving One Person’s Answer Could Not Have Changed the Result
AI Safety & Robustness • Sensei Learning Card

Proving One Person’s Answer Could Not Have Changed the Result

Core Concept

Every older privacy idea tried to scrub the data \u2014 strip the names, bucket the ages, k-anonymise the rows. All of them failed the same way: an attacker who joins your "anonymous" release against any other dataset re-identifies people.

Two verified results show why. Sweeney (2000) found 87% of the US population were likely unique on just {5-digit ZIP, gender, date of birth} and 53% on {city, gender, date of birth}. Narayanan & Shmatikov re-identified Netflix Prize users by joining the "anonymous" ratings against IMDb's public data. Scrubbing the data never works, because the data is still joinable.

Differential privacy abandons that framing and makes a claim about the algorithm instead: a randomised mechanism is private if its output distribution is almost the same whether or not YOUR record is in the input.

For any two datasets D1, D2 differing in one person, and any outcome set S: Pr[ M(D1) \u2208 S ] \u2264 e^\u03b5 \u00b7 Pr[ M(D2) \u2208 S ]
Read it as a promise to one person: whatever is published, you can say "that result would have looked essentially identical had I never participated" \u2014 so nothing published is evidence about you.

Key Components

01 · The guarantee

\u03b5-differential privacy

Two datasets differing in one person produce statistically indistinguishable outputs. The bound is e^\u03b5 on any outcome's probability \u2014 it protects one person in the data, not the file.

02 · The knob

Epsilon = a privacy budget

Small \u03b5 \u2192 more noise \u2192 a stronger promise. The budget composes: every query spends some of it, so real systems cap total queries rather than noising each one in isolation.

03 · The mechanism

Noise scaled to sensitivity

Add Laplace or Gaussian noise scaled to the query's sensitivity (how much one person can move the answer). A count has sensitivity 1; a sum over unbounded values has huge sensitivity \u2014 clip first or the answer is unusable.

04 · The setting

Central vs Local DP

Central: a trusted collector adds the noise. Local: randomise on the device (randomised response) \u2014 no trusted party, but it costs far more accuracy.

How It Works

  1. Don't scrub the data. The goal is to publish answers, not a cleaned copy \u2014 the data stays joinable, so the protection must live in the release.
  2. Pick a query and measure its sensitivity. How much can a single person's record move the answer? A count moves by 1; a mean or sum can move a lot.
  3. Sample noise scaled to sensitivity \u00f7 \u03b5. Laplace for the classic bound, Gaussian when you want a normal-looking output.
  4. Add the noise and publish the perturbed value. It's close to the truth in aggregate, but the exact value can't be pinned to one person.
  5. Account the spend. Every release burns part of the \u03b5 budget; track the running total so the whole publication, not one query, stays within the promise.

Real-World Applications

2020 US Census Small-area counts published with DP \u2014 contested by researchers who need accurate small-subgroup numbers.
Apple on-device telemetry Local DP / randomised response: usage stats aggregated with no trusted collector holding raw events.
Google & BigQuery DP aggregation over user logs so query results can't be reverse-mapped to individuals.
DP libraries OpenDP and Google's DP-Library give production, composable \u03b5-accounting for real releases.
Name the boundary \u2014 three things DP is NOT
  • Not anonymisation, not encryption. It constrains what your outputs reveal, not the raw dataset you still hold \u2014 it is no substitute for access control.
  • The Laplace is not Laplace smoothing. Smoothing adds one to a count so no probability is zero \u2014 same name, a different job.
  • This \u03b5 is not the robustness \u03b5. An attack-budget \u03b5 bounds a pixel perturbation; this privacy-budget \u03b5 bounds one person's influence on the answer.

Checkpoint \u2014 answer before you move on

Checkpoint
Anonymisation fixed the data and still got re-identified on a join. What does differential privacy fix instead \u2014 and what single promise does the guarantee give the one person in the dataset?
Look at what the inequality actually bounds: the probability of any outcome, across two inputs differing by one record.
Checkpoint
A count has sensitivity 1 but a sum over unbounded values has huge sensitivity. Why does that force you to clip a sum before adding noise \u2014 and what does the \u03b5 privacy budget buy you that tuning the noise on one query alone cannot?
Think about how much noise "hides" one record, and what happens to the guarantee across many releases.
Checkpoint
Why is a guarantee "a thousand times weaker than the \u03b5 suggests" when one user appears in 1,000 rows \u2014 and why can you not directly compare a \u03b5 of 3 from one system to a \u03b5 of 3 from another?
The promise is per-person per-record; the number only means something next to its accounting.