گذری بر سیستمهای خبره (Expert Systems)
اگر بخواهیم سیستمهای خبره (Expert Systems) را در یک جمله توصیف کنیم باید بگوییم که این سیستمها بهطور کلی برنامههایی هستند که قادرند همانند انسان مسایل خاصی را استدلال کنند. این سیستمها برای استدلال، از الگوهای منطقی خاصی استفاده میکنند که مشابه همان کاری است که انسان در زمان حل یک مسئله عمل میکند. در واقع همانطور که انسان برای حل یک مسئله، تعقل یا اندیشه میکند، سیستمهای خبره نیز برای این کار به الگوها و راه و روشهایی متوسل میشوند که انسان برای آنها مشخص کرده است، بنابراین چون از منطق بشری استفاده میکنند میتوان گفت که تا حدودی همانند انسان فکر میکنند. به همین دلیل همواره واژه دیگری نیز معادل سیستمهای خبره در ادبیات مربوط به هوش مصنوعی آورده میشود که به آن سیستمهای مبتنی بر دانش (KnowLedge Based System) گفته میشود. در واقع دلیل این نامگذاری، یکسان بودن معلومات مورد استفاده توسط این سیستمها در حل مسایل با معلومات مورد استفاده یک انسان متبحر در یک رشته برای حل مسایل حوزه مربوطه است. هرچند دو واژه سیستمهای خبره و سیستمهای مبتنی بر دانش در متون هوش مصنوعی همواره مترادف یکدیگر در نظر گرفته میشوند، اما در کنار هم قرار گرفتن این دو گستردهترین کاربرد دنیای هوش مصنوعی را به خود اختصاص میدهد. در واقع سیستمهای خبرهای که به دلیل استفاده از دانش بشری قادر به استدلال و حل مسایل باشند بزرگترین و مهمترین شاخه هوش مصنوعی به شمار میرود. یک واژه مهم دیگر در سیستمهای خبره «دامنه وظیفه» یا همان Task Domain است. به این مفهوم که دامنه همان ناحیه یا گسترهای است که یک سیستم خبره در آن زمینه فعالیت میکند و وظیفه (Task) هدف یا کاری است که این سیستم خبره باید انجام دهد. مثلا علوم پزشکی، هوانوردی و معماری میتوانند بهعنوان دامنههای وظایفی چون تشخیص بیماری، زمانبندی پرواز و طراحی ساختمان مورد استفاده سیستمهای خبره مربوطه قرار گیرند.
مهندسی دانش
یکی از مباحث اساسی و جالب توجه در حوزه سیستمهای خبره، روشی است که برای ساختن اینگونه سیستمها به کار گرفته میشوند. بهطور کلی به مراحل ساخت یک سیستم خبره، مهندسی دانش (KnowLedge Engineering) گفته میشود. چراکه سازنده یک سیستم خبره باید از وجود همه اطلاعات و علوم لازم در یک حوزه برای حل یک مسئله مربوط به آن حوزه اطمینان لازم را کسب کند. پس از مشخص کردن دامنه دانش مورد نیاز برای انتقال به یک کامپیوتر، سازنده سیستم خبره یا در اصطلاح همان مهندس دانش (KnowLedge Engineer) باید روش ثبت و نگهداری این علوم و اطلاعات را در کامپیوتر مشخص کند. به مرحله انتقال علوم جمعآوری شده در یک حوزه به کامپیوتر و نحوه چیدمان این علوم در آنجا «نمایش دانش» یا (KnowLedge Representation) گفته میشود. اما در مرحله بعد یعنی زمانی که یک کامپیوتر باید از اطلاعات و دانش ثبت شده در حافظه خود برای استدلال و حل یک مسئله استفاده کند، باید متد یا روشی وجود داشته باشد که بتواند مسئله مورد نظر را درک کرده و آنگاه از بین انبوه اطلاعات و علوم موجود و یا از ترکیب آنها با یکدیگر راهحل مسئله را کشف کند. در اینجا نقش سازنده یک سیستم خبره در معرفی روشی برای استفاده از معلومات ثبت شده برای حل مسایل بسیار مهم است. این روش به هر شکلی که باشد بهعنوان «متد یا شیوه استدلال» (Reasoning Method) شناخته میشود.
اجزای سازنده
با توجه به مطالب فوق، یک سیستم خبره حداقل از دو قسمت اساسی تشکیل شده که یکی مبنا و هسته علمی آن یا همان KnowLedge Base (KB) است و دیگری، ماژول استدلال که Reasoning Engine نام دارد. برای اینکه یک سیستم خبره بتواند توانایی استدلال خوبی داشته باشد باید از مبنای علمی (KB) جامعی بهرهمند باشد. یک KB جامع قاعدتا باید شامل دو دسته اطلاعات علمی در یک زمینه باشد. دسته اول شامل اطلاعاتی است که صد درصد پشتوانه علمی تئوری مرتبط با آن موضوع داشته و شامل اصول یا جزئیات مکتوب، رسمی و شناخته شده آن علم است که در بسیاری از منابع آن حوزه علمی مثل کتابها، دانشگاهها و... مورد تایید قرار گرفته است. به این دسته از اطلاعات علمی، دانش مستند (Factual KnowLedge) گفته میشود. اما دسته دوم، آنهایی هستند که کمتر خاصیت مستند علمی داشته و بیشتر دارای پشتوانه تجربی (Experimental) منحصر بهیک شخص یا گروه خاص یا طبق یک تئوری یا تشخیص غیررسمی است که به آن (Heuristic KnowLedge) گفته میشود.
همانطور که قبلا گفتیم به شیوه ساماندهی و چیدمان اطلاعات علمی در یک سیستم خبره، نمایش (Representation) گفته میشود. یکی از روشهای معمول این نمایش روشی است به نام قاعده تولید (Production Rule) که دارای زنجیرهای از دستورات شرطی با ساختار آشنای برنامهنویسان یعنی IF-THEN است. در این روش اطلاعات مربوط به یک حوزه بهصورت یک ساختار درختی که دارای یک سری دستورات IF-THEN ساده یا ترکیبی است در سیستم قرار داده میشود.
به سیستمهای خبرهای که علوم مربوط به خود را به این روش نگهداری میکنند سیستمهای مبتنی بر قاعده (Rule Based System) میگویند. اما یکی دیگر از انواع پرکاربرد نمایش اطلاعات در سیستمهای خبره روشی است که در آن علوم بهصورت یک موجودیت (Entity) که دارای نام، خواص و روابط با موجودیتهای دیگر است نمایش داده میشود. در این روش علوم موجود در یک موضوع خاص میتوانند در یک موجودیت مشخص قرار گرفته و از درون خود موجودیتهای کوچکتر دیگری را که میتوانند مشمول خود کنند، تشکیل دهند. بهعنوان مثال در یک سیستم تشخیص پزشکی شاید بتوان هر یک از اعضای بدن را در یک موجودیت جداگانه با نام و خواص معلوم قرار داده و آنگاه هرچند موجودیت را به یک موجودیت سطح بالاتر مثل دستگاه عصبی، گوارش و... و یا چند موجودیت سطح پایینتر مثل اعضای تشکیلدهنده مانند (بافت، رگ، عصب و...) تقسیمبندی و به یکدیگر متصل کرد.
به هر یک از این موجودیتها در ساختار علمی یک سیستم خبره، واحد (Unit) گفته میشود.
اما همانطور که گفتیم جزء اساسی دوم یک سیستم خبره، موتور استدلال یا مدل حل مسئله (Problem Solving Model) یا پارادایم (Paradigm) آن سیستم است که وظیفه ساماندهی و کنترل مراحل حل مسئله را به عهده دارد. یکی از متدهای بسیار معمول و ساده پیادهسازی یک پارادایم یا موتور استدلال روشی است همانند روش مبتنی بر قاعده (Rule Based) در ماژول مربوط به نگهداری اطلاعات علمی در آن سیستم خبره.
بدین معنی که زنجیرهای از دستورات IF-THEN در پارادایم وجود دارد که با بررسی و انطباق اصول و جزئیات صورتمسئله با اصول و جزئیات علمی موجود در KnowLedge Base در قسمت IF میتواند راهحل یک مسئله را در قسمت THEN آن زنجیره پیدا کند.
به این روش استدلال و یافتن راهحل مسئله در یک سیستم خبره، زنجیره کردن مستقیم دستورات IF-THEN (forward Chaining) گفته میشود. البته در برخی سیستمهای خبره امروزی خاصیتی عکس زنجیره کردن مستقیم و در واقع استدلال معکوس نیز وجود دارد، بدین معنی که این سیستم خبره قادر است با دریافت راهحل و جواب یک مسئله صورت آن را پیدا کند. بهعنوان مثال در یک سیستم خبره تشخیص بیماری، استدلال معکوس میتواند بهصورت دریافت نوع بیماری و بیان علایم مربوط به آن عمل کند. به این قابلیت استدلال معکوس، Backward Chaining گفته میشود.
سیستمهای خبره در یک نگاه
حال که با مفهوم و چگونگی ساختار سیستمهای خبره آشنا شدیم بد نیست نگاهی اجمالی به برخی ویژگیهای این سیستمها بیندازیم که تفصیل هر کدام از آنها از ظرفیت تنها یک مقاله خارج است.
* کاربرد: اصولا یک سیستم خبره را برای رسیدن به دو منظور میسازند: اول اینکه این سیستم باید بتواند به یک شخص حرفهای در یک زمینه برای رسیدن به هدفش کمک برساند و در مواقع مهم در تصمیمگیری یا تشخیص به وی کمک کند که در این صورت به آنSupport Decision گفته میشود مثل همان سیستمهای خبرهای که در امور پزشکی طراحی شدهاند.
دوم اینکه این سیستم باید بتواند در یک زمینه خاص، خود تصمیمگیری و به آن عمل کند. در واقع در این روش، یک سیستم خبره به یک شخص مبتدی یا غیرحرفهای میگوید که چه کاری باید انجام دهد (Decision Making). سیستمهای خبرهای که در زمینههای صنعتی وجود دارند نمونه خوبی از این نوع به حساب میآیند.
* هدف: با استفاده از یک سیستم خبره میتوان اطلاعات علمی و حرفهای مربوط به یک رشته تخصصی را ثبت و در مجامع مربوطه به آن توزیع کرد، کیفیت انجام کارهای حرفهای را با اطمینان از عدم اشتباه سیستم افزایش داد و در نهایت توانایی افراد مبتدی را بهتدریج در اثر کار با یک سیستم خبره افزایش داده و آنها را به تبحر حرفهای خود نزدیکتر کرد.
توانایی
بهطور کلی توانایی محسوس یا نامحسوس یک سیستم خبره را میتوان به عناوین زیر خلاصه کرد:
1- تشخیص مشکل (صورتمسئله)
2- تشخیص راهحلها و انتخاب از بین آنها
3- توصیف و استدلال راهحل انتخاب شده
4- تعامل با اطلاعات ناقص برای کسب یا یافتن اطلاعات کاملتر
5- امکان ثبت و بازسازی همه مراحل حل یک مسئله
سیستمهای خبره، دیروز و امروز
دهه 1950 و 1960 را میتوان آغازی بر بهوجود آمدن برنامههای کامپیوتری هوشمند (بر اساس هوش مصنوعی) به حساب آورد.
در طی همین سالها بود که تئوری جدیدی به نام Heuristics که بعدا به سیستمهای خبره تغییر هویت داد، مطرح شد. این تئوری در واقع روشی بود برای یافتن یک راهحل از بین چند راهحل موجود برای یک مسئله بخصوص.
پس از چندی نیز خبر از بهوجود آمدن یک زبان برنامهنویسی جدید به نام LISP (LIST Processing) به میان آمد. این زبان برنامهنویسی قابلیت بسیار مناسبی در پردازش انواع ساختارهای اطلاعاتی (Data Structures) بهخصوص ساختار Link List داشت و از همینرو قادر بود تا برنامههایی که بر اساس پردازش زنجیرهای و سلسلهمراتبی اطلاعات کار میکنند (مثل برنامههای هوش مصنوعی و سیستمهای خبره) را بسازد.
اما در دهه هفتاد تحقیقات و دستاوردهای هوش مصنوعی بهسمت مسایل علمیتر و بهخصوص شاخههایی از علم که تاثیر بیشتری در زندگی عامیانه مردم داشت گرایش یافت. بهعنوان مثال در این ایام برنامهای با نام Dendral (دندرال) نوشته شد که میتوانست ساختار مولکولی ترکیبات شیمیایی را مشخص کند. پس از آن برنامه دیگری بهنام Macsyma (ماکسیما) ابداع شد که میتوانست مسایل ریاضی را حل کند. بهطور کلی برنامههایی که در این دهه در زمینه هوش مصنوعی با گرایش سیستمهای خبره نوشته شد، مبتنی بر فناوری و روشهای جستوجو (Search Technique) بود، بنابراین اثر کمتری از متد استدلال علمی و حل مسایل بر اساس مبنای علمی آنها (KnowLedge Base) دیده میشد. در این دوران خبر از پیدایش یک زبان برنامهنویسی به نام PROLOG (Programming Logic) به میان آمد که علاوه بر دارا بودن قابلیتهای زبان LISP، به دلیل مشابه بودن دستورات و ساختار آن با زبان انگلیسی، از محبوبیت زیادی در ساخت برنامههای هوش مصنوعی برخوردار شد.
اما دهه هفتاد و اوایل دهه هشتاد میلادی را میتوان سرآغازی بر سیستمهای خبره مدرن امروزی به حساب آورد. در این دوره بود که سیستمهایی بر اساس آنالیز دانش روز بشر ابداع شد. بهعنوان مثال در این ایام بود که Mycin یک برنامه کامپیوتری برای کمک به پزشکان در تشخیص آزمایش خون و بیماری افراد کمک کرده و نسخه پیشنهادی مناسب با آن را ارایه میکرد یا مثلا R1 نام سیستم خبره دیگری بود که توسط کمپانی Digital Equipment Co نوشته شد و وظیفه آن جمعآوری اطلاعات مربوط به نیاز مشتریان و ارایه بهترین سیستم کامپیوتری و لوازم جانبی آن، منطبق با نیاز هر مشتری بود. در حال حاضر نیز کاربرد سیستمهای خبره در بسیاری از شاخههای صنعت به وضوح دیده میشود. در بسیاری از سیستمهای تشخیص خطا و بحران در سیستمهای صنعتی، برخی سیستمهای مربوط به تعمیر نگهداری و برنامهریزی در صنایع هوایی، سیستمهای مربوط به تحقیقات در مواد شیمیایی و دارویی، پزشکی و مالی، نرمافزارهای ویژه طراحی مهندسی صنعتی و هر برنامهای که مبتنی بر دانش بشری در هر یک از شاخههای علوم باشد، به نوعی استفاده از الگوریتمها و روشهای یک سیستم خبره به وضوح مشاهده میشود.
|