Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add pointer to paper documenting the epsilon computation when it is available #19

Closed
srxzr opened this issue Feb 21, 2019 · 6 comments
Closed
Assignees
Labels
enhancement New feature or request

Comments

@srxzr
Copy link

srxzr commented Feb 21, 2019

Hi all,

The code seems to implement Abadi et al.'s work. However, the way you compute the overall epsilon does not follow the Abadi's paper. I was wondering if you can give me some references about how you calculated the epsilon.

Thanks,

@npapernot
Copy link
Collaborator

npapernot commented Feb 21, 2019

@ilyamironov would be the best person to answer this question, but my guess is that the RDP paper would be a good starting points: https://arxiv.org/abs/1702.07476.

@ilyamironov
Copy link
Contributor

Indeed, the algorithm that we use to maintain the RDP accountant is different from the Abadi et al. paper. We are working on a paper that fully documents the procedure. Once it's available, we'll update the README file. (For the record, the results of doing privacy analysis via the moments/RDP accountant must be identical. The main difference is in numerical stability for a wide range of parameters.)

@npapernot npapernot changed the title epsilon computation add pointer to paper documenting the epsilon computation when it is available Feb 23, 2019
@ycpei
Copy link

ycpei commented Mar 14, 2019

@srxzr The epsilon is computed using the inversion of Item 2 of Theorem 2 in Abadi et. al., and it computes the smallest such epsilon given a list of lambdas (alpha or orders in the code).

The rdp parameter is the log moment generating function (alpha in Abadi et. al.), computed using _compute_log_a_int or _compute_log_a_frac depending on whether lambda is an integer or not.

_compute_log_a_int uses the binomial expansion to compute the log moment generating function of log((1 - q) mu_0(X) + q mu_1(X)) - log (mu_0(X)) where mu_0 is the density of N(0, sigma^2) and mu_1 is the density of N(1, sigma^2), and X is distributed according to (1 - q) mu_0 + q mu_1.

I have yet to decode _compute_log_a_frac.

Hope this helps. Let me know if you have further questions.

@npapernot npapernot added the enhancement New feature or request label Mar 17, 2019
@srxzr
Copy link
Author

srxzr commented May 30, 2019

@ycpei Thank you for your response. Just to make sure Abadi et. al. uses random sampling (instead of shuffling) but the implementations here use shuffling. I was wondering if you use any theorem to compensate for the difference.

Also, I implemented a random sampler with replacement and my results were a bit lower compare to the shuffling.

@ilyamironov
Copy link
Contributor

@srxzr Re shuffling vs sampling, it's a correct observation. Our analysis assumes that the minibatches are iid samples, while in practice they are most likely fixed-sized disjoint (within a single epoch) samples. The best reference that compares various policies of sampling is this one: https://arxiv.org/pdf/1807.01647.pdf

@schien1729
Copy link
Collaborator

Paper posted on arXiv: https://arxiv.org/pdf/1908.10530.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants