بارگیری...
خانه -> بلاگ
  • Follow Siavash on Twitter
  • Add Siavash on Facebook
  • Follow Siavash on Google+
بات:

مقدمه ای بر شبکه های عصبی
(پست شده در تاریخ 2008/06/04, 05:28:55)

در مقدمه ای به هوش مصنوعی سه بخش اساسی در هوش مصنوعی رو بطور خیلی خلاصه گفتیم! حالا توی این بخش می خوایم بطور خلاصه به شبکه های عصبی بپردازیم.
Question level 2 ببخشید؟
Answer " آخه من که هنوز چیزی نگفتم که می خوای سوال کنی! سوالت چیه حالا؟ "
Question level 2 من یادم رفت اون سه بخش اساسی چی بودن. می شه یک بار دیگه بگید؟
Answer " سه بخش عبارتند از:
  • شبکه های عصبی یا Neural Network
  • الگوریتم ژنتیک یا Genetic Algorithm
  • منطق فازی یا Fuzzy Logic
البته به این راحتی نمیشه هوش مصنوعی رو دسته بندی کرد. منظورمون از این دسته بندی این هست که این روز ها روی این ۳ مبحث بیشتر بحث می شه. "
خوب کسی یادش هست شبکه های عصبی هدف و خاصیت هاش چی بود؟
Question level 3 من تا جایی که یادمه در شبکه های عصبی مصنوعی یا Artificial Neural Networks محققان قصد داشتند که طریقه ی عملکرد مغز انسان در به خاطر سپردن اطلاعات و یادگیری رو شبیه سازی کنند.
محققان توی تحقیق هاشون دیدن که مغز انسان از تعداد خیلی زیادی عصب یا Neuron تشکیل شده که هر کدوم از این عصب ها به تعداد دیگه ای عصب متصل هستن و به همدیگه سیگنال هایی رو میفرستند. در بعضی شرایط عصب ها سیگنال رو از خودشون عبور میدن و اون رو تقویت می کنند و در بعضی شرایط هم از خودشون عبور نمیدن. با اینکه هر نورون ساختار خیلی پیچیده ای نداره مجموعه ی این نورون ها یک شبکه ی بسیار پیچیدرو تشکیل میده که قابلیت یادگیری و ذخیره کردن اطلاعات و تحلیل اون ها رو داره!
Answer " بسیار عالی! خیلی خوشحالم که خوب حرف های جلسه ی قبل یادت مونده! همونطوری که دوستمون گفتن مغز انسان تعداد خیلی زیادی نورون داره که حدودا ۱۰ به توان ۱۲ تا می شه. ولی هر نورون حدودا فقط به ۱۰ به توان ۳ نورون دیگه وصل هست که این نشون می ده ارتباطات بین این نورون ها انتخاب شده هست!
خوب حالا کسی یادش هست که محققا به چه نحوی سعی کردند شبکه های عصبی رو شبیه سازی کنند؟ "
Question level 4 تا جایی که من یادم هست گفتید اول نورون های مصنوعی رو تعریف می کنند به این صورت که هر نورون یه تعداد ورودی و خروجی داره و یک بایاس و هر ورودی هم یک وزن (Weight) داره.
بعد این نورون ها رو توی چند لایه قرار می دن که به لایه ی اول لایه ی ورودی و به آخرین لایه لایه ی خروجی و به بقیه ی لایه ها لایه ی مخفی یا میانی میگن. تعداد نورون های لایه ی ورودی و خروجی بسته به تعداد ورودی و خروجی تعیین می شن اما تعداد لایه های میانی و نورون های هر لایه می تونه هر مقداری باشه که البته هر مقداری از اون نتیجه ی مطلوبی رو به ما نمیده و باید انتخاب شده باشه.
عالیه! ممنونم از همکاریتون!
البته نورون ها فقط از بخش هایی که شما گفتید تشکیل نمی شن و ممکن هست بر حسب نوع شبکه پارامتر های دیگری هم داشته باشن که بعدا بهشون اشاره می کنیم.

پرسپترون (Perceptron)

تا اینجا از دور به ساختار نورون ها و شبکه ی عصبی نگاه کردیم. حالا می خوایم آسون ترین شکل نورون رو در ساده ترین حالت بررسی کنیم.
پرسپترون یا Perceptron ساده ترین نوع مدلسازی نورون هست. از اونجایی که بررسی چند پرسپترون در لایه های مختلف کمی پیچیده هست برای شروع به بررسی یک عدد پرسپترون می پردازیم.
پرسپترون دارای یک سری ورودی خارجی. یک ورودی داخلی به نام بایاس (bias). یک threshold و یک خروجی هست. که در شکل سمت چپ می تونید اون رو ببینید!
پرسپترون
پرسپترون
هر پرسپترون نشاندهنده و معرف یک نورون هست. ورودی پرسپترون ها معمولا از جنس boolean هست اما در کل می تونه هر عددی باشه ولی خروجی همیشه یک boolean هست!
Question level 1 ببخشید! منظورتون از boolean چی هست دقیقا؟
Answer " مثلا وقتی می گیم خروجی یک پرسپترون همیشه boolean یا بولین هست یعنی خروجی می تونه دو مقدار ۱ و ۰ داشته باشه! که ۱ معرف درست یا true و ۰ معرف غلط یا false هست. "
Question level 2 پس یعنی ورودی پرسپترون می تونه هر مقداری باشه اما معمولا یا ۰ یا ۱ هست و خروجی اون ۱۰۰٪ ۰ یا ۱ هست. درسته؟
Answer " بله! کاملا درسته... "
در صورتی که خروجی یک پرسپترون یک باشه به اون پرسپترون می گیم پرسپترون فعال یا activated.
تمام ورودی ها از جمله بایاس دارای یک وزن هستند که این وزن ضرب در مقدار ورودی می شه. معمولا وزن بایاس برابر ۱ هست.
یکی از مهمترین عوامل هر نورون تابع فعال کننده یا Activation function اون نورون هست. تابع فعال کننده تعیین می کنه که با توجه به ورودی های نورون خروجی اون به چه شکل باشه. در پرسپترون ها ما یکی از ساده ترین توابع فعال کنندرو داریم. این تابع تمام ورودی های پرسپترون رو بعد از ضرب کردن اون ها در وزنشون با هم جمع می کنه. در صورتی که جمع اونا از threshold بیشتر یا مساوی بود خروجی ۱ خواهد بود یعنی پرسپترون فعال خواهد شد و در غیر این صورت پرسپترون غیر فعال خواهد شد. پس در صورتی که شرط زیر برقرار باشه یک پرسپترون فعال خواهیم داشت:

در اصل threshold مثل یک دیوار می مونه. اگر سیگنال انرژی کافی برای رد شدن از دیوار رو داشته باشه از روی اون عبور می کنه. در غیر این صورت پشت دیوار می مونه.

یادگیری در پرسپترون

از خصیصه های اصلی پرسپترون ها قابلیت یادگیری یا train شدن هست. این یادگیری در پرسپترون ها supervised هست. به این مفهوم که ما باید تعدادی ورودی به همراه خروجی صحیح داشته باشیم تا پرسپترون بتونه اون رو تقلید کنه.
یادگیری پرسپترون ها با این صورت هست:
  1. یک خروجی تولید می کنند.
  2. خروجی رو با خروجی که باد می بوده مقایسه می کنند.
  3. خودشون رو کمی تنظیم می کنند تا به خروجی نزدیک تر بشن.
بعد از تکرار شدن این مراحل به تعداد کافی پرسپترون اصتلاحا به رفتار صحیح همگرا یا converge میشه!
به این روش یادگیری delta rule یا قانون دلتا می گن. در این روش یادگیری تغییر وزن در هر مرحله به صورت زیر محاسبه می شه:

که دلتا در اون تفاوت خروجی مورد نظر و خروجی نورون بوده و xi مقدار ورودی هست.
Question level 3 پس یعنی مقدار جدید وزن هر نورون می شه تفاوت خروجی مورد نظر و خروجی نورون ضرب در مقدار ورودی اون نورون؟
Answer " به جز قسمت اول بقیه ی حرفت درسته. این مقدار وزن جدید نیست بلکه به وزن قبلی اضافه میشه! "
Question level 3 پس یعنی مقداری که بدست میاد میزان تغییرات در وزن قبلی هست! الآن متوجه شدم.
Answer " بسیار عالی. "

مثال تابع OR

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

دو محور دو ورودی پرسپترون هستند. همونطور که می بینید پرسپترون فضا رو به دو قسمت مجزا کرده به این صورت که فضای بالای خط سبز رنگ خروجی + یا ۱ خواهند داشت و فضای پایین خط خروجی - یا ۰. پس در صورتی که ورودی ها ۱ و ۱ یا ۰ و ۱ یا ۱ و ۰ باشند خروجی ما + یا ۱ خواهد بود و در صورتی که ورودی ها ۰ و ۰ باشند خروجی - یا - خواهد بود! پس تونستیم با یک پرسپترون ساده تابع OR رو بخوبی در بیاریم.
Question level 1 ببخشید معادله ی این خط رو ما بهش دادیم؟
Answer " نه! اگر معادله ی خط رو ما می دادیم که دیگه یادگیری در کار نبود! ما برای پرسپترون چندین بار مثال زدیم و پروسه ی یادگیری که بالا توضیح دادم به همون تعداد دفعه اجرا شده. یعنی مثلا دو ورودی رو ۱ دادیم و گفتیم خروجی باید ۱ باشه. بعد یک ورودی ۱ و یک ورودی ۰ دادیم و گفتیم خروجی باید ۱ باشه و بعد دو ورودی ۰ دادیم و گفتیم خروجی باید - باشه! و همین کار رو چندین بار تکرار کردیم. و پرسپترون با استفاده از تابع یادگیری فضا رو به دو قسمت مثبت و منفی تقسیم کرده. "
Question level 3 خوب کل حالات OR ۴ حالت بیشتر نمیشن! اینطور که شما میگید ما بیشتر از ۴ مثال برای پرسپترون می زنیم. یعنی ممکنه چندین بار یک مثال رو برای پرسپترون بزنیم؟
Answer " بله! برای اینکه پرسپترون بهتر یاد بگیره ممکن هست مثلا ورودی ۱ و ۱ با جواب ۱ رو چندین بار برای اون مثال بزنیم تا این ورودی ها به همراه خروجی چندین بار داخل تابع یادگیری برن و اطمینان پیدا کنیم پرسپترون همگرا شده! "
Question level 2 من نمی فهمم! خوب این چه کاریه. می تونستیم جای اینکه ۱۰۰ تا مثال بزنیم از اول ۴ تا حالت رو تعریف کنیم! اونطوری نیازی به همگرایی و این جور چیزا هم نبود!
Answer " در مورد این مثال که ۴ حالت بیشتر نیست درست میگید! اما این فقط یک مثال ساده هست برای اینکه مطلب جا بیفته! برای کار های سخت تر مثل شناسایی دست خط تعداد حالات ۴ عدد نیست! نکته ی اصلی این هست که در شبکه های عصبی ما یادگیری داریم! مثلا می تونیم با چند بار نوشتن حرف ب و چند بار نوشتن حرف ج به کامپیوتر یاد بدیم این دو حرف با هم فرق دارند و اولی ب و دومی ج هست! در جلسات بعدی احتمالا همچین مثالی رو نشونتون خواهم داد. "
Question level 3 یک سوال دیگه! پس با یک پرسپترون ما می تونیم تابع AND رو هم در بیاریم! درسته؟
Answer " کاملا درسته! چون تابع AND هم قابل تقسیم به دو بخش در فضا هست. "
Question level 2 XOR چطور؟
Answer " نه! XOR رو نمیشه با یک پرسپترون در آورد! چون XOR با تقسیم فضا به دو بخش مثبت و منفی در نمیاد.
در XOR ورودی و خروجی به این صورته:
  • به ازای ۰ و ۰ خروجی ۰ داریم.
  • به ازای ۰ و ۱ خروجی ۱ داریم.
  • به ازای ۱ و ۰ خروجی ۱ داریم.
  • به ازای ۱ و ۱ خروجی ۰ داریم.
یعنی با توجه به شکل آخر بالا سمت راست و پایین سمت چپ خروجی باید + بشه و در بالا سمت چپ و پایین سمت راست باید منفی بشه! ما نمی تونیم هیچ خط راستی رسم کنیم که فضا رو به این صورت تقسیم کنه پس هیچ وقت پرسپترون همگرا نخواهد شد! "
پس فهمیدیم یک پرسپترو محدود هست. اما با ترکیب همین پرسپترون های خیلی محدود در لایه های مختلف می تونیم توابعی مثل XOR و توابع خیلی پیچیده تر از اون رو هم در بیاریم.
انشاالله در جلسات بعدی مثال های بیشتری در ارتباط با شبکه های عصبی خواهیم دید. دیگه خیلی حرف زدم!
در صورتی که سوالی در ارتباط با هوش مصنوعی داشتید می تونید اون رو در انجمن تخصصی هوش مصنوعی مطرح کنید.
موفق باشید.

لینک های داخلی

لینک های خارجی

References

تگ ها

ANN, artificial intelligence, neural network, tutorial

نظرها

نام:
ایمیل:
وبگاه:
نظر:
 
محمد:
پست شده در تاریخ 2017/06/06, 13:48:15
" واقعا عالی بود بی نظیر "
وهاب:
پست شده در تاریخ 2016/02/04, 11:55:06
" دست شما درد نکنه. ساده و خوب برای شروع "
maryam:
پست شده در تاریخ 2015/05/24, 07:48:10
" با سلام و تشکر ویژه از شما موضوع اساسی پایان نامه من شبکه عصبی مصنوعی هست. ولی اطلاع زیادی از این روش و طریقه استفاده از داده در این روش ندارم. اگه ممکن هست جزئی تر و بیشتر راهنماییم کنید که باید چیکار کنم. با تشکر "
Amin:
پست شده در تاریخ 2014/05/09, 01:45:35
" با تشکر از توضیحاتتون. در مورد شبکه عصبی هایی که با یک سیستم دینامیکی مدل میشن اطلاعاتی دارین؟یا سایت، کتاب یا ... اگه میدونین معرفی کنید. متشکرم "
افسانه:
پست شده در تاریخ 2013/11/29, 08:35:40
" سلام.خوبین. کاش میتونستم از راهنماییهاتون استفاده کنم منم این ترم این درسو دارم با کلی پروژه و... ممنون از اطلاعات خوبتون. "
sahar:
پست شده در تاریخ 2012/11/07, 09:35:17
" salam.men 1 seminar dar morede shabake asabi masnoiy daram .behem komk konid.y sait khob baram marefi konid. merc "
pantea:
پست شده در تاریخ 2012/11/02, 12:48:21
" salam,khaste nabashid.mishe rajebe shabakehaye asabi ye sait moaarefi konid "
علی:
پست شده در تاریخ 2012/09/09, 11:37:36
" خیلی خیلی عالی بود دوستار شما خداوند نگهدارتان باد "
no one:
پست شده در تاریخ 2012/06/11, 10:45:17
" اتفاقا زبان ساده مطالب بالا برای من بسیار مفید بود اگر کسی زبان علمی بخواد خوب میره تو کتاب Haykin میخونه نه اینجا "
no one:
پست شده در تاریخ 2012/06/11, 10:38:03
" خوب توضیح دادید ممنون "
علی:
پست شده در تاریخ 2012/03/11, 13:17:21
" سلام خسته نباشیدموضوع پروژه من درمورد شبکهای عصبیه میتونید یه سایت بهم معرفی کنید که بتونم تمام مطالب درمورد شبکهای عصبی رو بگیرم "
amir:
پست شده در تاریخ 2012/02/23, 21:32:54
" واقعا دسستون درد نکنه کامل و گویا مرسی "
بیداد:
پست شده در تاریخ 2012/02/22, 23:26:58
" ایول به شما! دست مریزاد :) "
مهفام :
پست شده در تاریخ 2011/12/04, 12:17:38
" سلام خسته نباشید تا هفته دیگه یه پروژه عالی در مورد معماری توابع فعال ساز و کلیاتی درباره پرسپترون ارائه بدم می تونید کمکم کنید؟ "
سحر:
پست شده در تاریخ 2011/12/02, 20:56:26
" مطالبتون خيلي مفيده ميشه درمورد شبكه ها ي عصبي و الگوريتم هاي مدلينگ برام مطلب يا هر چيز به درد بخوري كه ميشه ايميل كنين براي پروژم ميخوام فقط اگه ميشه تا اخر اين هفته بفرستين ممنون "
حسيني:
پست شده در تاریخ 2011/11/27, 11:37:15
" سلام متشکرم لطفا به جلسات به صورت مداوم ادامه بدين "
سوی ناز:
پست شده در تاریخ 2011/06/05, 15:35:13
" سلام لطف کنید و این قدر مطالب علمی را عامیانه ننویسید باتشکر "
azam:
پست شده در تاریخ 2010/09/26, 15:09:19
" mamnoon az matalebi k gozashtin, vali fek mikonam age dar morede khode shabakehaam sohbati bashe kheyli mofid tare in mataleb vase mobtadia ya kasayi k donbale matlab vase tahghigh migardan monasebe "
نیر:
پست شده در تاریخ 2010/08/17, 09:41:44
" خیلی عالی لطفا این بحث ادامه بدید "
mitra23:
پست شده در تاریخ 2010/08/11, 01:39:20
" سلام .ممنون ازمطالب مفيدتون.پروژه من در مورد آموزش دادن به شبكه هاي عصبي(training)براي پيش بيني بارندگيه. نرم افزارش هم matlab.ميخواستم از شماكمك بگيرم.درضمن شبكه اي كه انتخاب كردم پرسپترونه. متشكرم "
1:
پست شده در تاریخ 2010/06/28, 19:26:47
" اگه سريع تر اقدام كنيد ممنون مي شم "
1:
پست شده در تاریخ 2010/06/28, 19:24:55
" بسيار عالي بود در مورد نوروفازي لطفا مطلب بذاريد در مورد ANFIS لطفا توضيحاتي بديد "
سعید:
پست شده در تاریخ 2010/06/24, 00:08:58
" با سلام. مهندس اگه امکان داشته باشه در مورد کنترل فعال سازه ها (active structural control) بوسیله AIN (Artificial Intelligence Network( هم مطالبی قرار بدین. با تشکر "
سعید:
پست شده در تاریخ 2010/06/24, 00:08:02
" با سلام. مهندس اگه امکان داشته باشه در مورد کنترل فعال سازه ها (active structural control) بوسیله AIN (Artificial Intelligenve Network( هم مطالبی قرار بدین. با تشکر "
سعید:
پست شده در تاریخ 2010/06/24, 00:04:19
" مرسی. خیلی خوب بود. "
amir:
پست شده در تاریخ 2010/04/13, 00:19:09
" its very very lie "
hamidreza:
پست شده در تاریخ 2010/04/06, 18:37:35
" salam tozihat va noe negareshi ke entekhab kardid kheli khob va jazab bood man yek proje nural network bayad erae bedam vali hich didi nesbat be un nadaram age momkene chanta mozu ke ba shabake anjam mishe baram mail konid ta yekam did peida konam kheili mamnoon misham fooladi_hamid@yahoo.com "
eee:
پست شده در تاریخ 2009/12/13, 11:52:29
" سلام بسیار عالی بود.من چند سوال دارم.مثلا فرمول دلتا و موارددیگر میتونید ایمیلتون رو بدید. با تشکرemail :police110_1100@yahoo.com) "
ستایش:
پست شده در تاریخ 2009/11/17, 00:17:38
" عالی بود.من یه پروژه در مورد بررسی پایداری شبکه های عصبی دارم و خیلی از مطالبم برام گنگه. رشتم ریاضیه. به کمک احتیاج دارم می تونید کمکم کنید؟ مثلا میدونید (Polytopic type uncertainties) را باید چی ترجمه کنم و اصلا یعنی چی؟ و همینطور(Linear parameter dependent (LPD)؟ اگه میتونید برام ایمیل بزنید.ممنون setayesh3445@yahoo.com "
farshad bashiri:
پست شده در تاریخ 2009/06/30, 10:04:44
" من تا روز 13 یه پروژه در مورد شبکه عصبی میخوام تو رو خدا هر چه سریع تر جواب بده "
farshad bashiri:
پست شده در تاریخ 2009/06/30, 10:01:00
" خیلی عالی بود اما.................. "
سروش:
پست شده در تاریخ 2009/05/26, 08:53:00
" salam man ye project raje be shabake haye asabi dar matlab mikham "
elnaz:
پست شده در تاریخ 2009/05/11, 22:43:40
" salam manam projam shabake haye asabie masnooie vali bahsesh darbareye tashkhise jensiat ba estefade az shabake haye asabie masnooiie mitoonid komakam konid?man faghat ye maghale toonestam peyda konam ke oonam kheiili ghadimie "
nastaran:
پست شده در تاریخ 2009/04/14, 11:12:18
" salam man porojam shabakehaye asabie mishe lotf konid mano komak konidagar lotf konid refrence yaagar khodetoon tahghighati dashtid baraye man mail konid mamnoon misham "
bashir :
پست شده در تاریخ 2008/12/19, 12:46:28
" سلام.خسلس عالي بود.من مطالب بيشتري رو در حدود 100 صفحه درباره شبكه هاي عصبي مصنوعي نياز دارم .اگر ممكن هست به ايميلم ميل كنيد خيلي ممنون مي شم . "
saghi:
پست شده در تاریخ 2008/12/12, 11:34:36
" lotfan dar morde mlp khili bishtar tozih dahid va agar momken ast algoritm pyade sazi dar matlab ba yek nemone bayan konid.az komak shoma masmnonam "
سهیل:
پست شده در تاریخ 2008/11/12, 01:53:51
" واقعا عالی بود، هرچی بگم بازم کم گفتم "
mohammad:
پست شده در تاریخ 2008/11/10, 15:54:11
" greatly thanks for your good filesabout g.a "
hamed:
پست شده در تاریخ 2008/09/04, 19:34:37
" salam project man baraye kamel shodan niyaz be hoshe masnoyi dare . reshteye man mekanike mikhastam bedonam vase shoroa kar che ketabi monaseb ast batashakor "
امین:
پست شده در تاریخ 2008/08/12, 13:09:36
" آفرین حرف نداره "
امین:
پست شده در تاریخ 2008/08/12, 13:09:17
" خوبه "
امید پیله ور:
پست شده در تاریخ 2008/06/24, 20:54:09
" سلام خیلی خوب بود ممنون، انشاالله بهزودی در سایت rcsoccersim.com با نام خودتان قرار میگیره. "
abbas :
پست شده در تاریخ 2008/06/09, 13:21:02
" kheyli jaleb bod mer30 mamnon az zahmateton bye "
علیرضا:
پست شده در تاریخ 2008/06/07, 00:42:43
" دستت درد نکنه. مطلب مفیدی بود. "
محسن:
پست شده در تاریخ 2008/06/04, 23:58:37
" خیلی ساده و خوب. ممنونم! "
Hamed:
پست شده در تاریخ 2008/06/04, 17:59:01
" مثل همیشه عالی و برتر "
سمیرا:
پست شده در تاریخ 2008/06/04, 16:18:06
" دستتون درد نکنه. جدا عالیییییییی بود. مرسی "
keyvan:
پست شده در تاریخ 2008/06/04, 14:37:05
" ye Kam baHsesH SaNgin Bood ! Yani BalaYE Sat'he Diplom bood indeed ! :D "