পাঠ ০৮ · ৫৭-এর মধ্যে · মডিউল ২
Home / Courses / Ethics in Computing & AI Safety / কন্ট্রাক্টুয়ালিজম

কন্ট্রাক্টুয়ালিজম ও “ভেইল অফ ইগনোরেন্স”

Contractualism and the veil of ignorance
৯ মিনিট পড়া শুরু · Beginner Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • কন্ট্রাক্টুয়ালিজম ও ভেইল অফ ইগনোরেন্সের সংজ্ঞা এবং এর পেছনের যুক্তি
  • ম্যাক্সিমিন (maximin) নীতি — সবচেয়ে খারাপ ফলাফলকে সর্বোচ্চ করা, সামগ্রিক গড় নয়
  • Python দিয়ে একটি সত্যিকারের গণনা — একই দৃশ্যকল্পে ইউটিলিটারিয়ান ও ম্যাক্সিমিন রায়ের প্রত্যক্ষ তুলনা
  • কেন এই দুই ফ্রেমওয়ার্ক ভিন্ন বিকল্প বেছে নিতে পারে, এবং এটি কী শেখায়

১ · কন্ট্রাক্টুয়ালিজম ও ভেইল অফ ইগনোরেন্স

কন্ট্রাক্টুয়ালিজমContractualismএকটি নৈতিক তত্ত্ব যা নৈতিক নীতিকে বৈধ মনে করে যদি তা যুক্তিসঙ্গত, নিরপেক্ষ মানুষ একটি ন্যায্য প্রক্রিয়ায় একমত হতেন। প্রশ্ন করে — কোন নিয়মে যুক্তিসঙ্গত মানুষ, নিরপেক্ষভাবে চিন্তা করলে, একমত হতেন? দার্শনিক জন রলস এই ধারণাটিকে একটি শক্তিশালী চিন্তা-পরীক্ষায় রূপ দেন — ভেইল অফ ইগনোরেন্সVeil of Ignoranceএকটি চিন্তা-পরীক্ষা যেখানে আপনি একটি সমাজ/সিস্টেমের নিয়ম বেছে নিচ্ছেন এই না জেনে যে আপনি নিজে সেই সমাজে কোন অবস্থানে (কোন গোষ্ঠীতে) জন্মাবেন।। কল্পনা করুন আপনাকে একটি সিস্টেমের ডিজাইন বেছে নিতে বলা হচ্ছে, কিন্তু আপনি জানেন না — সিদ্ধান্তটি কার্যকর হওয়ার পর — আপনি নিজে কোন স্টেকহোল্ডার গোষ্ঠীর সদস্য হয়ে উঠবেন। আপনি হয়তো সংখ্যাগরিষ্ঠ সাধারণ ব্যবহারকারী, আবার হয়তো সেই ঝুঁকিপূর্ণ সংখ্যালঘু গোষ্ঠীর সদস্য।

এই অনিশ্চয়তার পেছনে দাঁড়িয়ে, একজন যুক্তিসঙ্গত মানুষ সাধারণত সামগ্রিক গড় সর্বোচ্চ করার বদলে সবচেয়ে খারাপ অবস্থাতেও যেন খুব বেশি খারাপ না হয় তা নিশ্চিত করতে চাইবেন — কারণ আপনি নিজেই হয়তো সেই সবচেয়ে খারাপ অবস্থানে পড়বেন। এই যুক্তিই ম্যাক্সিমিন নীতির ভিত্তি।

$$\text{maximin}(a) = \min_i \left( P_i \times M_i \times S_i \right)$$

অর্থাৎ, প্রতিটি কাজ $a$-এর জন্য, প্রতিটি স্টেকহোল্ডার গোষ্ঠী $i$-এর প্রতি-ব্যক্তি প্রত্যাশিত ফলাফল বের করে তাদের মধ্যে সর্বনিম্নটি নেওয়া হয় — এটিই সেই কাজের "মেঝে" (floor)। যে কাজের মেঝে সবচেয়ে উঁচু, ম্যাক্সিমিন দৃষ্টিতে সেটিই সেরা পছন্দ। লক্ষ্য করুন এটি ইউটিলিটারিয়ান সূত্রের (পাঠ ০৫) মতোই $P \times M \times S$ ব্যবহার করে — কিন্তু জনসংখ্যা-ভারিত যোগফল নেওয়ার বদলে সর্বনিম্ন মান নেয়, এবং তাই এটি সম্পূর্ণ ভিন্ন প্রশ্নের উত্তর দেয়।

২ · একই দৃশ্যকল্প, দুটি ভিন্ন প্রশ্ন

পাঠ ০৫-এর একই সিন্থেটিক এনগেজমেন্ট-ফিচার দৃশ্যকল্প ও সংখ্যা এখানে আবার ব্যবহার করা হচ্ছে (প্রতিটি পাঠ স্বয়ংসম্পূর্ণ, তাই ডেটা নিচে আবার সংজ্ঞায়িত করা হলো)। ইউটিলিটারিয়ানিজম জিজ্ঞেস করে "মোট সমষ্টিতে কোনটা ভালো?"; ম্যাক্সিমিন জিজ্ঞেস করে "ভেইল অফ ইগনোরেন্সের পেছনে দাঁড়িয়ে, কোনটার সবচেয়ে খারাপ ফলাফল সবচেয়ে সহনীয়?"

Python
# পাঠ ০৫-এর একই সিন্থেটিক দৃশ্যকল্প ও সংখ্যা (প্রতিটি পাঠ স্বয়ংসম্পূর্ণ, তাই আবার সংজ্ঞায়িত করা হলো)
# এবার ইউটিলিটারিয়ান অ্যাগ্রিগেট এবং ম্যাক্সিমিন ফ্লোর -- দুটোই একসাথে গণনা করে তুলনা করা হচ্ছে

stakeholders = {
    "সাধারণ ব্যবহারকারী": 900_000,
    "কমপালসিভ-ইউজ ঝুঁকিতে থাকা সংখ্যালঘু": 100_000,
    "কোম্পানি (একক প্রাতিষ্ঠানিক স্টেকহোল্ডার)": 1,
}

actions = {
    "ship_as_is": {
        "সাধারণ ব্যবহারকারী":                       (0.85, 3, +1),
        "কমপালসিভ-ইউজ ঝুঁকিতে থাকা সংখ্যালঘু":        (0.40, 9, -1),
        "কোম্পানি (একক প্রাতিষ্ঠানিক স্টেকহোল্ডার)":   (0.95, 9, +1),
    },
    "no_ship": {
        "সাধারণ ব্যবহারকারী":                       (0.30, 1, -1),
        "কমপালসিভ-ইউজ ঝুঁকিতে থাকা সংখ্যালঘু":        (0.40, 9, +1),
        "কোম্পানি (একক প্রাতিষ্ঠানিক স্টেকহোল্ডার)":   (0.90, 2, -1),
    },
}

def per_person_utilities(action_outcomes):
    return {group: prob * magnitude * sign for group, (prob, magnitude, sign) in action_outcomes.items()}

for action_name, outcomes in actions.items():
    pp = per_person_utilities(outcomes)
    utilitarian_total = sum(pp[group] * stakeholders[group] for group in pp)
    worst_off_group = min(pp, key=pp.get)
    maximin_floor = pp[worst_off_group]
    print(f"=== {action_name} ===")
    for group, value in pp.items():
        print(f"  {group}: প্রতি ব্যক্তি প্রত্যাশিত উপযোগ {value:+.2f}")
    print(f"  -> utilitarian aggregate (মোট):                {utilitarian_total:+,.2f}")
    print(f"  -> maximin floor (সবচেয়ে খারাপ অবস্থানে থাকা গোষ্ঠী): {worst_off_group} ({maximin_floor:+.2f})\n")

best_utilitarian = max(
    actions,
    key=lambda a: sum(per_person_utilities(actions[a])[g] * stakeholders[g] for g in actions[a]),
)
best_maximin = max(actions, key=lambda a: min(per_person_utilities(actions[a]).values()))

print(f"ইউটিলিটারিয়ান নির্বাচন:              {best_utilitarian}")
print(f"কন্ট্রাক্টুয়ালিস্ট (maximin) নির্বাচন: {best_maximin}")

    
Run করলে দেখা যাবে ship_as_is-এর maximin floor হলো −3.60 (সবচেয়ে খারাপ অবস্থানে কমপালসিভ-ইউজ ঝুঁকিতে থাকা সংখ্যালঘু), আর no_ship-এর maximin floor হলো −1.80 (সবচেয়ে খারাপ অবস্থানে এবার কোম্পানি — মিসড অপর্চুনিটি)। যেহেতু −1.80 > −3.60, ম্যাক্সিমিন নীতি no_ship-কে বেছে নেয় — যদিও ইউটিলিটারিয়ান অ্যাগ্রিগেট (+1,935,008.55 বনাম +89,998.20) স্পষ্টভাবে ship_as_is-কে সমর্থন করে। দুটি ফ্রেমওয়ার্ক এখানে সত্যিই ভিন্ন সিদ্ধান্তে পৌঁছায়।

৩ · কেন এই পার্থক্য হয়

পার্থক্যটি হয় কারণ ইউটিলিটারিয়ানিজম জনসংখ্যা দিয়ে ভারিত করে যোগফল নেয় — তাই একটি বড় গোষ্ঠীর ছোট উপকার একটি ছোট গোষ্ঠীর বড় ক্ষতিকে সহজেই ছাপিয়ে যেতে পারে (পাঠ ০৫)। কিন্তু ম্যাক্সিমিন জনসংখ্যা সম্পূর্ণ উপেক্ষা করে শুধু "সবচেয়ে খারাপ অবস্থানে থাকা একজন ব্যক্তির" ফলাফল দেখে — সেই ব্যক্তি ১ লাখ গোষ্ঠীর হোক বা ৯ লাখ গোষ্ঠীর, তাতে কিছু আসে যায় না। এই কারণেই ম্যাক্সিমিন সংখ্যালঘুর স্বার্থকে সংখ্যাগরিষ্ঠের যোগফলের বিরুদ্ধে একটি স্বাভাবিক সুরক্ষা দেয় — ঠিক পাঠ ০৫-এর সমালোচনা যা তুলে ধরেছিল তার একটি প্রত্যক্ষ প্রতিকার।

ন্যায্য দৃষ্টিভঙ্গি · Fair perspective

ম্যাক্সিমিনেরও একটি পরিচিত সমালোচনা আছে — এটি অত্যন্ত ঝুঁকি-বিমুখ (risk-averse): এটি এমনকি একটি ছোট, অসম্ভাব্য খারাপ ফলাফল এড়াতে বিশাল সামগ্রিক উপকার ত্যাগ করতে রাজি, যা কিছু দার্শনিকের কাছে অতিরিক্ত রক্ষণশীল মনে হয়। রলসের সমর্থকরা যুক্তি দেন যে ন্যায্যতার প্রশ্নে (কে কতটা সুরক্ষিত, বিশেষত সবচেয়ে দুর্বলরা) গড় ফলাফলের চেয়ে সবচেয়ে খারাপ ফলাফলই বেশি গুরুত্বপূর্ণ। উভয় যুক্তিরই যৌক্তিক ভিত্তি আছে — এটি একটি মূল্যবোধের প্রশ্ন (গড় ফলাফল বনাম সবচেয়ে খারাপ অবস্থানের সুরক্ষা), কোনো একটি "গাণিতিকভাবে সঠিক" উত্তর নেই।

মূল কথা · Key takeaway

ম্যাক্সিমিন একটি সহজ কিন্তু শক্তিশালী প্রশ্ন জিজ্ঞেস করে — "আমি যদি না জানতাম আমি কে হব, তাহলে কোনটা বেছে নিতাম?" এই প্রশ্নটি প্রায়ই ইউটিলিটারিয়ান অ্যাগ্রিগেটের চেয়ে ভিন্ন উত্তর দেয়, বিশেষ করে যখন ঝুঁকি একটি ছোট, চিহ্নিত গোষ্ঠীর উপর কেন্দ্রীভূত থাকে। পাঠ ০৯ দেখাবে কীভাবে একটি ভালো-ডিজাইন করা তৃতীয় বিকল্প কখনো কখনো উভয় ফ্রেমওয়ার্ককেই সন্তুষ্ট করতে পারে।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ কেন ম্যাক্সিমিন no_ship বেছে নেয়, যখন ইউটিলিটারিয়ান অ্যাগ্রিগেট স্পষ্টভাবে ship_as_is-কে সমর্থন করে?

কারণ ম্যাক্সিমিন জনসংখ্যা উপেক্ষা করে শুধু প্রতি-ব্যক্তি সবচেয়ে খারাপ ফলাফল দেখে। ship_as_is-এ সবচেয়ে খারাপ প্রতি-ব্যক্তি ফলাফল হলো সংখ্যালঘুর −3.60, যেখানে no_ship-এ সবচেয়ে খারাপ ফলাফল হলো কোম্পানির −1.80 — অর্থাৎ −1.80, −3.60-এর চেয়ে ভালো (কম খারাপ)। ইউটিলিটারিয়ান হিসাব এই −3.60-কে বিশাল জনসংখ্যার (৯ লাখ) ইতিবাচক অবদান দিয়ে "গড়ে" ফেলে, কিন্তু ম্যাক্সিমিন তা করে না।

প্র ০২ worst_off_group দুটি ভিন্ন কাজে দুটি ভিন্ন গোষ্ঠী (সংখ্যালঘু বনাম কোম্পানি) — এটি কী প্রকাশ করে?

এটি দেখায় প্রতিটি ডিজাইন সিদ্ধান্ত আসলে কাকে সবচেয়ে বেশি ঝুঁকিতে ফেলছে তা বদলে দেয় — কোনো ডিজাইনই "কারো জন্যই কোনো ঝুঁকি নেই" নয়; প্রশ্নটি হলো কোন পক্ষ সেই ঝুঁকি বহন করবে। ভেইল অফ ইগনোরেন্সের পেছনে দাঁড়ালে, আপনি চাইবেন সেই ঝুঁকিটি এমন একটি পক্ষের উপর পড়ুক যার জন্য "সবচেয়ে খারাপ অবস্থা"ও তুলনামূলকভাবে সহনীয়।

প্র ০৩ যদি no_ship-এ কোম্পানির magnitude ২ থেকে বাড়িয়ে ৫ করা হয় (অর্থাৎ ফিচার না শিপ করলে কোম্পানির ক্ষতি অনেক বেশি হবে), তাহলে কি ম্যাক্সিমিনের রায় বদলে যাবে?

হ্যাঁ। তখন কোম্পানির প্রতি-ব্যক্তি ফলাফল হবে 0.9 * 5 * -1 = -4.5, যা no_ship-এর নতুন maximin floor করে তুলবে −4.5 — যা ship_as_is-এর −3.60-এর চেয়েও খারাপ। তখন ম্যাক্সিমিন উল্টে ship_as_is-কেই বেছে নেবে। এটি দেখায় ম্যাক্সিমিনের রায়ও ইনপুট সংখ্যার উপর নির্ভরশীল — এটি "সবসময় সংখ্যালঘুকে রক্ষা করে" এমন কোনো জাদুকরী নিয়ম নয়, বরং যেই গোষ্ঠীর অবস্থা সবচেয়ে খারাপ তাকে রক্ষা করে, তা যে গোষ্ঠীই হোক না কেন।

অনুশীলন

  1. চিন্তা করুন: ভেইল অফ ইগনোরেন্সের পেছনে দাঁড়িয়ে থাকলে, আপনি কি "গড়ে সবচেয়ে বেশি প্রত্যাশিত মূল্য" (ইউটিলিটারিয়ান) নাকি "সবচেয়ে খারাপ অবস্থাতেও নিরাপত্তা" (ম্যাক্সিমিন) — কোনটাকে বেশি গুরুত্ব দেবেন? কেন?

    এটি একটি ব্যক্তিগত ঝুঁকি-সহনশীলতার প্রশ্ন — যাদের ঝুঁকি-বিমুখতা বেশি, তারা প্রায়ই ম্যাক্সিমিন পছন্দ করেন (বিশেষ করে যখন সবচেয়ে খারাপ ফলাফলটি গুরুতর ও অপরিবর্তনীয়, যেমন স্বাস্থ্যহানি); যারা প্রত্যাশিত মূল্যকে বেশি গুরুত্ব দেন এবং খারাপ ফলাফলগুলো তুলনামূলকভাবে সহনীয় মনে করেন, তারা প্রায়ই ইউটিলিটারিয়ান যুক্তির দিকে ঝোঁকেন।

  2. পরীক্ষা করুন: কোড সেলে no_ship-এর কোম্পানির magnitude 2 থেকে 5-এ পরিবর্তন করে Run চেপে দেখুন best_maximin বদলায় কিনা।

    হ্যাঁ, বদলে যাবে — প্রশ্ন ০৩-এর উত্তরে বিস্তারিত হিসাব দেখুন। নতুন maximin floor হবে no_ship-এর জন্য −4.5, যা ship_as_is-এর −3.60-এর চেয়ে খারাপ, তাই best_maximin এবার ship_as_is হয়ে যাবে।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
ভার্চু এথিক্স — চরিত্র ও পেশাগত বিচারবুদ্ধি