عامل های مبتنی بر دانش در هوش مصنوعی AI

عامل های مبتنی بر دانش در هوش مصنوعی AI
به نظر میرسد که انسانها دانسته هایی دارند و با استفاده از این دانسته ها، کارهایی را انجام میدهند. این اظهارات بی معنی نیستند، بلکه ادعایی قوی درباره دست یافتن انسان به هوش هستند. هوش از طریق فرآیند استدلال کردن به دست می آید که بر روی نمایش داخلی دانش عمل میکند. در AI این روش دستیابی به هوش، در عامل های مبتنی بر دانش گنجانده شده است.
عامل های حل مسئله با جست وجو (که قبلا پست های کاملی برای آشنایی با آنها گذاشته ایم )، دانسته هایی دارند ولی در حد خیلی محدود و غیر قابل انعطاف. نمایش های اتمیک نیز که توسط عامل های حل مسئله مورد استفاده قرار میگیرد، بسیار محدود است. در محیط پاره ای قابل مشاهده تنها انتخاب عامل برای نمایش دانسته های خود راجع به حالت فعلی، لیست کردن تمام حالتهای ملموس است. عملی که در محیط های بزرگ، امیدی به آن نیست.
مسائل ارضای محدودیت ایده ی نمایش حالت را بصورت انتساب مقادیر به متغیرها معرفی کرده است. این روش در مسیر درستی گام برمیدارد، و بخش هایی از عامل را قادر میسازد که مستقل از نوع کاربرد عمل کند و استفاده از الگوریتم های کارآمدتر را ممکن میسازد. در اینجا این مرحله را تا نتیجه منطقی آن ادامه میدهیم. یعنی منطق را بعنوان یک کلاس کلی نمایش، برای پشتیبانی از عامل های مبتنی بر دانش ایجاد میکنیم. وقتی ریاضی دانان قضیه ای را اثبات میکنند تا اخترشناسان طول عمر زمان را محاسبه کنند، به آنها نیاز است. عاملهای مبتنی بر دانش میتوانند کارهای جدیدی را به شکل اهدافی بپذیرند که صریحا توصیف شده اند، این عاملها میتوانند با یادگیری دانش جدید راجع به محیط یا ارائه اطلاعاتی به آنها توسط انسانها سریعا رشد کنند و توانایی هایی را کسب کنند.
عاملهای مبتنی بر دانش (knowledge base agent)
مولفه اصلی عامل مبتنی بر دانش، پایگاه دانش (KB) آن است. پایگاه دانش مجموعه ای از جملات است. ("جمله" در اینجا یک واژه تکنیکی است و با "جمله" در زبان فارسی یا سایر زبانهای طبیعی ارتباط دارد، ولی یکسان نیست.) هر جمله، در زبانی به نام زبان نمایش دانش بیان میشود و ادعاهایی را در مورد دنیا نمایش میدهد. وقتی جمله ای از جملات دیگر به دست نیاید، آن را اصل موضوعی می نامند. باید راهی برای اضافه کردن جملات جدید به پایگاه دانش و پرس وجو در آن وجود داشته باشد. اسامی استاندارد برای این عملیات به ترتیب TELL و ASK هستند. هر دو عملیات ممکن است شامل استنتاج باشد، یعنی میتواند جملات جدیدی را از جملات قدیمی به دست آورند. استنتاج باید از این خواسته اطلاعات کند که : وقتی شخصی عملیات ASK را روی پایگاه دانش انجام میدهد تا سوالی از آن بپرسد، پاسخ باید از همان چیزی که قبلا به پایگاه دانش گفته شد (توسط عملیات TELL) نتیجه شود. الگوریتمی که درادامه میبینید، طرح کلی مسئله ی عامل مبتنی بر دانش را نشان میدهد. همانند تمام عامل های دیگر این عامل، ادراکی را بعنوان ورودی میگیرد و فعالیتی را بعنوان خروجی برمیگرداند. عامل، یک پایگاه دانش (KB) را نگهداری میکند، که ممکن است در آغاز شامل دانش اولیه باشد (دانش اولیه، اطلاعاتی است که برای درک یک وضعیت با مسئله ضروری است).
هر وقت برنامه عامل اجرا میشود، سه کار انجام میگیرد: اولا به پایگاه دانش میگوید که چه چیزی را ادراک کرده است (TELL) . ثانیا از پایگاه دانش میپرسد چه فعالیتی باید انجام دهد. در فرآیند پاسخگویی به این پرس وجو ممکن است استدلال جامعی راجع به حالت فعلی دنیا، راجع به نتایج دنباله فعالیت ها و غیره صورت گیرد. ثالثا، برنامه ی عامل به پایگاه دانش میگوید چه فعالیتی انتخاب شده است، و عامل، این فعالیت را اجرا کند.
جزئیات زبان نمایش، در داخل سه تابع مخفی شده است که واسط بین سنسورها و محرک ها از یک طرف، و نمایش اصلی و سیستم استدلال را از طرف دیگر پیاده سازی میکند. در الگوریتم زیر MAKE-PERCEPT-QUERY جمله ای میسازد که ادعا میکند عامل در زمان معینی ادراک خاصی را دریافت کرده است. MAKE-ACTION-QUERY جمله ای را میسازد که میپرسد در حال حاضر چه فعالیتی باید صورت گیرد. سرانجام MAKE-ACTION-SENTENCE جمله ای میسازد که ادعا میکند "فعالیتهای انتخاب شده انجام شده است". جزئیات مکانیزم استنتاج در TELL و ASK مخفی هستند.
برای ساخت عامل مبتنی بر دانش باید به آن گفت (TELL) که چه چیزی را بداند. با شروع از پایگاه دانش خالی، طراح عامل میتواند جملات را یکی یکی به عامل اعلان کند تا عامل پی ببرد چگونه در محیط عمل کند. این روش ساخت سیستم، روش اعلانی نام دارد. برعکس، روش رویه ای رفتارهای نامطلوب را مستقیما در برنامه کدنویسی میکند. اکنون عامل موفق غالبا در طراحی خود عناصر اعلانی و رویه ای را با هم ترکیب میکنند و دانش اعلانی میتواند در کد رویه ای کارآمدتری کامپایل شود.
شبه کد عامل کلی مبتنی بر دانش:
function KB-AGENT (percept) returns an action
persistent : KB, a knowledge base
t, a counter, initially 0, indicating time
TELL(KB, MAKE-PERCEPT-SENTENCE ( percept , t ) )
action <-- ASK(KB, MAKE-PERCEPT-QUERY( t ))
TELL(KB, MAKE-ACTION-SENTENCE ( action , t ))
t <-- t +1
return action