Knowledge & Reasoningপড়তে ১০ মিনিট লাগবে

লজিক এবং ইনফারেন্স (Logic & Inference)

যদি A হলে B হয়, এবং A সত্য হয় — তাহলে B-ও অবশ্যই সত্য হবে
scope:কোর কনসেপ্ট (মূল ধারণা)difficulty:বিগিনার (Beginner)

এআই গোয়েন্দা (The AI Detective)

ভাবুন তো, একজন গোয়েন্দা কোনো অপরাধের জায়গায় বা ক্রাইম সিনে ঢুকে দেখলেন যে জানালা থেকে কাদামাখা পায়ের ছাপ ঘরের ভেতর দিকে ঢুকেছে, জানালাটিও বাইরে থেকে ভাঙা, আর সিন্দুকটি পুরো ফাঁকা। তিনি হয়তো নিজের চোখে চোরটিকে দেখেননি, কিন্তু তারপরও চারপাশের এসব চিহ্ন দেখে তিনি পুরো ঘটনার একটি অনুমান (infer) বা নকশা ঠিকই দাঁড় করাতে পারবেন।

লজিক (logic) এবং ইনফারেন্স (inference) ঠিক এভাবেই কাজ করে—এরা চোখের সামনে থাকা জানা তথ্য (premises) থেকে শুরু করে নিয়ম প্রয়োগের মাধ্যমে নতুন নতুন সিদ্ধান্তে পৌঁছায়। কৃত্রিম বুদ্ধিমত্তা বা এআই-এর জগতে এটি অন্যতম পুরনো এবং শক্তিশালী একটি ধারণা।

প্রপোজিশনাল লজিক (Propositional Logic): সত্য বা মিথ্যা

লজিকের সবচেয়ে সহজ রূপটি মূলত এমন সব বিবৃতি নিয়ে কাজ করে যা হয় সত্য (true) না হয় মিথ্যা (false):

  • P: "বৃষ্টি হচ্ছে" (সত্য অথবা মিথ্যা)
  • Q: "আমার কাছে একটি ছাতা আছে" (সত্য অথবা মিথ্যা)

আপনি এগুলোকে বিভিন্ন লজিক্যাল কানেক্টিভ (logical connectives) ব্যবহার করে জুড়তে পারেন:

  • AND বা এবং (∧): "বৃষ্টি হচ্ছে AND আমার কাছে ছাতা আছে" — এটি কেবল তখনই সত্য হবে যদি দুটো কথাই সত্য হয়।
  • OR বা অথবা (∨): "বৃষ্টি হচ্ছে OR আমার কাছে ছাতা আছে" — দুটোর যেকোনো একটা সত্যি হলেই এটি সত্যি।
  • NOT বা না (¬): "বৃষ্টি হচ্ছে NOT" — এটি সত্য কথাকে মিথ্যা এবং মিথ্যাকে সত্য করে দেয়।
  • IMPLIES বা যদি-তবে (→): "IF বা যদি বৃষ্টি হয়, THEN বা তবে মাটি ভিজবে" — এটি মূলত একটি রুল বা নিয়ম।

ইনফারেন্স বা লজিকের মুকুটহীন সম্রাট বলা যায় মডাস পোনেন্স (Modus Ponens)-কে। যদি আপনি জানেন যে "IF P THEN Q" সত্য এবং "P" নিজেও সত্য, তবে "Q"-ও অবশ্যই সত্য হবে। অর্থাৎ, বৃষ্টি হলে মাটি ভিজবে। যেহেতু এখন বৃষ্টি হচ্ছে, তাই মাটি ভিজেছে। এটি শুনতে খুব সাধারণ মনে হলেও বাস্তবে এটি অসম্ভব শক্তিশালী একটি নিয়ম।

ফরোয়ার্ড চেইনিং বনাম ব্যাকওয়ার্ড চেইনিং

নিয়ম বা রুলস নিয়ে যুক্তি দাঁড় করানোর দুটি প্রধান উপায় আছে:

ফরোয়ার্ড চেইনিং: যা জানা আছে তা থেকে শুরু করা

এক্ষেত্রে আপনি জানা তথ্য বা জ্ঞান দিয়ে শুরু করবেন, এরপর রুলগুলো ব্যবহার করে নতুন নতুন তথ্য বের করবেন, যেগুলো আবার আরও নতুন রুলসকে চালু (trigger) করবে। এটি অনেকটা চেইন রিঅ্যাকশন (chain reaction)-এর মতো কাজ করে।

ফ্যাক্ট বা তথ্য: "বৃষ্টি হচ্ছে।" রুল: "যদি বৃষ্টি হয় → তবে মাটি ভেজে।" নতুন সিদ্ধান্ত: "মাটি ভিজেছে।" রুল: "যদি মাটি ভেজে → তবে জুতো পরতে হবে।" নতুন সিদ্ধান্ত: "জুতো পরতে হবে।"

ব্যাকওয়ার্ড চেইনিং: আপনি যা প্রমাণ করতে চান তা থেকে শুরু করা

এক্ষেত্রে আপনি একটি লক্ষ্য বা গোল (goal) নিয়ে শুরু করেন এবং সেই লক্ষ্যকে প্রমাণ করতে পারে এমন তথ্য বা ফ্যাক্টগুলো খুঁজতে পেছনের দিকে সরে আসেন। এটি অনেকটা গোয়েন্দার মতো কেস সাজানোর ব্যাপার।

লক্ষ্য: "আমার কি জুতো পরা উচিত?" রুল: "মাটি ভিজে থাকলে জুতো পরা উচিত।" সাব-গোল (sub-goal): "মাটি কি ভিজে আছে?" রুল: "বৃষ্টি হলে মাটি ভেজে।" চেক বা যাচাই: "বৃষ্টি কি হচ্ছে?" ফ্যাক্ট: হ্যাঁ! অতএব সিদ্ধান্ত: জুতো পরতে হবে।

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

একটি সাধারণ ইনফারেন্স ইঞ্জিন (Inference Engine)

def forward_chain(rules, facts):
"""ফরোয়ার্ড চেইনিং: পুরনো রুল বা নিয়ম থেকে নতুন ফ্যাক্ট বা তথ্য বের করা।"""
facts = set(facts)
changed = True
while changed:
changed = False
for conditions, conclusion in rules:
# ফ্যাক্টের ভেতরে এখানকার সব কন্ডিশন বা শর্ত পূরণ হলে...
if all(c in facts for c in conditions):
if conclusion not in facts:
facts.add(conclusion)
print(f" নতুন পাওয়া গেছে: {conclusion}")
changed = True
return facts
# রুল বা নিয়ম: ([শর্তসমূহ], ফলাফল)
rules = [
(["বৃষ্টি_হচ্ছে"], "মাটি_ভিজেছে"),
(["মাটি_ভিজেছে"], "জুতো_পরো"),
(["ঠান্ডা", "বৃষ্টি_হচ্ছে"], "কোট_পরো"),
(["রোদ"], "রোদচশমা_পরো"),
(["রোদ", "ছুটির_দিন"], "পার্কে_যাও"),
]
print("যেসব ফ্যাক্ট জানা আছে: বৃষ্টি হচ্ছে এবং বেশ ঠান্ডা")
result = forward_chain(rules, ["বৃষ্টি_হচ্ছে", "ঠান্ডা"])
print(f" সব ফ্যাক্ট: {result}\n")
print("যেসব ফ্যাক্ট জানা আছে: আজ ছুটির দিন এবং রোদ উঠেছে")
result = forward_chain(rules, ["রোদ", "ছুটির_দিন"])
print(f" সব ফ্যাক্ট: {result}")
Output
যেসব ফ্যাক্ট জানা আছে: বৃষ্টি হচ্ছে এবং বেশ ঠান্ডা
  নতুন পাওয়া গেছে: মাটি_ভিজেছে
  নতুন পাওয়া গেছে: কোট_পরো
  নতুন পাওয়া গেছে: জুতো_পরো
  সব ফ্যাক্ট: {'বৃষ্টি_হচ্ছে', 'ঠান্ডা', 'মাটি_ভিজেছে', 'কোট_পরো', 'জুতো_পরো'}

যেসব ফ্যাক্ট জানা আছে: আজ ছুটির দিন এবং রোদ উঠেছে
  নতুন পাওয়া গেছে: রোদচশমা_পরো
  নতুন পাওয়া গেছে: পার্কে_যাও
  সব ফ্যাক্ট: {'রোদ', 'ছুটির_দিন', 'রোদচশমা_পরো', 'পার্কে_যাও'}
Note: লজিক হলো ক্ল্যাসিক এআই-এর মূল ভিত্তি। নিউরাল নেটওয়ার্ক শুরু হওয়ার আগে প্রায় সব এআই সিস্টেমই এই ফর্মাল লজিক (formal logic)-এর ওপর ভিত্তি করে তৈরি হয়েছিল। প্রোলগ (Prolog) নামের একটি প্রোগ্রামিং ভাষা, যার পুরোটাই দাঁড়িয়ে আছে লজিক্যাল ইনফারেন্সের ওপর, এটি একসময় এআই-এর সবচেয়ে বড় আর জনপ্রিয় ভাষা ছিল। এমনকি আজও এই লজিক-ভিত্তিক যুক্তি বা রিজনিং নতুন করে ফিরে আসছে — আধুনিক এআইগুলো মানুষের মতো প্যাটার্ন বোঝার জন্য নিউরাল নেটওয়ার্কের ব্যবহার করে, এবং স্ট্রাকচারড যুক্তির জন্য লজিক্যাল ইনফারেন্সের সাহায্য নেয়।

পিওর লজিক (Pure Logic) বা নিখাদ যুক্তির সীমাবদ্ধতা

লজিক বা যৌক্তিক বিচার অনেক শক্তিশালী হলেও এটি বেশ অনমনীয় বা রিজিড (rigid)। কারণ বাস্তব দুনিয়ার জ্ঞান বেশিরভাগ সময়ই অনিশ্চয়তা (uncertain), অসম্পূর্ণতা (incomplete) বা পরস্পরবিরোধী (contradictory) হয়ে থাকে:

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

এসব সীমাবদ্ধতা কাটিয়ে উঠতেই পরবর্তীতে ফাজি লজিক বা fuzzy logic (সত্যের বিভিন্ন মাত্রা), প্রোবাবিলিস্টিক লজিক বা probabilistic logic (বিশ্বাসের সম্ভাবনা ও কনফিডেন্স লেভেল), এবং নন-মনোটোনিক লজিক বা non-monotonic logic (সিদ্ধান্তগুলোকে বদলানোর সুযোগ থাকে)-এর মতো নতুন ধারণা তৈরি হয়েছে। এবং এভাবেই আরো উন্নত রিজনিং বা যুক্তি নির্ভর সিস্টেম তৈরির খোঁজ আজও অব্যাহত আছে!

ছোট কুইজ

মডাস পোনেন্স (Modus Ponens) বলতে কী বোঝায়?

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