Mulai

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:

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 di mana setiap minibatch dibagi.

Secara umum, semakin rendah deviasi standar efektif \(σC / B\), semakin baik performa model yang dilatih pada metrik evaluasinya.

Ketiga hyperparameter DP-SGD baru memiliki efek dan trade-off sebagai berikut:

  1. Jumlah microbatch \(B\): Secara umum, peningkatan jumlah ini akan meningkatkan utilitas karena menurunkan standar deviasi kebisingan. Namun, hal itu akan memperlambat pelatihan dari segi waktu.
  2. Norma kliping \(C\): Karena deviasi standar kebisingan berskala dengan\(C\), mungkin yang terbaik adalah menetapkan \(C\) menjadi beberapa kuantil (misalnya median, persentil ke-75, persentil ke-90) dari norma gradien. Memiliki nilai \(C\) yang terlalu besar akan menambah jumlah kebisingan yang tidak perlu.
  3. Pengganda kebisingan \(σ\): Dari ketiga hyperparameter, jumlah privasi hanya bergantung pada pengganda kebisingan. Semakin besar pengganda kebisingan, semakin banyak privasi yang didapat; namun, hal ini juga disertai dengan hilangnya utilitas.

Pertukaran antara utilitas, privasi, dan kecepatan dalam hitungan langkah/detik dirangkum di sini:

pengorbanan

Ikuti saran berikut untuk menemukan hyperparameter yang optimal:

  • Setel \(C\) ke kuantil seperti yang direkomendasikan di atas. Nilai 1,00 sering kali berfungsi dengan baik.
  • Setel \(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.
  • Setelah nilai \(σ\) yang sesuai ditemukan, skalakan \(B\) dan \(σ\) dengan konstan untuk mencapai tingkat privasi yang wajar.