Chapter 1 of 4
Why machine learning and privacy are on a collision course
ধরো তুমি একটা হাসপাতালে কাজ করছ। তোমাদের কাছে হাজার হাজার রোগীর ডেটা আছে — ব্লাড প্রেশার, ব্লাড সুগার, রিপোর্ট, ওষুধের ইতিহাস। তুমি সেই ডেটা দিয়ে একটা মডেল ট্রেইন করলে যেটা রোগ নির্ণয় করতে পারে। মডেলটা দারুণ কাজ করছে। এখন তুমি সেটা পাবলিক API হিসেবে ছেড়ে দিলে যাতে ডাক্তাররা যেকোনো জায়গা থেকে ব্যবহার করতে পারেন।
একটু পরে একজন গবেষক এই মডেলে কিছু নির্দিষ্ট রোগীর তথ্য দিয়ে কুয়েরি করল। মডেল দেখে বলল — "এই রোগীর ডেটা আমি আগে দেখেছি।" কীভাবে? কারণ মডেল ট্রেইন করার সময় সেই রোগীর তথ্য বারবার দেখে অনেকটা মুখস্থ করে ফেলেছে। এবং এখন সেই "স্মৃতি" বের করা সম্ভব।
এই সমস্যাটাই হলো মডেল প্রাইভেসি লিকেজ। এই অধ্যায়ে আমরা বুঝব — কেন এটা হয়, কীভাবে অ্যাটাক করা হয়, আর এর বিরুদ্ধে লড়াইয়ের ভিত্তি কী।
সাধারণভাবে Privacy মানে — আমার এমন কিছু তথ্য যা অন্যরা না জানুক সেটাই চাই। ML এর দুনিয়ায় এটাকে দুটো ভাগে ভাগ করা হয়:
Data Privacy হলো raw ডেটা রক্ষা করা। মানে, ট্রেইনিং ডেটাসেটে থাকা মানুষদের আসল রেকর্ড — ফাইল, রিপোর্ট, লগ — যেন অননুমোদিত কেউ দেখতে না পারে। এটা মূলত encryption, access control, এবং আইনি চুক্তির মাধ্যমে রক্ষা করা হয়।
Model Privacy হলো একটু আলাদা এবং বেশি ভয়ঙ্কর সমস্যা। এটার মানে হলো — শুধু ট্রেইন করা মডেলকে কুয়েরি করেই কেউ ট্রেইনিং ডেটার মানুষদের সম্পর্কে তথ্য বের করে ফেলতে পারবে কিনা। মডেলটা পাবলিক — কিন্তু মডেলের ভেতরে ট্রেইনিং ডেটার ছাপ থেকে যায়।
| বিষয় | Data Privacy | Model Privacy |
|---|---|---|
| কী ঝুঁকিতে আছে? | আসল ট্রেইনিং রেকর্ড | মডেলের weights-এ লুকানো তথ্য |
| কে দেখতে পায়? | শুধু ডেটা কাস্টোডিয়ান | মডেলে যে কেউ কুয়েরি করতে পারে |
| ক্লাসিক রক্ষা? | Encryption, access control | Differential Privacy, output perturbation |
| আক্রমণের জায়গা? | Database breach | পাবলিক মডেল API বা published weights |
সবচেয়ে গুরুত্বপূর্ণ কথা হলো: Data Privacy ভালো থাকলেই Model Privacy নিশ্চিত হয় না। আসল ডেটা তালাবন্দ রেখেও, পাবলিক মডেলের মাধ্যমে সেই ডেটার মানুষদের তথ্য বের করা সম্ভব।
"মডেল তো pattern শিখেছে, individual record না। তাহলে কি individual নিরাপদ না?"
না, নিরাপদ না। কারণটা এখানে:
ধরো একটা ক্লিনিকাল ট্রায়ালে ৫,০০০ রোগী ছিল এবং তাদের একজনের একটা বিরল রোগ আছে। মডেল ট্রেইনিংয়ের সময় সেই রোগীর ডেটা হাজারবার দেখেছে। তার বিরল রোগের প্যাটার্ন মডেলের weights-এ ছাপ ফেলে গেছে। এখন সঠিক কৌশলে জিজ্ঞেস করলে বের করা যায় — ঐ রোগী ট্রেইনিং সেটে ছিল কিনা।
এটা কেন সমস্যা?
বড় neural network গুলো একটা অদ্ভুত কাজ করতে পারে — memorization। এর মানে শুধু pattern শেখা না, বরং নির্দিষ্ট ট্রেইনিং examples একটু একটু করে মুখস্থ করে ফেলা।
Language model-এর উদাহরণ দিই। একটা model যে dataset-এ কারো email address বহুবার দেখেছে, সে তা verbatim আউটপুট দিতে পারে। কারণ সেই address-এর প্যাটার্ন model-এর weights-এ এমনভাবে ঢুকে গেছে যে নির্দিষ্ট প্রশ্ন করলে সে সেটা বলে দেয়।
Overfitting মানে model নতুন data-তে ভালো কাজ করে না। Memorization মানে model নির্দিষ্ট training examples তার weights-এ ধরে রেখেছে। একটা model overfitting ছাড়াও memorize করতে পারে — যা ধরা আরও কঠিন।
এটাই হলো সবচেয়ে মৌলিক বিষয়। একটা trained model এর জন্য যেকোনো data point নিলে:
এই পার্থক্যটাই বেশিরভাগ privacy attack এর ভিত্তি।
বড় হলে মনে হয় training set-এ ছিল। হলে মনে হয় নতুন data। Membership inference attack এই পার্থক্য মেপে বলে দেয় — এই ব্যক্তি কি training data-তে ছিল?
Federated learning-এ অনেক participant মিলে একটা model train করে, নিজেদের raw data না পাঠিয়ে। কিন্তু তারা gradient পাঠায়। সেই gradient-এর ভেতরে তাদের local data-র তথ্য লুকানো থাকে।
Gradient inversion attack এই gradient দেখে আসল training data reconstruct করতে পারে। Image data-র ক্ষেত্রে গবেষকরা দেখিয়েছেন যে একটা gradient update থেকে near-pixel-perfect ছবি বের করা সম্ভব।
এই দুটোর পার্থক্য না বুঝলে বাস্তবে মারাত্মক ভুল হয়।
অনেক প্রতিষ্ঠান মনে করে ডেটা এনক্রিপ্ট করলে, access control দিলে সব ঠিক আছে। কিন্তু তারপর সেই ডেটায় train করা model-টা public API হিসেবে ছেড়ে দেয়। এটা একটা নতুন attack surface তৈরি করে যেটার বিরুদ্ধে সব data security কোনো কাজ করে না।
Raw data private রাখলে model private হয় না।
সহজ ভাষায়: একটা model private তখনই বলা যাবে যখন — Alice-এর record training set-এ থাকলে আর না থাকলে model-এর behavior কার্যত একই থাকবে। অ্যাটাকার model দেখে বুঝতে পারবে না Alice training-এ ছিল কিনা।
এই formal idea-র নামই হলো Differential Privacy — যেটা পরের অধ্যায়ে শেখা হবে।
Data Privacy
Raw training records রক্ষা করা। Encryption, access control, আইনি চুক্তির মাধ্যমে।
Training Process
Private data থেকে model weights তৈরি হওয়ার ধাপ। এখানেই privacy হারাতে পারে।
Model Privacy
Trained model থেকে individual তথ্য বের না হওয়া নিশ্চিত করা। Differential Privacy দিয়ে।
Threat model হলো একটা structured উপায় — অ্যাটাকার কী চায়, সে কী জানে, কী করতে পারে — এটা পরিষ্কার করে বলা। এটা না থাকলে privacy defense তৈরি করা মানে হয় না।
তিনটা ভাগে ভাগ করা হয়:
Knowledge — সে আগে থেকে কী জানে?
Goal — সে কী জানতে চায়?
Capability — সে আসলে কী করতে পারে?
একটা threat model একটা specific adversary-কে define করে। Black-box adversary-র বিরুদ্ধে private একটা system, white-box adversary-র বিরুদ্ধে নাও হতে পারে। সবসময় বলো তোমার defense কোন threat model ধরে কাজ করছে।
Semi-honest adversary
Protocol সঠিকভাবে follow করে, কিন্তু যা দেখে তা থেকে private তথ্য বের করার চেষ্টা করে। Federated learning analysis-এ সাধারণ ধরন।
Malicious adversary
Protocol ভাঙতে পারে, crafted input পাঠাতে পারে, বা poisoned data ঢোকাতে পারে। শক্তিশালী threat model, defend করা কঠিন।
Honest-but-curious
Semi-honest-এর মতোই। Server বা aggregator নিয়ম মানে, কিন্তু accidentally দেখা private তথ্য ব্যবহার করবে।
Passive vs Active
Passive adversary শুধু observe করে। Active adversary inject, modify, বা interfere করতে পারে। বেশিরভাগ privacy attack passive adversary ধরে।
ML model-এর বিরুদ্ধে তিনটি প্রধান ধরনের privacy attack আছে। প্রতিটা আলাদা ধরনের leakage কাজে লাগায়। Defense বোঝার আগে attack বোঝাটা জরুরি — কারণ সঠিক defense তখনই বোঝা যায় যখন attack-এর shape স্পষ্ট।
প্রশ্ন: "এই specific record কি training data-তে ছিল?"
এটা train-test loss gap কাজে লাগায়। যে record training-এ ছিল তাতে model বেশি confident — কম loss। Membership inference attack একটা shadow model train করে বা heuristic ব্যবহার করে এই পার্থক্যটা চেনার boundary খোঁজে।
এই code-টা simplified। বাস্তব attack-এ attacker নিজের data দিয়ে একটা shadow model train করে যেটা target model-এর মতো behavior করে। সেই shadow model-এর confidence pattern দেখে attacker বুঝতে পারে member আর non-member কীভাবে আলাদা দেখায়।
Medical বা legal setting-এ শুধু এটা জানাই sensitive যে কোনো ব্যক্তি একটা clinical trial dataset-এ ছিল — তার actual measurements না জেনেও। Membership inference এই প্রথম প্রশ্নটার উত্তর দেয়।
প্রশ্ন: "Training data দেখতে কেমন ছিল — কোনো নির্দিষ্ট class-এর জন্য?"
Model inversion model-এর input space-এ gradient ascent চালায়। প্রশ্ন করে: "কোন input দিলে model class -তে সবচেয়ে বেশি confident হবে?" উত্তরটা এমন একটা image বা vector যেটাকে model ঐ class-এর "typical" উদাহরণ মনে করে — এবং এটা training distribution-এর sensitive pattern ফাঁস করতে পারে।
সহজ ভাষায়: সেই input খোঁজো যেটা model-এর কাছে class -র probability সবচেয়ে বেশি করে। যদি মানে "diabetic patient" হয়, তাহলে দেখতে হবে training data-র typical diabetic রোগীর feature vector-এর মতো।
Face recognition system-এ এই attack সবচেয়ে dramatic — গবেষকরা শুধু model আর একটা class label থেকে training participant-দের recognizable মুখ reconstruct করেছেন।
প্রশ্ন: "Federated learning-এ specific training data দেখতে কেমন ছিল?"
এটা সবচেয়ে technical। Federated learning-এ participant-রা local gradient server-এ পাঠায়। Gradient inversion বলে: gradient update দেখে কি আসল pair বের করা যায়?
সহজ ভাষায়: সেই input খোঁজো যার gradient observed gradient-এর সবচেয়ে কাছাকাছি। এই optimization সফল হলে হয়ে যায় original private training example -এর কাছাকাছি reconstruction।
High-resolution image dataset-এ গবেষকরা দেখিয়েছেন একটা single gradient update থেকে near-pixel-perfect ছবি বের করা সম্ভব। এটা alarming কারণ federated learning-কে প্রায়ই privacy-preserving বলা হয় — কিন্তু এটা নিজেই privacy guarantee না।
| Attack | কী বের করে? | Attacker-এর কী দরকার? | সাধারণ defense |
|---|---|---|---|
| Membership Inference | X কি training set-এ ছিল? | Black-box query access | Differential Privacy, output smoothing |
| Model Inversion | Class-X এর typical sample কেমন? | Black-box + class labels | Differential Privacy, output perturbation |
| Gradient Inversion | কোন training sample এই gradient তৈরি করেছে? | Gradient updates (federated learning) | DP-SGD, gradient compression |
| Attribute Inference | X এর private attribute কী? | Partial record + query access | Differential Privacy, data minimization |
সবগুলো attack এর পেছনে একটাই কারণ: ডেটায় train করা model আর ডেটায় train করা model আলাদা। পার্থক্য ছোট হতে পারে — কিন্তু measurable। আর যথেষ্ট query করলে এই পার্থক্য ধরা যায়।
Differential Privacy ঠিক এই কারণটাকেই দূর করে। DP training নিশ্চিত করে যে কোনো individual record থাকলে বা না থাকলে model statistically indistinguishable থাকবে। Attack চলবে — কিন্তু যে signal খুঁজছিল সেটা mathematically suppress হয়ে গেছে।
Black-box API access-ই membership inference attack-এর জন্য যথেষ্ট। Weights না দেখালে attack কঠিন হয়, কিন্তু সম্পূর্ণ defense হয় না।
নাম, ID সরিয়ে দিলে (anonymization) membership inference থামে না। Anonymized dataset দিয়েও এমন model train করা যায় যে membership leak করে।
Federated learning raw data local রাখে — কিন্তু gradient update-এ সেই data-র তথ্য থাকে। Additional defense (DP বা secure aggregation) ছাড়া federated learning privacy guarantee না।
আমরা এখন পুরো সমস্যার আকার বুঝলাম। Model leak করে। এই leakage মৌলিক — data থেকে শেখার idea-র ভেতরেই এটা লুকানো। আর attacker-দের কাছে concrete, কাজ করা technique আছে।
সুসংবাদ হলো — এখন আমরা জানি কী ঠিক করতে হবে। দরকার এমন একটা training procedure যেটা নিশ্চিত করবে যে কোনো single record training set-এ থাকলে বা না থাকলে model-এর behavior mathematically indistinguishable থাকবে। এই formal guarantee-র নামই Differential Privacy — আর পরের অধ্যায়ে সেখানেই যাচ্ছি।