jax_privacy.matrix_factorization.toeplitz.minsep_sensitivity_squared

jax_privacy.matrix_factorization.toeplitz.minsep_sensitivity_squared(strategy_coef, min_sep, *, n, max_participations=None)[source]

Returns the sensitivity of the Toeplitz matrix.

With max_participations = 1 (and any min_sep, say min_sep = 1), this is the same as single participation.

The result is exact (tight) when the Toeplitz coefficients are non-negative and non-increasing. If the coefficients do not satisfy these assumptions, they are projected onto the set of non-negative non-increasing sequences (via absolute value and reverse cumulative max), and the result is an upper bound on the true sensitivity.

Reference: While this code actually predates the paper, this result is published in https://arxiv.org/pdf/2405.13763, Theorem 2.

Parameters:
  • strategy_coef (Array) – The nonzero coefficients of the Toeplitz matrix C used in the matrix mechanism with factorization A = B C. That is, coef are the leading nonzero entries of C[:, 0]. C is of size n x n; if len(coef) < n, the remaining coefficients are assumed to be zero. If len(coef) > n, then only the first n coefficients are used.

  • min_sep (int) – The minimum separation between two participation of a worst-case client/sample. Note that we use the definition in [(Amplified) Banded Matrix Factorization: A unified approach to private training](https://arxiv.org/abs/2306.08153). For a user participating on iteration $i$ and then again on iteration $j$, the separation is $j -i$; that is, a min_sep of 1 allows participation on every iteration.

  • n (int) – The size of the matrix C (see coef above).

  • max_participations (int | None) – The maximum participation of a worst-case user.

Return type:

Array

Returns:

The sensitivity squared. This is exact when strategy_coef is non-negative and non-increasing, and an upper bound otherwise.