PDA

نسخه کامل مشاهده نسخه کامل : شبکه های عصبی



Reyhane7
29-11-2009, 19:38
شبکه ی عصبی یا 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 تا بهترین نتیجرو به ما میده! "

به اون پروسه ای که طی اون مثال میزنیم و عملیات بازپخشانی رو انجام میدیم پروسه ی تعلیم یا Training می گن!
پس بطور خلاصه ما اول یه شبکه ی عصبی طراحی می کنیم که در ابتدا می تونه هر نورونش وزن تصادفی داشته باشه، بعد شبکه ی عصبیمونو تعلیم میدیم با ورودی هایی که جوابشو داریم و بعد از تعلیم دادن به اون ورودی میدیم و ازش جواب می خوایم!
مثلا توی مسابقات شبیه سازی فوتبال ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) خیلی وقت ها تیم ها بازی های دوستانه با هم میگذارن! هدف چیه؟ اینه که Agent ها شبکه ی عصبیشون تعلیم ببینه! جالب نیس؟ این یعنی کامپیوتر میتونه یاد بگیره و طی یادگیریاش تصمیم بگیره! بدون اینکه مغز داشته باشه.

منبع ديگر مقالات در اين زمينه:[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

matin_vv
29-11-2009, 20:51
الان بحث شبكه هاي عصبي يك مقدار قديمي شده. اگه واقعاً دنبال كار جديد هستين، برين سراغ منطق فازي يا تلفيقش با شبكه‌هاي عصبي. تو همه رشته‌ها هم كاربرد داره.

ahmad.es.es.2atisheh
23-01-2010, 11:08
سلام
دوست عزیز میشه یه توضیح مختصر در مورد رویکرد شبکه عصبی برای ارزیابی ریسک اعتبار بدی؟

fam_jam_teh
24-01-2010, 00:05
اما شبکه عصبی با وجود اینکه به اصطلاح شما قدیمی هست هنوز خیلی کاربرد داره و باید بگم به دلیل اینکه فاری برنامه هاش زمان زیادی واسه اجرا می خوان مورد انتقادن

mohsenavrm
01-02-2010, 00:09
من با وجود حرف دوستمون عاشق شبکه عصبی هستم!
مونون از Reyhane7 ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])

ghooty
05-02-2010, 11:23
به نظر من هم با اين كه قديميه ولي هنوز به درد مي خوره. مثلا تو شبيه سازي فوتبال دو بعدي

sina 2009
13-03-2010, 19:37
سلام خواهش می کنم موضوعات مرتبط با شبکه های عصبی هر کس می دونه بگه مر30:20: