Commit graph

24 commits

Author SHA1 Message Date
A. Unique TensorFlower
5cd2439401 Remove calls to _dp_sum_query.set_batch_size in dp_optimizer.py, as no method with that name exists for objects of class QueryWithLedger.
PiperOrigin-RevId: 259858031
2019-07-24 18:08:35 -07:00
Galen Andrew
973a1759aa Remove unused global_state reference from initial_sample_state.
global_state is never used in any of our existing DPQueries, and we don't have any compelling use case.

PiperOrigin-RevId: 255480537
2019-06-27 14:37:49 -07:00
Galen Andrew
d5dcfec745 Remove set_denominator functions from DPQuery and make QueryWithLedger easier to use.
set_denominator was added so that the batch size doesn't need to be specified before constructing the optimizer, but it breaks the DPQuery abstraction. Now the optimizer uses a GaussianSumQuery instead of GaussianAverageQuery, and normalization by batch size is done inside the optimizer.

Also instead of creating all DPQueries with a PrivacyLedger and then wrapping with QueryWithLedger, it is now sufficient to create the queries with no ledger and QueryWithLedger will construct the ledger and pass it to all inner queries.

PiperOrigin-RevId: 251462353
2019-06-04 10:14:32 -07:00
Nicolas Papernot
a06bc6c99b fix imports for v1 and make the versioning more explicit through LooseVersion
PiperOrigin-RevId: 249732562
2019-05-23 15:57:08 -07:00
Galen Andrew
3908429796 Make DPQuery classes (almost) completely functional: the only state from the initializer that is used gets pushed into the initial_global_state.
PiperOrigin-RevId: 248424593
2019-05-15 16:06:37 -07:00
Ilya Mironov
9cece21d92 Clean-up pass to eliminate warnings: replacing deprecated endpoints with recommended versions and annotating test sizes.
PiperOrigin-RevId: 246901723
2019-05-06 14:50:23 -07:00
Steve Chien
beb86c6e18 Update PrivacyLedger and DPOptimizer to make certain arguments optional.
PiperOrigin-RevId: 246235646
2019-05-01 18:07:32 -07:00
Nicolas Papernot
c09ec4c22b minor fixes to improve tf 1 and 2 compatibility
PiperOrigin-RevId: 246008822
2019-04-30 13:22:57 -07:00
Nicolas Papernot
febafd830d update API calls for TF2
PiperOrigin-RevId: 245817981
2019-04-29 14:00:40 -07:00
Steve Chien
31219a5f3f Fix DP optimizers to handle gradients that are None.
PiperOrigin-RevId: 244429987
2019-04-19 15:07:55 -07:00
Galen Andrew
9106a04e2c Use PrivacyLedger for privacy accounting.
Prior to this change the PrivacyLedger is running to keep a log of private queries, but the ledger is not actually used to compute the (epsilon, delta) guarantees. This CL adds a function to compute the RDP directly from the ledger.

Note I did verify that the tutorial builds and runs with the changes and for the first few iterations prints the same epsilon values as before the change.

PiperOrigin-RevId: 241063532
2019-03-29 15:31:32 -07:00
Galen Andrew
6231d0802d Cleanup directory structure, add top-level imports and add normalized_query.
Moved query classes from dir optimizers into new dir dp_query. Added NormalizedQuery class for queries that divide the output of another query by a constant like GaussianAverageQuery.

PiperOrigin-RevId: 240167115
2019-03-25 10:21:04 -07:00
Nicolas Papernot
0ebd134d99 Closes #33
PiperOrigin-RevId: 239129202
2019-03-18 22:42:01 -07:00
Nicolas Papernot
0c691085e1 missing reduce_mean
PiperOrigin-RevId: 235858614
2019-02-26 22:56:29 -08:00
Nicolas Papernot
c2d4b17881 Add support for the Eager mode
PiperOrigin-RevId: 235733975
2019-02-26 09:20:28 -08:00
Steve Chien
f37c9d1ea1 Use mean loss within each microbatch.
PiperOrigin-RevId: 233832864
2019-02-13 14:42:12 -08:00
Steve Chien
d75f1b80ba Fix copybara to limit some transformations to the beginning of the line.
PiperOrigin-RevId: 233151293
2019-02-08 16:55:57 -08:00
A. Unique TensorFlower
4d0ab48c35 Add privacy ledger.
The privacy ledger keeps a record of all sampling and query events for analysis post hoc by the privacy accountant.

PiperOrigin-RevId: 233094012
2019-02-08 11:21:43 -08:00
A. Unique TensorFlower
36d9959c19 internal change
PiperOrigin-RevId: 233093203
2019-02-08 11:17:09 -08:00
Galen Andrew
c8cb3c6b70 General cleanup.
1. Rename PrivateQuery to DPQuery.
2. Move construction of DPQuery to outside of optimizer.
3. Remove PrivateAverageQuery and PrivateSumQuery, and rename DPQuery's 'get_query_result' method to 'get_noised_result'. Rename private_queries.py to dp_query.py.
4. Remove thrice-replicated run_query function from the test classes and replace with a single function in new test_utils.py.
5. Add functions gaussian_sum_query_from_noise_multplier and gaussian_average_query_from_noise_multplier.

PiperOrigin-RevId: 230595991
2019-01-23 14:41:44 -08:00
Alex Pine
6c5c39c4f2 Created the optional unroll_microbatches parameter for the DpOptimizerClass as a workaround for b/122613513.
PiperOrigin-RevId: 229955297
2019-01-18 11:51:44 -08:00
Nicolas Papernot
398d1d052f Closes #4
PiperOrigin-RevId: 229212766
2019-01-14 10:55:15 -08:00
A. Unique TensorFlower
b4188446e0 Project import generated by Copybara.
PiperOrigin-RevId: 226345615
2018-12-20 09:17:59 -08:00
Steve Chien
1595ed3cd1 Project import generated by Copybara.
PiperOrigin-RevId: 226056146
2018-12-18 15:44:04 -08:00