代表的な面接トピック

差分プライバシーにおけるイプシロン、感度、プライバシーバジェットをどのように説明しますか?

データ難しい
Offer.cc 編集チーム公開日 更新日

質問

ユーザー統計を公開する差分プライベートなサービスを設計してください。プライバシー単位と隣接データセットを定義し、カウントまたは平均のためのメカニズムを選択し、イプシロン、デルタ、感度、合成について説明し、寄与度制限を設けたバジェットを割り当て、精度を評価し、差分プライバシー以外の制御が必要なリスクを述べてください。

1. 設問

ある分析チームが、1人のユーザーの追加、削除、または1件のレコードによって公開結果が実質的に変化しないようにした上で、日間アクティブユーザー数、地域別の平均注文額、トレンドチャートを公開したいと考えています。チームメンバーの中には、名前の削除やユーザーIDのハッシュ化をプライバシー対策とみなす人もいれば、イプシロンを任意に極小の値に設定したがる人もいます。

差分プライバシーに基づく公開フローを設計してください。プライバシー単位、隣接データセット、クエリ感度、ノイズメカニズム、イプシロンとデルタ、反復クエリにわたる合成、ユーザーごとの寄与度制限、精度の評価について説明してください。また、メカニズムと並行してアクセス制御、データの最小化、またはガバナンスを必要とするリスクを述べてください。

2. 制約と明確化事項

  • まず、保護対象となる単位がユーザー、アカウント、デバイス、イベントのいずれであるかを定義します。1人のユーザーからの複数のイベントは、通常1つのプライバシー単位に属します。
  • 1人のユーザーの全レコードが異なるデータセット、または1件のイベントが異なるデータセットなど、隣接データセットの定義を確定します。定義が異なれば、生じる感度や保証も異なります。
  • 中央集権型差分プライバシー(Central Differential Privacy)について論じます。信頼できる内部メカニズムが生データにアクセスし、ノイズを加えた結果を公開します。匿名化、ハッシュ化、暗号化は自動的に差分プライバシーの保証を提供するものではありません。
  • クエリ、データ分布、脅威モデルなしに「適切なイプシロン」を提示してはいけません。プライバシー強度、有用性、ユーザーの期待は合わせて選択する必要があります。

3. コアの定義:隣接データセットの出力分布を保護する

ランダム化アルゴリズム M は、任意の隣接データセット DD'、および出力イベント S に対して次が成り立つとき、(epsilon, delta)-差分プライベートとなります。

Pr[M(D) in S] <= exp(epsilon) * Pr[M(D') in S] + delta

補助情報がある場合でも、これにより単一の公開結果からプライバシー単位が存在するかどうかを推論することが困難になります。これは、出力に機密情報が含まれていないことや、匿名化されたデータが特定できないことを意味するわけではありません。一般に、イプシロンが小さいほどプライバシー制約は強くなりますが、より多くのノイズが追加されます。デルタは許容されるわずかな失敗確率であり、任意の誤差率や欠損率ではありません。

隣接関係は、1単位の変化が何を意味するかを定義します。1人のユーザーが最大5件の注文まで寄与できる場合、ユーザーレベルのカウントは感度1に制限できますが、注文額の合計の場合は各注文またはユーザーの合計に対しても上限を設ける必要があります。そうしないと、1人のユーザーが無制限に結果を変化させてしまう可能性があります。

4. メカニズムと参照用疑似コード

感度 Delta を持つカウントまたは有界な合計に対して、ラプラスメカニズムは f(D) + Laplace(Delta / epsilon) を公開します。高次元クエリや (epsilon, delta) 保証を必要とする平均クエリではガウスメカニズムが一般的ですが、その調整は感度、デルタ、および会計(accounting)方法に依存します。

text
release_count(users, epsilon, delta, budget):
  clipped = cap_each_user_contribution(users, max_contribution=1)
  true_count = count_distinct_privacy_units(clipped)
  require budget.remaining >= epsilon
  noise = sample_laplace(scale=1 / epsilon)
  budget.spend(epsilon, delta)
  return max(0, round(true_count + noise))

release_mean(records, epsilon, delta, budget):
  clipped = cap_each_user_contribution(records, max_rows=K)
  clipped_values = clamp_values(clipped, lower=L, upper=U)
  sum_release = dp_sum(clipped_values, epsilon_sum, delta_sum)
  count_release = dp_count(clipped, epsilon_count, delta_count)
  return sum_release / max(count_release, minimum_safe_count)

平均値の計算では、分子のみにノイズを追加することはできません。分母も保護する必要があり、値とユーザーごとの寄与度をクリッピング(制限)する必要があります。クリッピングはバイアスを導入し、ノイズは分散を導入するため、シミュレーションまたは保持された評価セット上で区間カバレッジ、相対誤差、小規模グループの歪みを測定してください。

5. 合成、バジェット、システム設計

1つのプライバシー単位が複数の公開に参加する場合、プライバシーの損失は合成(累積)されます。基本的な合成定理では複数の純粋イプシロン保証が加算されます。実際のシステムでは、よりタイトな高度な合成定理やRényi DP会計を使用できますが、会計機構(accountant)、プライバシー単位、デルタのセマンティクスを標準化する必要があります。同一クエリに対する10個のフィルタもバジェットを消費します。集約したからといって合成が消え去るわけではありません。

バジェットサービスは、プライバシー単位またはデータセット、クエリタイプ、バージョン、有効期限ポリシーごとに消費されたイプシロンとデルタを追跡する必要があります。バジェットを使い果たした場合は、拒否するか、より粗い結果に縮退させるか、または既存の公開結果を返す必要があります。互いに素なユーザーパーティションには並列合成の上限を使用できますが、同一ユーザーを含む複数のグループには依然としてユーザーレベルの会計が必要です。

また、ガバナンスによってクエリ権限を制限し、監査ログを保持し、保持期間を定義し、探索的分析と公式リリースを区別し、最小グループサイズを強制する必要があります。差分プライバシーは統計的リリースの区別可能性を保護するものであり、不正な生データアクセス、悪意のある内部関係者、ビジネスロジックの漏洩、あるいはそもそも公開されるべきでなかった結果を修復するものではありません。

6. 発展的な問いと落とし穴

  • なぜハッシュ化されたIDでは不十分なのか? ハッシュは依然として安定した紐付け可能な識別子であることが多く、外部データと組み合わせて再識別される可能性があります。隣接データセットに対する出力分布の保証は提供されません。
  • イプシロンは常に小さい方が良いのか? いいえ。イプシロンが小さすぎると小規模グループの結果が役に立たなくなる可能性があります。脅威モデル、ユーザーの期待、目標誤差に合わせて選択してください。
  • なぜユーザーの寄与度を制限するのか? 上限を設けないと、極めてアクティブな1人のユーザーが感度を支配してしまい、ノイズ調整や提示された保証の解釈が困難になります。
  • 多数のセグメントが公開されると何が起きるか? クエリごとにバジェットが消費されます。高次元のスライスはスパースなノイズや多重比較の問題も引き起こします。次元を制限し、クエリを事前登録し、単一の会計機構を使用してください。

7. 検証と品質チェック

  • プロパティテスト: 隣接データセットに対してメカニズムを繰り返し実行し、単一の出力ペアだけでなく出力分布の境界を検証します。
  • 有用性テスト: 代表的な評価セット上で、カウント、合計、平均について絶対誤差と相対誤差、区間カバレッジ、グループレベルの誤差差分を測定します。
  • バジェットテスト: 反復クエリ、並行リクエスト、リトライ、キャッシュヒットをシミュレートし、1つの論理的リリースに対して1回のみ課金され、残りのバジェットを回避できないことを検証します。
  • ガバナンステスト: 公開されたプライバシーステートメントに照らして、プライバシー単位のマッピング、クリッピング、権限、監査、最小グループ閾値、バージョンのロールバックを検証します。

8. 面接の評価ポイント

プライバシー単位と隣接性を定義できるか

保護対象、ユーザーレベルまたはイベントレベルの隣接性、およびその選択が感度とバジェットをどのように変えるかを述べられる必要があります。

メカニズムと有用性のトレードオフを説明できるか

単に「ランダムノイズを追加する」と言うだけでなく、ラプラスメカニズムとガウスメカニズムを区別し、感度、クリッピング、イプシロン、デルタ、バイアス、分散を説明できる必要があります。

合成とバジェットのガバナンスを扱えるか

クエリの繰り返しによってプライバシー損失が蓄積することを説明し、会計、寄与度制限、拒否、または縮退を提案できる必要があります。

差分プライバシーの境界を特定できるか

差分プライバシーがアクセス制御、データの最小化、監査、出力ガバナンスに代わるものではないことを述べ、プロパティテスト、有用性テスト、バジェットテストを提示できる必要があります。

公開情報ソース

関連する質問