Dokumen ini mengasumsikan Anda sudah memahami privasi diferensial, dan telah memutuskan bahwa Anda ingin menggunakan TF Privacy untuk menerapkan jaminan privasi diferensial pada model Anda. Jika Anda belum memahami privasi diferensial, harap tinjau halaman ikhtisar . Setelah menginstal TF Privacy, mulailah dengan mengikuti langkah-langkah berikut:
1. Pilih versi privat yang berbeda dari Pengoptimal yang ada
Jika saat ini Anda menggunakan pengoptimal TensorFlow , kemungkinan besar Anda ingin memilih Pengoptimal dengan nama DPKeras*Optimizer
, seperti [ DPKerasAdamOptimizer
] di [ TF Privacy
].
Secara opsional, Anda dapat mencoba pengoptimal yang divektorkan seperti [ tf_privacy.VectorizedDPKerasAdamOptimizer
]. untuk kemungkinan peningkatan kecepatan (dalam hal langkah global per detik). Penggunaan pengoptimal yang divektorkan terbukti memberikan percepatan yang tidak konsisten dalam eksperimen, namun belum dipahami dengan baik. Seperti sebelumnya, kemungkinan besar Anda ingin menggunakan pengoptimal yang serupa dengan yang Anda gunakan sekarang. Pengoptimal yang divektorkan ini menggunakan operator vectorized_map
Tensorflow, yang mungkin tidak berfungsi dengan beberapa operator Tensorflow lainnya. Jika hal ini terjadi pada Anda, silakan buka terbitan di repositori TF Privacy GitHub .
2. Hitung kerugian untuk minibatch masukan Anda
Saat menghitung kerugian untuk minibatch masukan Anda, pastikan itu adalah vektor dengan satu entri per contoh, alih-alih menggabungkannya menjadi skalar. Hal ini diperlukan karena DP-SGD harus mampu menghitung kerugian untuk masing-masing microbatch.
3. Latih model Anda
Latih model Anda menggunakan DP Optimizer (langkah 1) dan kerugian yang divektorkan (langkah 2). Ada dua opsi untuk melakukan ini:
- Berikan pengoptimal dan kerugian sebagai argumen ke
Model.compile
sebelum memanggilModel.fit
. - Saat menulis loop pelatihan khusus, gunakan
Optimizer.minimize()
pada kerugian yang divektorkan.
Setelah ini selesai, Anda disarankan untuk menyetel hyperparameter Anda. Untuk panduan lengkap lihat tutorial privasi klasifikasi
4. Sesuaikan hyperparameter DP-SGD
Semua pengoptimal tf_privacy
menggunakan tiga hyperparameter tambahan:
-
l2_norm_clip
atau \(C\) - Norma kliping (norma Euclidean (L2) maksimum dari setiap gradien individu yang dihitung per minibatch). -
noise_multiplier
atau \(σ\) - Rasio deviasi standar terhadap norma kliping. -
num_microbatches
atau \(B\) - Jumlah microbatch yang setiap minibatchnya dipecah.
Umumnya, semakin rendah standar deviasi efektifnya \(σC / B\), semakin baik performa model yang dilatih pada metrik evaluasinya.
Ketiga hyperparameter DP-SGD baru memiliki efek dan trade-off sebagai berikut:
- Jumlah microbatch \(B\): Secara umum, meningkatkan nilai ini akan meningkatkan utilitas karena menurunkan standar deviasi kebisingan. Namun, hal itu akan memperlambat pelatihan dari segi waktu.
- Norma kliping \(C\): Karena deviasi standar kebisingan berskala dengan\(C\), mungkin yang terbaik adalah mengaturnya \(C\) menjadi beberapa kuantil (misalnya median, persentil ke-75, persentil ke-90) dari norma gradien. Memiliki nilai yang terlalu besar \(C\) menambah kebisingan dalam jumlah besar yang tidak perlu.
- Pengganda kebisingan \(σ\): Dari ketiga hyperparameter, jumlah privasi hanya bergantung pada pengganda kebisingan. Semakin besar pengganda kebisingan, semakin banyak privasi yang diperoleh; namun, hal ini juga disertai dengan hilangnya utilitas.
Pertukaran antara utilitas, privasi, dan kecepatan dalam hitungan langkah/detik dirangkum di sini:
Ikuti saran berikut untuk menemukan hyperparameter yang optimal:
- Mengatur \(C\) ke kuantil seperti yang direkomendasikan di atas. Nilai 1,00 sering kali berfungsi dengan baik.
- Mengatur \(B\) = 1, untuk kecepatan latihan maksimum.
- Bereksperimenlah untuk menemukan nilai σ terbesar yang masih memberikan utilitas yang dapat diterima. Secara umum, nilai 0,01 atau lebih rendah telah diamati berfungsi dengan baik.
- Sekali nilai yang cocok \(σ\) ditemukan, skalakan keduanya \(B\) Dan \(σ\) secara konstan untuk mencapai tingkat privasi yang wajar.