Empezar

Este documento asume que ya está familiarizado con la privacidad diferencial y ha determinado que le gustaría usar TF Privacy para implementar garantías de privacidad diferencial en su(s) modelo(s). Si no está familiarizado con la privacidad diferencial, consulte la página de información general . Después de instalar TF Privacy, comience siguiendo estos pasos:

1. Elija una versión diferencialmente privada de un Optimizer existente

Si actualmente está utilizando un optimizador de TensorFlow, lo más probable es que desee seleccionar un optimizador con el nombre DPKeras*Optimizer , como [ DPKerasAdamOptimizer ] en [ TF Privacy ].

Opcionalmente, puede probar optimizadores vectorizados como [ tf_privacy.VectorizedDPKerasAdamOptimizer ]. para una posible mejora de la velocidad (en términos de pasos globales por segundo). Se ha descubierto que el uso de optimizadores vectorizados proporciona aceleraciones inconsistentes en los experimentos, pero aún no se comprende bien. Como antes, lo más probable es que desee utilizar un optimizador análogo al que está utilizando ahora. Estos optimizadores vectorizados usan el operador vectorized_map de Tensorflow, que puede no funcionar con otros operadores de Tensorflow. Si este es su caso, abra un problema en el repositorio de TF Privacy GitHub .

2. Calcular la pérdida para su minilote de entrada

Cuando calcule la pérdida de su minilote de entrada, asegúrese de que sea un vector con una entrada por ejemplo, en lugar de agregarlo a un escalar. Esto es necesario ya que DP-SGD debe poder calcular la pérdida de microlotes individuales.

3. Entrena a tu modelo

Entrene su modelo usando el DP Optimizer (paso 1) y la pérdida vectorizada (paso 2). Hay dos opciones para hacer esto:

Una vez hecho esto, se recomienda ajustar los hiperparámetros. Para obtener un tutorial completo, consulte el tutorial de clasificación de privacidad.

4. Ajuste los hiperparámetros DP-SGD

Todos los optimizadores tf_privacy toman tres hiperparámetros adicionales:

  • l2_norm_clip o \(C\) : norma de recorte (la norma euclidiana máxima (L2) de cada gradiente individual calculado por minilote).
  • noise_multiplier o \(σ\) : relación entre la desviación estándar y la norma de recorte.
  • num_microbatches o \(B\) : número de microlotes en los que se divide cada minilote.

En general, cuanto menor sea la desviación estándar efectiva \(σC / B\), mejor será el rendimiento del modelo entrenado en sus métricas de evaluación.

Los tres nuevos hiperparámetros DP-SGD tienen los siguientes efectos y compensaciones:

  1. El número de microlotes \(B\): Generalmente, aumentar esto mejorará la utilidad porque reduce la desviación estándar del ruido. Sin embargo, ralentizará el entrenamiento en términos de tiempo.
  2. La norma de recorte \(C\): dado que la desviación estándar del ruido escala con\(C\), probablemente sea mejor establecer \(C\) en algún cuantil (por ejemplo, mediana, percentil 75, percentil 90) de las normas de gradiente. Tener un valor demasiado grande de \(C\) agrega cantidades innecesariamente grandes de ruido.
  3. El multiplicador de ruido \(σ\): De los tres hiperparámetros, la cantidad de privacidad depende solo del multiplicador de ruido. Cuanto mayor sea el multiplicador de ruido, más privacidad se obtiene; sin embargo, esto también conlleva una pérdida de utilidad.

Estos compromisos entre utilidad, privacidad y velocidad en términos de pasos/segundo se resumen aquí:

compensaciones

Siga estas sugerencias para encontrar los hiperparámetros óptimos:

  • Establezca \(C\) en un cuantil como se recomienda anteriormente. Un valor de 1,00 suele funcionar bien.
  • Establezca \(B\) = 1, para la máxima velocidad de entrenamiento.
  • Experimente para encontrar el valor más grande de σ que aún brinde una utilidad aceptable. En general, se ha observado que los valores de 0,01 o inferiores funcionan bien.
  • Una vez que encuentre un valor adecuado de \(σ\) , escale tanto \(B\) como \(σ\) mediante una constante para lograr un nivel razonable de privacidad.