यह दस्तावेज़ मानता है कि आप पहले से ही विभेदक गोपनीयता से परिचित हैं, और आपने निर्धारित किया है कि आप अपने मॉडल में विभेदक गोपनीयता गारंटी लागू करने के लिए टीएफ गोपनीयता का उपयोग करना चाहेंगे। यदि आप विभेदक गोपनीयता से परिचित नहीं हैं, तो कृपया अवलोकन पृष्ठ की समीक्षा करें। TF गोपनीयता स्थापित करने के बाद, इन चरणों का पालन करके आरंभ करें:
1. मौजूदा ऑप्टिमाइज़र का एक अलग निजी संस्करण चुनें
यदि आप वर्तमान में TensorFlow ऑप्टिमाइज़र का उपयोग कर रहे हैं, तो आप संभवतः DPKeras*Optimizer
नाम के साथ एक ऑप्टिमाइज़र चुनना चाहेंगे, जैसे कि [ TF Privacy
] में [ DPKerasAdamOptimizer
]।
वैकल्पिक रूप से, आप [ tf_privacy.VectorizedDPKerasAdamOptimizer
] जैसे वेक्टरकृत ऑप्टिमाइज़र आज़मा सकते हैं। संभावित गति सुधार के लिए (प्रति सेकंड वैश्विक कदमों के संदर्भ में)। प्रयोगों में असंगत गति प्रदान करने के लिए वेक्टरकृत ऑप्टिमाइज़र का उपयोग पाया गया है, लेकिन अभी तक इसे अच्छी तरह से समझा नहीं गया है। पहले की तरह, आप संभवतः उसी ऑप्टिमाइज़र का उपयोग करना चाहेंगे जिसका आप अभी उपयोग कर रहे हैं। ये वेक्टरकृत ऑप्टिमाइज़र टेन्सरफ़्लो के vectorized_map
ऑपरेटर का उपयोग करते हैं, जो कुछ अन्य टेन्सरफ़्लो ऑपरेटरों के साथ काम नहीं कर सकता है। यदि आपका मामला ऐसा है, तो कृपया TF गोपनीयता GitHub रिपॉजिटरी पर एक मुद्दा खोलें ।
2. अपने इनपुट मिनीबैच के लिए हानि की गणना करें
अपने इनपुट मिनीबैच के लिए हानि की गणना करते समय, सुनिश्चित करें कि यह एक स्केलर में एकत्र करने के बजाय, प्रति उदाहरण एक प्रविष्टि के साथ एक वेक्टर है। यह आवश्यक है क्योंकि डीपी-एसजीडी को व्यक्तिगत माइक्रोबैच के नुकसान की गणना करने में सक्षम होना चाहिए।
3. अपने मॉडल को प्रशिक्षित करें
डीपी ऑप्टिमाइज़र (चरण 1) और वेक्टरकृत हानि (चरण 2) का उपयोग करके अपने मॉडल को प्रशिक्षित करें। ऐसा करने के लिए दो विकल्प हैं:
-
Model.fit
कॉल करने से पहले ऑप्टिमाइज़र और लॉस कोModel.compile
में तर्क के रूप में पास करें। - कस्टम प्रशिक्षण लूप लिखते समय, वेक्टरकृत हानि पर
Optimizer.minimize()
उपयोग करें।
एक बार यह हो जाने के बाद, यह अनुशंसा की जाती है कि आप अपने हाइपरपैरामीटर को ट्यून करें। संपूर्ण पूर्वाभ्यास के लिए वर्गीकरण गोपनीयता ट्यूटोरियल देखें
4. डीपी-एसजीडी हाइपरपैरामीटर को ट्यून करें
सभी tf_privacy
ऑप्टिमाइज़र तीन अतिरिक्त हाइपरपैरामीटर लेते हैं:
-
l2_norm_clip
या \(C\) - क्लिपिंग मानदंड (प्रति मिनीबैच परिकलित प्रत्येक व्यक्तिगत ग्रेडिएंट का अधिकतम यूक्लिडियन (L2) मानदंड)। -
noise_multiplier
या \(σ\) - क्लिपिंग मानदंड के मानक विचलन का अनुपात। -
num_microbatches
या \(B\) - माइक्रोबैच की संख्या जिसमें प्रत्येक मिनीबैच विभाजित है।
आम तौर पर, प्रभावी मानक विचलन उतना ही कम होता है \(σC / B\), अपने मूल्यांकन मेट्रिक्स पर प्रशिक्षित मॉडल का प्रदर्शन उतना ही बेहतर होगा।
तीन नए DP-SGD हाइपरपैरामीटर के निम्नलिखित प्रभाव और ट्रेडऑफ़ हैं:
- माइक्रोबैच की संख्या \(B\): आम तौर पर, इसे बढ़ाने से उपयोगिता में सुधार होगा क्योंकि यह शोर के मानक विचलन को कम करता है। हालाँकि, यह समय के संदर्भ में प्रशिक्षण को धीमा कर देगा।
- कतरन मानदंड \(C\): चूँकि शोर के मानक विचलन के साथ मापता है\(C\), इसे सेट करना शायद सबसे अच्छा है \(C\) ग्रेडिएंट मानदंडों का कुछ मात्रात्मक (जैसे माध्यिका, 75वाँ प्रतिशतक, 90वाँ प्रतिशतक) होना। का मान बहुत अधिक होना \(C\) अनावश्यक रूप से बड़ी मात्रा में शोर जोड़ता है।
- शोर गुणक \(σ\): तीन हाइपरपैरामीटर में से, गोपनीयता की मात्रा केवल शोर गुणक पर निर्भर करती है। शोर गुणक जितना बड़ा होगा, उतनी अधिक गोपनीयता प्राप्त होगी; हालाँकि, यह उपयोगिता की हानि के साथ भी आता है।
चरण/सेकंड के संदर्भ में उपयोगिता, गोपनीयता और गति के बीच इन ट्रेडऑफ़ को यहां संक्षेप में प्रस्तुत किया गया है:
इष्टतम हाइपरपैरामीटर खोजने के लिए इन सुझावों का पालन करें:
- तय करना \(C\) जैसा कि ऊपर अनुशंसित है, एक मात्रा तक। 1.00 का मान अक्सर अच्छा काम करता है।
- तय करना \(B\) = 1, अधिकतम प्रशिक्षण गति के लिए।
- σ का सबसे बड़ा मान ज्ञात करने के लिए प्रयोग करें जो अभी भी स्वीकार्य उपयोगिता देता है। आम तौर पर, 0.01 या उससे कम का मान अच्छा काम करता देखा गया है।
- एक बार का उपयुक्त मान \(σ\) पाया जाता है, दोनों पैमाने \(B\) और \(σ\) गोपनीयता के उचित स्तर को प्राप्त करने के लिए निरंतर।