بات:
مقدمه ای بر هوش مصنوعی(پست شده در تاریخ 2007/09/08, 07:15:40)
هوش مصنوعی چیست؟فکر کنم جواب دادن به این سوال یه مقدار سخت باشه. چون در حال حاضر ما حتی تعریف دقیقی برای هوش نداریم!
واژه ی هوش مصنوعی (Artificial Intelligence) اولین بار توسط شخصی به نام John McCarthy استفاده شد با این تعریف: "علم و مهندسی ساخت ماشین های هوشمند".
اینم یه تعریف دیگه از هوش مصنوعی که تو خیلی از منابع بکار رفته:
" هوش مصنوعی عبارت است از مطالعه ی این که چگونه کامپیوترها را میی توان وادار به کارهایی کرد که در حال حاضر انسانها آنها رابهتر انجام میدهند "
خوب من کلا زیاد از تعریف خوشم نمی یاد، در نتیجه این قسمت رو همینجا خاتمه میدم، با مثال فکر کنم بهتر بشه مفاهیم رو نشون داد! در آخر اگر دوست داشتین تعریفی که خودتون از هوش مصنوعی پیدا کردینو بگید!
تاریخ هوش مصنوعی
میشه گفت مبحث هوش مصنوعی و پیشرفتش از سال 1950 شروع شد! توی این سال شخصی بنام آلن تورینگ (Alen Turing) تستی بنام تورینگ تست رو معرفی کرد و گفت که هر ماشینی که بتونه از این تست سربلند بیرون بیاد رو میشه یه ماشین هوشمند شمرد. تا الان هیچ ماشینی نتونسته این تست رو با موفقیت پشت سر بگذاره، که خیلی هم عجیب نیست چون برای یه ماشین تست خیلی سختیه! جالب اینه که تقریبا هر انسان سالمی می تونه به راحتی تو این تست قبول بشه حتی یه بچه ی 5-6 ساله!
بابا کشتی مارو! حالا بگو اصلا موضوع تسته چیه!
" خوب اگه اجازه بدی الان میگم! "
من اجازه نمیدم!
" مهم نیس! "
توی این تست جناب آقای تورینگ گفته بودند که بهترین معیار برای اینکه به یه ماشین بشه گفت هوشمند، اینه که از دو صفحه ی تایپ استفاده کنیم (یا در حال حاضر کیبورد کامپیوتر) و پشت یکیشون یک آدم بشینه و پشت اون یکی ماشین مد نظر! اگر ماشین بتونه طرفش رو متقاعد کنه (یا به عبارتی گول بزنه) که داره با یه آدم مکاتبه می کنه نه یه ماشین، تست رو با موفقیت رد کرده!
همونطور که میبینید پشت سر گذاشتنش این تست برای یه ماشین خیلی سخته! نکته ی جالب دیگه اینه که این تست حالت فیزیکی دو طرف رو کنار گذاشته و فقط طرز فکر دو طرف مهمه!
هر ساله یه مسابقه ی جهانی در این رابطه وجود داره که اولا به ماشینی که شبیه ترین رفتار رو به انسان داشته باشه ، ثانیا به ماشینی که بتونه تست تورینگ رو با موفقیت پشت سر بگذاره جایزه میدن! که البته جایزه ی دوم رو هنوز هیچ کی نتونسته بگیره!
من یه ماشین بی ام و دارم، فکر کنی اون بتونه این تست رو پشت سر بگذاره؟
" وااای!!! منظور از ماشین یه پاسخ گو هست! می تونه یه برنامه کامپیوتری باشه مثلا! "
ببخشید شماره تلفن شمارو می تونم داشته باشم!
" لطفا فاصله رو رعایت کنین آقا! اسلام رو زیر سوال نبرین... "
ای بابا، من دیدم ایشونم مثل من بی ام و دارن گفتم با هم تفاهم داریم خواستم یکم بیشتر آشتا شیم!
" لطفا بعدا آشنا شین! "
تو سال 1958 آقای John McCarthy زبان برنامه نویسی Lisp رو اختراع کردند! که احتمال داره خیلی از شما اسمشو شنیده باشید!
زبان برنامه نویسی Prolog هم تو همین دوره در سال 1972 بوجود اومد که الان هم یه زبون قوی در زمینه ی منطق حساب میشه!
تو سال 1997 دیپ بلو (Deep Blue) که یه ماشین شطرنج باز بود، تونست قهرمان جهان "گری کاسپارف" رو شکست بده! که این یه موفقیت بزرگ بود توی جهان هوش مصنوعی! می تونید بازی ششم رو که کاسپارف می بازه تو اینجا ببینید!

در سال 1999 شرکت سونی اولین روبات خونگی پیشرفته که در قالب یک سگ بود رو با نام AIBO معرفی کرد! این روبات واقعا یک شاهکار بود و البته هست! می تونید اطلاعات بیشتری رو درباره ی این ربات اینجا ببینید.
یادم رفت بگم! من از تاریخ هم بدم میاد! هیچ وقت نمره ی خوبی ازش نتونستم بگیرم! همیشه مجبور بودم با استاد یا معلم تاریخ صمیمی شم که بتونم درسش رو پاس کنم! در هر صورت دیگه تاریخ بسه. احتمالا شما هم زجر کشیدین تا به اینجا برسین! هوش مصنوعی خیلی جالب تر از این چیزاییه که تا اینجا نوشتم! قول میدم، باور کنید خیلی جالب تره.
موارد استفاده ی هوش مصنوعی
این روزا واقعا نمی شه رشته ای رو نام برد که نشه توش از هوش مصنوعی استفاده کرد! از پیش بینی وضعیت آب و هوا گرفته تا شناختن صورت آدم یا فهمیدن دست خط انسان ها! دیگه چه رشته هایی بگم که جالب باشه... آهان تو اقتصاد، رباتیک، تشخیص صدا، انواع نرم افزارای کامپیوتر و ... حتی تو بازی های کامپیوتری! آره همون جنرالز، کانتر یا وار کرفتی که بازی می کنین! تو همشون مقدار زیادی هوش مصنوعی بکار رفته!
تو نید فور اسپیدم بکار رفته؟
" تو هر بازی، که کامپیوتر به خودی خودش بازی می کنه هوش مصنوعی بکار رفته! "
من نمیدونم توی نید فور اسپید کامپیوتر هم بازی می کنه یا نه! فقط تا یه جاییش رسیدم که وقتی رو پلی می زدم یه صدا میومد بد می گف سیدی نید فور اسپید رو بگذاربد تو کامپیوتر! جالب اینه سیدی تو کامپیوتر بود! احتمالا هوش مصنوعیش ضعیف بوده که نمی فهمیده، یا شاید اینم جزو بازیش بوده.
بابا باید کرکشو نصب می کردی، بیا من شمارمو میدم بزنگ بهت میگم چیکارش کنی!
" بابا این کارارو بگذارین برا بعد!!! بسه! ادامه میدیم! "
میشه یه مثال دیگه در این مورد بزنید؟
" البته! یه مثال جالب! همین اینترنتی که شما الان تو خونه استفاده می کنی اولش برای ایجاد شبکه های هماهنگی برای ارتش بوده! که بعد ها گسترش یافته تا به اینجا رسیده!
یا مثلا GPS! نگاه نکنید الان هر کسی می تونه یه GPS تهیه کنه! این سیستم در ابتدا توی ارتش آمریکای جهان خوار استفاده می شده برای پیدا کردن موقعیت و مختصات جغرافیایی سرباز ها! "
چند مبحث از هوش مصنوعی
هوش مصنوعی خیییلییییی وسیعه! خیلی بیشتر از اونی که فکر می کنید! از اینجا به بعد می رسیم به جاهایی که قولشو داده بودم که جالب باشن.من نمیتونم همه ی مباحث رو درباره ی هوش مصنوعی بگم! چون اولا خیلی بی سواد تر از اونیم که بخوام در باره ی اونا حرف بزنم دوما انقدر زیادن که اگه فرض کنیم یه آدم که خیییلییی در این رابطه می دونه، صبح تا شب هم دربارش حرف بزنه براتون نه سن شما قد می ده نه سن اون! البته انقدر جذاب هست که هم اون تا آخر عمرش حرف بزنه هم شما گوش بدین!
اگه همش حرف بزنه کی غذا بخوره؟ کی بخوابه؟
" ... "
سه مبحثی که در ادامه ی این نوشته میگم این ها هستند:
- شبکه ی عصبی (Neural Network)
- الگوریتم ژنتیک (Genetic Algorithm)
- منطق فازی (Fuzzy Logic)
شبکه ی عصبی
شبکه ی عصبی یا Neural Network یکی از مباحثیه که تو هوش مصنوعی این روزا خیلی خوب داره پیشرفت میکنه و خیلیم روش کار میشه!حالا اصلا چی هست؟
با چند تا سوال شروع می کنم.
تا حالا به این فکر کردی که مثلا تو یه آدمیو 10 سال قبل دیدی، بعد اتفاقا امروز دوباره اونو بعد از 10 سال می بینی! همه چی کلی تغییر کرده، صورتش، مقدار موش، صداش، قدش و خیلی چیزای دیگه. اما تو باز میشناسیش! خیلی جالبه ها! آخه از کجا؟؟؟ چطوری؟؟؟ مغز آدم خیلی انعطاف پذیری داره توی تغییرات یا خطا ها، همین مغز آدم رو خیلی جالب و پیچیده می کنه!
من یه مثال دیگه الان در این باره به ذهنم رسید، بگم؟
" بله حتما، خیلی خوبه که فعال باشی! "
مثلا من دوستامو امروز می بینم! بعد فردا میبینم بازم میشناسمشون!
خوب این که هنر نیس!
هنر نیس؟؟؟ تو که دوستای منو ندیدی هر روز میرن آرایشگاه، یه روز موهاشون آبیه یه روز زرد یه روز نارنجی! تازه صورتشونو که نگوووو.
آهان از اون لحاظ!
منم یه مثال بزنم؟
" بله، چه خوب که انقدر فعال شدین! "
امممم، آهان، مثلا من میام به این خانوم با شخصیتی می گم شماره موبایلم 0912...
" عزیز من! بابا چند بار بگم این کارارو بگذارید بعدا! آخه کلاس که جای شماره دادن نیس! "
شما نوشتن و خوندن رو یاد گرفتین! تا حالا به این فکر کردید که دست خط هر کسی با اون یکی فرق داره اما شما همه ی اونا رو می تونید بخونید؟ این دوباره منعطف بودن مغز آدم رو می رسونه! یا یه نکته ی دیگه، شما هر چقدر بیشتر تمرین کنید دست خطتون بهتر میشه! اینم نشون میده مغز آدم خودشو در طی تمرین به یه معیاری که به نظرش بهتره نزدیک تر می کنه!
اما چطوری؟ مغز آدم چجوری کار میکنه؟ تا حالا از خودتون پرسیدید چجوری یه چیز جدید یاد می گیرید یا چطوری فکر می کنید؟ هر آدمی باید اینو بدونه بنظر من! لا اقل باید یکم خودمونو بشناسیم.
مغز آدم از یه سری سلول عصبی (Neuron) تشکیل شده که هر کدوم سیگنال هایی برای هم میفرستند! جالبه بدونید این سلول های عصبی کاری که می کنن خیلییی سادست مثلا مثل حمع دو تا عدده اما چیزی که باعث میشه بتونن این کارای پیچیدرو انجام بدن اینه که تعداد این سلول ها خیلییی زیاده! مغز آدم حدود 10 به توان 11 تا از این سلول ها داره! تصور این عدد خیلی آسون نیست!
هر نورون تعدادی axom داره که مثل خروجی عمل می کنن و تعداد خیلی زیادی هم dendrite که به عنوان ورودی عمل می کنن. نورون ها یه مقدار مشخصی قدرت سیگنال نیاز دارن تا فعال شن، وقتی فعال شدن یه سیگنال الکتریکی برای سایر نورون ها میفرستن! هر چقدر نورون ها بیشتر استفاده بشن ارتباط بینشون (axonها و dendriteها) قوی تر میشه.
حالا ما همین سیستم رو سعی می کنیم کوچیکترش رو توی کامپیوتر شبیه سازی کنیم. کامپیوتر هایی که الان به اونا دسترسی داریم حتی قدرت پردازش 20 بیلیون نورون رو هم ندارن، ولی با تعداد کمی نورون هم می شه پاسخ های مناسبی از شبکه ی عصبی گرفت.
خوب حالا تو کامپیوتر چطوری نورون ها رو سازمان می دیم؟
نورون ها همونطوری که تو عکس می بینین توی لایه های مختلف قرار می گیرن، لایه ی اول رو لایه ی ورودی (Input Layer) می گن که ورودی ها رو میگیره و بر حسب قدرت ارتباطش با هر نورون توی لایه ی بعدی سیگنال ورودی رو به لایه ی بعد میفرسته! از این به بعد به قدرت ارتباط هر نورون با نورون دیگه وزن (Weight) اون نورون می گیم. مقدار هر نورون توی هر لایه به وزن و مقدار نورون های لایه ی قبلش بستگی داره. در نهایت ما یه لایه ی خروجی داریم که توی این شکل دو تا نورون توشه! لایه های میانی تعدادشون می تونه هر اندازه ای باشه، و تعداد نورون هاشم مثل بقیه ی لایه ها می تونه هر چقدر که بخوایم باشه. بعدا اشاره می کنیم که چطوری انتخاب کنیم تعداد لایه ها و نورون های هر لایه رو.

یه شبکه ی عصبی مثل یه تابع عمل می کنه که به تعداد نورون های ورودی، ورودی می گیره و به تعداد نورون های خروجی هم خروجی میده! مثلا این شبکه عصبی که تو شکل می بینید به این صورته:
حالا این تابع چه تابعیه؟ اینجاس که قدرت شبکه ی عصبی معلوم میشه!
f(x1, x2, x3, x4, x5) = y1 , y2
ما میایم و به این تابع 100 تا مثال که جوابشو می دونیم میگیم و هر بار عملیات بازپخشانی (Back propagating) رو انجام میدیم! بازپخشانی یه عملیاتیه که طی اون وزن نورون ها رو طوری تغییر میدیم که جواب های شبکه به جواب هایی که انتظار داشتیم نزدیک تر بشن! یعنی ما در اصل یه تابع می سازیم که خودمون نمیدونیم اون تابع چی هست و فقط چند تا مثال از اون رو داریم!
بگذارید یه مثال بزنم. مثلا شما چطوری جمع کردن رو یاد گرفتین؟ بهتون گفتن 2+2 میشه 4، 2+3 میشه 5 و ... انقدر مثال دیدید تا فهمیدید آهان پس جمع یعنی این!
دقیقا میتونیم همین رو به کامپیوتر یاد بدیم! یعنی یه شبکه عصبی با دو نورون ورودی طراحی می کنیم و یه لایه ی میانی با 3 تا نورون و در نهایت یه لایه ی خروجی با یه نورون (چون تابع جمع دو تا ورودی داره و یک خروجی)
بعد برای کامپیوتر چند تا جواب معلوم رو میگیم! مثلا میگیم 2 و 2 باید بده 4، 2 و 3 باید بده 5 و براش 1000 تا مثال میزنیم! در نهایت ازش میپرسیم حالا بگو 100 و 23 چی میشه؟ (اعدادی که تا بحال برای شبکه عصبیمون مثال نزدیم). و جواب میگیریم مثلا 123.0223! تعجب نکنید شبکه عصبی همیشه قرار نیست جواب قطعی بده، در نهایت می تونیم به یه روشی اونو به جواب قطعی تبدیل کنیم، مثلا توی این مثال روند کردن جواب میده!
ببخشید، چرا تعداد نورون های لایه ی میانی رو گفتین 3 تا؟
" سوال خوبیه! تعداد نورون های لایه های میانی می تونه هر چیزی باشه به جای 3، اما باید توجه داشته باشین هر نورونی که اضافه می کنیم از یه طرف گپ خطا رو کمتر می کنی اما از طرف دیگه زمان بیشتری برای پردازش می گیره و چون تعداد نورون ها زیاد شده تعداد خطا های کوچک هم زیاد تر می شن و یه خطای بزرگ رو ایجاد می کنن! پس باید با روش های مختلف بهترین حالت رو انتخاب کنیم. توی این مثال با آزمایش و خطا به این نتیجه رسیدیم که 3 تا بهترین نتیجرو به ما میده! "
پس بطور خلاصه ما اول یه شبکه ی عصبی طراحی می کنیم که در ابتدا می تونه هر نورونش وزن تصادفی داشته باشه، بعد شبکه ی عصبیمونو تعلیم میدیم با ورودی هایی که جوابشو داریم و بعد از تعلیم دادن به اون ورودی میدیم و ازش جواب می خوایم!
مثلا توی مسابقات شبیه سازی فوتبال خیلی وقت ها تیم ها بازی های دوستانه با هم میگذارن! هدف چیه؟ اینه که Agent ها شبکه ی عصبیشون تعلیم ببینه! جالب نیس؟ این یعنی کامپیوتر میتونه یاد بگیره و طی یادگیریاش تصمیم بگیره! بدون اینکه مغز داشته باشه.
انشاالله در آینده یه مثال از استفاده ی شبکه های عصبی توی هوش مصنوعی یه بازی می زنم چون بدون مثال هم فهمش یکم سخته هم باور کردنش!
الگوریتم ژنتیک
الگوریتم ژنتیک یا Genetic Algorithm (GA) در واقع شبیه سازی بقای انسان هست! تا حالا پیش خودتون فکر کردین این همه سال گذشته چطوری انسان ها از بین نرفتن و نسلشون پا برجاس؟ فکر می کنید رمز موفقیتشون چیه؟
فکر کنم 183462130973.347928374261010000001 باشه!
" ... "
حالا همین قانون رو توی کامپیوتر میشه شبیه سازی کرد! اما چجوری؟
فکر کنید میخوایم جواب این تابع رو بدست بیاریم:
بنظر خیلی پیچیده میاد! شاید با روش های تحلیلی حل نشه و نیاز به محاسبات عددی باشه! یکی از راه ها الگوریتم ژنتیک هست که بعضی اوقات به شکل باور نکردنی سریع به جواب میرسه.
X^2 + e^X + 3*sin(X) + int(-X^X) / X = 12
خوب پس من با یه مقدمه ازش شروع می کنم:

مثلا این کرومزوم هارو به عنوان جمعیت اولیه در نظر می گیریم:
بعد از اینکه جمعیت اولیه معلوم شد این کرومزوم ها توی تابع Fitness امتحان میشن و بر حسب اینکه به جواب مورد نظر نزدیکن یا نه یه عدد بین صفر تا یک بهشون اختصاص داده میشه که صفر یعنی اصلا بدرد نمی خوره و یک یعنی عالیه!
00001011 00100010 01000000 11100001 01101100 00000111 11001010 11110000 00010101 10000000 11100100
بر حسب سلامتی کرومزوم ها چند تا از اون ها به عنوان والدین نسل بعدی انتخاب میشن! مرحله ی بعدی مرحله ی Breed هست که طبق فرایند Crossover کرومزوم ها با هم ازدواج می کنن و بچه دار میشن!
وااای مگه یه مشت صفرو یکم می تونن با هم ازدواج کنن!
" یکم صبر کنی میبینی که می تونن! "
از کرومزوم های برگزیده دوتا دوتا انتخاب میشن و فرایند Crossover روی هر زوج بصورت زیر انجام میشه:
در بالا فرآیند Crossover رو برای زوج اول می بینید! همونطور که مشخصه اول هر کزومزوم از بیت 5ام به دو قسمت تقسیم شدن و 5 بیت اول کرومزوم اول با 3 بیت دوم کرومزوم دوم ترکیب شده و برعکس. به این ترتیب دو فرزند جدید بوجود اومد.
First pair: 00001|011 00100|010 After crossover: 00001010 00100011
همین کار برای بقیه ی کرومزوم ها هم انجام میشه، ممکنه یک کرومزوم دو یا چند بار در فرآیند Crossover بکار برده شه، احتمال شرکت کرومزوم هایی که سلامت بهتری دارند توی فرآیند Crossover بیشتره!
بعد از فرآیند Crossover یک مرحله داریم که احتمال وقوعش خیلی کم هست به نام جهش یا Mutation. توی این فرآیند یک بیت تصادفی از یه کرومزوم تصادفی رو عوض می کنند. مثلا اگر بیت چهارم یک کرومزوم انتخاب بشه در صورتی که صفر باشه اونو یک می کنند یا بلعکس.
این فرایند تو واقعیت هم وجود داره مثلا در یک آدم جهشی به وجود میاد و نابغه میشه یا در یه آدم دیگه جهش بوجود میاد و ناقص میشه! در الگوریتم ژنتیک هم همینطوره، یک جهش ممکنه کاملا مفید یا کاملا مضر باشه.
First chromosome: 00001011 After mutation: 00011011
بعد از این مرحله دوباره کرومزوم های جدید به جمعیت اولیه برای نسل بعد بر می گردند و این فرآیند ها تکرار میشه تا با یک تلورانسی به جوابی که می خوایم نزدیک شیم! این روش در مقایسه با بقیه ی روش های آزمایش و خطا خیلی پیشرفته تره و خیلی وقت ها بسیار سریعتر به نتیجه ی مطلوب میرسه!
انشاالله در آینده ی نه چندان دور یک مثال هم برای این مبحث از هوش مصنوعی رو بررسی می کنیم.
منطق فازی
منطق فازی یا Fuzzy Logic در سال 1965 توسط دکتر لطفی زاده معرفی شد.منطق فازی در واقع میگه که یه گزاره لزومی نداری یا درست باشه یا غلط (صفر باشه یا یک) ممکنه مثلا یه گزاره 0.7 درست باشه!
درکش یه مقدار در ابتدا سخته! بگذارید یه مثال بزنم، شما از دوستتون می پرسید بنظرت حسین بلنده یا نه؟ دوستتون جواب میده ایییی، بلند نیست اما کوتاه هم نمیشه بهش گفت! اما در منطق باینری (یا منطقی که اکثر ما باهاش تو کامپیوتر آشنا هستیم) هیچ وقت برای یه گزاره همچین جوابی نمیده.
توی منطق باینری ما میگیم اگه قد مساوی یا بلند تر از 175 بود بگو بلند اگه کوتاه تر بود بگو کوتاه! اما آدم اینطوری نیست منطقش مثل مثال قبلی که زدم.
حالا این سوال پیش میاد که ما در حال حاضر از همین منطق باینری جواب های خیلی خوبی میگیریم، فازی به چه دردی میخوره؟
برای جواب به این سوال یه مثال دیگه میزنم! مثلا یه شرکت می خواد یه کارخونه بزنه در فاصله ی ماکزیمم 200 کیلومتری تهران، که به تولید کننده ی یه مدل مواد اولیه نزدیک تر از 10 کیلومتر باشه و قیمت زمین هم اونجا هر چی کمتر باشه بهتر.اول یه بار با منطق باینری میریم پیش، اولین نمونه فاصلش با تهران 190 هست و با مواد اولیه هم 9 کیلومتر فاصله داره و قیمت زمین هم اونجا 2000 واحد هست، چندین تا نمونه دیگه هم برسی میشن که دو شرط اول رو ندارن، در آخر هم یه نمونه پیدا میشه که فاصلش تا تهران 201 کیلومتر هست و فاصلش با مواد اولیه 3 کیلومتره و قیمتش هم 1000 واحده! طبق منطق باینری این نمونه رد میشه چون فاصلش 201 هست و بیشتر از 200! اما حالا فرض کنید خود شما دارین تصمییم میگیرین، می یاین می بینید دو شرط آخر این مورد خیلی بهتر از اولین نمونس و تنها مشکل شرط اوله که 1 کیلومتر بیشتر از اون چیزیه که میخواین، با خودتون میگید خوب 1 کیلومتر در مقابل اون شرایط خوب که چیزی نیس و این مورد آخر رو انتخاب می کنید!
منطق فازی دقیقا همینو میگه! یعنی مثل منطق باینری که کاملا سخت گیرانه شرایط رو چک میکنه عمل نمی کنه بلکه مثل مغز آدم انعطاف پذیره.
این روزا تو خیلی چیزها از منطق فازی استفاده میشه، مثلا چند تاشون که شاید جالب باشن اینان:
- ترمز های ABS و سیستم کروز.
- دوربین ها
- ماشین ظرف شویی
- آسانسور ها
- ماشین لباس شویی
- بازی های رایانه ای
- شناخت الگو ها
- سیستم های تهویه
ببینید منطق فازی در واقع یه راه ساده برای رسیدن به یه نتیجه ی قطعی هستش بر اساس ورودی های ناقص، خطادار یا مبهم! از یه سری قانون خیلی ساده هم پیروی می کنه:
همونطور که می دونید if در زبان برنامه نویسی چیز جدیدی نیست! اما با یه مثال ساده شاید بشه فرقش رو نشون داد.
IF x AND y THEN z IF a OR b THEN c
در نظر بگیرید دارید یه سیستم تهویه طراحی می کنید، توی سیستم های فازی بجای استفاده از شرط هایی مثل temprature>60C یا 30C<temprature<60C از اصطلاحات زیر استفاده می کنیم:
دقیقا مثل وقتی که شما توی ماشین نشستین، می بینید هوا خیلی گرمه بدون اینکه دمای دقیق توی ماشین رو بدونید کولر ماشین رو روشن می کنید و روی دمای کم میگذارید!
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 که یعنی از این سن به بعد اصلا جوان نیست!
بنظرم الان یکم بهتر مطلب جا افتاده باشه! حالا فرض کنید دو تا مجموعه ی فازی زیر رو داشته باشیم:



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

OR هم قاعدتا تا الان حدس زدید به چه صورت خواهد بود:
A AND B = minimum(m(A), m(B))

خوووووب! اینم مقدماتی بود از منطق فازی. البته اینا مفاهیم خیلی اولیه ی منطق فازی بودن، اما توی کار از همین مفاهیم خیلی ساده و ترکیبشون میشه نتایج خیلی عاقلانه ای گرفت.
A OR B = maximum(m(A), m(B))
ما تا اینجا فقط به پروسه ی Fuzzification پرداختیم! بعد از اینکه عملیات فازی روی سیستم انجام شد در نهایت یه جواب قطعی می خوایم. برای رسیدن به یه جواب قطعی از پروسه ی Defuzzification استفاده میشه.
برای اینکه این فرایند ها رو قشنگ متوجه شید باید حتما یه مثال عملی ببینید! در آینده ی خیلی نزدیک یه مثال از منطق فازی رو با هم می بینیم.
خلاصه
ما توی این نوشته به تعریف هوش مصنوعی و مقدمات سه تا از اصلی ترین بخش های اون پرداختیم!باید توجه داشته باشین که اولا هوش مصنوعی خیییییلییی جالب تر از این چیزاییه که توی این متن دیدید! امید وارم کاری نکرده باشم که از هوش مصنوعی بدتون اومده باشه.
بعدشم ما توی این قسمت به بررسی جدا جدای سه مبحث شبکه ی عصبی، الگوریتم ژنتیک و منطق فازی پرداختیم، خیلی جاها این سه مبحث به هم کمک می کنن و با هم ترکیب میشن! مثلا با استفاده از الگوریتم ژنتیک بهترین چینش نورون ها توی شبکه ی عصبی رو بدست میشه آورد.
انشاالله در نوشته های آینده، بعد از آوردن مثال درباره ی هر کدوم از این مباحث به حالت های ترکیبی که خییلیی جالب ترن می پردازیم!
خسته نباشید
میدونم این متن خیلی طولانی شد، ببخشید دیگه. در هر صورت اگه تحمل و صبر اینو داشتین که کلشو بخونید خسته نباشید! اگر سوال یا نظری هم دارید می تونید همین پایین بپرسید.برای بحث در رابطه با هوش مصنوعی می تونید به انجمن هوش مصنوعی ایران مراجعه کنید!لینک های داخلی
لینک های خارجی
References
- http://en.wikipedia.org/wiki/Artificial_inteligence
- http://en.wikipedia.org/wiki/Neural_network
- http://www.gamedev.net/reference/articles/article1988.asp
- http://www.cs.stir.ac.uk/~lss/NNIntro/InvSlides.html
- http://en.wikipedia.org/wiki/Genetic_algorithm
- http://www.nitrogen.za.org/viewtutorial.asp?id=4
- http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol1/sbaa/article1.html
- http://en.wikipedia.org/wiki/Fuzzy_logic
- http://en.wikipedia.org/wiki/Fuzzy_set
- http://www.vojoudi.com/uncertainty/fuzzy_logic/farokhian.htm
- http://blog.peltarion.com/2006/10/25/fuzzy-math-part-1-the-theory
تگ ها
tutorials, fuzzy logic, genetic algorithm, neural network, AI, artificial intelligenceنظرها
- نام:
- ایمیل:
- وبگاه:
- نظر:
- sepide:
- پست شده در تاریخ 2008/07/02, 17:39:13
- " kheyli jaaleb bd matnetun ,bekhosus lahne nevshtatun aadamo kheyli jazb mikone baa inke asan tikehaaye tanzetun jaaleb nist vali baazam aadam jazb mikone "
- matin:
- پست شده در تاریخ 2008/06/29, 23:54:06
- " عالی بود محشر بود مرسی خیلی ممنون ایشا اجرتون با امام حسین!!!!!!!!!!!!! خیلی کمکم کردین. "
- علیرضا:
- پست شده در تاریخ 2008/05/23, 23:18:22
- " عالیه همینکه زحمت میکشی آموزش میدی خیلی خیلی ارزش داره. لذت بردم از کار زیبات. ادامه بدین لطفا "
- ayda:
- پست شده در تاریخ 2008/05/07, 19:07:05
- " heh man chizio nakhondam faghat anita behem goft biyam to sait hatman khobe ke hame tarif moikonan movafagh bashin he zat ziyad babye "
- roozbeh:
- پست شده در تاریخ 2008/05/07, 17:19:07
- " در باره ی اینده کامپیوتر بنویسید "
- roozbeh:
- پست شده در تاریخ 2008/05/07, 17:17:58
- " خوبه بد نیست "
- آنيتا پارسا:
- پست شده در تاریخ 2008/05/07, 16:16:51
- " komake ziyadi behem kard.mamno0namamoafagh bashid "
- ali:
- پست شده در تاریخ 2008/05/02, 18:31:39
- " salam. blog fogh olade'e gozashtid. khoshhal misham az tarigh email bishtar ba shoma dar ertebat basham. "
- safa:
- پست شده در تاریخ 2008/04/28, 21:25:08
- " toro khoda chand ta matlabe dorosto hesabi va mofassaltar az riaziate fuzzy benevisid.KHAHESH MIKONAM TA 2,3 ROOZE AYANDE LAZEM DARAM.PLEAZZZ... "
- milad:
- پست شده در تاریخ 2008/04/28, 01:11:54
- " kheyli khoob bood har chand mitoonest kameltar bashe baz ham mamnoonam "
- AliXerroR:
- پست شده در تاریخ 2008/04/27, 01:27:03
- " ععععععععععععععععععععععععععالیییییییییییییی بووود سیاوش روز به روز داری یه چیزی به ما یاد میدی دو نقطه دی "
- elmira:
- پست شده در تاریخ 2008/04/24, 02:20:39
- " مطالبتون جالب ساده بود.ازتون سوالی داشتم :سیستم برنامه نویسی شبکه ی عصبی چطوریه؟ مثلا اگه بخوای برای یک دست روبات learning مسیریابی دستش رو بنویسی! ایا روش های اماری بهتره یا شبکه عصبی ساده تره؟ممنون "
- sina:
- پست شده در تاریخ 2008/03/28, 15:21:21
- " I love a.i. but I have not reliable sources can you tell me about this sources or others? "
- sina:
- پست شده در تاریخ 2008/03/28, 15:16:51
- " can I ask any question about artificial intelligence? "
- sina:
- پست شده در تاریخ 2008/03/28, 15:15:27
- " this is a verygood page about a.i "
- ادریس:
- پست شده در تاریخ 2008/03/22, 08:13:06
- " سلام. سال نو رو تبریک میگم. مطلب واقعاً خوب بود. مخصوصاَ در مورد GA. واقعاً ازت ممنونم. "
- Roozbeh:
- پست شده در تاریخ 2008/03/07, 09:16:58
- " شايد گفتن اين مطلب خالي از لطف نباشه كه بدونين مبدا منطق فازي آقاي عسگر لطفي زاده هستند. براي اطلاعات بيشتر: http://en.wikipedia.org/wiki/Lotfi_Asker_Zadeh آقا سياوش بهتون تبريك ميگم. به كار خودتون ادامه بدين. :-) "
- reza:
- پست شده در تاریخ 2008/03/04, 19:22:40
- " لارمه توضیح درست یک مبحث علمی ارایه مطلب به صورت مدلل و منطقی به همراه مثال های ساده و روشن است، متاسفانه نگارنده تنها به ارایه تاریخچه و به قول معروف در هر مورد تنها به ارایه داستان آن اکتفا کرده است. خیلی کلی (یا کیلویی) گفتن نوعی فرار به جلو است. امیدوارم در صورت داشتن وقت کافی نگارنده نقاط ضعف متن خود را اصلاح نماید. "
- sama:
- پست شده در تاریخ 2008/03/01, 10:37:28
- " خیلی خوب بود من که واقعا استفاده کردم.خصوصا درمورد الگوریتم ژنتیک. درس احتمال فازی رو قبلا پاس کرده بودم اما چون الان در مورد الگوریتم ژنتیک پروژه دارم خواهش می کنم اگه می شه در این مورد بیش تر توضیح بدین. "
- Salman:
- پست شده در تاریخ 2008/02/29, 14:32:45
- " حقیقتش تا الآن دیلیلی نمیدیدم که این متن رو کامل بخونم ، ولی امروز که خوندم خیلی لذت بردم . موفق باشی سیاوش جان. "
- salehi:
- پست شده در تاریخ 2008/02/25, 17:35:16
- " عالی بود امیدوارم ادامه بدهید "
- meisameh keramati:
- پست شده در تاریخ 2008/02/23, 17:23:10
- " that 's GREAT thanks "
- رضا:
- پست شده در تاریخ 2008/02/23, 12:49:56
- " خیلی عالی بود دستت درد نکنه من که خیلی استفاده کردم "
- احسان:
- پست شده در تاریخ 2008/02/13, 01:00:29
- " خیلی خوب بود. ممنون. من ارشد هوش مصنوعی ام فکر می کنم برای کسایی که می خوان آشنا بشن با این رشته خیلی خوب و جذاب نوشتی. "
- emili:
- پست شده در تاریخ 2008/02/10, 09:42:15
- " خیلی جالب بود ولی لطفا در سطح زیر دیپلم و یا بهتره بگم زیر سیکل صحبت کنید تا اول راهنمایی هایی مثل من توی خوندنش بیچاره نشن و توی فهمیدنش بدبخت از مطالب جالبتون ممنون "
- س س:
- پست شده در تاریخ 2008/01/08, 21:27:04
- " دستت درد نکنه. عااااالییییییی بووووود. "
- asal rad:
- پست شده در تاریخ 2008/01/01, 17:31:51
- " salam khoob bood khaste nabashi "
- محمد:
- پست شده در تاریخ 2007/10/02, 15:24:17
- " ممنووووووون. بسیار خوب بود. "
- -:
- پست شده در تاریخ 2007/09/30, 02:35:41
- " -- "
- -:
- پست شده در تاریخ 2007/09/30, 02:35:33
- " -- "
- -:
- پست شده در تاریخ 2007/09/30, 02:35:03
- " -- "
- سهیل:
- پست شده در تاریخ 2007/09/21, 06:11:51
- " دمت گرم. منتظریم مثال ها رو بنویسید آقا سیاوش. "
- محمد:
- پست شده در تاریخ 2007/09/20, 20:20:44
- " عالی بود!!! خوب است که حالا این همه منبع نوشته اند همه آنها هم باز بعد می گویید دزدی!!! باید قدر این جور آدمها که لااقل سعی در شریک شدن اطلاعاتشان دارند را دانست. خودشان هم جایی ادعا در عالم کل بودن نکرده اند. دوست عزیز کارتان عالی بود لطفا ادامه بدهید و به حرف دوستان کوته فکر گوش نفرمایید. "
- مهیار:
- پست شده در تاریخ 2007/09/20, 18:09:06
- " چه احساسی داری فکر میکنی خیلی بارته.با دزدی کردن مطالب....تازه کلی نقص داره "
- Neutral:
- پست شده در تاریخ 2007/09/14, 21:42:02
- " :) فقط يه سوال؟ تعذاد Neuron ها رو نميشه خيلي زيادتر كرد . وزنشون (يا همون قدرتشون) هم همينطور...! پس چه جوري ميشه سرعت تصميم گيري رو بالا ببريم؟!!! بدون اينكه به سيستم نورون ها كاري داشته باشيم؟! "
- Mahdy:
- پست شده در تاریخ 2007/09/13, 08:15:13
- " Keyli Koob bood Mataleb e takhassosi ro be zaban sadeh vali gostardeh matrah kardeh i Dar zemn vole ha ham baes mishavad ke khanandeh khasteh nashavad Vaghe an dast marizad "
- امید پیله ور:
- پست شده در تاریخ 2007/09/11, 20:29:20
- " سلام خیلی جالب بودد. بهتره بگم عالیییییی بود. پیروز باشید "
- stabber:
- پست شده در تاریخ 2007/09/11, 16:18:36
- " @ ali jalali تنها رشته اي كه سياوش نخونده و فكر نكنم تا آخر عمر بخواد به صورت آكادميك بخونه كامپيوتر !! @ sYavash خب مثال ها رو هم مي زاشتي كه من حي تو لينكا وول نخورم . !! D: "
- ali jalali:
- پست شده در تاریخ 2007/09/11, 12:42:20
- " ye nazar dige in matnet baraye kasai ke ba com kheili ashnai daran ghabele fahme "
- ali jalali:
- پست شده در تاریخ 2007/09/11, 12:40:15
- " baba eyval bahal bood manam reshtam computere karshenasi mikhoonam shoma ham fekr konam reshtat com bashe "
- soha:
- پست شده در تاریخ 2007/09/11, 11:23:23
- " salam man taze be in mohit shoma omadam vali besiar jaleb bod baram "
- Alen:
- پست شده در تاریخ 2007/09/11, 10:40:31
- " سلام دوست گلم خیلی جالب و خوب گفته بودی ما از این منطق ها تو معدن هم استفاده میکنیم یکی از مثال هاش هم همون بحث تهویه بود که شما گفتید البته تهویه ما با گرما و سرما کمتر کار داره و اصل مبحث روی سالم و خطرناک بودن هوا از نظر درصد گازهاست خیلی استفاده کردم منتظر مثال های جالب هم هستم راستی اون خانوم و آقای ناقلا آخرش چیکار کردن؟؟؟؟ :D: "
- شایا:
- پست شده در تاریخ 2007/09/11, 00:24:29
- " گاهی وقتها دلم میخواد سوار ماشین زمان شم و برگردم به اون سالی که فقط به خاطر 4 تا دوست ابله نرفتم یه مدرسهی دیگه تا بتونم رشتهی ریاضی رو بخونم و دربست به کامپیوتر بپردازم، تا الان احساس نکنم به درد هیچکاری نمیخورم! ولی خب وقتی کارهای تو رو دنبال میکنم میبینم تو داری جای همه ایرانیها به کامپیوتر و IT و ... خدمت میکنی، در نتیجه زیاد مهم نیست که من هیچکاری نمیکنم! موفق باشی پسر! فقط یهکم فکر کنم ته نوشتهات RTL و LTR قاطی پاتی شده باشه! "
- بشیر:
- پست شده در تاریخ 2007/09/10, 21:05:19
- " khoobe :D "
- Stabber:
- پست شده در تاریخ 2007/09/10, 20:56:48
- " kafidam "
- mohammad:
- پست شده در تاریخ 2007/09/10, 20:27:45
- " karet vagheAn kho0be vali bazi vaghta hamchin bad jo0ri ghat mizane age dorostesh koni kheyli behtare "
- محسن:
- پست شده در تاریخ 2007/09/10, 19:58:50
- " دستتتت درد نکنههه! عاااالیییی بود! در ضمن در جواب کامنت قبلی، این متن، متن علمیه طنز که نیستش :)))))) "
- asal:
- پست شده در تاریخ 2007/09/10, 19:43:13
- " متنت خیلی مزخرف بود بی مزهههههههه "
- HassaN:
- پست شده در تاریخ 2007/09/10, 17:53:17
- " dash siavash akhareshiiii damet garm vaghean aali bood bazam edame bede "
- سالار کابلی:
- پست شده در تاریخ 2007/09/10, 14:53:43
- " Brilliant ! Fantastic go on... "
- amin:
- پست شده در تاریخ 2007/09/10, 14:52:46
- " afarin syavash me3 hamishe aali "
- afshin:
- پست شده در تاریخ 2007/09/10, 13:30:40
- " kheili toope agha vaghean karet doroste avalash ziad kamel nabod ama alan kheili behtar shode kheili doost daram bahaton bishtar ashna besham tnx "
- NaViD:
- پست شده در تاریخ 2007/09/10, 10:46:17
- " aali ;) khaste nabashi "
مهمان ( 






