تصور کنید که به یک پزشک متخصص مراجعه میکنید، به او وضعیت خودتان را شرح میدهید و او بیماری شما را تشخیص میدهد. این پزشک یک فرد خبره یا متخصص است که وضعیت شما را با دانشی که از قبل دارد بررسی میکند و استنتاج میکند که وضعیت سلامتی شما چگونه است. حالا تصور کنید که کلینیکی که به آن مراجعه کردهاید پزشک را با یک ربات یا یک چتبات جابجا کرده باشد. این همان سیستم خبره یا Expert system است.
سیستم یا سامانه خبره یکی از قدیمیترین تکنیکهای هوش مصنوعی در جهان است که کاربردهای متعددی داشته است و احتمالا اسم آن را بارها شنیدهاید. در این مقاله ابتدا مفهوم و چیستی سیستم خبره را بررسی میکنیم. پس از آن تاریخچه سیستم خبره را مرور میکنیم. انواع سیستمهای خبره را معرفی میکنیم و نحوه عملکرد آنها را شرح میدهیم و در نهایت کاربردهای سیستمهای خبره را بررسی میکنیم.
سیستم خبره چیست؟
سیستم خبره یا سامانه خبره یکی از انواع تکنیکهای هوش مصنوعی است که برای حل مسائل پیچیده و تصمیمگیری در حوزههای تخصصی بکار گرفته میشود. سیستمهای خبره میتوانند همانند متخصصانی در زمینه پزشکی، مهندسی، حقوق و … در خدمت انسانها باشند.
سیستم خبره بر پایه دانش تخصصی قبلی و قوانینی که انسان برای آن تعریف میکند عمل میکند. او دانش را که شامل اطلاعات، حقایق و قوانین است را در یک پایگاه دانش در اختیار دارد، و هرگاه که از او سوالی پرسیده شود. با تکیه بر آن دانش و اطلاعات به استنتاج میپردازد و به مسئله پاسخ میدهد.
تاریخچه سیستمهای خبره
سیستم خبره یکی از قدیمیترین تکنیکهای دنیای هوش مصنوعی است. همانطور که در مقاله تاریخچه هوش مصنوعی بررسی کردیم، اولین هوش مصنوعیهای تاثیرگذار در دنیا از تکنیک سیستم خبره استفاده میکردند. میتوان گفت تاریخچه سیستمهای خبره به دهه ۱۹۶۰ میلادی بر میگردد و تقریبا ۶۰ سال از عمر این فناوری میگذرد.
ظهور سیستمهای خبره
در دهه ۱۹۶۰ پژوهشگران دانشگاه استندفورد DENDRAL را توسعه دادند. دندرال یک سیستم خبره بود که برای تحلیل دادههای شیمیایی و و شناسایی ساختار مولکولی بکارگرفته شد. ادوارد فایگنبام دانشمند علوم کامپیوتر و سرپرست مرکز کامپیوتر دانشگاه استنفورد این پروژه را رهبری کرد. امروزه از او به عنوان پدر سیستمهای خبره یاد میشود.
در سالهای بعد پروژه MYCIN در دانشگاه استنفورد اجرایی شد. MYCIN یک سیستم خبره بود که برای تشخیص و درمان بیماریهای عفونی باکتریایی کارکرد داشت. MYCIN توسط ادوارد شورتلیف و همکارانش توسعه داده شد اما ادوارد فاینگبام نیز یکی از افرادی بود که بر این پروژه نظارت داشت.
ورود سیستمهای خبره به صنعت
در دهه بعدی سیستمهای خبره توانستند به صنایع مختلف ورود کنند و در سطح گسترهتری استفاده شوند. شرکت Digital Equipment Corporation سیستم اکس کان (Xcon) که به نام R1 نیز شناخته میشود را توسعه داد. این یکی از موفقترین سیستمهای خبره در آن زمان بود که برای پیکربندی قطعات کامپیوتری پیشرفته استفاده میشد.
با افزایش قدرت محاسباتی کاربرد سیستمهای خبره افزایش یافت. در دهه ۹۰ میلادی ناسا CLIPS را ساخت که کاربرد صنعتی و تحقیقاتی داشت.
ظهور یادگیری عمیق
تقریبا از اواخر دهه ۱۹۹۰ و آغاز قرن جدید که دوران انقلاب یادگیری ماشین و یادگیری عمیق بود، سیستمهای خبره جای خود را تکنیکهای پیشرفتهتر دادند اما همچنان در سیستمهای گستردهای استفاده میشدند. یکی از اتفاقات مهم در تاریخچه سیستمهای خبره تلفیق و ترکیب سیستم خبره با شبکههای عصبی بود که مدلهای هیبریدی سیستمهای خبره را خلق کرد.
امروزه این فناوری کمتر از قبل استفاده میشود و کاربردهای آن محدود به حوزههای تخصصی است که نیاز به دانش تخصصی و تحلیل دقیق دارند. با این وجود سیستمهای خبره نقش مهمی در تاریخ فناوری هوش مصنوعی دارند.
سیستم خبره چگونه کار میکند؟
برای درک بهتر سیستمهای خبره بهتر است ابتدا بخشهای اصلی یک سیستم خبره را بررسی کنیم. سپس عملکرد هرکدام را بررسی کنیم.
اجزای سیستم خبره
سیستم خبره به صورت کلی از سه بخش «پایگاه دانش»، « موتور استنتاج » و « رابط کاربری » تشکیل شده است.
همانطور که در تصویر بالا مشاهده میکنید در یک طرف سیستم خبره یک متخصص نشسته است که سیستم خبره را تغذیه میکند و در طرف دیگر هم کاربر وجود دارد که از طریق رابط کاربری با سیستم خبره کار میکند. حال با هم هر کدام از این قسمتها را با هم بررسی میکنیم.
پایگاه دانش یا Knowledge Base
پایگاه دانش محل ذخیره سازی مجموعهای از اطلاعات، دادهها و قوانین و حقایق است که موتور استنتاج از آن برای استنتاج و تصمیم گیری استفاده میکند. اطلاعات در پایگاه دانش به صورت ساختاریافته و در قالب قوانین ( اگر- آنگاه یا همان If-then) و یا شبکههای معنایی (Semantic Networks) ذخیره میشند. دانشی که از آن صحبت میکنیم میتواند شامل دانش تجربی، علمی و یا قانونی باشد. این دانش توسط کارشناسان و متخصصان همان حوزه تدوین و گردآوری می شوند و به سیستم خبره داده میشود.
پایگاه دانش هرچه دقیقتر، بزرگتر و به روزتر باشد، سیستم خبره عملکرد بهتری خواهد داشت، در واقع سیستم خبره صرفا با اساس هرآنچیزی که در این پایگاه دانش وجود دارد استنتاج میکند و نه چیزی بیشتر.
موتور استنتاج یا Rules Engine
موتور استنتاج همانطور که از نامش پیداست وظیفه استنتاج بر اساس همان دانشی که در پایگاه دانش ذخیره شده است را دارد. هنگامی که کاربرد از سیستم خبره سوالی میپرسد یا مسئلهای را مطرح میکند ( این کار را از طریق رابط کاربری انجام میدهد که کمی جلوتر به آن میپردازیم)، سیستم خبره شرایط ورودی را دریافت میکند، در پایگاه دانش جستجو میکند و قوانینی را که با شرایط ورودی مطابقت دارند پیدا میکند و بعد از اعمال قوانینی که به آن داده شده است، شروع به نتیجه گیری میکند.
اما این فرآیند چگونه است؟ موتور استنتاج از دو نوع استنتاج استفاده میکند: استنتاج پیشرو و استنتاج پسرو. در ادامه با این دو استنتاج آشنا میشویم.
استنتاج پیشرو یا Forward chaining
استنتاج پیشرو یا استنتاج زنجیره سازی رو به جلو گونهای از استنتاج است که بر اساس واقعیتها و دانشی که دارد یک نتیجه میگیرد و سپس دوباره با اعمال قوانین از نتیجهها نتیجه جدید میگیرد و این فرآیند را تکرار میکند تا به نتیجه نهایی برسد.
برای مثال، فرض کنید یک سیستم خبره برای تشخیص بیماری داریم. در پایگاه دانش اطلاعات و قوانین زیر وجود دارد.
- اگر (تب بالا باشد) و (سرفه وجود داشته باشد)، آنگاه (بیماری ممکن است آنفولانزا باشد).
- اگر (گلودرد وجود داشته باشد) و (تب بالا باشد)، آنگاه (بیماری ممکن است عفونت گلو باشد).
- اگر (بیماری ممکن است آنفولانزا باشد)، آنگاه (داروی X توصیه میشود).
- اگر (بیماری ممکن است عفونت گلو باشد)، آنگاه (داروی Y توصیه میشود).
حالا شخصی از سیستم میپرسد که من من تب بالایی دارم و سرفههم میکنم، چه دارویی باید مصرف کنم؟ سیستم ابتدا قانون یک را پیاده میکند و میفهمد شخص آنفولانزا دارد و سپس با قانون سه را اجرا میکند و داروی X را پیشنهاد میدهد.
استنتاج پسرو یا backward chaining
استنتاج پسرو یا استنتاج زنجیرهسازی رو به عقب گونه دیگری از استنتاج است که ابتدا نتیجه نهایی مورد بررسی قرار میگیرد و سپس بررسی میشود که این نتیجه به سبب چه شرایط و حقایقی است و سپس دوباره نتایح بدست آمده را بررسی میکند که کدام شرایط منجر به این نتیجه شده اند. همین روند تکرار میشود تا شرایط و حقایق اولیه کشف شود.
برای درک بهتر فرض کنید همان سیستم خبره قبلی را داریم و پایگاه دانش آن شامل قوانین زیر است:
1. اگر (درد شدید در گلو وجود داشته باشد)، آنگاه (بیماری ممکن است التهاب گلو باشد).
2. اگر (دمای بالای ۳۸ درجه وجود داشته باشد) و (ضعف عمومی مشاهده شود)، آنگاه (بیماری ممکن است آنفولانزا باشد).
3. اگر (بیماری ممکن است التهاب گلو باشد)، آنگاه (استفاده از آنتیبیوتیک توصیه میشود).
حالا بیماری میپرسد من تب و ضعف دارم آیا آنتی بیوتیک بخورم؟ در این حالت موتور استنتاج ابتدا بررسی میکند که در چه مواردی باید آنتی بیوتیک خورد، او با بررسی قانون ۳ به این نتیجه میرسد که آنتی بیوتیک برای التهاب گلو است. قانون ۱ را بررسی میکند و به این نتیجه می رسد که درد شدید گلو علائم این بیماری است پس تب و ضعف نیست. پس به بیمار توصیه میکند که آنتی بیوتیک نخورد.
رابط کاربری
بخش سوم سیستمهای خبره رابط کاربری است. رابط کاربری یا User Interface فضایی است که شما با یک سیستم ارتباط برقرار میکنید. در سیستم خبره، رابط کاربری ارتباط شما و موتور استنتاج را امکان پذیر میسازد. رابط کاربری میتواند با تکیه بر پردازش زبان طبیعی، پیام شما را به عنوان ورودی به موتور استنتاج برساند و موتور استنتاج عملیات استنتاج و تصمیم گیری را انجام دهد و سپس از طریق همین رابط کاربری پیام و خروجی را به شما نشان دهد.
انواع سیستمهای خبره
سیستمهای خبره مدلهای مختلفی دارند که به مرور زمان تکامل یافتهاند. در ادامه به صورت خلاصه هر یک از سیستمهای خبره را بررسی میکنیم.
سیستمهای مبتنی با قوانین (Rule-Based system)
سیستم مبتنی بر قوانین اولین نوع سیستمهای خبره است که در دهه ۱۹۶۰ پدیدار شد. این سیستمها مجموعهای از قوانین اگر-آنگاه (If-then) را برای تصمیمگیری استفاده میکردند. هر قانون به همین شکل ساده در پایگاه دانش ذخیره میشد و سیستم به سادگی به نتیجه گیری میپرداخت. سیستم MYCIN که در ابتدا معرفی کردیم از همین روش برای تشخیص بیماریهای عفونی استفاده میکرد.
سیستمهای مبتنی بر قابها (Frame-Based Systems)
میتوان گفت نسل بعدی سیستمهای خبره سیستمهای مبتنی بر قابها بودند که در دهه ۱۹۷۰ توسعه دادهشدند. در این سیستم از ساختارهای داده نسبتا پیچیدهتری به نام قاب یا فریم استفاده میکردند که هر کدام نمایانگر اشیا یا مفاهیمی بودند. هر قاب هم شامل مجموعهای از ویژگیها بود. سیستمهای خبره متبنی بر قاب توانایی نمایش دادن دانش به صورت سلسله مراتبی و رابطهای را داشتند و از همین رو بسیار کارامد بودند. سیستم Xcon از این نوع سیستم خبره استفاده میکرد.
سیستمهای مبتنی بر مدل (Model-Based Systems)
در دهه ۱۹۸۰، سیستمهای مبتنی بر مدل توسعه یافتند. این سیستمها از مدلهای ریاضی و فیزیکی برای شبیهسازی رفتار سیستمهای پیچیده استفاده میکردند. مدلهای استفاده شده در این سیستمها معمولاً بر پایه قوانین علمی و دادههای تجربی بودند. این سیستمها دقت بالاتری در تجزیه و تحلیل داشتند از همین رو در حوزههای مهندسی و پزشکی مورد استفاده قرار میگرفتند. سیستمهای معروف تشخیص و پیشبینی خرابی از این نوع سیستم خبره استفاده میکردند.
سیستمهای مبتنی بر شبکههای عصبی (Neural Network-Based Systems)
همانطور که گفتیم ظهور و گسترش شبکههای عصبی تاثیر زیادی بر دنیای هوش مصنوعی گذاشت. یکی از این تاثیرات بکارگیری آنها در سیستمهای خبره بود. شبکههای عصبی این قابلیت را دارند که از دادهها یاد بگیرند و خود را با شرایط جدید تطبیق دهند. این امر به آنها این امکان را داده که وقتی با مسئله پیچیده و نقص در دادهها مواجه میشوند نتیجه بهتری ارائه کنند. سیستم ALVINN که برای کنترل خودروهای خودران استفاده میشد نمونهای از این سیستم به حساب میآید.
سیستمهای مبتنی بر منطق فازی (Fuzzy Logic-Based Systems)
بر خلاف منطق کلاسیک ( که تنها از مقادیر درست و غلط و یا همان صفر و یک استفاده میکند)، منطق فازی میتواند با درجات مختلفی از حقیقت کار کند. یعنی به جای این که یک گزاره کامل درست یا کاملا غلط باشد میتواند بخشی از آن درست باشد و بخشی از آن غلط باشد. یعنی چیزی بین صفر و یک. مثلا در منطق فازی دمای یک اتاق میتواند تقریبا گرم باشد.
در دهه ۱۹۹۰ سیستمهای خبره مبتنی بر منطق فازی معرفی شدند. این سیستمها میتوانستند دادههای نامعین و مبهم را نیز پردازش کنند که گام مهمی در سیستمهای خبره به حساب میآمد.
سیستمهای ترکیبی (Hybrid Systems)
منظور از سیستمهای ترکیبی یا هیبریدی سیستمهایی است که از چند سیستم خبره در کنار هم استفاده میکنند تا دقت و کارایی را افزایش دهند. تقریبا از دهه ۲۰۰۰ این سیستمها شکل گرفتند. در سیستمهای هیبریدی شما میتوانید سیستمی مرکب از شبکههای عصبی و منطق فازی داشته باشید یا سیستمهای دیگر که بر اساس هدف و کاربرد با هم ترکیب میشوند.
کاربردهای سیستمهای خبره
همانطور که گفتیم سیستمهای خبره بیشتر در حوزههای تخصصی دانش محور بکار گرفته میشوند. در ادامه برخی از حوزهها که سیستمهای خبره کاربردهای مناسبی داشتهاند را با هم بررسی میکنیم.
پزشکی
همانطور که دیدیم اولین سیستمهای خبره در حوزه پزشکی بودند. سیستمهای خبره در تشخیص بیماری و ارائه توصیههای درمانی و همچنین مدیریت اطلاعات در بیمارستانها کاربرد دارند.
مالی
سیستمهای خبره برای تحلیل بازار و پیشبینی قیمت سهام، مدیریت ریسک میتوانند کاربرد داشته باشند و مشاورههای دقیقتری ارائه کنند.
کشاورزی
سیستمهای خبره در تشخیص آفات وبیماری های و بهبود فرآیندهای کشاورزی میتوانند با دادن توصیههای کاربردی به کشاورزان کمک کنند.
صنعت و تولید
همانطور که با اکس کان آشنا شدیم، این سیستمها میتوانند در صنعت کاربردهای مختلفی داشته باشند. علاوه بر آن میتوانند خرابی ماشین آلات را پیشبینی کنند و همچنین به مدیریت زنجیره تامین کمک کنند.
حقوقی
سیستمهای خبره را میتوان به عنوان یک مشاور حقوقی در نظر گرفت. تنها کافیست در پایگاه دانش آنها قوانین حقوقی را قرار دهید تا همانند یک وکیل و متخصص شما را راهنمایی کنند.
همانطور که مشاهده میکنید، تقریبا هرجا که بتوان دانش تخصصی را جمع آوری کرد و در قالب یک سری قوانین و حقایق در پایگاه دانش ذخیره کرد و فرآیند استنتاج را به موتور استنتاج یاد داد، میتوان از سیستم خبره به عنوان یک متخصص ماشینی استفاده کرد. حالا چه حوزه پزشکی باشد یا چه حوزه کشاورزی یا چه این که جای یک مکانیک را بگیرد و خرابی ماشینها و سیستمها را پیشبینی کند.
چرا از سیستمهای خبره استفاده میکنیم؟
همانطور که دیدیم سیستمهای خبره از قدیمیترین زیرشاخههای هوش مصنوعی هستند و در نهایت میتوانند عملکرد یک متخصص را، آنهم تنها در یک حوزه تقلید کنند. با این اوصاف چرا باید از سیستمهای خبره استفاده کنیم؟
مسئله مهم در اینجا این است که سیستم خبره به عنوان یک ماشین، نه تنها خستگی پذیر است و میتواند به صورت پیوسته کار کند و همچنین در هر لحظه میتوانند مسائل زیادی را حل کند (کاری که یک متخصص انسانی نمیتواند)، بلکه سیستمهای خبره با تکیه بر پایگاه دانش گسترده خود میتوانستند پاسخهای دقیقتری ارائه کنند.
به عنوان مثال یک متخصص کشاورزی و آفات گیاهان احتمالا چند صد آفت را میتواند در ذهن بسپرد و راههای از بین بردن آنها را بداند، و اگر آفت جدیدی به او نشان دهید، او باید به منابع مراجعه کند. در حالی که یک سیستم خبره با تکیه بر تمام دانشی که از قبل دارد و فراموشی هم ندارد، میتواند به سرعت به سوالات شما پاسخ دهد. با این وجود سیستمهای خبره معایبی هم دارند. به عنوان مثال سیستمهای خبره خلاقیت ندارند. آنها همان جیزی را به شما میگویند که در پایگاه دانش آنها موجود باشد، اگر نباشد دیگر هیچ چیزی برای ارائه ندارند. همچنین جواب آنها به مسئله یکسان است اما یک متخصص انسانی میتواند به روشهای خلاقانهای کار را جلو ببرد.
سیستمهای خبره در دنیای امروز
واقعیت این است که امروزه با وجود یادگیری عمیق و سایر روشهای پیشرفته، چندان از سیستمهای خبره به صورت مستقل استفاده نمیشود. یکی از سیستمهای معروف IBM Watson Health است که به همراه فناوریهای دیگر هوش مصنوعی از سیستمهای خبره نیز استفاده میکند. ROSS نیز نمونه دیگری از سیستمهای خبره است که در حوزه حقوقی کار میکند. به راحتی میتوانید این روزها سیستمهای خبره بسیاری را پیدا کنید که هر کدام در صنعتی خاص خدماتی خاص را ارائه میدهند اما شاید در میان سرویسهای هوش مصنوعی بزرگ و معروف این روزها کمتر سیستمهای خبره را میبینیم.
سخن نهایی
سیستم خبره یا Expert System یک شاخه قدیمی از فناوری هوش مصنوعی هستند که همچنانهم کاربردهای جذابی دارند. سیستمهای خبره در پایگاه خود انبوهی از دانش را به صورت ساختار یافته ذخیره کرده اند و موتور استنتاج به روشهای مختلف با تکیه بر این دانشها عمل میکند. انواع مختلفی از سیستمهای خبره در طی تاریخ تکامل یافته است که هر کدام منجر به توسعه محصولات و سرویسهای قوی تر شده است. با ظهور روشهای قدرتمند و جدیدتر در حوزه هوش مصنوعی امروزه نظیر گذشته از سیستمهای خبره استفاده نمی شود اما همچنان این سیستمها به عنوان یک سیستم کارامد و مفید میتوانند به انسانها کمک کنند.