Esempio n. 1
0
 def test_compute_rdp_sequence(self):
     rdp_vec = rdp_accountant.compute_rdp(0.01, 2.5, 50,
                                          [1.5, 2.5, 5, 50, 100, np.inf])
     self.assertSequenceAlmostEqual(
         rdp_vec,
         [0.00065, 0.001085, 0.00218075, 0.023846, 167.416307, np.inf],
         delta=1e-5)
Esempio n. 2
0
 def test_get_privacy_spent_check_target_eps(self):
     orders = range(2, 33)
     rdp = rdp_accountant.compute_rdp(0.01, 4, 10000, orders)
     _, delta, opt_order = rdp_accountant.get_privacy_spent(
         orders, rdp, target_eps=1.258575)
     self.assertAlmostEqual(delta, 1e-5)
     self.assertEqual(opt_order, 20)
Esempio n. 3
0
 def test_get_privacy_spent_check_target_delta(self):
     orders = range(2, 33)
     rdp = rdp_accountant.compute_rdp(0.01, 4, 10000, orders)
     eps, _, opt_order = rdp_accountant.get_privacy_spent(orders,
                                                          rdp,
                                                          target_delta=1e-5)
     self.assertAlmostEqual(eps, 1.258575, places=5)
     self.assertEqual(opt_order, 20)
Esempio n. 4
0
    def test_check_composition(self):
        orders = (1.25, 1.5, 1.75, 2., 2.5, 3., 4., 5., 6., 7., 8., 10., 12.,
                  14., 16., 20., 24., 28., 32., 64., 256.)

        rdp = rdp_accountant.compute_rdp(q=1e-4,
                                         noise_multiplier=.4,
                                         steps=40000,
                                         orders=orders)

        eps, _, opt_order = rdp_accountant.get_privacy_spent(orders,
                                                             rdp,
                                                             target_delta=1e-6)

        rdp += rdp_accountant.compute_rdp(q=0.1,
                                          noise_multiplier=2,
                                          steps=100,
                                          orders=orders)
        eps, _, opt_order = rdp_accountant.get_privacy_spent(orders,
                                                             rdp,
                                                             target_delta=1e-5)
        self.assertAlmostEqual(eps, 8.509656, places=5)
        self.assertEqual(opt_order, 2.5)
Esempio n. 5
0
    def test_compute_rdp_from_ledger(self):
        orders = range(2, 33)
        q = 0.1
        n = 1000
        l2_norm_clip = 3.14159
        noise_stddev = 2.71828
        steps = 3

        query_entry = privacy_ledger.GaussianSumQueryEntry(
            l2_norm_clip, noise_stddev)
        ledger = [privacy_ledger.SampleEntry(n, q, [query_entry])] * steps

        z = noise_stddev / l2_norm_clip
        rdp = rdp_accountant.compute_rdp(q, z, steps, orders)
        rdp_from_ledger = rdp_accountant.compute_rdp_from_ledger(
            ledger, orders)
        self.assertSequenceAlmostEqual(rdp, rdp_from_ledger)
Esempio n. 6
0
 def test_compute_rdp_scalar(self):
     rdp_scalar = rdp_accountant.compute_rdp(0.1, 2, 10, 5)
     self.assertAlmostEqual(rdp_scalar, 0.07737, places=5)
Esempio n. 7
0
 def test_compute_rdp_no_sampling(self):
     # q = 1, RDP = alpha/2 * sigma^2
     self.assertEqual(rdp_accountant.compute_rdp(1, 10, 1, 20), 0.1)
Esempio n. 8
0
 def test_compute_rdp_no_data(self):
     # q = 0
     self.assertEqual(rdp_accountant.compute_rdp(0, 10, 1, 20), 0)