Skip to content

Feature: Double Mixture of Gaussians for dp_accounting #274

Description

@jan-schuchardt

Hi,

af761ba added "MixtureGaussianPrivacyLoss" to dp_accounting/pld/privacy_loss_mechanism.py, which enables privacy accounting for mechanisms that are dominated by a single Gaussian and a mixture of Gaussians.

For certain use cases, it might be nice to generalize this to mechanisms dominated by two mixture of Gaussians, each with different mixture weights and means/sensitivities.
For instance, such a "DoubleMixtureGaussianPrivacyLoss" can be used for efficient (albeit non-tight) accounting when considering substitutions of records, see Sections 6.2 & 6.3 in https://proceedings.mlr.press/v108/koskela20b.html.
It is also needed for tight accounting of group privacy under insertion/removal, see Theorem 3.8 in https://arxiv.org/abs/2403.04867.

I already had to implement this for my last project, see https://github.com/jan-schuchardt/group_amplification/blob/master/group_amplification/privacy_analysis/composition/pld/accounting.py.
So if you'd like, I could clean my code up a bit and create a pull request.

Let me know if you think that this would be useful addition :)

Activity

  1. arung54 commented on Nov 6, 2024

    @arung54
    Collaborator

    Hi Jan,

    Thanks for offering to contribute! We would be interested in adding your accounting code, please go ahead and submit a PR when you feel the code is ready.

    To anticipate some feedback on that PR - it seems like both DoubleMixtureLaplacePrivacyLoss and DoubleMixtureGaussianPrivacyLoss reuse many methods from MixtureGaussianPrivacyLoss - do you think it's possible to, as part of your cleanup, inherit these methods instead (e.g. from a new abstract class that all three could inherit the shared methods from)? This will make it easier to maintain the new code on our end after the PR is accepted :)

    Thanks!
    Arun

  2. jan-schuchardt commented on Nov 13, 2024

    @jan-schuchardt
    Author

    Hi Arun,

    I've created a draft pull request, see #277.
    It would be great if you could have a look :)

    Best,
    Jan

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions