Iniciar

Este documento pressupõe que você já esteja familiarizado com a privacidade diferencial e tenha determinado que gostaria de usar o TF Privacy para implementar garantias de privacidade diferenciadas em seu(s) modelo(s). Se você não estiver familiarizado com a privacidade diferencial, consulte a página de visão geral . Depois de instalar o TF Privacy, comece seguindo estas etapas:

1. Escolha uma versão diferentemente privada de um otimizador existente

Se você estiver usando atualmente um otimizador TensorFlow , provavelmente desejará selecionar um otimizador com o nome DPKeras*Optimizer , como [ DPKerasAdamOptimizer ] em [ TF Privacy ].

Opcionalmente, você pode tentar otimizadores vetorizados como [ tf_privacy.VectorizedDPKerasAdamOptimizer ]. para uma possível melhoria de velocidade (em termos de passos globais por segundo). Descobriu-se que o uso de otimizadores vetorizados fornece acelerações inconsistentes em experimentos, mas ainda não é bem compreendido. Como antes, você provavelmente desejará usar um otimizador análogo ao que está usando agora. Esses otimizadores vetorizados usam o operador vectorized_map do Tensorflow, que pode não funcionar com alguns outros operadores do Tensorflow. Se este for o seu caso, abra um problema no repositório TF Privacy GitHub .

2. Calcule a perda para seu minilote de entrada

Ao calcular a perda do seu minilote de entrada, certifique-se de que seja um vetor com uma entrada por exemplo, em vez de agregá-lo em um escalar. Isto é necessário porque o DP-SGD deve ser capaz de calcular a perda de microlotes individuais.

3. Treine seu modelo

Treine seu modelo usando o DP Optimizer (etapa 1) e perda vetorizada (etapa 2). Existem duas opções para fazer isso:

Feito isso, é recomendável ajustar seus hiperparâmetros. Para um passo a passo completo, consulte o tutorial de privacidade de classificação

4. Ajuste os hiperparâmetros DP-SGD

Todos os otimizadores tf_privacy utilizam três hiperparâmetros adicionais:

  • l2_norm_clip ou C - Norma de recorte (a norma euclidiana máxima (L2) de cada gradiente individual calculado por minilote).
  • noise_multiplier ou σ - Razão entre o desvio padrão e a norma de recorte.
  • num_microbatches ou B - Número de microlotes em que cada minilote é dividido.

Geralmente, quanto menor o desvio padrão efetivo σC/B, melhor será o desempenho do modelo treinado em suas métricas de avaliação.

Os três novos hiperparâmetros DP-SGD têm os seguintes efeitos e compensações:

  1. O número de microlotes B: Geralmente, aumentar isso melhorará a utilidade porque reduz o desvio padrão do ruído. No entanto, isso atrasará o treinamento em termos de tempo.
  2. A norma de recorte C: Como o desvio padrão das escalas de ruído comC, provavelmente é melhor definir C ser algum quantil (por exemplo, mediana, percentil 75, percentil 90) das normas de gradiente. Tendo um valor muito grande de C adiciona quantidades desnecessariamente grandes de ruído.
  3. O multiplicador de ruído σ: Dos três hiperparâmetros, a quantidade de privacidade depende apenas do multiplicador de ruído. Quanto maior o multiplicador de ruído, mais privacidade é obtida; no entanto, isso também acarreta uma perda de utilidade.

Essas compensações entre utilidade, privacidade e velocidade em termos de passos/segundo estão resumidas aqui:

compensações

Siga estas sugestões para encontrar os hiperparâmetros ideais:

  • Definir C para um quantil conforme recomendado acima. Um valor de 1,00 geralmente funciona bem.
  • Definir B = 1, para velocidade máxima de treinamento.
  • Experimente encontrar o maior valor de σ que ainda forneça utilidade aceitável. Geralmente, observou-se que valores de 0,01 ou inferiores funcionam bem.
  • Uma vez que um valor adequado de σ for encontrado, dimensione ambos B e σ por uma constante para atingir um nível razoável de privacidade.