Başlarken

Bu belge, diferansiyel gizliliğe zaten aşina olduğunuzu ve model(ler)inizde diferansiyel gizlilik garantilerini uygulamak için TF Gizliliğini kullanmak istediğinizi belirlediğinizi varsaymaktadır. Farklı gizlilik konusunda bilginiz yoksa lütfen genel bakış sayfasını inceleyin. TF Privacy'yi yükledikten sonra aşağıdaki adımları izleyerek başlayın:

1. Mevcut bir Optimize Edicinin diferansiyel olarak özel bir sürümünü seçin

Şu anda bir TensorFlow iyileştirici kullanıyorsanız, büyük olasılıkla DPKeras*Optimizer adında bir Optimize Edici seçmek isteyeceksiniz, örneğin [ TF Privacy ] içindeki [ DPKerasAdamOptimizer ] gibi.

İsteğe bağlı olarak, [ tf_privacy.VectorizedDPKerasAdamOptimizer ] gibi vektörleştirilmiş optimize edicileri deneyebilirsiniz. olası bir hız iyileştirmesi için (saniyedeki küresel adım sayısı cinsinden). Vektörize optimize edicilerin kullanımının deneylerde tutarsız hızlanmalar sağladığı bulunmuştur ancak henüz tam olarak anlaşılmamıştır. Daha önce olduğu gibi, büyük olasılıkla şu anda kullandığınıza benzer bir optimize edici kullanmak isteyeceksiniz. Bu vektörleştirilmiş optimize ediciler, Tensorflow'un diğer bazı Tensorflow operatörleriyle çalışmayabilecek vectorized_map operatörünü kullanır. Sizin için de durum böyleyse lütfen TF Gizlilik GitHub deposunda bir konu açın .

2. Giriş mini grubunuz için kaybı hesaplayın

Giriş mini grubunuz için kaybı hesaplarken, bunun bir skalere göre toplanması yerine, örnek başına bir giriş içeren bir vektör olduğundan emin olun. DP-SGD'nin bireysel mikropartiler için kaybı hesaplayabilmesi gerektiğinden bu gereklidir.

3. Modelinizi eğitin

DP Optimizer'ı (1. adım) ve vektörleştirilmiş kaybı (2. adım) kullanarak modelinizi eğitin. Bunu yapmak için iki seçenek vardır:

  • Model.fit çağırmadan önce optimize ediciyi ve kaybı bağımsız değişken olarak Model.compile öğesine iletin.
  • Özel bir eğitim döngüsü yazarken vektörleştirilmiş kayıp üzerinde Optimizer.minimize() işlevini kullanın.

Bu yapıldıktan sonra hiperparametrelerinizi ayarlamanız önerilir. Tam bir açıklama için sınıflandırma gizliliği eğitimine bakın

4. DP-SGD hiperparametrelerini ayarlayın

Tüm tf_privacy iyileştiricileri üç ek hiper parametre alır:

  • l2_norm_clip veya \(C\) - Kırpma normu (mini parti başına hesaplanan her bir gradyanın maksimum Öklid (L2) normu).
  • noise_multiplier veya \(σ\) - Standart sapmanın kırpma normuna oranı.
  • num_microbatches veya \(B\) - Her bir mini partinin bölündüğü mikro parti sayısı.

Genellikle etkin standart sapma ne kadar düşük olursa \(σC / B\)eğitilen modelin değerlendirme metriklerindeki performansı o kadar iyi olur.

Üç yeni DP-SGD hiperparametresi aşağıdaki etkilere ve ödünleşimlere sahiptir:

  1. Mikroparti sayısı \(B\): Genellikle bunun arttırılması faydayı artıracaktır çünkü gürültünün standart sapmasını düşürür. Ancak zaman açısından eğitimi yavaşlatacaktır.
  2. Kırpma normu \(C\): Gürültü ölçeklerinin standart sapması ile\(C\)ayarlamak muhtemelen en iyisidir \(C\) gradyan normlarının bir yüzdelik dilimi (örneğin medyan, 75. yüzdelik, 90. yüzdelik) olacaktır. Değerinin çok büyük olması \(C\) gereksiz derecede büyük miktarda gürültü ekler.
  3. Gürültü çarpanı \(σ\): Üç hiper parametreden gizlilik miktarı yalnızca gürültü çarpanına bağlıdır. Gürültü çarpanı ne kadar büyük olursa, o kadar fazla mahremiyet elde edilir; ancak bu aynı zamanda fayda kaybını da beraberinde getirir.

Adım/saniye cinsinden fayda, gizlilik ve hız arasındaki bu ödünleşimler burada özetlenmiştir:

ödünleşimler

En uygun hiperparametreleri bulmak için şu önerileri izleyin:

  • Ayarlamak \(C\) yukarıda önerildiği gibi bir niceliğe. 1,00 değeri genellikle işe yarar.
  • Ayarlamak \(B\) = 1, maksimum antrenman hızı için.
  • Hala kabul edilebilir fayda sağlayan en büyük σ değerini bulmak için deney yapın. Genel olarak 0,01 veya daha düşük değerlerin iyi çalıştığı gözlemlenmiştir.
  • Uygun bir değere ulaşıldığında \(σ\) bulunursa ikisini de ölçeklendirin \(B\) Ve \(σ\) Makul bir gizlilik düzeyi elde etmek için sabit bir şekilde.