Rozpocznij

W tym dokumencie założono, że znasz już zasadę różnicowej prywatności i zdecydowałeś, że chcesz używać TF Privacy w celu wdrożenia gwarancji różnicowej prywatności w swoich modelach. Jeśli nie jesteś zaznajomiony z prywatnością różnicową, przejrzyj stronę przeglądu . Po zainstalowaniu TF Privacy zacznij od wykonania następujących kroków:

1. Wybierz różnicowo prywatną wersję istniejącego Optymalizatora

Jeśli obecnie używasz optymalizatora TensorFlow, najprawdopodobniej będziesz chciał wybrać optymalizator o nazwie DPKeras*Optimizer , na przykład [ DPKerasAdamOptimizer ] w [ TF Privacy ].

Opcjonalnie możesz wypróbować wektoryzowane optymalizatory, takie jak [ tf_privacy.VectorizedDPKerasAdamOptimizer ]. dla możliwej poprawy prędkości (w kategoriach globalnych kroków na sekundę). Stwierdzono, że zastosowanie optymalizatorów wektorowych zapewnia niespójne przyspieszenie w eksperymentach, ale nie zostało to jeszcze dobrze poznane. Tak jak poprzednio, najprawdopodobniej będziesz chciał użyć optymalizatora analogicznego do tego, którego używasz teraz. Te wektoryzowane optymalizatory używają operatora vectorized_map Tensorflow, który może nie działać z niektórymi innymi operatorami Tensorflow. Jeśli tak jest w Twoim przypadku, otwórz problem w repozytorium TF Privacy GitHub .

2. Oblicz straty dla minipartii wejściowej

Obliczając stratę dla minipartii wejściowej, upewnij się, że jest to wektor z jednym wpisem na przykład, zamiast agregować je w skalar. Jest to konieczne, ponieważ DP-SGD musi być w stanie obliczyć stratę dla poszczególnych mikropartii.

3. Wytrenuj swój model

Trenuj swój model za pomocą Optymalizatora DP (krok 1) i strat wektorowych (krok 2). Można to zrobić na dwa sposoby:

Po wykonaniu tej czynności zaleca się dostrojenie hiperparametrów. Pełny opis znajdziesz w samouczku dotyczącym prywatności klasyfikacji

4. Dostosuj hiperparametry DP-SGD

Wszystkie optymalizatory tf_privacy przyjmują trzy dodatkowe hiperparametry:

  • l2_norm_clip lub \(C\) - Norma obcinania (maksymalna norma euklidesowa (L2) dla każdego indywidualnego gradientu obliczona na minipartię).
  • noise_multiplier lub \(σ\) — Stosunek odchylenia standardowego do normy obcinania.
  • num_microbatches lub \(B\) — Liczba mikropartii, na które podzielona jest każda minipartia.

Ogólnie rzecz biorąc, im niższe efektywne odchylenie standardowe \(σC / B\), tym lepsza wydajność wytrenowanego modelu w zakresie jego metryk oceny.

Trzy nowe hiperparametry DP-SGD mają następujące skutki i kompromisy:

  1. Liczba mikropartii \(B\): Ogólnie rzecz biorąc, zwiększenie tej liczby poprawi użyteczność, ponieważ zmniejsza odchylenie standardowe szumu. Spowolni to jednak trening pod względem czasu.
  2. Norma obcinania \(C\): Ponieważ odchylenie standardowe skal szumu z\(C\)prawdopodobnie najlepiej jest ustawić \(C\) na jakiś kwantyl (np. mediana, 75. percentyl, 90. percentyl) norm gradientu. Posiadanie zbyt dużej wartości \(C\) powoduje niepotrzebne zwiększenie ilości szumu.
  3. Mnożnik szumu \(σ\): Spośród trzech hiperparametrów poziom prywatności zależy tylko od mnożnika szumu. Im większy mnożnik szumu, tym większa prywatność; wiąże się to jednak również z utratą użyteczności.

Te kompromisy między użytecznością, prywatnością i szybkością w krokach/sekundę podsumowano tutaj:

kompromisy

Postępuj zgodnie z poniższymi sugestiami, aby znaleźć optymalne hiperparametry:

  • Ustaw \(C\) na kwantyl zgodnie z zaleceniami powyżej. Wartość 1,00 często działa dobrze.
  • Ustaw \(B\) = 1, aby uzyskać maksymalną prędkość treningu.
  • Poeksperymentuj, aby znaleźć największą wartość σ, która nadal zapewnia akceptowalną użyteczność. Ogólnie zaobserwowano, że wartości 0,01 lub niższe działają dobrze.
  • Po znalezieniu odpowiedniej wartości \(σ\) przeskaluj \(B\) i \(σ\) o stałą, aby osiągnąć rozsądny poziom prywatności.