AI নৈতিক ব্যর্থতার সংক্ষিপ্ত ইতিহাস ও শিক্ষা
এই পাঠে যা শিখবেন
- চারটি সুপরিচিত AI নৈতিক ব্যর্থতার সাধারণ শেপ — কী হয়েছিল এবং কেন
- প্রতিটি ঘটনা থেকে কনক্রিট শিক্ষা — ভবিষ্যতে এড়ানোর জন্য কী করা উচিত ছিল
- এই ঘটনাগুলোকে রুট-কজ অনুযায়ী শ্রেণীবদ্ধ করার একটি ফ্রেমওয়ার্ক
- একটি সত্যিকারের, চলমান Python ট্যালি — কোন রুট-কজ সবচেয়ে বেশি ঘটেছে তা গণনা করে দেখা
১ · কেন ইতিহাস থেকে শেখা জরুরি
নতুন কোনো ইঞ্জিনিয়ারিং শৃঙ্খলা তৈরি হওয়ার সময় প্রায়ই বাস্তব ব্যর্থতার মধ্য দিয়েই তার নিরাপত্তা-চর্চা পরিণত হয় — বিমান নিরাপত্তা মান বহু দুর্ঘটনার তদন্ত থেকে এসেছে, সফটওয়্যার টেস্টিং শৃঙ্খলা বহু প্রোডাকশন বাগ থেকে শিখেছে। AI নৈতিকতাও ব্যতিক্রম নয়। গত দশকে একাধিক ডিপ্লয় হওয়া AI সিস্টেম বাস্তবে সত্যিই ক্ষতিকর বা বৈষম্যমূলক আচরণ দেখিয়েছে — এবং প্রতিটি ঘটনা একটি নির্দিষ্ট, চিহ্নিতযোগ্য রুট-কজ প্যাটার্ন-এর সাথে যুক্ত। এই প্যাটার্নগুলো চেনা থাকলে ভবিষ্যতের একটি নতুন সিস্টেম ডিজাইন করার সময় একই ভুল এড়ানো অনেক সহজ হয়ে যায়।
নিচের চারটি ঘটনাই বহুল-প্রতিবেদিত ও সুপরিচিত — এখানে শুধু এদের সাধারণভাবে-জানা শেপ (কী হয়েছিল, কবে হয়েছিল আনুমানিকভাবে, এবং সাধারণভাবে কী প্রভাব পড়েছিল) আলোচনা করা হয়েছে, কোনো অনির্ভরযোগ্য নির্দিষ্ট সংখ্যা বা বিতর্কিত বিস্তারিত তথ্য দাবি করা হয়নি।
২ · চারটি সুপরিচিত AI নৈতিক ব্যর্থতা
ক · একটি হায়ারিং-স্ক্রিনিং টুলের বায়াস (আনুমানিক ২০১৮)
একটি বড় টেক কোম্পানির তৈরি একটি AI-চালিত রিজিউমে-স্ক্রিনিং টুল ব্যাপকভাবে রিপোর্ট হওয়া তথ্য অনুযায়ী আনুমানিক ২০১৮ সালের দিকে বাতিল করে দেওয়া হয়, কারণ দেখা যায় এটি "নারী" শব্দ বা নারীদের সাথে সাধারণত সম্পর্কিত টার্মযুক্ত রিজিউমেগুলোকে নিয়মিতভাবে কম স্কোর দিচ্ছিল। টুলটি অতীতের কয়েক বছরের প্রকৃত নিয়োগের ডেটার উপর প্রশিক্ষিত হয়েছিল — এবং সেই ঐতিহাসিক ডেটাতেই যেহেতু একটি নির্দিষ্ট লিঙ্গের প্রার্থী বেশি নিয়োগ পেয়েছিলেন, মডেল সেই প্যাটার্নটিকেই "সফল প্রার্থীর বৈশিষ্ট্য" হিসেবে শিখে ফেলে।
কী ভুল হয়েছিল: মডেলটি ঐতিহাসিক নিয়োগ-সিদ্ধান্তকে "গ্রাউন্ড ট্রুথ" হিসেবে ধরে নিয়েছিল
— অথচ সেই ঐতিহাসিক সিদ্ধান্তগুলো নিজেই মানুষের বায়াসের ফলাফল ছিল। মডেল শুধু সেই বায়াসকে পুনরুৎপাদন
করেনি, বরং স্কেলে স্বয়ংক্রিয়ভাবে প্রয়োগ করেছিল।
শিক্ষা: প্রশিক্ষণ ডেটা যদি ঐতিহাসিকভাবে বৈষম্যমূলক সিদ্ধান্তের ফলাফল হয়, তাহলে সেই
ডেটার উপর প্রশিক্ষিত একটি মডেল "নিরপেক্ষ" প্যাটার্ন শেখে না — এটি সেই বৈষম্যকেই শেখে, যদি না সচেতনভাবে
এটি চিহ্নিত করে সংশোধন করা হয়।
খ · Tay চ্যাটবট (২০১৬)
২০১৬ সালে Microsoft একটি পাবলিক টুইটার চ্যাটবট "Tay" রিলিজ করে, যেটি ব্যবহারকারীদের সাথে কথোপকথনের মাধ্যমে শিখে নিজের কথা বলার ধরন উন্নত করার জন্য ডিজাইন করা হয়েছিল। রিলিজের প্রায় একদিনের মধ্যেই কিছু ব্যবহারকারী ইচ্ছাকৃতভাবে বটটিকে আপত্তিকর ও বৈষম্যমূলক বক্তব্য শেখাতে শুরু করে — এবং বটটি সেগুলো শিখে নিজেই প্রকাশ্যে পুনরাবৃত্তি করতে শুরু করে। Microsoft দ্রুত বটটিকে অফলাইন করে দেয়।
কী ভুল হয়েছিল: সিস্টেমটি লাইভ, অ-পরীক্ষিত ব্যবহারকারী ইনপুট থেকে সরাসরি ও
নিয়ন্ত্রণহীনভাবে শিখছিল, এবং সেই শেখা আচরণ তৎক্ষণাৎ পাবলিকলি প্রকাশ পাচ্ছিল — মাঝখানে কোনো
মডারেশন বা সেফগার্ড স্তর ছিল না।
শিক্ষা: যেকোনো সিস্টেম যা পাবলিক, ইচ্ছাকৃতভাবে ক্ষতিকর ইনপুট থেকে লাইভ শিখতে পারে,
তার জন্য adversarial ব্যবহারকারীদের বিরুদ্ধে স্পষ্ট সেফগার্ড (রেট-লিমিটিং, কনটেন্ট ফিল্টার, শেখা ও
পাবলিশ করার মধ্যে একটি রিভিউ স্তর) আগে থেকেই ডিজাইন করা দরকার — "মানুষ ভালো ব্যবহার করবে" এমন অনুমানের
উপর নির্ভর করা নিরাপদ নয়।
গ · একটি ফটো-ট্যাগিং সিস্টেমের ভুল (২০১৫)
২০১৫ সালে একটি বড় টেক কোম্পানির ইমেজ-রিকগনিশন/ফটো-ট্যাগিং সফটওয়্যার একটি ব্যাপকভাবে-প্রতিবেদিত ঘটনায় কৃষ্ণাঙ্গ মানুষদের ছবিকে অত্যন্ত আপত্তিকরভাবে ভুল লেবেল দেয়। কোম্পানিটি প্রকাশ্যে ক্ষমা চায় এবং দ্রুত একটি ফিক্স প্রয়োগ করে।
কী ভুল হয়েছিল: মডেলের ইমেজ-ক্লাসিফিকেশন অ্যাকুরেসি সামগ্রিকভাবে (aggregate-এ) হয়তো
উচ্চ মনে হয়েছিল, কিন্তু নির্দিষ্ট ডেমোগ্রাফিক সাবগ্রুপের উপর এটি যথেষ্ট পরীক্ষা করা হয়নি — একটি
নির্দিষ্ট ইমেজ ক্যাটাগরিতে সিস্টেমটি চরমভাবে ব্যর্থ হয়েছিল, যা প্রি-রিলিজ টেস্টিংয়ে ধরা পড়েনি।
শিক্ষা: শুধু "গড় অ্যাকুরেসি ৯৫%" — এই একটি সংখ্যা যথেষ্ট নয়। একটি মডেল রিলিজের
আগে বিভিন্ন ডেমোগ্রাফিক/সাবগ্রুপ জুড়ে আলাদাভাবে পারফরম্যান্স পরীক্ষা করা আবশ্যক, বিশেষ করে যেখানে
ভুলের সামাজিক পরিণতি গুরুতর ও অসম্মানজনক হতে পারে।
ঘ · Gender Shades গবেষণা (২০১৮)
২০১৮ সালে গবেষক Joy Buolamwini ও Timnit Gebru-র "Gender Shades" গবেষণায় একাধিক কমার্শিয়াল ফেসিয়াল-অ্যানালাইসিস সিস্টেম পদ্ধতিগতভাবে পরীক্ষা করা হয় ত্বকের রং ও লিঙ্গ অনুযায়ী উপ-গোষ্ঠীতে ভাগ করে। গবেষণায় দেখা যায় এই সিস্টেমগুলোর এরর রেট গাঢ়-ত্বকের নারীদের ক্ষেত্রে হালকা-ত্বকের পুরুষদের তুলনায় উল্লেখযোগ্যভাবে বেশি ছিল।
কী ভুল হয়েছিল: এখানে সমস্যাটি কোনো একটি কোম্পানির নয় — বরং একটি শিল্প-ব্যাপী প্যাটার্ন
ছিল, যেখানে একাধিক কমার্শিয়াল সিস্টেমের বেঞ্চমার্ক/টেস্ট ডেটাসেটই ইন্টারসেকশনাল সাবগ্রুপ (একসাথে
একাধিক ডেমোগ্রাফিক মাত্রা, যেমন ত্বকের রং এবং লিঙ্গ) জুড়ে যথেষ্ট বৈচিত্র্যপূর্ণ ছিল না।
শিক্ষা: সাবগ্রুপ টেস্টিং একমাত্রিক হলেও যথেষ্ট নয় — শুধু "লিঙ্গ অনুযায়ী" বা শুধু
"ত্বকের রং অনুযায়ী" আলাদাভাবে পরীক্ষা করলে একটি ইন্টারসেকশনাল সাবগ্রুপের সমস্যা লুকিয়ে থাকতে পারে;
একাধিক অ্যাট্রিবিউটের সংযোগস্থলেও পারফরম্যান্স পরীক্ষা করা দরকার। এই গবেষণাটি স্বাধীন, বাইরের একাডেমিক
অডিটের গুরুত্বও দেখিয়ে দেয়।
চারটি ঘটনাতেই একটি সাধারণ প্যাটার্ন আছে: প্রতিটি সিস্টেম রিলিজের আগে "কাজ করছে" মনে হয়েছিল — অ্যাকুরেসি বা পারফরম্যান্স মেট্রিক্স হয়তো সন্তোষজনক লেগেছিল। সমস্যাটি ধরা পড়ে শুধুমাত্র তখনই, যখন সিস্টেমটি একটি নির্দিষ্ট উপ-গোষ্ঠী বা adversarial পরিস্থিতির মুখোমুখি হয়েছে যা প্রি-রিলিজ টেস্টিংয়ে যথেষ্ট প্রতিনিধিত্ব পায়নি।
৩ · রুট-কজ অনুযায়ী প্যাটার্ন
এই চারটি ঘটনাকে তাদের মূল রুট-কজ অনুযায়ী শ্রেণীবদ্ধ করা যায়: ঐতিহাসিক ডেটার বায়াস, adversarial ইনপুটের বিরুদ্ধে সেফগার্ডের অভাব, এবং সাবগ্রুপ জুড়ে অপর্যাপ্ত টেস্টিং। নিচের কোড সেলে এই শ্রেণীবিভাগ সত্যিই গণনা করে ট্যালি করা হয়েছে — কোনো সংখ্যা হার্ডকোড করা হয়নি।
incidents = [
{"name": "হায়ারিং-স্ক্রিনিং টুল (~২০১৮)", "root_cause": "ঐতিহাসিক ডেটার বায়াস"},
{"name": "Tay চ্যাটবট (২০১৬)", "root_cause": "adversarial ইনপুটের বিরুদ্ধে সেফগার্ডের অভাব"},
{"name": "ফটো-ট্যাগিং সিস্টেম (২০১৫)", "root_cause": "সাবগ্রুপ জুড়ে অপর্যাপ্ত টেস্টিং"},
{"name": "Gender Shades গবেষণা (২০১৮)", "root_cause": "সাবগ্রুপ জুড়ে অপর্যাপ্ত টেস্টিং"},
]
# রুট-কজ অনুযায়ী সত্যিকারের ট্যালি -- কোনো সংখ্যা হার্ডকোড করা হয়নি
tally = {}
for incident in incidents:
cause = incident["root_cause"]
tally[cause] = tally.get(cause, 0) + 1
print("রুট-কজ অনুযায়ী ঘটনার সংখ্যা:\n")
for cause, count in sorted(tally.items(), key=lambda item: -item[1]):
print(f" {cause}: {count}টি ঘটনা")
print(f"\nমোট বিশ্লেষণ করা ঘটনা: {len(incidents)}")
most_common_cause = max(tally, key=tally.get)
print(f"সবচেয়ে সাধারণ রুট-কজ: {most_common_cause} ({tally[most_common_cause]}টি ঘটনা)")
ইতিহাস থেকে শেখার লক্ষ্য কোনো নির্দিষ্ট কোম্পানি বা ব্যক্তিকে দোষারোপ করা নয় — বরং পুনরাবৃত্তিযোগ্য প্যাটার্ন চেনা: ঐতিহাসিক ডেটার বায়াস প্রশ্ন করুন, adversarial ইনপুটের বিরুদ্ধে সেফগার্ড ডিজাইন করুন, এবং সাবগ্রুপ জুড়ে (এমনকি একাধিক অ্যাট্রিবিউটের সংযোগস্থলেও) পরীক্ষা করুন। এই কোর্সের বাকি পাঠগুলো এই প্যাটার্নগুলো প্রতিরোধ করার জন্য নির্দিষ্ট টুল ও ফ্রেমওয়ার্ক শেখাবে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ হায়ারিং-টুলের ঘটনায়, মডেলটি সরাসরি লিঙ্গ ফিচার হিসেবে ব্যবহার করেনি বলে জানা যায় — তবুও কেন এটি বায়াসড আচরণ দেখাল? এই প্যাটার্নটি আপনার কি চেনা মনে হচ্ছে?
কারণটি একই যা L01-এ প্রক্সি ডিসক্রিমিনেশন ডেমোতে দেখানো হয়েছিল — মডেল ঐতিহাসিক নিয়োগের ডেটা থেকে এমন ফিচার/প্যাটার্ন শিখে ফেলতে পারে যা পরোক্ষভাবে লিঙ্গের সাথে করিলেটেড, এমনকি লিঙ্গ ফিচার সরাসরি ব্যবহার না করেও। "protected attribute বাদ দেওয়া" একাই যথেষ্ট সুরক্ষা নয়।
প্র ০২ Tay চ্যাটবটের ঘটনায়, সমস্যাটি কি মডেলের "ইচ্ছাকৃত" আপত্তিকর আচরণ ছিল, নাকি সিস্টেম ডিজাইনের একটি ঘাটতি? এই পার্থক্যটি কেন গুরুত্বপূর্ণ?
এটি ছিল একটি সিস্টেম-ডিজাইন ঘাটতি, "ইচ্ছাকৃত" আচরণ নয় — বটটি ঠিক যা ডিজাইন করা হয়েছিল তাই করছিল (ব্যবহারকারীদের কাছ থেকে শেখা), কিন্তু ডিজাইনে adversarial ব্যবহারকারীদের সম্ভাবনা বিবেচনা করা হয়নি। এই পার্থক্যটি গুরুত্বপূর্ণ কারণ সমাধানও ভিন্ন — একটি "দুষ্টু মডেল" ঠিক করার বদলে এখানে দরকার ছিল ইনপুট ফিল্টারিং ও রিভিউ স্তরের মতো সিস্টেম-লেভেল সেফগার্ড, যা M6/M7-এ আরও বিস্তারিত আসবে।
প্র ০৩ Gender Shades গবেষণা কেন একটি "শিল্প-ব্যাপী" সমস্যা হিসেবে গুরুত্বপূর্ণ, শুধু একটি কোম্পানির সমস্যা নয়?
কারণ গবেষণাটি একাধিক ভিন্ন কোম্পানির কমার্শিয়াল সিস্টেম পরীক্ষা করেছিল এবং প্রায় সবগুলোতেই একই ধরনের ইন্টারসেকশনাল গ্যাপ পাওয়া গিয়েছিল। এটি দেখায় সমস্যাটি কোনো একটি টিমের অবহেলা নয় — বরং সেই সময়ের সাধারণ বেঞ্চমার্ক ডেটাসেট ও টেস্টিং প্র্যাকটিসেই একটি কাঠামোগত ঘাটতি ছিল, যা স্বাধীন, বাইরের একাডেমিক অডিটের মূল্য প্রমাণ করে।
অনুশীলন
-
চিন্তা করুন: উপরের কোড সেলে যদি আরও একটি পঞ্চম ঘটনা যোগ করা হয় যার রুট-কজ
"ঐতিহাসিক ডেটার বায়াস" (হায়ারিং-টুলের মতোই), তাহলে
most_common_cause-এর আউটপুট কী হবে বলে আপনার ধারণা?তখন "ঐতিহাসিক ডেটার বায়াস" ও "সাবগ্রুপ জুড়ে অপর্যাপ্ত টেস্টিং" — দুটোরই সংখ্যা হবে ২, একটি টাই তৈরি হবে।
max()ফাংশনটি dict-এ যে কারণটি প্রথমে যোগ হয়েছিল (insertion order অনুযায়ী) সেটিকেই বেছে নেবে — এই ক্ষেত্রে "ঐতিহাসিক ডেটার বায়াস", কারণ সেটি তালিকায় প্রথমে আছে। এটি দেখায় টাই-ব্রেকিং লজিক নিজে যাচাই করে দেখা কেন গুরুত্বপূর্ণ। -
পরীক্ষা করুন: উপরের কোড সেলে
incidentsতালিকায় একটি পঞ্চম dict{"name": "নতুন কাল্পনিক ঘটনা", "root_cause": "ঐতিহাসিক ডেটার বায়াস"}যোগ করে Run চেপে আপনার অনুমান যাচাই করুন।যোগ করার পর মোট ঘটনা হবে ৫টি, এবং "ঐতিহাসিক ডেটার বায়াস" ও "সাবগ্রুপ জুড়ে অপর্যাপ্ত টেস্টিং" দুটোই ২ বার করে দেখাবে। আউটপুটে
most_common_cause"ঐতিহাসিক ডেটার বায়াস" দেখাবে, ঠিক যেমন অনুমান করা হয়েছিল — কারণ এটিই dict-এ প্রথমে ঢুকেছিল।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ নৈতিক ফ্রেমওয়ার্ক, বায়াস-ফেয়ারনেস, প্রাইভেসি, ট্রান্সপারেন্সি, AI অ্যালাইনমেন্ট, জেনারেটিভ AI/LLM এথিক্স, সামাজিক প্রভাব, গভর্নেন্স ও রেগুলেশন, সেক্টর-স্পেসিফিক এথিক্স ও এক্সিস্টেনশিয়াল রিস্ক বিতর্ক — বাকি পাঠগুলো শীঘ্রই যুক্ত হবে।
- Ethics in Computing & AI Safety কোর্স সহোদর কোর্স সাধারণ কম্পিউটিং এথিক্স, প্রফেশনাল এথিক্স ও সেফটি-ক্রিটিক্যাল কেস স্টাডির একটি বিস্তৃত সার্ভে — এই কোর্স সম্পূর্ণভাবে AI-তে ফোকাস করে গভীরে যায়।
- সব Courses দেখুন ABCL TECH C, C++, Python, Java, JavaScript, DSA, Machine Learning, Deep Learning, System Design, Cybersecurity, Cloud Computing & DevOps, এবং আরও অনেক কোর্স — সব এক জায়গায়।