পাঠ ৩৭ · ৫৭-এর মধ্যে · মডিউল ৯
Home / Courses / Ethics in Computing & AI Safety / অ্যালাইনমেন্ট প্রবলেম

অ্যালাইনমেন্ট প্রবলেম — আসলে এর অর্থ কী

The alignment problem — what it actually means
৯ মিনিট পড়া উচ্চ · Advanced Python কোডসহ সম্পূর্ণ বাংলায়

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

  • অ্যালাইনমেন্ট প্রবলেমের একটি নির্ভুল, প্রযুক্তিগত সংজ্ঞা
  • "specification" ও "robustness/instillation" — দুটি ভিন্ন উপ-সমস্যার পার্থক্য
  • কেন মানুষের প্রকৃত উদ্দেশ্য সম্পূর্ণভাবে লিখে ফেলা এত কঠিন
  • Python দিয়ে একটি ছোট্ট "স্পেসিফিকেশন গ্যাপ" হিসাব — উদ্দিষ্ট শর্তের কতটুকু আসলে লেখা স্পেসিফিকেশনে ধরা পড়ে
  • M9-এর বাকি চারটি পাঠ (L38-L41) কীভাবে এই একই সংজ্ঞার ভিন্ন ভিন্ন দিক নিয়ে কাজ করবে তার একটি পূর্বরূপ

১ · একটি নির্ভুল সংজ্ঞা

L36-এ আমরা দেখেছি একটি ক্যাপাবল সিস্টেম তাকে যা "অপ্টিমাইজ করতে বলা হয়েছে" তা খুব দক্ষতার সাথে করে, কিন্তু একটি অ্যালাইনড সিস্টেম তার ডিজাইনার/ব্যবহারকারী আসলে যা চেয়েছিলেন তা করে। অ্যালাইনমেন্ট প্রবলেমThe Alignment Problemএকটি AI সিস্টেমে এমনভাবে উদ্দেশ্য specify ও instill করার সমস্যা যাতে তার আচরণ মানুষের প্রকৃত উদ্দেশ্যের সাথে নির্ভরযোগ্যভাবে মিলে যায় — অনাকাঙ্ক্ষিত পরিস্থিতিতেও। হলো ঠিক এই ফাঁকটি বন্ধ করার প্রযুক্তিগত ও গবেষণা-সমস্যা। একটু আরও নির্ভুলভাবে বললে, এটি দুটি স্বতন্ত্র উপ-সমস্যায় ভাগ করা যায়:

  • স্পেসিফিকেশন সমস্যা: ডিজাইনারের মাথায় থাকা জটিল, প্রায়ই আংশিক-অলিখিত উদ্দেশ্যকে একটি লিখিত নির্দেশনা, রিওয়ার্ড ফাংশন বা ট্রেনিং সিগন্যালে রূপান্তর করা — এমনভাবে যা সেই উদ্দেশ্যকে যথাসম্ভব সম্পূর্ণভাবে ধারণ করে।
  • রোবাস্টনেস/ইনস্টিলেশন সমস্যা: সিস্টেমটি সেই স্পেসিফিকেশন অনুযায়ী নির্ভরযোগ্যভাবে আচরণ করবে কিনা — শুধু ট্রেনিংয়ের সময় দেখা পরিস্থিতিতে নয়, বরং নতুন, অপ্রত্যাশিত পরিস্থিতিতেও।

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

ডিজাইনারের মাথায় প্রকৃত উদ্দিষ্ট উদ্দেশ্য স্পেসিফিকেশন গ্যাপ (L38, L41) লিখিত স্পেসিফিকেশন রিওয়ার্ড / নিয়ম / নির্দেশ রোবাস্টনেস গ্যাপ (L39, L40) সিস্টেমের প্রকৃত আচরণ (নতুন পরিস্থিতিতেও) অ্যালাইনমেন্ট প্রবলেম = এই দুটি ফাঁক একসাথে ছোট রাখা
অ্যালাইনমেন্ট প্রবলেমের দুটি স্বতন্ত্র উপ-সমস্যা — স্পেসিফিকেশন গ্যাপ (L38, L41 এই নিয়ে) ও রোবাস্টনেস গ্যাপ (L39, L40 এই নিয়ে)। এই কোর্সের বাকি M9 পাঠগুলো এই একই ডায়াগ্রামের ভিন্ন ভিন্ন অংশ নিয়ে গভীরে যাবে।

২ · কেন প্রকৃত উদ্দেশ্য সম্পূর্ণভাবে লেখা এত কঠিন

মানুষের উদ্দেশ্য প্রায়ই বিপুল পরিমাণ অলিখিত প্রেক্ষাপট ও ধরে-নেওয়া শর্ত (implicit constraints) বহন করে যা আমরা সাধারণত বলার প্রয়োজনই বোধ করি না — কারণ মানুষে-মানুষে যোগাযোগে এগুলো স্বতঃসিদ্ধ ধরে নেওয়া হয়। "ঘরটা পরিষ্কার করো" বললে আমরা ধরেই নিই যে আসবাবপত্র ভাঙা যাবে না, গুরুত্বপূর্ণ কাগজ ফেলে দেওয়া যাবে না, রাতে জোরে শব্দ করা যাবে না — এসব কখনোই স্পষ্টভাবে বলা হয় না। একটি সাংখ্যিক স্পেসিফিকেশন বা রিওয়ার্ড ফাংশনে এই সব অলিখিত শর্ত অন্তর্ভুক্ত করতে ব্যর্থ হলে, সিস্টেমটি সেই স্পেসিফিকেশন যতই নিখুঁতভাবে "অপ্টিমাইজ" করুক না কেন, ফলাফল প্রকৃত উদ্দেশ্য থেকে বিচ্যুত হতে পারে।

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

৩ · একটি ছোট্ট "স্পেসিফিকেশন গ্যাপ" হিসাব

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

Python
# একটি সিন্থেটিক, ইলাস্ট্রেটিভ উদাহরণ -- বাস্তব কোনো রোবট বা কোম্পানির ডেটা নয়
# একটি ঘর-পরিষ্কার-করা রোবটের ডিজাইনারের মাথায় থাকা "প্রকৃত উদ্দিষ্ট" শর্তের তালিকা

intended_constraints = [
    "ঘরের দৃশ্যমান ও অদৃশ্য সব জায়গা থেকে প্রকৃতপক্ষে ময়লা সরাতে হবে",
    "আসবাবপত্র বা দেয়ালের কোনো ক্ষতি করা যাবে না",
    "গুরুত্বপূর্ণ কাগজপত্র বা ছোট জিনিস ভুল করে ফেলে দেওয়া যাবে না",
    "বাসিন্দা ঘুমানোর সময় জোরে শব্দ করে কাজ করা যাবে না",
    "নিজের সেন্সর/ক্যামেরাকে বিভ্রান্ত করে মিথ্যা 'কাজ শেষ' রিপোর্ট দেওয়া যাবে না",
]

# রোবটকে সত্যিকারের যে সাংখ্যিক স্পেসিফিকেশন/রিওয়ার্ড লক্ষ্য হিসেবে দেওয়া হয়েছে
# তা উপরের তালিকার মাত্র একটি অংশ সরাসরি কভার করে -- বাকিগুলো "implicit" থেকে যায়
specified_constraints = [
    "ঘরের দৃশ্যমান ও অদৃশ্য সব জায়গা থেকে প্রকৃতপক্ষে ময়লা সরাতে হবে",
]

def specification_gap(intended, specified):
    covered = [c for c in intended if c in specified]
    missing = [c for c in intended if c not in specified]
    return covered, missing

covered, missing = specification_gap(intended_constraints, specified_constraints)

print(f"মোট উদ্দিষ্ট শর্ত সংখ্যা:        {len(intended_constraints)}")
print(f"স্পেসিফিকেশনে সরাসরি লেখা আছে:   {len(covered)}")
print(f"স্পেসিফিকেশনে অনুপস্থিত (implicit): {len(missing)}\n")
print("অনুপস্থিত শর্তগুলো:")
for m in missing:
    print(f"  - {m}")

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

৪ · এই সংজ্ঞা থেকে বাকি M9-এ যা আসছে

L38 · স্পেসিফিকেশন গেমিং
স্পেসিফিকেশন গ্যাপের একটি সুনির্দিষ্ট রূপ — সিস্টেম প্রক্সি মেট্রিক সর্বোচ্চ করে, কিন্তু প্রকৃত উদ্দেশ্য ব্যর্থ হয়।
L39 · গুডহার্টের সূত্র
একটি মেট্রিক স্বাভাবিক পরিবর্তনে ভালো প্রক্সি হলেও, সরাসরি অপ্টিমাইজ করলে প্রকৃত লক্ষ্য থেকে বিচ্ছিন্ন হয়ে যায়।
L40 · কোরিজিবিলিটি
রোবাস্টনেস গ্যাপের একটি রূপ — একটি লক্ষ্য-চালিত সিস্টেম বন্ধ হওয়াকে বাধা হিসেবে দেখতে পারে।
L41 · কার মূল্যবোধ?
এমনকি নিখুঁত ইনস্টিলেশন সম্ভব হলেও — কার উদ্দেশ্য স্পেসিফিকেশনে ঢুকবে, সেটিই একটি খোলা প্রশ্ন।
সহোদর কোর্সের সাথে সম্পর্ক

AI Foundations ও Generative AI কোর্সের AI এথিক্স/সেফটি পাঠগুলো অ্যালাইনমেন্ট প্রবলেমকে সংক্ষেপে ছুঁয়ে যায়; এই পাঠ ও পরের চারটি পাঠ (L38-L41) সেই ধারণাটিকে একটি পূর্ণাঙ্গ, প্রযুক্তিগত ভিত্তিতে দাঁড় করায়।

মূল কথা · Key takeaway

অ্যালাইনমেন্ট প্রবলেম মানে শুধু "AI-কে সঠিক নির্দেশ দাও" নয় — এটি দুটি একসাথে কঠিন সমস্যা: মানুষের জটিল, আংশিক-অলিখিত উদ্দেশ্যকে একটি স্পেসিফিকেশনে রূপান্তর করা, এবং সিস্টেমটি সেই স্পেসিফিকেশন অনুযায়ী নতুন, অপ্রত্যাশিত পরিস্থিতিতেও নির্ভরযোগ্যভাবে আচরণ করবে তা নিশ্চিত করা।

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

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

প্র ০১ একটি সিস্টেম তার স্পেসিফিকেশন নিখুঁতভাবে মেনে চললেও কীভাবে "অ্যালাইনড নয়" হতে পারে?

কারণ স্পেসিফিকেশনটি নিজেই ডিজাইনারের প্রকৃত উদ্দেশ্যের একটি অসম্পূর্ণ প্রতিনিধিত্ব হতে পারে। সিস্টেমটি কোনো নিয়ম ভাঙছে না — বরং লিখিত নিয়মকে নিখুঁতভাবে মেনে চলছে, কিন্তু সেই নিয়মে অনেক অলিখিত/implicit শর্ত অনুপস্থিত থাকায় ফলাফল প্রকৃত উদ্দেশ্য থেকে বিচ্যুত হয়ে যায়।

প্র ০২ "এমন পরিস্থিতিতেও যা ডিজাইনাররা সরাসরি আগে থেকে ভাবেননি" — সংজ্ঞার এই অংশটি কেন গুরুত্বপূর্ণ?

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

প্র ০৩ উপরের কোড সেলে specified_constraints-এ যদি "আসবাবপত্র বা দেয়ালের কোনো ক্ষতি করা যাবে না" শর্তটি যোগ করা হয়, তাহলে missing তালিকার দৈর্ঘ্য কত হবে?

তিন। মূল ৪টি অনুপস্থিত শর্ত থেকে একটি এখন specified_constraints-এ যোগ হয়ে যাওয়ায় covered তালিকার দৈর্ঘ্য ১ থেকে বেড়ে ২ হবে, আর missing তালিকার দৈর্ঘ্য ৪ থেকে কমে ৩ হবে — বাকি তিনটি (কাগজপত্র, রাতের শব্দ, মিথ্যা রিপোর্ট) এখনও অলিখিত থেকে যাবে।

অনুশীলন

  1. চিন্তা করুন: আপনি যদি কাউকে (মানুষ বা AI) "আমার ইনবক্স পরিষ্কার করে দাও" বলেন, তাহলে আপনার মাথায় কী কী অলিখিত/implicit শর্ত থাকবে যা আপনি সরাসরি বলবেন না?

    উদাহরণ হতে পারে — গুরুত্বপূর্ণ ইমেইল মুছে ফেলা যাবে না, এখনো উত্তর-না-দেওয়া ইমেইল আর্কাইভ করা যাবে না, ফাইনান্সিয়াল/লিগ্যাল ইমেইল স্থায়ীভাবে ডিলিট করা যাবে না, এবং কোনো ইমেইল কারো কাছে ফরোয়ার্ড করা যাবে না। এই তালিকাটি "সম্পূর্ণ" মনে হলেও আরও অনেক অলিখিত শর্ত থাকতে পারে — এটিই স্পেসিফিকেশন সমস্যার মূল কথা।

  2. পরীক্ষা করুন: উপরের কোড সেলে specified_constraints তালিকাটি খালি ([]) করে Run চেপে দেখুন — covered ও missing-এর দৈর্ঘ্য কীভাবে বদলায়, এবং এটি কী বোঝায়।

    specified_constraints খালি থাকলে covered-এর দৈর্ঘ্য ০ হবে এবং missing-এর দৈর্ঘ্য ৫ (মূল তালিকার সবগুলো) হবে — অর্থাৎ সিস্টেমটিকে কোনো স্পেসিফিকেশনই দেওয়া হয়নি, তাই ডিজাইনারের প্রকৃত উদ্দেশ্যের কোনো অংশই আনুষ্ঠানিকভাবে ধরা পড়েনি।

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

আগের পাঠ
ক্যাপাবিলিটি বনাম অ্যালাইনমেন্ট — একটি মূল পার্থক্য