এই নথিটি অনুমান করে যে আপনি ইতিমধ্যেই ডিফারেনশিয়াল গোপনীয়তার সাথে পরিচিত, এবং আপনি নির্ধারণ করেছেন যে আপনি আপনার মডেল(গুলি) তে ডিফারেনশিয়াল গোপনীয়তা গ্যারান্টি প্রয়োগ করতে TF গোপনীয়তা ব্যবহার করতে চান৷ আপনি ডিফারেনশিয়াল গোপনীয়তার সাথে পরিচিত না হলে, ওভারভিউ পৃষ্ঠাটি পর্যালোচনা করুন। TF গোপনীয়তা ইনস্টল করার পরে, এই পদক্ষেপগুলি অনুসরণ করে শুরু করুন:
1. একটি বিদ্যমান অপ্টিমাইজারের একটি পৃথকভাবে ব্যক্তিগত সংস্করণ চয়ন করুন৷
আপনি যদি বর্তমানে একটি TensorFlow অপ্টিমাইজার ব্যবহার করছেন, আপনি সম্ভবত DPKeras*Optimizer
নামের একটি অপ্টিমাইজার নির্বাচন করতে চাইবেন, যেমন [ TF Privacy
]-এ [ DPKerasAdamOptimizer
]।
ঐচ্ছিকভাবে, আপনি [ tf_privacy.VectorizedDPKerasAdamOptimizer
] এর মতো ভেক্টরাইজড অপ্টিমাইজার ব্যবহার করে দেখতে পারেন। একটি সম্ভাব্য গতির উন্নতির জন্য (প্রতি সেকেন্ডে বিশ্বব্যাপী পদক্ষেপের পরিপ্রেক্ষিতে)। ভেক্টরাইজড অপ্টিমাইজার ব্যবহার পরীক্ষায় অসামঞ্জস্যপূর্ণ গতি প্রদানের জন্য পাওয়া গেছে, কিন্তু এখনও ভালভাবে বোঝা যায় নি। আগের মতো, আপনি সম্ভবত এখন যেটি ব্যবহার করছেন তার অনুরূপ একটি অপ্টিমাইজার ব্যবহার করতে চাইবেন। এই ভেক্টরাইজড অপ্টিমাইজারগুলি Tensorflow এর vectorized_map
অপারেটর ব্যবহার করে, যা অন্য কিছু Tensorflow অপারেটরের সাথে কাজ নাও করতে পারে। যদি এটি আপনার ক্ষেত্রে হয়, তাহলে অনুগ্রহ করে TF প্রাইভেসি গিটহাব রিপোজিটরিতে একটি সমস্যা খুলুন ।
2. আপনার ইনপুট মিনিব্যাচের জন্য ক্ষতি গণনা করুন
আপনার ইনপুট মিনিব্যাচের ক্ষতি গণনা করার সময়, এটি একটি স্কেলারে একত্রিত করার পরিবর্তে, উদাহরণ প্রতি একটি এন্ট্রি সহ একটি ভেক্টর তা নিশ্চিত করুন৷ এটি প্রয়োজনীয় কারণ DP-SGD অবশ্যই পৃথক মাইক্রোব্যাচগুলির জন্য ক্ষতি গণনা করতে সক্ষম হবে।
3. আপনার মডেল প্রশিক্ষণ
DP অপটিমাইজার (ধাপ 1) এবং ভেক্টরাইজড ক্ষতি (ধাপ 2) ব্যবহার করে আপনার মডেলকে প্রশিক্ষণ দিন। এটি করার জন্য দুটি বিকল্প আছে:
-
Model.fit
কল করার আগেModel.compile
এ আর্গুমেন্ট হিসাবে অপ্টিমাইজার এবং ক্ষতি পাস করুন। - একটি কাস্টম প্রশিক্ষণ লুপ লেখার সময়, ভেক্টরাইজড ক্ষতির উপর
Optimizer.minimize()
ব্যবহার করুন।
একবার এটি হয়ে গেলে, এটি সুপারিশ করা হয় যে আপনি আপনার হাইপারপ্যারামিটারগুলি টিউন করুন৷ একটি সম্পূর্ণ ওয়াকথ্রু জন্য শ্রেণীবিভাগ গোপনীয়তা টিউটোরিয়াল দেখুন
4. DP-SGD হাইপারপ্যারামিটার টিউন করুন
সমস্ত tf_privacy
অপ্টিমাইজার তিনটি অতিরিক্ত হাইপারপ্যারামিটার নেয়:
-
l2_norm_clip
বা \(C\) - ক্লিপিং আদর্শ (মিনিব্যাচ প্রতি গণনা করা প্রতিটি পৃথক গ্রেডিয়েন্টের সর্বোচ্চ ইউক্লিডীয় (L2) আদর্শ)। -
noise_multiplier
বা \(σ\) - ক্লিপিং আদর্শের সাথে আদর্শ বিচ্যুতির অনুপাত। -
num_microbatches
বা \(B\) - প্রতিটি মিনিব্যাচ বিভক্ত করা হয়েছে এমন মাইক্রোব্যাচের সংখ্যা।
সাধারণত, কার্যকর মান বিচ্যুতি কম \(σC / B\), এর মূল্যায়ন মেট্রিক্সে প্রশিক্ষিত মডেলের কর্মক্ষমতা তত ভালো।
তিনটি নতুন DP-SGD হাইপারপ্যারামিটারের নিম্নলিখিত প্রভাব এবং ট্রেডঅফ রয়েছে:
- মাইক্রোব্যাচের সংখ্যা \(B\): সাধারণত, এটি বাড়ানো ইউটিলিটি উন্নত করবে কারণ এটি শব্দের মানক বিচ্যুতিকে কম করে। তবে, এটি সময়ের পরিপ্রেক্ষিতে প্রশিক্ষণকে ধীর করে দেবে।
- ক্লিপিং আদর্শ \(C\): শব্দ স্কেল মান বিচ্যুতি সঙ্গে\(C\), এটা সেট করা সম্ভবত সেরা \(C\) গ্রেডিয়েন্ট নিয়মের কিছু কোয়ান্টাইল (যেমন মধ্য, 75 তম পার্সেন্টাইল, 90 তম পার্সেন্টাইল) হতে হবে। খুব বড় একটি মান হচ্ছে \(C\) অপ্রয়োজনীয়ভাবে বড় পরিমাণে শব্দ যোগ করে।
- শব্দ গুণক \(σ\): তিনটি হাইপারপ্যারামিটারের মধ্যে, গোপনীয়তার পরিমাণ শুধুমাত্র শব্দ গুণকের উপর নির্ভর করে। শব্দ গুণক যত বড় হবে, তত বেশি গোপনীয়তা পাওয়া যাবে; যাইহোক, এটি ইউটিলিটির ক্ষতির সাথে আসে।
পদক্ষেপ/সেকেন্ডের ক্ষেত্রে ইউটিলিটি, গোপনীয়তা এবং গতির মধ্যে এই ট্রেডঅফগুলি এখানে সংক্ষিপ্ত করা হয়েছে:
সর্বোত্তম হাইপারপ্যারামিটার খুঁজে পেতে এই পরামর্শগুলি অনুসরণ করুন:
- সেট \(C\) উপরে প্রস্তাবিত হিসাবে একটি quantile. 1.00 এর মান প্রায়ই ভাল কাজ করে।
- সেট \(B\) = 1, সর্বাধিক প্রশিক্ষণ গতির জন্য।
- σ-এর সবচেয়ে বড় মান খুঁজে বের করতে পরীক্ষা করুন যা এখনও গ্রহণযোগ্য উপযোগিতা দেয়। সাধারণত, 0.01 বা তার নিচের মানগুলি ভালভাবে কাজ করতে দেখা গেছে।
- একবার একটি উপযুক্ত মান \(σ\) পাওয়া যায়, উভয় স্কেল \(B\) এবং \(σ\) গোপনীয়তার একটি যুক্তিসঙ্গত স্তর অর্জন করার জন্য একটি ধ্রুবক দ্বারা।
এই নথিটি অনুমান করে যে আপনি ইতিমধ্যেই ডিফারেনশিয়াল গোপনীয়তার সাথে পরিচিত, এবং আপনি নির্ধারণ করেছেন যে আপনি আপনার মডেল(গুলি) তে ডিফারেনশিয়াল গোপনীয়তা গ্যারান্টি প্রয়োগ করতে TF গোপনীয়তা ব্যবহার করতে চান৷ আপনি যদি ডিফারেনশিয়াল গোপনীয়তার সাথে পরিচিত না হন তবে অনুগ্রহ করে ওভারভিউ পৃষ্ঠাটি পর্যালোচনা করুন। TF গোপনীয়তা ইনস্টল করার পরে, এই পদক্ষেপগুলি অনুসরণ করে শুরু করুন:
1. একটি বিদ্যমান অপ্টিমাইজারের একটি পৃথকভাবে ব্যক্তিগত সংস্করণ চয়ন করুন৷
আপনি যদি বর্তমানে একটি TensorFlow অপ্টিমাইজার ব্যবহার করছেন, আপনি সম্ভবত DPKeras*Optimizer
নামের একটি অপ্টিমাইজার নির্বাচন করতে চাইবেন, যেমন [ TF Privacy
]-এ [ DPKerasAdamOptimizer
]।
ঐচ্ছিকভাবে, আপনি [ tf_privacy.VectorizedDPKerasAdamOptimizer
] এর মতো ভেক্টরাইজড অপ্টিমাইজার ব্যবহার করে দেখতে পারেন। একটি সম্ভাব্য গতির উন্নতির জন্য (প্রতি সেকেন্ডে বিশ্বব্যাপী পদক্ষেপের পরিপ্রেক্ষিতে)। ভেক্টরাইজড অপ্টিমাইজার ব্যবহার পরীক্ষায় অসামঞ্জস্যপূর্ণ গতি প্রদানের জন্য পাওয়া গেছে, কিন্তু এখনও ভালভাবে বোঝা যায় নি। আগের মতো, আপনি সম্ভবত এখন যেটি ব্যবহার করছেন তার অনুরূপ একটি অপ্টিমাইজার ব্যবহার করতে চাইবেন। এই ভেক্টরাইজড অপ্টিমাইজারগুলি Tensorflow এর vectorized_map
অপারেটর ব্যবহার করে, যা অন্য কিছু Tensorflow অপারেটরের সাথে কাজ নাও করতে পারে। যদি এটি আপনার ক্ষেত্রে হয়, তাহলে অনুগ্রহ করে TF প্রাইভেসি গিটহাব রিপোজিটরিতে একটি সমস্যা খুলুন ।
2. আপনার ইনপুট মিনিব্যাচের জন্য ক্ষতি গণনা করুন
আপনার ইনপুট মিনিব্যাচের ক্ষতি গণনা করার সময়, এটি একটি স্কেলারে একত্রিত করার পরিবর্তে, উদাহরণ প্রতি একটি এন্ট্রি সহ একটি ভেক্টর তা নিশ্চিত করুন৷ এটি প্রয়োজনীয় কারণ DP-SGD অবশ্যই পৃথক মাইক্রোব্যাচগুলির জন্য ক্ষতি গণনা করতে সক্ষম হবে।
3. আপনার মডেল প্রশিক্ষণ
DP অপটিমাইজার (ধাপ 1) এবং ভেক্টরাইজড ক্ষতি (ধাপ 2) ব্যবহার করে আপনার মডেলকে প্রশিক্ষণ দিন। এটি করার জন্য দুটি বিকল্প আছে:
-
Model.fit
কল করার আগেModel.compile
এ আর্গুমেন্ট হিসাবে অপ্টিমাইজার এবং ক্ষতি পাস করুন। - একটি কাস্টম প্রশিক্ষণ লুপ লেখার সময়, ভেক্টরাইজড ক্ষতির উপর
Optimizer.minimize()
ব্যবহার করুন।
একবার এটি হয়ে গেলে, এটি সুপারিশ করা হয় যে আপনি আপনার হাইপারপ্যারামিটারগুলি টিউন করুন৷ একটি সম্পূর্ণ ওয়াকথ্রু জন্য শ্রেণীবিভাগ গোপনীয়তা টিউটোরিয়াল দেখুন
4. DP-SGD হাইপারপ্যারামিটার টিউন করুন
সমস্ত tf_privacy
অপ্টিমাইজার তিনটি অতিরিক্ত হাইপারপ্যারামিটার নেয়:
-
l2_norm_clip
বা \(C\) - ক্লিপিং আদর্শ (মিনিব্যাচ প্রতি গণনা করা প্রতিটি পৃথক গ্রেডিয়েন্টের সর্বোচ্চ ইউক্লিডীয় (L2) আদর্শ)। -
noise_multiplier
বা \(σ\) - ক্লিপিং আদর্শের সাথে আদর্শ বিচ্যুতির অনুপাত। -
num_microbatches
বা \(B\) - প্রতিটি মিনিব্যাচ বিভক্ত করা হয়েছে এমন মাইক্রোব্যাচের সংখ্যা।
সাধারণত, কার্যকর মান বিচ্যুতি কম \(σC / B\), এর মূল্যায়ন মেট্রিক্সে প্রশিক্ষিত মডেলের কর্মক্ষমতা তত ভালো।
তিনটি নতুন DP-SGD হাইপারপ্যারামিটারের নিম্নলিখিত প্রভাব এবং ট্রেডঅফ রয়েছে:
- মাইক্রোব্যাচের সংখ্যা \(B\): সাধারণত, এটি বাড়ানো ইউটিলিটি উন্নত করবে কারণ এটি শব্দের মানক বিচ্যুতিকে কম করে। তবে, এটি সময়ের পরিপ্রেক্ষিতে প্রশিক্ষণকে ধীর করে দেবে।
- ক্লিপিং আদর্শ \(C\): শব্দ স্কেল মান বিচ্যুতি সঙ্গে\(C\), এটা সেট করা সম্ভবত সেরা \(C\) গ্রেডিয়েন্ট নিয়মের কিছু কোয়ান্টাইল (যেমন মধ্য, 75 তম পার্সেন্টাইল, 90 তম পার্সেন্টাইল) হতে হবে। খুব বড় একটি মান হচ্ছে \(C\) অপ্রয়োজনীয়ভাবে বড় পরিমাণে শব্দ যোগ করে।
- শব্দ গুণক \(σ\): তিনটি হাইপারপ্যারামিটারের মধ্যে, গোপনীয়তার পরিমাণ শুধুমাত্র শব্দ গুণকের উপর নির্ভর করে। শব্দ গুণক যত বড় হবে, তত বেশি গোপনীয়তা পাওয়া যাবে; যাইহোক, এটি ইউটিলিটির ক্ষতির সাথে আসে।
পদক্ষেপ/সেকেন্ডের ক্ষেত্রে ইউটিলিটি, গোপনীয়তা এবং গতির মধ্যে এই ট্রেডঅফগুলি এখানে সংক্ষিপ্ত করা হয়েছে:
সর্বোত্তম হাইপারপ্যারামিটার খুঁজে পেতে এই পরামর্শগুলি অনুসরণ করুন:
- সেট \(C\) উপরে প্রস্তাবিত হিসাবে একটি quantile. 1.00 এর মান প্রায়ই ভাল কাজ করে।
- সেট \(B\) = 1, সর্বাধিক প্রশিক্ষণ গতির জন্য।
- σ-এর সবচেয়ে বড় মান খুঁজে বের করতে পরীক্ষা করুন যা এখনও গ্রহণযোগ্য উপযোগিতা দেয়। সাধারণত, 0.01 বা তার নিচের মানগুলি ভালভাবে কাজ করতে দেখা গেছে।
- একবার একটি উপযুক্ত মান \(σ\) পাওয়া যায়, উভয় স্কেল \(B\) এবং \(σ\) গোপনীয়তার একটি যুক্তিসঙ্গত স্তর অর্জন করার জন্য একটি ধ্রুবক দ্বারা।