ব্ল্যাক-বক্স মডেল ও এক্সপ্লেইনেবিলিটির চ্যালেঞ্জ
এই পাঠে যা শিখবেন
- ব্ল্যাক-বক্স মডেল ও ইন্টারপ্রিটেবল মডেলের মধ্যে পার্থক্য
- কেন জটিল মডেল স্বাভাবিকভাবেই ব্যাখ্যা-প্রতিরোধী হয়ে ওঠে
- অ্যাকুরেসি বনাম ইন্টারপ্রিটেবিলিটির মধ্যে প্রায়শই দেখা যাওয়া টানাপোড়েন
- একটি সত্যিকারের, চলমান ডেমো — একটি ছোট, সম্পূর্ণ দৃশ্যমান রুল-ভিত্তিক মডেল
১ · ব্ল্যাক-বক্স মডেল কী
ব্ল্যাক-বক্স মডেলBlack-box modelএমন একটি মডেল যার ইনপুট ও আউটপুটের মাঝের অভ্যন্তরীণ যুক্তি এত জটিল যে মানুষের পক্ষে সরাসরি পড়ে বোঝা কার্যত অসম্ভব — মডেলটি "কী" আউটপুট দেয় তা দেখা যায়, কিন্তু "কেন" দেয় তা সহজে বোঝা যায় না। বলতে বোঝায় এমন একটি সিস্টেম যেখানে ইনপুট দিলে আউটপুট পাওয়া যায়, কিন্তু মাঝের সিদ্ধান্ত-প্রক্রিয়া মানুষের কাছে অস্বচ্ছ। গভীর নিউরাল নেটওয়ার্ক, বড় এনসেম্বল মডেল (যেমন শত শত ডিসিশন ট্রি একসাথে), এবং বড় ভাষা মডেল সাধারণত এই শ্রেণিতে পড়ে — এগুলোতে লাখ থেকে শুরু করে কোটি কোটি পর্যন্ত সংখ্যা-প্যারামিটার থাকতে পারে, যেগুলো প্রশিক্ষণের সময় ধীরে ধীরে সমন্বিত হয়। এই প্যারামিটারগুলোর কোনোটিরই আলাদা আলাদা মানুষ-বোধ্য অর্থ নেই — "প্যারামিটার নম্বর ৪৫,২৩১ এর মান ০.০০৩৭" এই তথ্যটি একা কোনো ব্যাখ্যা দেয় না।
একটি গভীর নেটওয়ার্কে বহু স্তর একের পর এক ইনপুটকে রূপান্তরিত করে — শেষ আউটপুট বহু স্তরের মিথস্ক্রিয়ার ফল, একক স্তরের নয়।
মডেল শত শত ফিচারের মধ্যে অসংখ্য অ-রৈখিক (nonlinear) মিথস্ক্রিয়া শিখতে পারে, যা একসাথে মানুষের মনে কল্পনা করা কঠিন।
আধুনিক ডিপ লার্নিং মডেলে সাধারণত লাখ থেকে কোটি (এমনকি তার বেশি) পর্যন্ত প্যারামিটার থাকে — এটি একটি ব্যাপকভাবে পরিচিত, বহুল-উদ্ধৃত সাধারণ চিত্র, প্রতিটি নির্দিষ্ট মডেলের সংখ্যা ভিন্ন হতে পারে।
২ · একটি সত্যিকারের ইন্টারপ্রিটেবল মডেল
নিচের কোড সেলে একটি ছোট ঋণ-অনুমোদন সিদ্ধান্ত মডেল তৈরি করা হয়েছে — এটি কোনো "ব্ল্যাক-বক্স" নয়, বরং একটি স্পষ্ট, ক্রমানুসারে-যাচাই-হওয়া রুলের তালিকা। প্রতিটি আবেদনকারীর জন্য কোন রুলটি সক্রিয় হয়ে সিদ্ধান্ত দিলো তা সরাসরি প্রিন্ট করা হয়েছে, এবং মডেলের মোট রুল-সংখ্যা সত্যিই গণনা করে দেখানো হয়েছে।
# একটি সম্পূর্ণ ইন্টারপ্রিটেবল, রুল-ভিত্তিক ঋণ-অনুমোদন মডেল
# প্রতিটি রুল একটি (বর্ণনা, শর্ত-ফাংশন, সিদ্ধান্ত) -- ক্রমানুসারে যাচাই করা হয়
rules = [
("রুল ১: debt_ratio > 0.5 হলে সরাসরি প্রত্যাখ্যান",
lambda a: a["debt_ratio"] > 0.5,
"REJECT"),
("রুল ২: income >= 50000 এবং credit_history_years >= 3 হলে অনুমোদন",
lambda a: a["income"] >= 50000 and a["credit_history_years"] >= 3,
"APPROVE"),
("রুল ৩: income >= 30000 এবং debt_ratio < 0.3 হলে অনুমোদন",
lambda a: a["income"] >= 30000 and a["debt_ratio"] < 0.3,
"APPROVE"),
("রুল ৪ (ডিফল্ট): উপরের কোনো রুল না মিললে প্রত্যাখ্যান",
lambda a: True,
"REJECT"),
]
def decide(applicant):
for description, condition, decision in rules:
if condition(applicant):
return decision, description
return "REJECT", "কোনো রুল মেলেনি (এটি ঘটার কথা নয়, কারণ শেষ রুলটি সবসময় সত্য)"
applicants = [
{"name": "আবেদনকারী ১", "income": 55000, "debt_ratio": 0.2, "credit_history_years": 4},
{"name": "আবেদনকারী ২", "income": 32000, "debt_ratio": 0.6, "credit_history_years": 1},
{"name": "আবেদনকারী ৩", "income": 35000, "debt_ratio": 0.25, "credit_history_years": 1},
{"name": "আবেদনকারী ৪", "income": 20000, "debt_ratio": 0.4, "credit_history_years": 0},
]
print("প্রতিটি আবেদনকারীর সিদ্ধান্ত ও সঠিক কারণ:\n")
for a in applicants:
decision, description = decide(a)
print(f"{a['name']} (income={a['income']}, debt_ratio={a['debt_ratio']}, credit_history_years={a['credit_history_years']})")
print(f" -> সিদ্ধান্ত: {decision}")
print(f" -> কারণ: {description}\n")
print(f"এই মডেলে মোট রুলের সংখ্যা: {len(rules)}")
print("প্রতিটি রুল মানুষ সরাসরি পড়ে, হাতে-কলমে যাচাই করে বুঝতে পারে -- এটাই ইন্টারপ্রিটেবিলিটি।")
৪টি রুল আছে, এবং প্রতিটি আবেদনকারীর সিদ্ধান্তের সাথে ঠিক কোন
রুলটি সক্রিয় হয়েছে তা সরাসরি প্রিন্ট হচ্ছে। এখন কল্পনা করুন একটি আধুনিক গভীর নিউরাল নেটওয়ার্ক মডেলের কথা —
সেখানে হয়তো লাখো থেকে কোটি পর্যন্ত সংখ্যা-প্যারামিটার থাকতে পারে (এটি একটি বহুল-পরিচিত সাধারণ চিত্র মাত্র,
কোনো নির্দিষ্ট প্রকৃত মডেলের গণনা নয়) — সেই মডেলের একটি নির্দিষ্ট সিদ্ধান্তের জন্য "ঠিক কোন প্যারামিটারগুলো
দায়ী" এভাবে সরলভাবে তালিকা করে দেখানো সম্ভব নয়, কারণ সিদ্ধান্তটি হাজারো প্যারামিটারের মিলিত, অ-রৈখিক প্রভাবের
ফল। এখানেই ইন্টারপ্রিটেবল মডেল ও ব্ল্যাক-বক্স মডেলের মৌলিক পার্থক্য — একটিতে রুল-সংখ্যা গোনা ও প্রতিটি পড়া
সম্ভব, অন্যটিতে তা কার্যত অসম্ভব।
৩ · কেন এই টানাপোড়েন গুরুত্বপূর্ণ
প্র্যাকটিসে প্রায়ই একটি সাধারণ টানাপোড়েন দেখা যায় (এটি একটি সর্বজনীন নিয়ম নয়, বরং একটি বহুল-পর্যবেক্ষিত প্রবণতা) — সরল, ইন্টারপ্রিটেবল মডেল (রুল-ভিত্তিক সিস্টেম, ছোট ডিসিশন ট্রি, লিনিয়ার মডেল) কখনো কখনো জটিল প্যাটার্ন ধরতে না পারায় কম নির্ভুল হতে পারে, আবার জটিল ব্ল্যাক-বক্স মডেল (গভীর নিউরাল নেটওয়ার্ক, বড় এনসেম্বল) বেশি নির্ভুল হলেও তার সিদ্ধান্তের কারণ ব্যাখ্যা করা কঠিন হয়ে যায়। কোন পরিস্থিতিতে কোনটি অগ্রাধিকার পাবে তা নির্ভর করে ঝুঁকির মাত্রার উপর — উদাহরণস্বরূপ, স্বাস্থ্যসেবা বা ফৌজদারি ন্যায়বিচারের মতো উচ্চ-ঝুঁকির সিদ্ধান্তে ব্যাখ্যাযোগ্যতার দাবি প্রায়ই অ্যাকুরেসির সামান্য ক্ষতির চেয়েও বেশি গুরুত্বপূর্ণ বিবেচিত হয়।
এক্সপ্লেইনেবিলিটি নিছক প্রযুক্তিগত সৌন্দর্যের বিষয় নয় — এটি বিশ্বাস তৈরি করে (ব্যবহারকারী কেন একটি সিদ্ধান্ত এলো তা বুঝতে পারলে সিস্টেমে বেশি আস্থা রাখে), ডিবাগিং সহজ করে (ভুল সিদ্ধান্তের মূল কারণ খুঁজে বের করা যায়), এবং প্রভাবিত ব্যক্তির recourse (প্রতিকার চাওয়ার সুযোগ) নিশ্চিত করে — যদি কেউ না জানে কেন তার আবেদন প্রত্যাখ্যাত হলো, সে সিদ্ধান্তটি চ্যালেঞ্জ করার কোনো ভিত্তিই পায় না। পরবর্তী পাঠে (L19) আমরা দেখব কীভাবে LIME ও SHAP-এর মতো টেকনিক ব্ল্যাক-বক্স মডেলের জন্যও আংশিক ব্যাখ্যা তৈরির চেষ্টা করে।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।
প্র ০১ উপরের কোড সেলে আবেদনকারী ৩-এর জন্য কেন "APPROVE" সিদ্ধান্ত এলো, অথচ আবেদনকারী ২-এর ঠিক বিপরীত ফল হলো, যদিও দুজনের income প্রায় কাছাকাছি?
কারণ রুলগুলো ক্রমানুসারে যাচাই করা হয়, এবং প্রতিটি আবেদনকারীর জন্য আলাদা ফিচার-মান
প্রথম মিলে যাওয়া রুলকে ট্রিগার করে। আবেদনকারী ২-এর debt_ratio = 0.6, যা রুল ১-এর শর্ত
(> 0.5) সাথে সাথেই মিলে যায়, তাই সে সরাসরি প্রত্যাখ্যাত হয় — তার income আর যাচাই করাই
হয় না। আবেদনকারী ৩-এর debt_ratio = 0.25, তাই রুল ১ মেলে না, কিন্তু রুল ৩-এর শর্ত
(income >= 30000 এবং debt_ratio < 0.3) মিলে যায়। এটাই ইন্টারপ্রিটেবিলিটির
সুবিধা — এই পুরো যুক্তিটি কোড পড়েই বোঝা যাচ্ছে, কোনো অনুমান দরকার হচ্ছে না।
প্র ০২ একটি হাসপাতাল দুটি মডেলের মধ্যে বেছে নিচ্ছে — একটি ৯৯% নির্ভুল কিন্তু সম্পূর্ণ ব্ল্যাক-বক্স, অন্যটি ৯৪% নির্ভুল কিন্তু সম্পূর্ণ ব্যাখ্যাযোগ্য। কোন কোন প্রেক্ষাপটে ব্যাখ্যাযোগ্য মডেলটি বেছে নেওয়া যুক্তিসঙ্গত হতে পারে বলে আপনার মনে হয়?
যেখানে সিদ্ধান্তের ফলাফল উচ্চ-ঝুঁকির এবং ভুল হলে গুরুতর ক্ষতি হতে পারে (যেমন কোনো রোগীকে চিকিৎসা থেকে বাদ দেওয়া), সেখানে চিকিৎসকের পক্ষে মডেলের সুপারিশ যাচাই করে নেওয়ার সুযোগ থাকা গুরুত্বপূর্ণ হতে পারে — একটি অস্বচ্ছ সিদ্ধান্ত অন্ধভাবে মেনে নেওয়া বিপজ্জনক। এছাড়া রেগুলেটরি প্রেক্ষাপটেও (যেখানে সিদ্ধান্তের কারণ নথিভুক্ত করা আইনগতভাবে প্রয়োজন হতে পারে) ব্যাখ্যাযোগ্যতা অ্যাকুরেসির সামান্য পার্থক্যের চেয়ে বেশি গুরুত্বপূর্ণ বিবেচিত হতে পারে। এটি একটি প্রেক্ষাপট-নির্ভর সিদ্ধান্ত, সর্বজনীন উত্তর নেই।
প্র ০৩ উপরের কোড সেলের মডেলটি কি সবসময় ন্যায্য (fair) সিদ্ধান্ত দেবে, শুধু এই কারণে যে এটি ব্যাখ্যাযোগ্য?
না। ব্যাখ্যাযোগ্যতা ও ন্যায্যতা সম্পূর্ণ আলাদা বৈশিষ্ট্য — একটি সম্পূর্ণ স্বচ্ছ রুল-ভিত্তিক মডেলও বায়াসড হতে পারে, যদি রুলগুলোর থ্রেশহোল্ড নিজেই কোনো গ্রুপের বিরুদ্ধে পক্ষপাতমূলক প্রভাব ফেলে (ঠিক যেমন L01-এর প্রক্সি-ফিচার ডেমোতে দেখা গিয়েছিল)। ব্যাখ্যাযোগ্যতার সুবিধা হলো — অন্তত সমস্যাটি শনাক্ত করা সহজ হয়, কারণ প্রতিটি রুল সরাসরি পড়া যায়। ব্ল্যাক-বক্স মডেলে একই ধরনের বায়াস থাকলেও তা খুঁজে বের করা অনেক কঠিন হতো — M3-এর ফেয়ারনেস মেট্রিক্স এখানেও প্রযোজ্য।
অনুশীলন
-
চিন্তা করুন: যদি উপরের কোড সেলে একটি নতুন রুল ("রুল ০":
credit_history_years == 0 and debt_ratio > 0.3হলে সরাসরি প্রত্যাখ্যান) সবচেয়ে প্রথমে যোগ করা হয়, তাহলে মোট রুল-সংখ্যা এবং আবেদনকারী ৪-এর সিদ্ধান্ত কী হবে বলে আপনার ধারণা?মোট রুল-সংখ্যা
৫-এ দাঁড়াবে। আবেদনকারী ৪-এরcredit_history_years = 0এবংdebt_ratio = 0.4 > 0.3, তাই নতুন রুল ০ সাথে সাথেই মিলে যাবে এবং সিদ্ধান্তREJECTহবে — যদিও পুরনো রুল-ক্রমেও শেষ পর্যন্ত (ডিফল্ট রুলের মাধ্যমে) একই সিদ্ধান্ত আসতো, নতুন রুলটি কারণ-ব্যাখ্যাটি আরও নির্দিষ্ট করে তুলবে। -
পরীক্ষা করুন: উপরের কোড সেলে
rulesতালিকার শুরুতে সেই নতুন রুলটি যোগ করে Run চেপে আপনার অনুমান যাচাই করুন।নতুন রুল তালিকার শুরুতে যোগ করলে
len(rules)এখন ৫ প্রিন্ট হবে, এবং আবেদনকারী ৪-এর আউটপুটে এখন "রুল ০" কারণ হিসেবে দেখাবে (আগে সে ডিফল্ট রুল ৪-এর মাধ্যমে REJECT হচ্ছিল)। এটাই দেখায় রুল-ভিত্তিক মডেলে প্রতিটি পরিবর্তনের প্রভাব সরাসরি ট্রেস করা যায় — ব্ল্যাক-বক্স মডেলে একটি নতুন প্যারামিটার যোগ করলে তার প্রভাব এভাবে আলাদা করে দেখানো যেত না।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- কোর্সের সম্পূর্ণ সিলেবাস দেখুন ৫৭টি পাঠ নৈতিক ফ্রেমওয়ার্ক, বায়াস-ফেয়ারনেস, প্রাইভেসি, ট্রান্সপারেন্সি, AI অ্যালাইনমেন্ট, জেনারেটিভ AI/LLM এথিক্স, সামাজিক প্রভাব, গভর্নেন্স ও রেগুলেশন, সেক্টর-স্পেসিফিক এথিক্স ও এক্সিস্টেনশিয়াল রিস্ক বিতর্ক — বাকি পাঠগুলো দেখুন।
- Ethics in Computing & AI Safety কোর্স সহোদর কোর্স সাধারণ কম্পিউটিং এথিক্স, প্রফেশনাল এথিক্স ও সেফটি-ক্রিটিক্যাল কেস স্টাডির একটি বিস্তৃত সার্ভে — এই কোর্স সম্পূর্ণভাবে AI-তে ফোকাস করে গভীরে যায়।
- Machine Learning কোর্স ফাউন্ডেশন মডেল কীভাবে ডেটা থেকে শেখে তার কারিগরি ভিত্তি — এখানে যা প্রয়োজন সেটুকু ব্যাখ্যা করা হয়েছে, পূর্ণ প্রযুক্তিগত গভীরতার জন্য এই কোর্স দেখুন।