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 przycinania (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 jaką podzielona jest każda minipartia.

Generalnie, 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 wartości poprawi użyteczność, ponieważ zmniejsza odchylenie standardowe szumu. Spowolni to jednak trening pod względem czasu.
  2. Norma przycinania C: Od odchylenia standardowego skali szumu zC, prawdopodobnie najlepiej będzie ustawić C być jakimś kwantylem (np. medianą, 75. percentylem, 90. percentylem) norm gradientu. Posiadanie zbyt dużej wartości C dodaje niepotrzebnie dużo hałasu.
  3. Mnożnik szumu σ: Z trzech hiperparametrów stopień 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:

  • Ustawić C do kwantyla, jak zalecono powyżej. Wartość 1,00 często działa dobrze.
  • Ustawić B = 1, dla maksymalnej prędkości 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.
  • Gdy odpowiednia wartość σ zostanie znaleziony, skaluj oba B I σ przez stałą, aby osiągnąć rozsądny poziom prywatności.