سارا-افشار 36437 اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ سلام دراین تاپیک میخواهیم شبکه های عصبی را به صورت گام به گام یادبگیریم امیدوارم منو در این راه همراهی کنید 29 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ ابتدا باید بگم تمامی کدها و مثالهایی که اینجا ارایه میشه همگی روی نرم افزار MATLAB پیاده و تست شده اند. اگر نرم افزار متلب دراختیار ندارید برای تهیه آن می توانید به این سایت برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام مراجعه کنید یا دی.وی.دی اونو از بیرون خریداری کنید روش کار به این صورته که ابتدا سعی می کنیم یه اشنایی کلی درمورد شبکه عصبی و کارکرد اون پیدا کنیم برای اینکار بیشتر روی مفاهیم عملی آن تاکید می کنیم تا مفاهیم تئوری . بعد از اینکه این مرحله را پشت سر گذاشتیم سراغ مسایل کاربردی و مثالهایی واقعی می رویم درکنارش اگر دوستان همراهی کنند میتوانیم مقالات مرتبط دراین رابطه را باهم خوانده و مفاهیم ارایه شده درانها را به اشتراک بزاریم . توجه : شبکه های عصبی جزو مفاهیم و ابزارهایی هست که در رشته ها و شاخه های مختلف علوم فنی-مهندسی - اقتصاد- پزشکی- روانشناسی و جامعه شناسی کاربرد زیادی دارد و دوستان باید برحسب رشته و نیاز تحقیقاتی خود دنبال مطالب و مسایل حل شده با شبکه های عصبی باشند 14 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ شاید دوستان برایشان این سوال ایجاد بشود که چرا نرم افزار متلب ؟ باید خدمت این دوستان عرض کنم نرم افزار متلب جزو نرم افزارهایی هس که اکثر بچه های فنی -مهندسی با اون سروکار داشتن syntax دستورات اون خیلی گویا و کار کردن با انها خیلی سرراست و اسان هست ازهمه مهم تر , شما samples و برنامه های زیادی روی نت میتونید پیدا کنید که با نرم افزار متلب پیاده سازی شده اند تقریبا برای هر نوع شبکه ای .حتی فیلم های اموزشی زیادی دراین رابطه توی نت وجود داره و قابل دسترسیه پ. ن : شخصا هر مثال یا مطلب یا منبعی که پیدا کنم دراینجا به اشتراک خواهم گذارد. 21 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ شبکه عصبی یک طبقه بند الگوست به عبارت بهتر زمانی از شبکه عصبی برای حل مسایل استفاده می کنیم که بتوانیم آن مسئله را تاحد یک مسئله طبقه بندی الگوها ساده کنیم شبکه های عصبی الهام گرفته از سیستم شبکه عصبی زیستی هست به همین خاطر گاه به انها شبکه های عصبی مصنوعی هم گفته می شود جهت تمایز با شبکه های عصبی زیستی . این شبکه از عناصر عملیاتی ساده ای به صورت موازی ساخته میشود . 21 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ شکل زیر ساختار یک شبکه عصبی ساده را نشان میدهد : این شبکه از یک ورودی بنام P , یک نورون و خروجی نورون a تشکیل شده هست . هر نورون از دو عنصر کلیدی بنام تابع انتقال F و وزن W تشکیل یافته است .به پارامتر b اصطلاحا بایاس (bias) گفته می شود . وقتی ورودی P به نورون اعمال می شود مقدارش ضربدر w شده حاصل با b جمع و حاصل انها به عنوان ورودی به تابع انتقال F داده می شود . بسته به تعریف تابع انتقال , تصویر هر ورودی به خروجی a مرتبط با تابع انتقال نگاشته می شود . به دو پارامتر W و b , پارامترهای تنظیم کننده شبکه عصبی گفته میشود . 18 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ انواع مختلف توابع انتقال وجود دارد . درحدود 12 عدد (کاملا مطمئن نیستم ) در نرم افزار MATLAB جهت اشنایی با عملکرد هریک از توابع , در خط فرمان دستور nnd2n1 را تایپ و اینتر بزنید این یک demo از انواع توابع هست با تغییر هریک از پارامترهای قابل تنظیم b و W می توانید تغییرات و خروجی a را مشاهده کنید با تایپ دستور فرمی به صورت زیر برایتان باز خواهد شد: 21 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ آنها نمی توانند در مورد انچه که انجام میدهند دلیل بیاورند برعکس شبکه های بیزین که به صورت مستدل هر مرحله از کار را برایتان شرح می دهند و اینکه چگونه خروجی فعلی از ورودی های اعمال شده بدست امده اند . به عنوان مثال می توان شبکه عصبی طراحی کرد که بتواند رخداد اختلاس در شبکه بانکی را کشف کند اما نمی تواند دلیل بیاورد که چطور به این نتیجه رسیده است:vahidrk: ولی شبکه های بیزین دقیقا مرحله به مرحله برای شما دلیل می اوردند که بنا به این علت , این نتیجه استدلال شده است و... 19 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ یک طبقه بند الگو است قدرت یادگیری دارد (برای یادگیری , الگوریتم های مختلفی وجود دارند ) به اندازه کافی از نظر منطق برنامه نویسی کوچک هستند (منظور دریافت پاسخ و خروجی در یک زمان معقول است ) توانایی تعمیم دارد (برای اینکار ابتدا شبکه های با مثالهایی اموزش میدهند درمرحله بعدی وقتی شبکه به اندازه کافی یادگرفت می توان نمونه هایی خارج از مجموعه مثالهای اموزشی بهش اعمال کرد و شبکه قادر به ارایه جواب درست با درصدی از خطا است ) 19 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ هر شبکه عصبی می تواند دارای چندین لایه باشد و در هر لایه می تواند حاوی بیش از یک نورون باشد هر نورون تابع انتقال خاص خود را می تواند داشته باشد برای اشنایی بیشتر با شبکه عصبی چن لایه ای و چند نورونی میتواند در خط فرمان دستور nnd2n2 را تایپ و اینتر بزنید تا demo موردنظر اجرا گردد همانطور که درشکل بالا می بینید وزن اتصالی بین نورون شماره یک و ورودی شماره یک به صورت w(1,1) نشان داده شده است . اگر بیش از یک لایه داشته باشیم از بالا نویسی استفاده می کنیم معمولا تعداد نورورن ها را با عدد S نمایش میدهند. وقتی می نویسیم w n,m یعنی از لایه m اتصالی خارج به لایه n وارد میشود . 17 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ یک شبکه چند لایه ای کلا دارای سه بخش هست بخش ورودی (معمولا ورودی را لایه حساب نمی کنند ) بخش لایه های پنهان (ازنظر تئوری محدودیتی در تعداد ای لایه ها نیست ) و بخش لایه خروجی . شبکه های چندلایه ای بسیار قدرتمند هستند. به عنوان مثال یک شبکه دولایه با لایه اول که دارای تابع انتقال sigmoid است و لایه دوم با تابع انتقال خطی می تواند هر تابع دلخواهی را با تعداد محدودی نقاط ناپیوستگی تخمین بزند . بعدا یک مثال کاربردی بنام برآورد قیمت خانه (House Price Estimation-fit_house_demo) را بررسی خواهیم کرد . 19 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ منظور نحوه اعمال داده های ورودی به شبکه است دو نوع بردار ورودی داریم : 1- بردارهای ورودی همزمان : یعنی داده ها را یه دفعه و به صورت همزمان به شبکه اعمال کنیم .در این نوع بردارها ترتیب ورود داده ها مهم نیست 2- بردارهای ورودی تریبی : در این نوع از بردار, ترتیب زمانی اعمال داده ها به شبکه مهم است . 13 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ یک شبکه را ایستا می گویند که دران feedback و delay وجود نداشته باشد در این نوع از شبکه ها نحوه اعمال ورودی ها مهم نیست همه داده ها به صورت همزمان به شبکه اعمال می شوند. یک مثال از شبیه سازی شبکه ایستا با بردارورودی همزمان : شبکه زیر را می خواهیم شبیه سازی کنیم : برای ایجاد چنین شبکه ای طبق شکل زیر عمل کنید : همانطور که می بیند در قسمت خط فرمان نرم افزار MATLAB دستورات بالایی را تایپ کنید: درخط اول داریم اعلام می کنیم که یک شبکه عصبی تک نورونی( پارامتر دوم تابع newlin) با دو ورودی (پارامتر اول تابع newlin) میخواهیم برای مشخص کردن نوع تابع انتقال از اسم تابع موردنظر استفاده می کنیم . تابع newlin تابع انتقال خطی را شبیه سازی می کند max و min مقدار هر ورودی را به صورت [1 3;1 3] مشخص می کنیم این پارمتر مشخص می کند که هریک از ورودی ها دارای کمترین مقدار یک و بیشترین مقدار سه هستند . خط دوم به هریک از ورودی ها , وزن اختصاص میدهد به این معنی که ورودی اول دارای وزن یک و ورودی دوم دارای وزن دو هست . بایاس رو هم به صورت پیش فرض صفر نگه میداریم بردار P ورودی ها رو به شبکه اعمال می کند درواقع این بردار یک ماتریس دو در چهار هست . خط اخر بوسیله تابع sim , شبکه را شبیه سازی می کند و خروجی را به ما میدهد . در این مثال باید به این نکته توجه کنیم که این شبکه هنوز وارد فاز یادگیری نشده است (یادگیری بعدا توضیح داده خواهد شد ). اگر به صورت دستی و با کاغذ قلم این مقادیر را به شبکه اعمال کنیم می بینیم که همین خروجی را می توانیم بدست بیاوریم . تابع خطی به صورت زیر عمل می کند w*p+b=x F(x)=x 9 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ شبکه هایی که دارای feedback و delay باشند شبکه های پویا می گویند یک مثال از شبیه سازی شبکه های پویا با بردار ورودی ترتیبی : شبکه زیر را که یک شبکه با تاخیر است برای شبیه سازی شبکه های پویا درنظر بگیرید دستورات زیر را در خط فرمان نرم افزار MATLAB تایپ کنید . این شبکه نیز از تابع انتقال newlin (خطی ) استفاده می کند به نحوه و فرمت وارد کردن داده توجه کنید برای اینکه به تابع اعلام کنیم ازچه نوع شبکه ای می خواهیم استفاده کنیم از دو پارامتر استفاده می کنیم یکی پارامتر تاخیر (delay) که در این جا سومین پارامتر در تابع newlin است ([0 1]) و دیگری فرمت وارد کردن داده هاست دراینجا از نماد {} برای مشخص کردن ترتیب استفاده می کنیم . توجه کنید در صورتی که ترتیب ورود داده ها عوض شود نتایج نیز عوض خواهد شد . 13 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ 1- اموزش گام به گام (incremental training ) دراین شیوه وزن ها و بایاس ها بعد از اعمال هر ورودی به روز می شوند 2- آموزش دسته ای (batch training ) در این روش وزن ها و بایاس ها یکبار و بعد از اعمال تمام ورودی ها به روز می شوند . 13 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ ابتدا سراغ آموزش گام به گام برویم این شیوه معمولا در شبکه های پویا مانند *****های تطبیقی (adaptive filters) مورد استفاده قرار می گیرد هرچنداز این روش در شبکه های ایستا هم می شود استفاده کرد . یک مثال شبکه زیر را درنظر بگیرید می خواهیم این شبکه رابرای تابع T=2p1+p2 به روش گام به گام اموزش دهیم برای اینکار از تابع adapt موجود در نرم افزار MATALB استفاده می کنیم ابتدا باید چن مثال به همراه جواب درست را به شبکه بدهیم به این شیوه یادگیری , یادگیری با ناظر می گویند . مثل این می ماند به بچه ای بخواهید عمل جمع را یادبدهید ابتدا کل جریان را برایش توضیح میدهید بعد چند تا مثال برایش حل می کنید بعد بهش یک مثال داده و ازش می خواهید حل کند اگر درست حل کرد که هیچ وگرنه سعی می کنید روش خود را کمی اصلاح کرده و به زبان بهتری عمل جمع را برایش توضیح داده و مثال های بیشتری برایش حل کنید مثال هایی که حالت های مختلف را در بربگیرد این شیوه را انقدر تکرار می کنید تا مطمئن شوید کودک , عمل جمع را یادگرفته است . ابتدا ورودی ها و جواب را به شبکه می دهیم برای شبیه سازی و اموزش شبکه به صورت زیر دستورات را وارد می کنیم در دستور خط اول پارمتر اخری تابع newlin مربوط به نرخ و سرعت یادگیری شبکه هست که برابر صفر قرار داده شده است (بعدا در مورد الگوریتم یادگیری پشت صحنه صحبت خواهیم کرد ). بنابراین وقتی اخر خط دستور را تایپ و کلید اینتر را بزنیم خروجی بردار a برابر صفر خواهد بود برای دیدن خروجی a در سمت راست پنجره نرم افزار پنلی بنام workspace وجود دارد که دران می توان تمامی مولفه های شبکه را مشاهده کرد روی a کلیک کنید شکلی به صورت زیر مشاهده خواهد کرد . حال سرعت یادگیری را برابر 0.1 تنظیم می کنیم و اموزش شبکه را اغاز می کنیم . برای اینکار در خط فرمان دستورات زیر در ادامه دستورات قبلی تایپ کنید روی بردار e که بیانگر میزان خطا هست کلیک کنید (درهمان قسمت workspace قراردارد) میزان خطا برابر مقدار زیر خواهد بود: خطا از فرمول زیر بدست می اید : e=t-a یعنی اختلاف بین مقدار واقعی و موردانتظار و مقداری که خروجی شبکه ست اگر روی بردار a کلیک کنید مقادیر زیر را باید مشاهده کنید : می دونید چرا خروجی اول دارای مقدار صفر است درحالی که مقدار مورد انتظار و هدف ما چهار بود ؟ بخاطر این ست که شبکه درحال اموزش به روش گام به گام است بعد از اعمال اولین ورودی , شبکه هنوز در اغاز پروسه یادگیری است اما اعمال ورودی ها و داده های اموزشی دیگر کم کم میزان خطا کمتر شده و به صفر میل می کند یک مسئله دیگری که باید در مورد این نوع اموزش در شبکه های ایستا باید ذکر کنیم این است که در شبکه های ایستا نحوه ورود داده ها مهم نیست چه به صورت همزمان باشد و چه به صورت ترتیبی , چون خود شبکه درهر صورت به صورت همزمان داده ها را به شبکه اعمال خواهد کرد اما وقتی پای اموزش شبکه به میان می اید قضیه فرق می کند در پروسه اموزش گام به گام باید داده ها را به صورت ترتیبی به شبکه ایستا اعمال کنیم همانطور که دیدید برای اینکار از فرمت ترتیبی ( رجوع کنید به خط دستور 4 )برای اعمال ورودی به شبکه استفاده کردیم 11 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ معمولا استفاده از این روش در شبکه های پویا , رایج تر از شبکه های ایستا ست . میخواهیم شبکه زیر را اموزش دهیم بردار وزن ها را برابر صفر قرارداده و سرعت یادگیری را هم برابر 0.1 تنظیم می کنیم . بازهم از تابع adapt برای اموزش گام به گام استفاده می کنیم . دستورات زیر را در خط فرمان وارد می کنیم . مشاهده میشود خروجی شبکه به صورت زیر است : و مقدار خطا به ازای هر ورودی : 8 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ در اموزش گام به گام از تابع adapt برای اموزش شبکه استفاده کردیم اما اموزش دسته ای هم با تابع train و هم با تابع adapt انجام میشود اما بهتر است از تابع traint برای اموزش دسته ای استفاده کنیم . همانطور که می بینید خروجی شبکه به ازای ورودی ها صفر است تا زمانی که ورودی ها به صورت همزمان به شبکه اعمال شوند خروجی صفر است زیرا که وزن ها اصلاح نشده اند . اجازه بدهید ببینیم مقدار وزن ها با یکبار اعمال ورودی ها چه مقداری را گرفته اند . برای اینکار از دستورات زیر استفاده می کنیم اگر از تابع train هم استفاده کنیم باز همین نتایج را خواهیم گرفت 6 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ درشبکه های پویا اموزش دسته ای فقط با train انجام میشود برای روشن تر شدن مطلب یک مثال هم برای این نوع شبکه با ساختاری مانند شکل مثال شبکه های پویا با یک تاخیر تعریف می کنیم و سرعت یادگیری را هم برابر 0.02 قرار میدهیم. دراینجا تعداد گذر (epochs ) را برابر یک قرار دادیم تا معادل با یک گذر از تابع adapt باشد می بینیم که باز همان نتایج را به مامی دهد . یعنی خروجی بردار a تماما صفر خواهد شد 5 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 12 خرداد، ۱۳۹۱ در ادامه با آموزش شبکه های پرسپترون باما همراه باشید به قول سنجد برمی گردم حتمااااااااااااااااااااااااااااااااااااااااااااااا .........ععععععععععععععععععععععععععععععععععععععع 6 لینک به دیدگاه
سارا-افشار 36437 مالک اشتراک گذاری ارسال شده در 15 خرداد، ۱۳۹۱ سلام امروز با اموزش شبکه های پرسپترون درخدمتون هستم این بار برعکس پست های قبلی که زیاد به مفاهیم اولیه پرداخته بودم با دو مثال نسبتا کاربردی این شبکه ها را اموزش میدهم با من همراه باشید 8 لینک به دیدگاه
ارسال های توصیه شده