پرش به محتویات

سیستم خبره

سیستم های خبره سیستم هایی هستند که به ما پیشنهاد می دهند و یا حتی تصمیم می گیرند. در بعضی مواقع شما نیاز به سرعت عمل بالا در تصمیم گیری دارید و یا در بعضی مواقع شما دسترسی به افراد خبره ندارید به همین دلیل می آیید دانش افراد خبره را در سیستم در مخزن دانش سازمان ذخیره میکنیم و هر گاه که نیاز داشتیم دیگر از افراد خبر استفاده نمیکنیم و از سیستم خبره استفاده می کنیم. سیستم های خبره به دو حالت کلی تقسیم می شوند ۱ ذخیره پیشرو و ۲ ذخیره پس رو

زنجیره پیش رو

اطلاعات در یک فضای متمرکز ای ثبت می شود و بعد روی آن یک سیستم خبره سوار می کنیم. برخلاف این زنجیره پس رو در طول زمان تکمیل می شود. یعنی یک فضای یک رابطه دو طرف بین فرد و کامپیوتر برقرار می کند و این اطلاعات به مرور زمان در سیستم ثبت می شود به صورت سوال و جواب. یعنی یک فرض اولیه ای را در نظر می‌گیرد بعد بر اساس اون فرض یک سری سوالات مطرح می‌کند و این سوالات را کاربر جواب می دهد و نتیجه این می رود در همان دیتابیس متمرکز

  • ورود اطلاعات توسط کاربر
  • جستجوی اطلاعات
  • حصول نتیجه

زنجیره پس رو

  • فرض
  • پرسش از کاربر
  • تایید/عدم تایید فرضیات
  • حصول نتیجه

سیستمهای خبره

روش استدلال محور (CBR)

system

سیستمهای خبره

سیستم های خبره انواع مختلفی دارند و ساده ترین نوع آن CBR است مثلاً گوگل CBR است. شما وقایع مختلف و دانش های مختلف را دیتابیس ذخیره می کنید و وقتی یک اتفاقی می‌افتد اون کیس را سرچ می کنید و CBR

کیس های مشابه اون را برای شما می آورد و بر اساس آن تصمیم گیری می کنید حال تصمیم گیری می تواند اتوماتیک باشد یا دستی باشد

منطق فازی

فازی برای حالت هایی به کار می‌رود که دیتا بیشتر حالت کیفی دارد. مثل گرم ، سرد ،خوب، بد و غیره که عدد نیستند. فازی میاد این ها را تبدیل به عدد می کند. مثلاً نمره ۱۶ ممکن است به نظر یک نفر خوب باشد و به نظر یکی بد باشد. به شرایط مختلفی بستگی دارد و میاد بر اساس این دیتا توابع عضویت تعریف می کند مثلاً میگوید نمره ۱۶ به احتمال ۸۰ درصد نمره خوبی است و با احتمال ۲۰ درصد نمره بدی است و ۵ درصد عالی است. جمع اینها لزومی ندارد ۱۰۰ بشود. میاد به شرایط مختلف لینک میشود.

مثل آب و هوا یعنی نیاز از افراد مختلف در دمای مختلف در شرایط مختلف پرس و جو کرده است و این دیتا را از افراد مختلف جمع می کنند و بعد یک رابطه پیدا می کنند بین یک تابعی بین دما و رطوبت، میزان ابر و غیره یک تابع پیدا می شود و در نهایت خروجی می شود مثلاً هوا ۲۵ درجه است ولی ۳۵ حس میشود . یعنی از یکسری خبره با یکسری افراد دیگر دیتا را گرفتند و یک جدول درست کردند بارها می‌توانند از این جدول استفاده کنند. فازی مواردی استفاده میشود که دیتا حالت کیفی دارد

system

یادگیری ماشینی

برخی این را ماشین لرینگ می‌گویند چون بخش عمده ماشین لرینگ با شبکه عصبی کار می کند در شبکه عصبی شما حجم زیادی از دیتا را بهش می دهید که این دیتا مجموعه ای از ورودی ها و خروجی ها است . مثلا: شبکه های عصبی به صورت کمی کار

میکند اگر ورودی ستون کیفی باشد باید یک فازی بگذارید پشتش کیفی را کمی میکند بدهید حل کند بهش ANFIS می گویند نورو فازی همان شبکه عصبی است که ورودی کیفی دارد. حال شبکه عصبی چی کار می کند ؟ فرض کنید اگر شما یک ورودی و خروجی داشته باشید می توانید حدس بزنید در وسط چه فرایندی روی آن انجام شده است . مثلاً در این مثال ضربدر دو شده است احتمالاً به این رگرسیون میگویند . دوتا نقطه بهش می دهیم از این دو تا نقطه یک خط راست می کند بعد هر نقطه‌ای را بهش بدهید می اندازد روی این خط و y اش را می دهد این میشود رگرسیون خطی حال اگر نقاط بیشتری را بهش بدهید می توانید یک رگرسیون غیر خطی روی آن فیت بکنید . و بعد مجدد می توانید نقطه بدهید این برای یک ورودی و خروجی است.

اگر تعداد ورودی زیاد شود دیگر این رگرسیون جواب نمی دهد یا اگر رابطه بین ورودی و خروجی ها خیلی پیچیده باشند جواب نمی دهد. ولی بیس کار شبکه شبکه عصبی همین است یک رگرسیون با ابعاد بالاتر است. چطور کار میکند؟ میاد یک لایه درست می کند که به آن لایه مخفی می گویند مثلاً شما باید بهش بگید مثلاً سه تا لایه درست کن و لایه اول و دوم فلان است و نوع لایه را هم مشخص میکند بعد این شبکه عصبی میاد هر کدام از ورودی ها را به یک همه خروجی ها وصل می کند و یک رگرسیون بین هر ورودی با همه خروجی های لایه وسط می گیرد و تعداد زیادی رگرسیونی در می آورد. و ضرایب را طوری پیدا می‌کند که خطای رگرسیون مینیمم شود. بنابراین یکسری ضریب پیدا می‌کند که ضرایب وزنی گفته می شود و w1, w2,w3,... این برای خطای بهینه دارند یعنی میاد این ها را

تست میکند با عنوان ورودی ها و طوری پیداشون می کند که هر ورودی و خروجی که در این ضرایب قرار می گیرد مینیمم شود.

به این صورت یک جدول را درست میکند. اصطلاحا آموزش می بیند. حالا اینکه لایه ها چه باشند و چه نوعی باشند بستگی به مسئله دارد. مثلاً در جدول های زمانی از لایه های سری زمانی استفاده می کند. مثل آب و هوا یا بورس: تنها یک سری زمانی است که در طول زمان تغییراتی دارند. پس CBR ساده ترین و فازی دیتای کیفی و یادگیری ماشینی: ورودی اینها از سیستم مخزن دانش میاد مخزن می تواند آمار فروش مناطق مختلف باشد می تواند میزان رضایت یا عدم رضایت مشتری باشد و غیره مشکلات گذشته و راه حل هاش باشد. سیستم های خبره کاربرد های زیادی دارند و

جاهایی که سرعت بالایی نیاز هست مثلاً در ماشین های خودران یکی از اهداف این ماشین ها این است که ایمنی راننده را تامین کند کاربرد دارد. جاهایی که سرعت و دقت بالایی لازم است می توان از سیستم خبره استفاده کرد

شبکه عصبی

system

بهینه سازی

یک کاربرد دیگر سیستم خبره بهینه سازی است. مثلا اگر یک مدل رفتاری از یک فرایندی در سازمان داشته باشید مثلاً مدل رفتاری مشتری یا مدل رفتاری بازار را بتوانید در سیستم خبره مدل کنید میتوانیم نقطه بهینه بازار یا مشتری را پیدا کنید . یعنی برنامه محصول ما را چطور بچینیم که بیشترین سود را بدهد یا وارد چه مارکتی بشویم که بیشترین سود را بدهد. چهارم جاهای مدل دقیق کند باشد یا هزینه بر باشد به لحاظ مالی و زمانی مثالا می‌خواهید طرح اختلاط بهینه بتن را در

بیاورید برای اینکه این کار را انجام دهید و مقدار دقیق طرح اختلاط را در بیاورید باید مثلاً ۱۰۰۰ تا نمونه بسازید بعد این ها را بگذارید در نمودار و ببینید کدام بهینه ترین حالت است ست و بیشترین مقاومت را دارد هم زمان‌بر است چون برای هر نمونه باید ۲۸ روز صبر بکنید و هم گران است. پس می آیید ۵۰ تا مدل درست میکنید می دهید به شبکه عصبی ورودی و خروجی این شبکه عصبی می دهید بعد این ها را می دهید به یک مدل بهینه سازی در واقع مدل بهینه سازی از شبکه عصبی استفاده می کند برای ۹۰ تا نمونه دیگر دیتا بهش می دهید و خروجی به شما می دهد. ممکن است خروجی که به شما میدهد دقیق نباشد ولی می توانید یک محدوده ای را مشخص کنید بعد به جای اینکه ۹۰تا نمونه دیگر بسازید مثلاً ۱۰۰ عدد دیگر در آن محدوده می سازید یعنی محدوده پرت را می گذارید کنار و برای

محدوده نزدیک به جواب نمونه میسازید . این هم یک کاربرد دیگر سیستم‌های خبر است. حال روشهای بهینه سازی چند روش دارد: یک روش بهینه سازی دقیق داریم مثل برنامه ریزی خطی که در مهندسی سیستم ها با یکی از آن آشنا می شوید که روش سیمپلکس است. این به درد مدل های خطی میخورد یک روش ابتکاری هم داریم که روش های ابتکاری حل دقیق ندارند چون روش های ابتکاری از جستجو استفاده می کنند. مثلاً الگوریتم کیسه سربازی: می‌گوید شما یک مجموعه ای از وسایل دارید که در یک کیسه میخواهید جا بدهید این ها را چطور بچینید در کیسه جا شود . یا الگوریتم فروشنده دوره گرد: چه فروشنده دوره گرد یک سری وسایل دارد که برای فروش و یکسری شهر که باید برود می گوید چه مسیری را برود که بیشترین شهر را طی می کند.

از کجا حرکت کند که از بیشترین شهر شهر عبور کند بر فرض با منابع محدود مثلاً ۱۰۰ کیلومتر بیشتر نمی تواند حرکت کند. الگوریتم های مسیریابی گوگل بر این مبنا است. یکسری روشها فرآیند کاری هستند برای مسائلی هستند که خیلی پیچیده هستند و با روش های ساده ریاضی حل نمی شوند. فراابتکاری ها معمولاً از فرایندهای محیط زیستی الگو می گیرند

الگوریتم ژنتیک

مدل معروف آن الگوریتم ژنتیک است. الگوریتم ژنتیک می گوید شما یک راه حل دارید که solution شما یک کروموزوم است و دوتا solution مختلف دارید مثلاً فرض کنید solution این است که می خواهید یک قاب بسازید که سه عضو دارد و solution یعنی سطح مقطع هر کدام چقدر است. یک solution سه متغیره که در سازه بزرگتر تعداد متغیر ها بیشتر میشود. می گوید این ها را باهم ترکیب کنیم یک جواب

جدید ایجاد کن حال جواب جدید یک بخشی از solution را از یک والد به ارث می برد و یک بخش جواب را از دیگری ارث می برد. بعد این ها را چک میکنیم در تحلیل هامون که آیا بهتر شد یا خیر مثلاً سازه مان سبک تر شد یا خیر اگر سبک تر شد این جواب خودش می شود جزو والدین نسل بعدی و همینطور جواب ها به صورت درختی ایجاد می کنید تا به جواب بهینه برسید. نسلی که به مهارت های بیشتر دست پیدا میکند بقایش را تضمین می کند. یک مدل دیگر مدل الگوریتم مورچه ها است. که یک لانه داریم و یک غذا می گوید که مورچه ها به صورت کاملاً تصادفی حرکت می‌کنند و وقتی یک غذایی برخورد می کند این غذا را به سمت خانه برمی گردانند و مورچه زمانی که حرکت می کند از خودش یک مانع ترشح میکند به نام فرمون که در طول زمان تبخیر می شود علاوه بر این مورچه ای که مسیر کوتاه تری را

طی میکند فرمون بیشتری روی زمین می گذارد بنابراین بچه های دیگر که با آن برخورد می کنند همان مسیر را ادامه می دهند. بعد از یک مدتی می بینید که مورچه ها یک خط پروژه درست کردند. مسیری که این حرکت می کندsolution است به این الگوریتم مسیر حرکت مورچه می گویند. و این مسیر ها هر کدام با یک الگوریتمی یک فرمون براشون ایجاد می‌شود و این فرمون در طول زمان براش یک تابع مینویسیم و فرمان ها بر اساس میزان باقی ماندن روی زمین مرتب می کنیم. همیشه مسیری که بیشترین فرمان را دارند در بالاترین مکان می ایستد . البته بحث های دیگری هم هست ست که مثلاً ممکن است یک مسیر بهینه باشد که هیچ کس به آن برخورد کرده باشد پس باید یک سری مورچه رندوم ایجاد کنیم که از کنار فرمون ها طبعیت نکند یعنی شاخه شان را می بندیم و به صورت

رندوم می چرخند شاید مسیر کوتاه تری پیدا شود. یا به جهش راداریم مثلاً بچه از سه نسل قلبش دو تا متغیر را به ارث می برد با یک خصوصیتی در آن به وجود بیاید که هیچکدام از اجدادش نداشتند که به آن جهش میگویند. این جهش ممکن است شما را به یک solution خیلی بهتر برساند و این میشود مبنای نسل‌های بعدی. حال بحث های مختلفی وجود دارد در رفتار طبعیت در بهینه سازی

system