Iniciar

Este documento pressupõe que você já esteja familiarizado com a privacidade diferencial e determinou 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 um otimizador do 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 GitHub do TF Privacy .

2. Perda de cálculo para seu minilote de entrada

Ao calcular a perda para seu minilote de entrada, certifique-se de que seja um vetor com uma entrada por exemplo, em vez de agregá-lo em um escalar. Isso é necessário, pois o DP-SGD deve ser capaz de calcular a perda para 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 obter 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 usam 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 σ - Relação do desvio padrão para 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 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 B: Geralmente, aumentar isso melhorará a utilidade porque reduz o desvio padrão do ruído. No entanto, ele irá desacelerar 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 como algum quantil (por exemplo, mediana, 75º percentil, 90º percentil) das normas de gradiente. Ter 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 vem com uma perda de utilidade.

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

compensações

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

  • Defina C como um quantil conforme recomendado acima. Um valor de 1,00 geralmente funciona bem.
  • Defina B = 1, para velocidade máxima de treinamento.
  • Experimente encontrar o maior valor de σ que ainda dê utilidade aceitável. Geralmente, os valores de 0,01 ou inferiores foram observados para funcionar bem.
  • Assim que um valor adequado de σ for encontrado, dimensione B e σ por uma constante para alcançar um nível razoável de privacidade.