מסמך זה מניח שאתה כבר מכיר את הפרטיות הדיפרנציאלית, והחלטת שאתה רוצה להשתמש ב-TF Privacy כדי ליישם הבטחות פרטיות דיפרנציאלית במודל/ים שלך. אם אינך מכיר פרטיות דיפרנציאלית, אנא עיין בדף הסקירה הכללית . לאחר התקנת TF Privacy, התחל על ידי ביצוע השלבים הבאים:
1. בחר גרסה פרטית באופן דיפרנציאלי של כלי אופטימיזציה קיים
אם אתה משתמש כרגע בכלי אופטימיזציה של TensorFlow, סביר להניח שתרצה לבחור בכלי אופטימיזציה בשם DPKeras*Optimizer
, כגון [ DPKerasAdamOptimizer
] ב-[ TF Privacy
].
לחלופין, אתה יכול לנסות כלי אופטימיזציה וקטוריים כמו [ tf_privacy.VectorizedDPKerasAdamOptimizer
]. לשיפור מהירות אפשרי (במונחים של צעדים גלובליים לשנייה). נמצא שהשימוש באופטימיזציה וקטורית מספקת האצות לא עקביות בניסויים, אך עדיין אינו מובן היטב. כמו קודם, סביר להניח שתרצה להשתמש במייעל המקביל לזה שאתה משתמש בו כעת. אופטימיזציית וקטורים אלו משתמשים באופרטור vectorized_map
של Tensorflow, אשר עשוי שלא לעבוד עם אופרטורים אחרים של Tensorflow. אם זה המקרה עבורך, אנא פתח בעיה במאגר TF Privacy GitHub .
2. אובדן מחשוב עבור minibatch הקלט שלך
בעת חישוב ההפסד עבור מיני-אצט הקלט שלך, ודא שזהו וקטור עם ערך אחד לכל דוגמה, במקום לצבור אותו לסקלר. זה הכרחי מכיוון ש-DP-SGD חייב להיות מסוגל לחשב את ההפסד עבור מיקרו-אצטות בודדות.
3. אמן את הדגם שלך
אמן את המודל שלך באמצעות DP Optimizer (שלב 1) ואובדן וקטורי (שלב 2). ישנן שתי אפשרויות לעשות זאת:
- העבר את האופטימיזציה וההפסד כארגומנטים ל-
Model.compile
לפני שתקראModel.fit
. - בעת כתיבת לולאת אימון מותאמת אישית, השתמש ב-
Optimizer.minimize()
על ההפסד הקטורי.
לאחר שהדבר נעשה, מומלץ לכוונן את הפרמטרים ההיפר. להדרכה מלאה עיין במדריך הפרטיות של הסיווג
4. כוונן את הפרמטרים ההיפרפרמטרים של DP-SGD
כל כלי האופטימיזציה של tf_privacy
לוקחים שלושה היפרפרמטרים נוספים:
-
l2_norm_clip
or \(C\) - נורמת חיתוך (הנורמה האוקלידית המקסימלית (L2) של כל שיפוע אינדיבידואלי מחושבת לכל מיני-אצט. -
noise_multiplier
or \(σ\) - יחס סטיית התקן לנורמת הגזירה. -
num_microbatches
או \(B\) - מספר מיקרובאצ'ים שאליהם מפוצלת כל מיני-אצט.
ככלל, ככל שסטיית התקן האפקטיבית נמוכה יותר \(σC / B\), כך הביצועים של המודל המאומן על מדדי ההערכה שלו טובים יותר.
לשלושת ההיפרפרמטרים החדשים של DP-SGD יש את ההשפעות והפשרות הבאות:
- מספר המיקרובאצ'ים \(B\): בדרך כלל, הגדלת זה תשפר את השירות מכיוון שהיא מורידה את סטיית התקן של הרעש. עם זאת, זה יאט את האימונים מבחינת זמן.
- נורמת הגזירה \(C\): מאז סטיית התקן של סולמות הרעש עם\(C\), כנראה שעדיף להגדיר \(C\) להיות כמות מסוימת (למשל חציון, אחוזון 75, אחוזון 90) של נורמות השיפוע. בעל ערך גדול מדי של \(C\) מוסיף כמויות גדולות שלא לצורך של רעש.
- מכפיל הרעש \(σ\): מבין שלושת ההיפרפרמטרים, כמות הפרטיות תלויה רק במכפיל הרעש. ככל שמכפיל הרעש גדול יותר, כך מתקבלת פרטיות רבה יותר; עם זאת, זה מגיע גם עם אובדן תועלת.
החלפות אלו בין השירות, הפרטיות והמהירות במונחים של צעדים/שנייה מסוכמים כאן:
בצע את ההצעות הבאות כדי למצוא את ההיפרפרמטרים האופטימליים:
- מַעֲרֶכֶת \(C\) לכמות כמומלץ לעיל. ערך של 1.00 לרוב עובד היטב.
- מַעֲרֶכֶת \(B\) = 1, למהירות אימון מקסימלית.
- ניסוי כדי למצוא את הערך הגדול ביותר של σ שעדיין נותן תועלת מקובלת. בדרך כלל, ערכים של 0.01 ומטה נצפו כעובדים היטב.
- פעם ערך מתאים של \(σ\) נמצא, קנה מידה את שניהם \(B\) ו \(σ\) על ידי קבוע כדי להשיג רמה סבירה של פרטיות.