Potential bug in rdp analysis

オープン
#166 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python, tensorflow

調査の方向性

まず、リンク先のtensorflow_privacy/privacy/analysis/rdp_accountant.pyの小さいRDPの処理付近の行から始め、次に1 + 1e-8を含むordersでissueのcompute_rdpとget_privacy_spentの例を実行します。完了の条件は、小さいalphaのケースが、そのorderを含めない同じ計算と整合するゼロではないepsilonを報告し、他の報告値が予期せず変更されないことです。

索引モデルが issue の本文から書いたものです。

説明

Hello !
I'm getting suspicious results when computing epsilon with small alphas.
For example with the code:

from tensorflow_privacy.privacy.analysis.rdp_accountant import compute_rdp
from tensorflow_privacy.privacy.analysis.rdp_accountant import get_privacy_spent

noise_multiplier = 1
batch_size = 105
steps = 1
delta = 1e-3

orders = [1 + 1e-8] + [1 + x / 10. for x in range(1, 100)] + list(range(12, 64))
sampling_probability = batch_size / 100000
rdp = compute_rdp(
    q=sampling_probability,
    noise_multiplier=noise_multiplier,
    steps=steps,
    orders=orders
)
print(get_privacy_spent(orders, rdp, target_delta=delta))  # returns (0, 0.001, 1.00000001)

The privacy spent should be small but not zero. When I remove (1 + 1e-8) of orders, I get the correct answer.
I tracked down this behavior to this line, which puts epsilon to zero for sufficiently small rdp, but I'm not sure why...

主要言語
Python
スター
2k
フォーク
477
平均マージ
17時間 24分
マージ済み PR(30日)
4

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

tensorflow/privacy のほかの issue

tensorflow/privacy の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。