Skip to content

Add exponential mechanism and permute-and-flip selection primitives#25

Open
copybara-service[bot] wants to merge 1 commit into
mainfrom
cl/933065255
Open

Add exponential mechanism and permute-and-flip selection primitives#25
copybara-service[bot] wants to merge 1 commit into
mainfrom
cl/933065255

Conversation

@copybara-service

@copybara-service copybara-service Bot commented Jun 16, 2026

Copy link
Copy Markdown

Add exponential mechanism and permute-and-flip selection primitives

Adds two new DPMechanism subclasses for differentially private selection
from a score vector:

  • DPExponentialMechanism: Standard exponential mechanism, preferred under
    zCDP accounting (tight conversion rho = epsilon^2 / 8).
  • DPPermuteAndFlip: Permute-and-flip mechanism (McKenna & Sheldon,
    NeurIPS 2020), which offers expected utility >= exponential mechanism
    (up to 2x improvement). Under PLD-based accounting, permute-and-flip
    uses a Laplace privacy loss distribution, giving tighter composition
    than the exponential mechanism's black-box epsilon-DP bound. Under
    zCDP, the standard conversion rho = epsilon^2 / 2 applies.

Both take a pre-computed score vector (not raw data) and return the index
of the selected candidate.

Adds two new DPMechanism subclasses for differentially private selection
from a score vector:

- DPExponentialMechanism: Standard exponential mechanism, preferred under
  zCDP accounting (tight conversion rho = epsilon^2 / 8).
- DPPermuteAndFlip: Permute-and-flip mechanism (McKenna & Sheldon,
  NeurIPS 2020), which offers expected utility >= exponential mechanism
  (up to 2x improvement). Under PLD-based accounting, permute-and-flip
  uses a Laplace privacy loss distribution, giving tighter composition
  than the exponential mechanism's black-box epsilon-DP bound. Under
  zCDP, the standard conversion rho = epsilon^2 / 2 applies.

Both take a pre-computed score vector (not raw data) and return the index
of the selected candidate.

PiperOrigin-RevId: 933065255
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants