این سند فرض میکند که شما قبلاً با حریم خصوصی دیفرانسیل آشنا هستید و تصمیم گرفتهاید که میخواهید از TF Privacy برای پیادهسازی ضمانتهای حریم خصوصی متفاوت در مدل(های) خود استفاده کنید. اگر با حریم خصوصی دیفرانسیل آشنا نیستید، لطفاً صفحه نمای کلی را مرور کنید. پس از نصب TF Privacy، با دنبال کردن مراحل زیر شروع کنید:
1. یک نسخه خصوصی متفاوت از بهینه ساز موجود را انتخاب کنید
اگر در حال حاضر از یک بهینه ساز TensorFlow استفاده می کنید، به احتمال زیاد می خواهید یک بهینه ساز با نام DPKeras*Optimizer
، مانند [ DPKerasAdamOptimizer
] در [ TF Privacy
] انتخاب کنید.
به صورت اختیاری، می توانید بهینه سازهای برداری مانند [ tf_privacy.VectorizedDPKerasAdamOptimizer
] را امتحان کنید. برای بهبود سرعت احتمالی (از نظر گام های جهانی در ثانیه). استفاده از بهینه سازهای برداری شده برای ارائه سرعت های متناقض در آزمایش ها یافت شده است، اما هنوز به خوبی درک نشده است. مانند قبل، به احتمال زیاد می خواهید از یک بهینه ساز مشابه آنچه که اکنون استفاده می کنید استفاده کنید. این بهینه سازهای برداری شده از عملگر vectorized_map
Tensorflow استفاده می کنند که ممکن است با برخی دیگر از عملگرهای Tensorflow کار نکند. اگر این مورد برای شما صادق است، لطفاً یک مشکل در مخزن TF Privacy GitHub باز کنید .
2. تلفات را برای minibatch ورودی خود محاسبه کنید
هنگام محاسبه تلفات برای minibatch ورودی، مطمئن شوید که یک بردار با یک ورودی در هر مثال است، به جای اینکه آن را در یک اسکالر جمع کنید. این امر ضروری است زیرا DP-SGD باید بتواند تلفات را برای میکروبچ های جداگانه محاسبه کند.
3. مدل خود را آموزش دهید
مدل خود را با استفاده از DP Optimizer (مرحله 1) و از دست دادن برداری (مرحله 2) آموزش دهید. دو گزینه برای انجام این کار وجود دارد:
- قبل از فراخوانی
Model.fit
بهینه ساز و ضرر را به عنوان آرگومان بهModel.compile
ارسال کنید. - هنگام نوشتن یک حلقه آموزشی سفارشی، از
Optimizer.minimize()
در ضرر برداری استفاده کنید.
پس از انجام این کار، توصیه می شود که هایپرپارامترهای خود را تنظیم کنید. برای توضیح کامل، آموزش حفظ حریم خصوصی طبقه بندی را ببینید
4. هایپرپارامترهای DP-SGD را تنظیم کنید
همه بهینه سازهای tf_privacy
سه فراپارامتر اضافی می گیرند:
-
l2_norm_clip
یا \(C\) - هنجار برش (حداکثر هنجار اقلیدسی (L2) هر گرادیان مجزا محاسبه شده در هر minibatch). -
noise_multiplier
یا \(σ\) - نسبت انحراف استاندارد به هنجار برش. -
num_microbatches
یا \(B\) - تعداد میکروبچ هایی که هر مینی بچ به آن تقسیم می شود.
به طور کلی، انحراف معیار موثر کمتر است \(σC / B\)، عملکرد مدل آموزش دیده در معیارهای ارزیابی آن بهتر است.
سه فراپارامتر جدید DP-SGD دارای اثرات و معاوضه های زیر هستند:
- تعداد میکروبچ ها \(B\): به طور کلی، افزایش این باعث بهبود سودمندی می شود زیرا انحراف استاندارد نویز را کاهش می دهد. با این حال، از نظر زمانی باعث کاهش سرعت تمرین می شود.
- هنجار بریدن \(C\): از آنجایی که انحراف معیار مقیاس نویز با\(C\)، احتمالاً بهتر است تنظیم شود \(C\) چندک (مثلاً میانه، صدک 75، صدک 90) از هنجارهای گرادیان باشد. داشتن مقدار بیش از حد بزرگ از \(C\) به طور غیر ضروری مقادیر زیادی نویز اضافه می کند.
- چند برابر کننده نویز \(σ\): از سه فراپارامتر، میزان حریم خصوصی فقط به ضریب نویز بستگی دارد. هرچه ضریب نویز بزرگتر باشد، حریم خصوصی بیشتری به دست می آید. با این حال، این نیز با از دست دادن ابزار می آید.
این مبادلات بین ابزار، حریم خصوصی و سرعت بر حسب گام/ثانیه در اینجا خلاصه شده است:
برای یافتن فراپارامترهای بهینه، این پیشنهادات را دنبال کنید:
- تنظیم کنید \(C\) به یک کمی همانطور که در بالا توصیه شد. مقدار 1.00 اغلب به خوبی کار می کند.
- تنظیم کنید \(B\) = 1، برای حداکثر سرعت تمرین.
- برای یافتن بزرگترین مقدار σ که هنوز مطلوبیت قابل قبولی دارد، آزمایش کنید. به طور کلی، مقادیر 0.01 یا کمتر مشاهده شده است که به خوبی کار می کنند.
- یک بار یک مقدار مناسب از \(σ\) یافت می شود، مقیاس هر دو \(B\) و \(σ\) با یک ثابت برای دستیابی به سطح معقولی از حریم خصوصی.