開始使用

本文件假設您已熟悉差分隱私,並已確定您想要使用 TF Privacy 在模型中實作差分隱私保證。如果您不熟悉差分隱私,請參閱總覽頁面。安裝 TF Privacy 後,請按照下列步驟開始使用

1. 選擇現有最佳化工具的差分隱私版本

如果您目前使用 TensorFlow optimizer,您很可能想要選取名稱為 DPKeras*Optimizer 的 Optimizer,例如 [DPKerasAdamOptimizer](在 [TF Privacy] 中)。

或者,您可以嘗試向量化最佳化工具,例如 [tf_privacy.VectorizedDPKerasAdamOptimizer],以提升速度(以每秒全域步驟為單位)。實驗發現,使用向量化最佳化工具提供的加速效果不一致,但目前尚未完全了解。如同先前所述,您可能仍會想使用與您目前使用的最佳化工具類似的工具。這些向量化最佳化工具使用 Tensorflow 的 vectorized_map 運算子,可能無法與其他 Tensorflow 運算子搭配使用。如果您遇到這種情況,請在 TF Privacy GitHub 存放庫上建立問題單

2. 計算輸入小批次的損失

計算輸入小批次的損失時,請務必使其成為每個範例一個條目的向量,而不是將其匯總為純量。這是必要的,因為 DP-SGD 必須能夠計算個別微批次的損失。

3. 訓練您的模型

使用 DP 最佳化工具(步驟 1)和向量化損失(步驟 2)訓練您的模型。有兩種方法可以執行此操作

完成此操作後,建議您調整超參數。如需完整逐步解說,請參閱分類隱私教學課程

4. 調整 DP-SGD 超參數

所有 tf_privacy 最佳化工具都採用三個額外超參數

  • l2_norm_clip 或 \(C\) - 裁剪範數(每個小批次計算的每個個別梯度的最大歐幾里得 (L2) 範數)。
  • noise_multiplier 或 \(σ\) - 標準差與裁剪範數的比率。
  • num_microbatches 或 \(B\) - 每個小批次分割成的微批次數量。

一般而言,有效標準差 \(σC / B\) 越低,訓練模型在其評估指標上的效能就越好。

三個新的 DP-SGD 超參數具有以下效果和取捨

  1. 微批次數量 \(B\):一般而言,增加此值會提高實用性,因為它可以降低雜訊的標準差。但是,這會減慢訓練時間。
  2. 裁剪範數 \(C\):由於雜訊的標準差會隨著 \(C\) 縮放,因此最好將 \(C\) 設定為梯度範數的某些分位數(例如中位數、第 75 個百分位數、第 90 個百分位數)。\(C\) 值過大會不必要地增加大量雜訊。
  3. 雜訊乘數 \(σ\):在三個超參數中,隱私量僅取決於雜訊乘數。雜訊乘數越大,獲得的隱私就越多;但是,這也會導致實用性降低。

此處摘要說明了實用性、隱私權和速度(以每秒步驟為單位)之間的取捨

tradeoffs

遵循這些建議以找出最佳超參數

  • 將 \(C\) 設定為上述建議的分位數。1.00 的值通常效果良好。
  • 將 \(B\) 設定為 1,以獲得最快的訓練速度。
  • 實驗找出仍能提供可接受實用性的最大 σ 值。一般而言,已觀察到 0.01 或更低的值效果良好。
  • 找到合適的 \(σ\) 值後,將 \(B\) 和 \(σ\) 都按常數縮放,以達到合理的隱私權等級。