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

নলেজ রিপ্রেজেন্টেশন (Knowledge Representation)

মেশিন কীভাবে এই পৃথিবী সম্পর্কে জ্ঞান বা তথ্য জমা রাখে
scope:কোর কনসেপ্ট (মূল ধারণা)difficulty:বিগিনার (Beginner)

মেশিনের মাইন্ড ম্যাপ (Mind Map of a Machine)

চোখ বন্ধ করুন এবং "প্যারিস (Paris)" শহরটির কথা চিন্তা করুন। সাথে সাথে আপনার মাথায় অনেকগুলো ছবি ও তথ্যের একপ্রকার জাল তৈরি হবে: ফ্রান্স, আইফেল টাওয়ার, ক্রিসেন্ট (croissants), সিটি অফ লাইটস, রোমান্স, সীন নদী (the Seine river)...

আপনার মস্তিষ্ক কিন্তু "প্যারিস"-কে কেবল একটি বিচ্ছিন্ন শব্দ হিসেবে মনে রাখে না। এটি মূলত শব্দটিকে একটি যোগসূত্রের জাল (web of connections) হিসেবে সংরক্ষণ করে। যেমন: প্যারিস 'একটি' (IS-A) শহর। প্যারিস ফ্রান্সে 'অবস্থিত' (IS-IN)। প্যারিসে আইফেল টাওয়ার 'আছে' (HAS-A)। প্যারিস রোমান্সের জন্য 'পরিচিত' (IS-KNOWN-FOR)।

আর এটিই হলো নলেজ রিপ্রেজেন্টেশন (knowledge representation) — অর্থাৎ বিভিন্ন তথ্য ও তাদের মধ্যকার সম্পর্কগুলো এমনভাবে সাজিয়ে রাখা, যেন একটি কম্পিউটার ঠিক আপনার মতোই এই পৃথিবী সম্পর্কে বুঝতে পারে বা লজিক দাঁড় করাতে পারে। এটি ছাড়া কৃত্রিম বুদ্ধিমত্তা বা এআই (AI) কেবলই কিছু নাম্বার বা সংখ্যার হিসাব-নিকাশ মাত্র। কিন্তু এটি থাকলে, এআই বিভিন্ন কনসেপ্ট বা ধারণার ভেতরের অর্থটাও বুঝতে পারে।

এটি কেন এত জরুরি

ধরুন আপনি এআই-কে জিজ্ঞেস করলেন: "আমি যদি ফ্রান্সের রাজধানীতে থাকি, তবে কোন বিখ্যাত টাওয়ারটি দেখতে যেতে পারি?"

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

তথ্য বা জ্ঞান উপস্থাপন করার চারটি উপায়

কয়েক দশক ধরে, এআই গবেষকরা জ্ঞান বা নলেজ (knowledge) উপস্থাপন করার জন্য বেশ কয়েকটি পদ্ধতি তৈরি করেছেন:

১. সিমান্টিক নেটওয়ার্ক (Semantic Networks)

এটি এমন একটি গ্রাফ, যেখানে এর নোডগুলো হলো বিভিন্ন কনসেপ্ট আর সেগুলো যুক্তকারী রেখা বা এজ (edge) হলো তাদের মধ্যকার সম্পর্ক। এটি অনেকটা মাইন্ড ম্যাপের মতো: কুকুর → একটি → প্রাণী (Dog → IS-A → Animal), কুকুর → আছে → লোম (Dog → HAS → Fur)। এটি খুবই সহজ, ভিজ্যুয়াল এবং বেশ বোধগম্য।

২. ফ্রেম (Frames)

এটি অনেকটা প্রতিটি কনসেপ্টের জন্য আলাদা আলাদা ফর্ম পূরণ করার মতো। যেমন, একটি "রেস্টুরেন্ট" ফ্রেমে কয়েকটি ঘর বা স্লট (slots) থাকতে পারে: নাম, খাবারের ধরন, অবস্থান, দামের সীমা। এটিকে নলেজ বা তথ্যের জন্য অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (object-oriented programming)-এর একটি আদি ভার্সন হিসেবেও ভাবতে পারেন।

৩. অ্যান্থোলজি বা অনটোলজি (Ontologies)

এগুলো হলো নিয়মতান্ত্রিক এবং স্তরভিত্তিক (hierarchical) সিস্টেম। যেমন, "প্রাণী (Animal)" হলো একটি সুপারক্লাস (superclass)। "স্তন্যপায়ী (Mammal)" হলো প্রাণীর একটি সাবক্লাস (subclass)। আবার "কুকুর (Dog)" হলো স্তন্যপায়ীর একটি সাবক্লাস। এই চেইন বা স্তরের মাধ্যমে প্রতিটি পরের স্তর তার আগের স্তরের বৈশিষ্ট্য বা প্রপার্টিগুলো পেয়ে থাকে (inherit) — অর্থাৎ স্তন্যপায়ীরা যদি উষ্ণ রক্তবিশিষ্ট হয়, তবে কুকুরও উষ্ণ রক্তবিশিষ্ট হবে।

৪. নলেজ গ্রাফ (Knowledge Graphs)

এটি বর্তমান এআই জগতের সবচেয়ে আধুনিক স্ট্যান্ডার্ড। গুগল (Google)-এর নলেজ গ্রাফ কোটি কোটি তথ্যকে ট্রিপল (triples) অর্থাৎ (সাবজেক্ট, প্রেডিকেট, অবজেক্ট) আকারে যুক্ত করে রাখে। যেমন: (আইনস্টাইন, জন্মগ্রহণ করেছেন, উল্ম), (আইনস্টাইন, কাজের ক্ষেত্র, পদার্থবিজ্ঞান)। আপনি যখন গুগলে কোনো বিখ্যাত ব্যক্তিকে নিয়ে সার্চ করেন এবং ডানপাশে একটা ইনফো প্যানেল দেখতে পান? সেটি মূলত এই নলেজ গ্রাফেরই কাজ।

একটি সাধারণ নলেজ গ্রাফ তৈরি করা

class KnowledgeGraph:
def __init__(self):
self.triples = [] # (subject, predicate, object)
def add(self, subject, predicate, obj):
self.triples.append((subject, predicate, obj))
def query(self, subject=None, predicate=None, obj=None):
"""কোনো একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন ট্রিপলগুলো খুঁজে বের করা (None = wildcard)।"""
results = []
for s, p, o in self.triples:
if (subject is None or s == subject) and \
(predicate is None or p == predicate) and \
(obj is None or o == obj):
results.append((s, p, o))
return results
# আমাদের নলেজ গ্রাফটি তৈরি করা যাক
kg = KnowledgeGraph()
kg.add("Paris", "is-a", "City")
kg.add("Paris", "is-in", "France")
kg.add("Paris", "capital-of", "France")
kg.add("Eiffel Tower", "is-in", "Paris")
kg.add("Eiffel Tower", "is-a", "Landmark")
kg.add("France", "is-a", "Country")
kg.add("France", "is-in", "Europe")
# এবার কিছু প্রশ্ন করা যাক
print("What's in Paris?")
for s, p, o in kg.query(predicate="is-in", obj="Paris"):
print(f" {s}")
print("\nFacts about France:")
for s, p, o in kg.query(subject="France"):
print(f" France {p} {o}")
print("\nWhat is Paris?")
for s, p, o in kg.query(subject="Paris", predicate="is-a"):
print(f" Paris is a {o}")
Output
What's in Paris?
  Eiffel Tower

Facts about France:
  France is-a Country
  France is-in Europe

What is Paris?
  Paris is a City
Note: গুগলের নলেজ গ্রাফ (Google's Knowledge Graph)-এ প্রায় ৫০০ কোটি বিষয়বস্তু বা সত্তার ওপর ভিত্তি করে ৫০ হাজার কোটিরও বেশি ফ্যাক্ট বা তথ্য জমা আছে। আপনি যখন "উইলিয়াম শেকসপিয়র (William Shakespeare)" লিখে সার্চ করেন এবং এক নজরেই তার জন্মতারিখ, পরিবার ও কাজ সম্পর্কে দেখতে পান — সেখানেই মূলত নলেজ রিপ্রেজেন্টেশনের জাদু কাজ করে। আস্ত এই ইনফো প্যানেলটি কোনো ওয়েবপেইজ থেকে কপি করা নয়, বরং এটি ওই স্ট্রাকচারড ট্রিপলগুলো থেকেই তৈরি হয়।

সবচেয়ে বড় চ্যালেঞ্জ: সাধারণ জ্ঞান (Common Sense)

মানুষ এমন লাখ লাখ ছোটখাটো এবং "সাধারণ" জিনিস জানে যা একটি মেশিনকে বোঝানো বেশ কঠিন: যেমন, পানি ভেজা থাকে, আগুন গরম হয়, আপনি একটি স্যুটকেসের ভেতর আস্ত একটা হাতি ঢোকাতে পারবেন না। এটিকে বলা হয় কমন সেন্স প্রবলেম (common sense problem), যা আজও এআই-এর জগতে সবচেয়ে বড় এবং কঠিন চ্যালেঞ্জগুলোর একটি।

১৯৮৪ সালে শুরু হওয়া CYC নামের একটি প্রজেক্ট চেষ্টা করেছিল মানুষের এই সাধারণ জ্ঞানগুলোকে ম্যানুয়ালি বা হাতে-কলমে মেশিনের ভাষায় লিখে রাখতে। কয়েক দশক পার হয়ে গেলেও এতে লাখ লাখ রুল বা নিয়ম যুক্ত হয়েছে — কিন্তু তার পরও পাঁচ বছরের একটি সাধারণ শিশু নিজের বুদ্ধি দিয়ে যা বুঝতে পারে, ওই প্রোগ্রামটি এখনো ততটুকু বুঝতে শেখেনি।

বর্তমানে লার্জ ল্যাঙ্গুয়েজ মডেল (LLMs)-এর মতো আধুনিক এআই সিস্টেমগুলো ভিন্ন একটি পদ্ধতি গ্রহণ করেছে: এরা বিশাল পরিমাণ টেক্সট বা লেখা পড়ে সেখান থেকে সাধারণ জ্ঞান বা ইমপ্লিসিট নলেজ (implicit knowledge) শেখার চেষ্টা করে। কিন্তু তার পরও মানুষের একেবারে জন্মগত ও প্রাকৃতিকভাবে শেখা সাধারণ সামাজিক রীতিনীতি বা বাস্তবিক বিষয়গুলো বুঝতে এদের বেশ বেগ পেতে হয়।

ছোট কুইজ

একটি নলেজ গ্রাফে 'ট্রিপল (triple)' বলতে কী বোঝায়?

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