Ethics & Fairnessপড়তে ৮ মিনিট লাগবে

মেশিন লার্নিং ফেয়ারনেস (ML Fairness)

বায়াসড (Biased) বা পক্ষপাতমূলক ইনপুট দিলে, এর প্রেডিকশন বা আউটপুটও বায়াসড (biased) আসবে
data bias:ট্রেইনিং ডেটার মধ্যে মিশে থাকা অতীত বা ঐতিহাসিক বৈষম্য (Historical prejudice)algorithmic bias:মডেল এখানকার আগে থেকে থাকা প্যাটার্নগুলোকেই আরও বাড়িয়ে তোলে (Model amplifies existing patterns)fairness metrics:এর অনেকগুলো সংজ্ঞা রয়েছে · তবে এর কোনো একক সঠিক উত্তর নেই

ভাবুন তো, একটি কোম্পানি লোক নিয়োগের জন্য এআই-ভিত্তিক (AI) একটি টুল বানাতে চায়। তারা এটিকে বিগত ৫০ বছরের নিয়োগের সিদ্ধান্তগুলো দিয়ে দিলো — যেখানে কোন সিভিগুলো গ্রহণ করা হয়েছিল আর কোনগুলো বাতিল করা হয়েছিল, তার সব তথ্য ছিল। এই মডেলটি সেই প্যাটার্নগুলো শিখে নিল এবং নিজে থেকে কিছু সুপারিশ (recommendations) করা শুরু করে দিলো。

এখানে কেবল একটি সমস্যা আছে: মানুষের তৈরি করা ওই ৫০ বছরের সিদ্ধান্তগুলোর ভেতর বেশ কিছু বায়াস (biases) বা পক্ষপাত ছিল। কোম্পানিটি ঐতিহাসিকভাবেই ইঞ্জিনিয়ারিং বা প্রকৌশলের কাজগুলোতে মূলত পুরুষদেরই নিয়োগ দিয়ে এসেছে। তাই নারীদের কলেজের নাম, নারীদের স্পোর্টস টিমের কথা, বা এমনকি শুধু "নারীদের" শব্দটি লেখা থাকলেও সেই সিভিগুলো গ্রহণ করার সম্ভাবনা বেশ কম ছিল — যার কারণ কিন্তু এটি নয় যে সেই প্রার্থীরা খারাপ ছিল, বরং এর কারণ হলো একটি ঐতিহাসিক বৈষম্য (historical discrimination)

এআই (AI) এগুলো কিছুই জানে না। এটি শুধু একটি প্যাটার্ন দেখতে পায়: "যেসব সিভিতে এই শব্দগুলো থাকে, সেগুলো সাধারণত বাতিলই হয়ে যায়।" তাই এটি এই বায়াস বা পক্ষপাতিত্বকে শিখে নেয় এবং স্বয়ংক্রিয়ভাবে বা বিশাল পরিসরে এটিকে প্রয়োগ করতে শুরু করে। এর ফলে একজন বায়াসড বা পক্ষপাতদুষ্ট ম্যানেজারের জায়গায় আপনি এখন এমন একটি বায়াসড সিস্টেম পেয়ে গেছেন, যা দিনে হাজার হাজার প্রার্থীর সিভি বাতিল করে দিচ্ছে।

আর এটি কেবল কোনো তাত্ত্বিক ব্যাপার নয় — ২০১৪ সালে অ্যামাজন সত্যিই এমন একটি সিস্টেম বানিয়েছিল এবং বায়াস বা পক্ষপাতের কথা জানতে পারার পর তাদের সেটি বাতিল করতে হয়েছিল

বায়াস বা পক্ষপাত ঠিক কোথা থেকে আসে? (Where does bias come from?)

১. হিস্টোরিক্যাল বায়াস বা ঐতিহাসিক পক্ষপাত (Historical bias)

ডেটার ভেতর অতীতের যেসব সিদ্ধান্ত লুকিয়ে থাকে, সেগুলো নিজেই একেকটি বায়াস বা পক্ষপাত। ঐতিহাসিকভাবে বা অতীত থেকে চলে আসা বৈষম্যমূলক ঋণ ব্যবস্থার ওপর ট্রেইন করা একটি লোন বা ঋণ অনুমোদনের মডেল, মূলত সেই পুরনো বৈষম্য প্রথাটিকেই আরও বেশি চালিয়ে নিয়ে যাবে।

২. রিপ্রেজেন্টেশন বায়াস বা প্রতিনিধিত্বের পক্ষপাত (Representation bias)

যদি ট্রেইনিং ডেটাগুলো সবার জন্য সমানভাবে প্রতিনিধিত্ব করতে না পারে, তবে এমনটা হয়। বেশিরভাগ ফর্সা-চামড়ার মুখমণ্ডলের ওপরে ট্রেইন করা একটি ফেসিয়াল রিকগনিশন (facial recognition) মডেল স্বাভাবিকভাবেই গাঢ় রঙের ত্বকের সাথে খুব খারাপ পারফর্ম করবে — কারণ এই অ্যালগরিদমটি যে রেসিস্ট বা বর্ণবাদী তা কিন্তু নয়, বরং এটি মূলত সব রকমের বৈচিত্র্যপূর্ণ (diverse) উদাহরণ থেকে প্রয়োজনীয় জিনিসগুলো শেখার সুযোগই পায়নি

৩. মেজারমেন্ট বায়াস বা পরিমাপগত পক্ষপাত (Measurement bias)

যে পদ্ধতিতে এই ডেটাগুলো কালেক্ট বা সংগ্রহ করা হয়, তা পদ্ধতিগতভাবেই নির্দিষ্ট কিছু গোষ্ঠীকে পিছিয়ে দেয় বা বঞ্চিত করে। যেমন: "অপরাধপ্রবণতা (criminality)"-এর হিসেবে "গ্রেফতারের সংখ্যা (number of arrests)"-কে ব্যবহার করার ফলে তা মূলত আসল অপরাধের হারের বদলে কেবল পুলিশের টহলের প্যাটার্নকেই তুলে ধরে। কারণ যেসব এলাকায় পুলিশের নজরদারি বেশি থাকে, সেখানকার গ্রেফতারের সংখ্যা অন্যান্য এলাকাগুলোর চেয়ে স্বাভাবিকভাবেই বেশিই হবে।

৪. অ্যাগ্রিগেশন বায়াস (Aggregation bias)

সবার জন্য বানানো একটি নির্দিষ্ট বা একক মডেল, আলাদা আলাদা গ্রুপগুলোর নিজেদের মধ্যকার এই পার্থক্যগুলোকে খুব সহজেই এড়িয়ে যায়। যেমন: ৮০% পুরুষ ডেটার ওপর ট্রেইন করা একটি চিকিৎসাবিষয়ক মডেল, স্বাভাবিকভাবেই মহিলা রোগীদের জন্য খারাপ বা ভুল কোনো সিদ্ধান্ত দিতে পারে।

প্রেডিকশনে বায়াস বা পক্ষপাত শনাক্ত করা (Detecting Bias in Predictions)

import numpy as np
# কোনো হায়ারিং বা নিয়োগ মডেলে সিমুলেট করা বিভিন্ন প্রেডিকশন
# ০-১০০ এর মধ্যে পাওয়া স্কোর, যা যত বেশি = নিয়োগ পাওয়ার সম্ভাবনা তত বেশি
np.random.seed(42)
# গ্রুপ A (ঐতিহাসিক ডেটার ভিত্তিতে এরা মেজরিটি বা সংখ্যাগরিষ্ঠ) — মডেল এদের বেশি পছন্দ করতে শিখেছে
group_a_scores = np.random.normal(70, 10, 500).clip(0, 100)
# গ্রুপ B (প্রাথমিক ডেটায় যাদের রিপ্রেজেন্টেশন কম) — মডেল অটোমেটিকভাবে এদের কম স্কোর দেয়
group_b_scores = np.random.normal(55, 10, 500).clip(0, 100)
threshold = 65 # "hire" বা নিয়োগ করার থ্রেশহোল্ড (threshold)
hire_rate_a = (group_a_scores >= threshold).mean()
hire_rate_b = (group_b_scores >= threshold).mean()
print(f"গ্রুপ A-এর নিয়োগের হার (Group A hire rate): {hire_rate_a:.1%}")
print(f"গ্রুপ B-এর নিয়োগের হার (Group B hire rate): {hire_rate_b:.1%}")
print(f"বৈষম্য বা ডিস্পারেট ইম্প্যাক্টের রেশিও (Disparate impact ratio): {hire_rate_b / hire_rate_a:.2f}")
print(f"\n(৪/৫ মেজরিটি রুল: ০.৮০-এর কম রেশিও থাকা মানে সেখানে বাজে ধরনের প্রভাব বা বায়াস রয়েছে)")
print(f"বায়াস শনাক্ত হয়েছে (Bias detected): {'YES' if hire_rate_b / hire_rate_a < 0.80 else 'NO'}")
Output
গ্রুপ A-এর নিয়োগের হার (Group A hire rate): 69.2%
গ্রুপ B-এর নিয়োগের হার (Group B hire rate): 16.4%
বৈষম্য বা ডিস্পারেট ইম্প্যাক্টের রেশিও (Disparate impact ratio): 0.24

(৪/৫ মেজরিটি রুল: ০.৮০-এর কম রেশিও থাকা মানে সেখানে বাজে ধরনের প্রভাব বা বায়াস রয়েছে)
বায়াস শনাক্ত হয়েছে (Bias detected): YES

ফেয়ারনেস (fairness) বা ন্যায্যতা বলতে কী বোঝায় (যা মনে হচ্ছে, এটি তার চেয়েও অনেক বেশি কঠিন ব্যাপার)

ন্যায্যতার বিভিন্ন রকম গাণিতিক বা ম্যাথমেটিক্যাল (mathematical) সংজ্ঞা রয়েছে, এবং — এর সবচেয়ে অদ্ভুত ব্যাপারটি হলো — এগুলোর বেশ কয়েকটি একটি আরেকটিকে মিথ্যা প্রমাণ করে দেয়। আপনি চাইলেও আক্ষরিক অর্থে এই সবগুলোকে একই সাথে সন্তুষ্ট করতে বা পালন করতে পারবেন না।

  • ডেমোগ্রাফিক প্যারিটি (Demographic parity): এর মানে হলো সব গ্রুপের মধ্যে এখানকার হার সমান হওয়া। (তবে এর ফলে হয়তো কোনো একটি গ্রুপ থেকে তুলনামূলক কম যোগ্য প্রার্থীকেও এখানে নিয়োগ দিতে হতে পারে।)
  • ইক্যুয়াল অপরচুনিটি বা সমান সুযোগ (Equal opportunity): সব গ্রুপের মধ্যে এদের ট্রু পজেটিভ রেশিও (true positive rates) সমান রাখা। (যার মানে হলো, সব গ্রুপ থেকেই যোগ্য ব্যক্তিদের সমানভাবে সুযোগ দেওয়া হবে বা অনুমোদন দেওয়া হবে।)
  • প্রেডিকটিভ প্যারিটি (Predictive parity): সব গ্রুপের মধ্যেই সমান নিখুঁততা (precision) বজায় রাখা। (যার মানে হলো, যদি কেউ নিয়োগ পেয়ে যান বা অ্যাপ্রুভড (approved) হয়ে যান, তবে তিনি যে গ্রুপের মানুষই হোন না কেন তার এখানে সফল হওয়ার সম্ভাবনা সবার মতোই সমান থাকবে।)

বাস্তবিক অর্থে এগুলোর কোনো সার্বজনীন বা সবার ক্ষেত্রে খাটে এমন কোনো "সঠিক" সংজ্ঞা নেই। এই ফেয়ারনেসের ধরনটি মূলত এর প্রেক্ষাপট (context), মানুষের মূল্যবোধ (values), এবং এর কোনো ভুলে বা এরর-এ (errors) ঠিক কতটা ক্ষতি হতে পারে, তার ওপর নির্ভর করে।

আপনি কী করতে পারেন? (What can you do?)

  1. আপনার ডেটাগুলোকে অডিট করুন (Audit your data) — আপনার ডেটার রিপ্রেজেন্টেশনগুলোতে কোনো গ্যাপ আছে কি না এবং এর মাঝে অতীত বা হিস্টোরিক্যাল কোনো বায়াস (historical biases) আছে কি না তা আগে থেকেই চেক করুন
  2. ন্যায্যতা পরিমাপ করুন (Measure fairness) — শুধু এর অ্যাকুরেসি চেক করে বসে থাকবেন না; পাশাপাশি প্রতিটি গ্রুপের জন্যও এগুলোর অ্যাকুরেসি চেক করুন
  3. প্রভাব কমানো (Mitigate) — এগুলোর প্রভাব কমাতে রি-স্যাম্পলিং, রি-ওয়েটিং, বা অ্যাডভারসারি ডি-বায়াসিং-এর মতো বিভিন্ন টেকনিক বা পদ্ধতিগুলো ব্যবহার করুন
  4. স্বচ্ছতা বজায় রাখা (Be transparent) — আপনার মডেলের ঠিক কী কী সীমাবদ্ধতাগুলো রয়েছে এবং কাদের ওপরে এটি টেস্ট বা পরীক্ষা করা হয়েছে তার সবকিছু ডকুমেন্টেড (documented) করে রাখুন
  5. মানুষের সিদ্ধান্তকেও গুরুত্বের সাথে মূল্যায়ন করুন (Keep humans in the loop) — উচ্চ পর্যায়ের বা হাই-স্টেক সিদ্ধান্তগুলোর ক্ষেত্রে এআই-এর (AI) মূলত একজন সহকারীর মতো সাহায্য করা উচিত, এটি কোনোভাবেই মানুষের নেওয়া সিদ্ধান্তের বিকল্প হিসেবে কাজ করতে পারে না
Note: "মডেলটি তো শুধু ডেটা থেকেই শিখছে" — এটি আসলে কোনো আত্মরক্ষার বা বাঁচার পথ হতে পারে না। যদি এর ডেটাই বায়াসড বা পক্ষপাতদুষ্ট হয়, তবে সেই মডেলটিও বায়াসড হবে — এবং এরপর সেটি রিলিজ করলে তা ব্যাপক পরিসরে অটোমেটিকভাবে মানুষের ভেতরে বৈষম্যের সৃষ্টি করবে। কোনো মডেল রিলিজ বা ডেপ্লয় করার আগেই এমএল সিস্টেমের নির্মাতাদের অবশ্যই এর সব বায়াস বা পক্ষপাতগুলো অডিট করা ও সমাধান করার দায়িত্ব নেওয়া উচিত।

Key Metrics

📊 ডেটা অডিট (Data Audit)
একেবারে গোড়া থেকেই কোনো বায়াস (bias) থাকলে তা খুঁজে বের করুন — এটি সমাধানের সবচেয়ে সহজ উপায়
ট্রেইনিংয়ের আগে (Before training) রিপ্রেজেন্টেশন + লেবেলগুলো চেক করা
⚖️ ফেয়ারনেস মেট্রিক্স (Fairness Metrics)
এর ওভারঅল বা সামগ্রিক অ্যাকুরেসি অনেক সময় আলাদা আলাদা গ্রুপের বৈষম্যগুলোকে আড়াল করে দিতে পারে
ট্রেইনিংয়ের পরে (After training) প্রতিটি গ্রুপের অ্যাকুরেসি চেক করা
🔧 ডিবায়াসিং টেকনিক (Debiasing Techniques)
ট্রেড-অফ (Trade-offs): এখানকার বায়াসগুলো কমানোর ফলে এর সার্বিক বা ওভারঅল অ্যাকুরেসি একটু কমে যেতে পারে
ট্রেইনিংয়ের সময়/পরে (During/after training) রি-ওয়েট, রি-স্যাম্পল, বা কনস্ট্রেইন করা
🔍 চলনশীল বা অনগোয়িং মনিটরিং (Ongoing Monitoring)
বাস্তবের ডেটাগুলো প্রতিনিয়ত বদলাতে থাকায় এখানেও নতুন করে বায়াস তৈরি হতে পারে বা তা দিক পাল্টাতে পারে
ডেপ্লয় বা রিলিজ করার পরে (After deployment) বিরতিহীনভাবে এর ফেয়ারনেস চেক করতে থাকা

ছোট কুইজ

অ্যামাজনের তৈরি হায়ারিং (hiring) এআই-টি (AI) নারীদের প্রতি বেশি বায়াসড (biased) ছিল। এর মূল কারণ কী ছিল?
Challenge

পড়া চালিয়ে যান

মডেল ইভ্যালুয়েশন বা মূল্যায়ন (Model Evaluation)
অ্যাকুরেসি বা নির্ভুলতাই সবকিছু নয় — আসুন আরও ভালোভাবে আরওসি (ROC), এইউসি (AUC), এফ১ (F1) সম্পর্কে জেনে নিই
কনফিউশন ম্যাট্রিক্স (Confusion Matrix)
ট্রু পজিটিভস (True positives), ফলস অ্যালার্ম (false alarms) — অর্থাৎ যে বিষয়গুলো মাপা সবচেয়ে বেশি জরুরি
এমএল পাইপলাইন (ML Pipeline)
র বা কাঁচা ডেটা (raw data) থেকে শুরু করে একেবারে প্রোডাকশনে (production) কাজের প্রেডিকশন (predictions) পর্যন্ত