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 varsayar. 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ı argüman olarakModel.compile
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 degradenin maksimum Öklid (L2) normu). -
noise_multiplier
veya \(σ\) - Standart sapmanın kırpma normuna oranı. -
num_microbatches
veya \(B\) - Her bir mini grubun bölündüğü mikro partilerin sayısı.
Genel olarak \(σC / B\)etkin standart sapması ne kadar düşük olursa, eğitilen modelin değerlendirme ölçümlerindeki performansı da o kadar iyi olur.
Üç yeni DP-SGD hiperparametresi aşağıdaki etkilere ve ödünleşimlere sahiptir:
- Mikro partilerin sayısı \(B\): Genel olarak 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.
- Kırpma normu \(C\): Gürültü ölçeklerinin\(C\)ile standart sapması olduğundan, \(C\) gradyan normlarının bir yüzdelik dilimine (örneğin medyan, 75. yüzdelik, 90. yüzdelik) ayarlamak muhtemelen en iyisidir. \(C\) değerinin çok büyük olması gereksiz derecede büyük miktarda gürültüye neden olur.
- 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:
En uygun hiperparametreleri bulmak için şu önerileri izleyin:
- \(C\) yukarıda önerildiği gibi bir niceliğe ayarlayın. 1,00 değeri genellikle işe yarar.
- Maksimum eğitim hızı için \(B\) = 1'i ayarlayın.
- 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ğeri bulunduğunda, makul bir gizlilik düzeyi elde etmek için hem \(B\) hem de \(σ\) sabit bir ölçekle ölçeklendirin.