شروع کنید

این سند فرض می‌کند که شما قبلاً با حریم خصوصی دیفرانسیل آشنا هستید و تصمیم گرفته‌اید که می‌خواهید از 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\) - تعداد میکروبچ هایی که هر minibatch به آن تقسیم می شود.

به طور کلی، هرچه انحراف معیار موثر \(σC / B\)کمتر باشد، عملکرد مدل آموزش دیده در معیارهای ارزیابی آن بهتر است.

سه فراپارامتر جدید DP-SGD دارای اثرات و معاوضه های زیر هستند:

  1. تعداد میکروبچ‌ها \(B\): به طور کلی، افزایش این مقدار باعث بهبود کاربرد می‌شود زیرا انحراف استاندارد نویز را کاهش می‌دهد. با این حال، از نظر زمانی باعث کاهش سرعت تمرین می شود.
  2. هنجار برش \(C\): از آنجایی که انحراف استاندارد مقیاس های نویز با\(C\)است، احتمالاً بهتر است \(C\) به عنوان چندک (مثلاً میانه، صدک 75، صدک 90) از هنجارهای گرادیان تنظیم کنیم. داشتن مقدار بیش از حد بزرگ \(C\) مقادیر زیادی نویز را به طور غیرضروری اضافه می کند.
  3. ضریب نویز \(σ\): از بین سه فراپارامتر، میزان حریم خصوصی فقط به ضریب نویز بستگی دارد. هرچه ضریب نویز بزرگتر باشد، حریم خصوصی بیشتری به دست می آید. با این حال، این نیز با از دست دادن ابزار می آید.

این مبادلات بین ابزار، حریم خصوصی و سرعت بر حسب گام/ثانیه در اینجا خلاصه شده است:

معاوضه ها

برای یافتن فراپارامترهای بهینه، این پیشنهادات را دنبال کنید:

  • \(C\) بر روی یک کمیت همانطور که در بالا توصیه شد تنظیم کنید. مقدار 1.00 اغلب به خوبی کار می کند.
  • \(B\) = 1 را برای حداکثر سرعت تمرین تنظیم کنید.
  • برای یافتن بزرگترین مقدار σ که هنوز مطلوبیت قابل قبولی دارد، آزمایش کنید. به طور کلی، مقادیر 0.01 یا کمتر مشاهده شده است که به خوبی کار می کنند.
  • هنگامی که مقدار مناسب \(σ\) یافت شد، برای دستیابی به سطح معقولی از حریم خصوصی، هر دو \(B\) و \(σ\) با یک ثابت مقیاس کنید.