۱۳۸۸ دی ۲۳, چهارشنبه

منطق فازی چیست؟

منطق فازی یا Fuzzy Logic در سال 1965 توسط دکتر لطفی زاده معرفی شد.
منطق فازی در واقع میگه که یه گزاره لزومی نداری یا درست باشه یا غلط (صفر باشه یا یک) ممکنه مثلا یه گزاره 0.7 درست باشه!
درکش یه مقدار در ابتدا سخته! بگذارید یه مثال بزنم، شما از دوستتون می پرسید بنظرت حسین بلنده یا نه؟ دوستتون جواب میده ایییی، بلند نیست اما کوتاه هم نمیشه بهش گفت! اما در منطق باینری (یا منطقی که اکثر ما باهاش تو کامپیوتر آشنا هستیم) هیچ وقت برای یه گزاره همچین جوابی نمیده.
توی منطق باینری ما میگیم اگه قد مساوی یا بلند تر از 175 بود بگو بلند اگه کوتاه تر بود بگو کوتاه! اما آدم اینطوری نیست منطقش مثل مثال قبلی که زدم.
حالا این سوال پیش میاد که ما در حال حاضر از همین منطق باینری جواب های خیلی خوبی میگیریم، فازی به چه دردی میخوره؟
برای جواب به این سوال یه مثال دیگه میزنم! مثلا یه شرکت می خواد یه کارخونه بزنه در فاصله ی ماکزیمم 200 کیلومتری تهران، که به تولید کننده ی یه مدل مواد اولیه نزدیک تر از 10 کیلومتر باشه و قیمت زمین هم اونجا هر چی کمتر باشه بهتر.اول یه بار با منطق باینری میریم پیش، اولین نمونه فاصلش با تهران 190 هست و با مواد اولیه هم 9 کیلومتر فاصله داره و قیمت زمین هم اونجا 2000 واحد هست، چندین تا نمونه دیگه هم برسی میشن که دو شرط اول رو ندارن، در آخر هم یه نمونه پیدا میشه که فاصلش تا تهران 201 کیلومتر هست و فاصلش با مواد اولیه 3 کیلومتره و قیمتش هم 1000 واحده! طبق منطق باینری این نمونه رد میشه چون فاصلش 201 هست و بیشتر از 200! اما حالا فرض کنید خود شما دارین تصمییم میگیرین، می یاین می بینید دو شرط آخر این مورد خیلی بهتر از اولین نمونس و تنها مشکل شرط اوله که 1 کیلومتر بیشتر از اون چیزیه که میخواین، با خودتون میگید خوب 1 کیلومتر در مقابل اون شرایط خوب که چیزی نیس و این مورد آخر رو انتخاب می کنید!
منطق فازی دقیقا همینو میگه! یعنی مثل منطق باینری که کاملا سخت گیرانه شرایط رو چک میکنه عمل نمی کنه بلکه مثل مغز آدم انعطاف پذیره.
این روزا تو خیلی چیزها از منطق فازی استفاده میشه، مثلا چند تاشون که شاید جالب باشن اینان:
  • ترمز های ABS و سیستم کروز.
  • دوربین ها
  • ماشین ظرف شویی
  • آسانسور ها
  • ماشین لباس شویی
  • بازی های رایانه ای
  • شناخت الگو ها
  • سیستم های تهویه
فکر کنم تقریبا فایده ی منطق فازی جا افتاده باشه. برای شروع استفاده از منطق فازی باید یه سری مفاهیم اولیه رو یاد بگیریم.
ببینید منطق فازی در واقع یه راه ساده برای رسیدن به یه نتیجه ی قطعی هستش بر اساس ورودی های ناقص، خطادار یا مبهم! از یه سری قانون خیلی ساده هم پیروی می کنه:
كد:
IF x AND y THEN z
IF a OR b THEN c
همونطور که می دونید if در زبان برنامه نویسی چیز جدیدی نیست! اما با یه مثال ساده شاید بشه فرقش رو نشون داد.
در نظر بگیرید دارید یه سیستم تهویه طراحی می کنید، توی سیستم های فازی بجای استفاده از شرط هایی مثل temprature>60C یا 30C<60c align="left">از اصطلاحات زیر استفاده می کنیم:
كد:
IF temperature IS very cold THEN stop fan
IF temperature IS cold THEN turn down fan
IF temperature IS normal THEN maintain level
IF temperature IS hot THEN speed up fan
دقیقا مثل وقتی که شما توی ماشین نشستین، می بینید هوا خیلی گرمه بدون اینکه دمای دقیق توی ماشین رو بدونید کولر ماشین رو روشن می کنید و روی دمای کم میگذارید!
اگر دقت کنید هیچ ELSEای وجود نداره، چون دما می تونه هم سرد باشه هم متوسط با درجه های مختلف!
اپراتور های AND، OR و NOT که باهاشون توی منطق باینری آشنا هستیم توی منطق فازی هم وجود دارن.
قبل از تعریف این عملگر ها باید بدونیم مجموعه های فازی یا Fuzzy sets به چه معنی هستند. همونطور که گفتیم توی منطق فازی درجه ی درستی لزوما نباید 0 یا 1 باشه و یه گزاره می تونه مثلا 0.3 درست باشه.
بعد گفتیم که تو منطق فازی می تونیم از هوای گرم یا قد بلند صحبت کنیم، اما باید اول اونارو برای سیستم فازیمون تعریف کنیم! هر کدوم از این دسته ها یه مجموعه ی فازی رو تشکیل میدن.
در واقع یه مجموعه ی فازی یه جفت (A, m) هست که A یه مجموعه هست و m یه تابع با دامنه ی A و برد [0,1]. به ازای هر x عضو A، m(x) درجه ی عضویت یا درستی x رو نشون میده!
می دونم یه کلمه از چند تا جمله ی قبل نفهمیدین الان بصورت نمودار میبینیدشون و می فهمید که چیز خیلی پیچیده ای نیست!اتفاقا من می خواستم همین الان بگم که هیچی نفهمیدم
" اون که 100 البته. اما عجیبه فقط شما می خواستید اینو بگید. "
...
" عزیزان من، بابا اگه با هم کاری دارید برید بیرون حرفاتونو بزنید، انقدم به هم نچسبین... "
ببخشید، مربوط به درس بود حرفمون!
" میشه بگین چی بوده بقیه هم استفاده کنن؟ "
امممم... بله، ازم پرسیدن عینکمو چن خریدم، منم با توجه به منطق فازی گفتم زیاااااد!
" باز جوابت کمی امیدوار کننده بود. "
خوب حالا که تعریف فازی ست هارو فهمیدیم میریم که اونارو توی نمودار ببینیم و عملگر هارو هم از روی شکل و با توجه به تعریفشون بررسی کنیم:


به عنوان مثال این شکل مجموعه ی فازی جوان رو نشون میده، شما وقتی از دوستتون می پرسین بنظرت علی جوونه؟
دوستتون اگه علی 17 سالش باشه میگه آره، اگه 25 سالش باشه میگه اییی، آره هنوز میشه بهش گفت جوونه، اگه 28 سالش باشه میگه خیلی جوون نیس و اگه 50 سالش باشه میگه نه!
این مجموعه ی فازی هم در واقع همین رو میگه! همونطور که میبینید قبل از 20 سال m(B) یک هست، یعنی 0 تا 20 کاملا عضو مجموعه ی جوان هست، هر چی که میریم جلوتر عضویت توی مجموعه ی جوانی کمتر شده، توی 25 سالگی درجه ی عضویت یا درستی 0.5 هست و توی 28 سالگی 0.2 و بعد از 30 سالگی 0 که یعنی از این سن به بعد اصلا جوان نیست!
بنظرم الان یکم بهتر مطلب جا افتاده باشه! حالا فرض کنید دو تا مجموعه ی فازی زیر رو داشته باشیم:


مجموعه ی اول رو در ابتدا در نظر میگیریم. تعریف NOT توی شکل بصورت زیره:

یا به عبارتی:
كد:
NOT A = (1 - m(A))
خوب حالا دو مجموعرو که بالاتر نمودارشون هست رو در نظر بگیرین، تعریف AND روی اون دو مجموعه بصورت زیره:

یا به عبارتی:
كد:
A AND B = minimum(m(A), m(B))
OR هم قاعدتا تا الان حدس زدید به چه صورت خواهد بود:
كد:
A OR B = maximum(m(A), m(B))
خوووووب! اینم مقدماتی بود از منطق فازی. البته اینا مفاهیم خیلی اولیه ی منطق فازی بودن، اما توی کار از همین مفاهیم خیلی ساده و ترکیبشون میشه نتایج خیلی عاقلانه ای گرفت.
ما تا اینجا فقط به پروسه ی Fuzzification پرداختیم! بعد از اینکه عملیات فازی روی سیستم انجام شد در نهایت یه جواب قطعی می خوایم. برای رسیدن به یه جواب قطعی از پروسه ی Defuzzification استفاده میشه.

منبع:
http://www.syavash.com/portal/users/siavash/blogs/farsi-what-is-artificial-intelligence-fa

هوش جمعی




فرض كنید شما و گروهی از دوستانتان به دنبال گنج می‌گردید. هر یك از اعضای گروه یك فلزیاب و یك بی‌سیم دارد كه می‌تواند مكان و وضعیت كار خود را به همسایگان نزدیك خود اطلاع بدهد. بنابراین شما می‌دانید آیا همسایگانتان از شما به گنج نزدیكترند یا نه؟ پس اگر همسایه‌ای به گنج نزدیكتر بود شما می‌توانید به طرف او حركت كنید. با چنین كاری شانس شما برای رسیدن به گنج بیشتر می‌شود و همچنین گنج زودتر از زمانی كه شما تنها باشید، پیدا می‌شود.


این یك مثال ساده از رفتار جمعی یا
Swarm behavior است كه افراد برای رسیدن به یك هدف نهایی همكاری می‌كنند. این روش مؤثرتر از زمانی است كه افراد جداگانه عمل كنند. Swarm را می‌توان به صورت مجموعه‌ای سازمان یافته از موجوداتی تعریف كرد كه با یكدیگر همكاری می‌كنند. در كاربردهای محاسباتی Swarm intelligence از موجوداتی مانند مورچه‌ها، زنبورها، موریانه‌ها، دسته‌های ماهیان و دسته‌ی پرندگان الگو برداری می‌شود. در این نوع اجتماعات هر یك از موجودات ساختار نستباً ساده‌ای دارند ولی رفتار جمعی آنها بی‌نهایت پیچیده است. برای مثال در كولونی مورچه‌ها هر یك از مورچه‌ها یك كار ساده‌ی مخصوص را انجام می‌دهد ولی به طور جمعی عمل و رفتار مورچه‌ها، ساختن بهینه‌ی لایهء محافظت از ملكه و نوزادان، تمیز كردن لانه، یافتن بهترین منابع غذایی و بهینه‌سازی استراتژی حمله را تضمین می‌كند. رفتار كلی یك Swarm به صورت غیر خطی از آمیزش رفتارهای تك‌تك اجتماع بدست می‌آید یا به عبارتی یك رابطه‌ی بسیار پیچیده بین رفتار جمعی و رفتار فردی یك اجتماع وجود دارد. رفتار جمعی فقط وابسته به رفتار فردی افراد اجتماع نیست بلكه به چگونگی تعامل میان افراد نیز وابسته است. تعامل بین افراد، تجربه‌ی افراد درباره‌ی محیط را افزایش می‌دهد و موجب پیشرفت اجتماع می‌شود. ساختار اجتماعی Swarm بین افراد مجموعه كانالهای ارتباطی ایجاد می‌كند كه طی آن افراد می‌توانند به تبادل تجربه‌های شخصی بپردازند، مدل‌سازی محاسباتی Swarmها كاربردهای موفق و بسیاری را در پی داشته است مانند:
كد:

Function optimization
Finding optimal roots
scheduling
structural optimization
Image and data analysis
كاربردهای زیادی از مطالعه‌ی Swarmهای مختلف وجود دارد. از این دسته می‌توان به كولونی مورچه‌ها (Ant Colony) و دسته‌ی پرندگان (Bird Flocks) اشاره نمود.


Particle Swarm Optimization : PSO
الگوریتم PSO یك الگوریتم جستجوی اجتماعی است كه از روی رفتار اجتماعی دسته‌های پرندگان مدل شده است. در ابتدا این الگوریتم به منظور كشف الگوهای حاكم بر پرواز همزمان پرندگان و تغییر ناگهانی مسیر آنها و تغییر شكل بهینه‌ی دسته به كار گرفته شد. در PSO، particleها در فضای جستجو جاری می‌شوند. تغییر مكان particleها در فضای جستجو تحت تأثیر تجربه و دانش خودشان و همسایگانشان است. بنابراین موقعیت دیگر particleهای Swarm روی چگونگی جستجوی یك particle اثر می‌گذارد. نتیجه‌ی مدل‌سازی این رفتار اجتماعی فرایند جستجویی است كه particleها به سمت نواحی موفق میل می‌كنند. Particleها در Swarm از یكدیگر می‌آموزند و بر مبنای دانش بدست آمده به سمت بهترین همسایگان خود می‌روند.

Particle swarm Optimitation Algorithm

اساس كار PSO بر این اصل استوار است كه در هر لحظه هر particle مكان خود را در فضای جستجو با توجه به بهترین مكانی كه تاكنون در آن قرار گرفته است و بهترین مكانی كه در كل همسایگی‌اش وجود دارد، تنظیم می‌كند.
فرض كنید می‌خواهیم زوج مرتب [x,y] را طوری بدست آوریم كه تابع F(x,y)=x2+y2، مینیمم شود. ابتدا نقاطی را به صورت تصادفی در فضای جستجو، روی صفحه‌ی x-y انتخاب می‌كنیم. فرض كنید این Swarm را به 3 همسایگی تقسیم كنیم كه در هر همسایگی نقاط موجود با یكدیگر تعامل دارند. در هر همسایگی هر یك از نقاط به سمت بهترین نقطه در آن همسایگی و بهترین مكانی كه آن نقطه تاكنون در آن قرار داشته است، حركت می‌كند. برای حل یك مسئله چند متغیر بهینه‌سازی می‌توان از چند Swarm استفاده كرد كه هر یك از Swarmها كار مخصوصی را انجام می‌دهند. این همان ایده‌ای است كه Ant colony از آن ریشه می‌گیرد. از آنجا كه دانش Swarm intelligence بسیار جدید است در حال حاضر كاربردهای كمی از آن شناخته شده است. ولی صاحبنظران معتقدند با این رشد روزافزون، Swarm intelligence می‌تواند نقش مهمی را در علوم مختلف از جمله مهندسی نفت ایفا كند.



منبع:

http://www.petroleumtimes.com/articles/index.php

۱۳۸۸ تیر ۱۳, شنبه

IntroDuction

این وبلاگ رو با هدف آموزش مقدماتی هوش مصنوعی زدم .. در این کنار خودم هم چیزایی یاد می گیرم از دوستان .. نمی دونم هنوز از کجای هوش مصنوعی بنویسم یا چی بنویسم اما سعی خودم رو می کنم .