آموزش شبکه عصبی در متلب


سلام  دوستای گلم

تو این جلسه می خوام در مورد شبکه عصبی مصنوعی بحث کنم.اصلا شبکه عصبی مصنوعی چیه؟ خوب شبکه عصبی طبیعی چیه که حالا می خوای در مورد مصنوعیش بحث کنی ؟ آره آفرین طبیعیش میشه همون شبکه ی اعصاب انسان ، می گن مغز انسان از تعداد 10 11 نرون تشکیل شده که هر نرون با تقریبا 104 نرون دیگه ارتباط داره.

سرعت سوئیچنگ نرونها در حدود 10-3 ثانیه است که در مقایسه با کامپیوترها 10 -10 ثانیه خیلی ناچیزه. با این وجود من می تونم در 0.1 ثانیه تصویر تو رو بازشناسائی کنم. این قدرت فوق العاده باید از پردازش موازی توزیع شده در تعدادی زیادی از نرونها باشه. خداییش عجب سیستمیه واقعا ایول ، دمش گرم !

خوب مصنوعیش شبیه سازی سیستم اعصاب انسانه. واسه پردازش اطلاعات ( نرم افزاری یا سخت افزاری ) به کار میره. این پردازش اطلاعات که می گم تو واحد های ساده ایی به نام نرون انجام میشه. نرون ها به وسیله ی یه سری لینک با هم در ارتباطن.

به طور کلی یه شبکه عصبی به وسیله ی موارد زیر تعیین می شه:

1- الگوی ارتباط بین نرون های شبکه ، که بهش معماری شبکه یا توپولوژی شبکه می گیم ( می تونه تک لایه باشه ، دو لایه ، سه لایه و ...)

2- روش تعیین وزن های شبکه ، که بهش آموزش شبکه (training) ، ( learning) یا الگوریتم شبکه می گیم.

این وزن که داخل مورد 2 گفتم یعنی چی ؟ هر پیوند ارتباطی یه وزن مربوط به خودشو داره که داخل یه شبکه عصبی تو سیگنالی که می خواد ارسال بشه ضرب میشه. ببین تو سیستم اعصاب آدما هم مفهوم وزن به صورتیه که اگه فرض کنی این یه نرون طبیعی باشه :

507.png

دندریت ها واسه دریافت ورودی به کار می رن. بدنه ی سلول واسه پردازش اطلاعات و اکسون محل عبور داده های پردازش شده به سمت خروجی ها و سیناپس اتصال الکترو شیمیایی بین نرون ها ( این مفهوم وزن تو نرون واقعیه )

توابع فعالیت :

تو بعضی کتابها بهش توابع خروجی هم می گن. 1- تابع همانی ( تابع خطی f(x)=x ) 

2 - تابع پله ی دودویی با آستانه ی ϴ ، یعنی چی ؟ یعنی اگه x از مقدار ϴ بزرگتر و مساوی باشه خروجی 1 میشه در غیر این صورت میشه 0

3 - تابع پله ی دو قطبی با آستانه ی ϴ ، که اگه x بزرگتر و مساوی ϴ باشه خروجی 1 میشه و در غیر این صورت منفی 1 میشه.

بازم داریم از این توابع اما حسش نیست توضیح بدم !!  40.gif

یه نکته ی مهم : bias (بایاس) یه بایاس دقیقا مثل یه وزن اتصال از واحدی عمل می کنه که خروجی اون همیشه 1 هست.

بایاس همیشه مثل یه وزن عمل می کنه .

Perceptron :

نوعی از شبکه عصبی برمبنای یه واحد محاسباتی به نام پرسپترون ساخته میشه. یه پرسپترون برداری از ورودیها با مقادیر حقیقی رو می گیره و یه ترکیبخطی از این ورودیها رو محاسبه میکنه. اگه حاصل از یه مقدار آستانه بیشترباشه خروجی پرسپترون برابر با 1 و در غیر اینصورت معادل -1 خواهد بود.

این پرسپترون بلا رو مسائلی که خطی یا تفکیک پذیر خطی باشن عمل می کنه ، یعنی چی ؟ این نمودار رو ببین :

508.png

پرسپترون برای نمونه های یک طرف صفحه مقدار 1 و برای مقادیر طرف دیگر مقدار -1 بوجود میاره. یعنی میشه این نمودار رو به دو حالت تقسیم کرد اما یه چیزی مثل اینو نمیشه با پرسپترون حل کرد:

509.png

آخه این رو چه شکلی تفکیک خطی کنیم؟ با تفکیک غیر خطی !!

پرسپترون می تونه تمام توابع بولی مثل AND وOR و NAND و NOR پیاده سازی کنه اما XOR رو نه !! و اینجاست که بحث لایه های مخفی پیش می یاد.اصلا بد نیست بدونی زمانی که واسه ی اولین بارموضوع شبکه های عصبی مصنوعی و پرسپترون ها پیش اومد و این که دیدن نمی شه مسائل غیر خطی رو باهاش حل کرد ، حدود 10 سال شبکه های عصبی مصنوعی فراموش شد تا این که دو مرتبه با ایده ی لایه های مخفی ، از سر گرفته شد.( آخی چه سرنوشتی داشته !! )

اولین چیزی که باید بهش توجه کنی : ورودی های مسئله ست ، ببین ورودیها حتما باید به شکل یه ماتریس n سطری با 1 ستون باشن.حالا اگه این طوری نبود چی ؟ یعنی من یه ماتریس ورودی به صورت l*k داشتم اون موقع چی کار کنم ؟ خوب تبدیلش کن دیگه !

بعد از این که ورودی هات آماده شدن حالا وقتشه ماتریس الگو (P) و ماتریس هدف (t) رو مشخص کنی . واسه ماتریس p همون ورودی هات رو که مثلا ماتریس a1 تا an هستند قرار می دی چه طوری ؟ P=[a1 a2 a3 ……an ]

ماتریس هدف همونه که می خوایم از مسئله داشته باشیم مثلا واسه AND اگه ورودی هام 1 و 1 باشه خوب می خوام خروجیم 1 باشه. توجه کن تعداد درایه های ماتریس P و t باید یکی باشه. t=[1 0 1 ……1]

حالا ورودی ها ، ماتریس هدف و ماتریس الگو آماده ست وقت اینه که شبکه رو بسازیم ، چه شکلی ؟ با دستور newff

خروجی این تابع یه شبکه ست که مثلا تو گفتی تو net قرارش بده. اما ورودی هاش چین؟

Net=newff(محدوده ی ماتریس ورودی ,[تعداد نرون های لایه ها ] ,تابع فعالیت , …)

ما به تعداد لایه ها ، تابع فعالیت داریم ، آخه تابع فعالیت تو هر لایه از یه نوعه .اصلا بزار یه مثال واست بزنم :

net=newff(minmax(p),[2 2],{' logsig’ ‘logsig'},trainlm);

اولین پارامتر محدوده ی ورودی رو معلوم می کنه ، دومی می گه دو لایه ی مخفی دارم که تو هر کدوم 2 تا نرون وجود داره ، بعد باید معلوم کنی تابع انتقالت چیه ؟ و آخردست گفتم تابع انتشار خطا رو به عقب که به صورت پیش فرض با trainlm معلوم میشه.

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

net=train( net,p,t)

حالا که وزن های شبکه معلوم شد باید بتونی شبکه رو اجرا کنی تا خروجی های اون بدست بیاد. با کدوم دستور میشه این کار رو کرد؟ با تابع sim

Out=sim( net , p)

مثلا می تونی با یه سری از دستورات بعضی پارامتر ها رو تغییر بدی ، مثل ...

net.trainparam.epochs=50

می دونی epochs چیه؟ توی یه الگوریتم یادگیری یه سیکل یا یه اعمال بر روی تمام بردار های آموزشی اصطلاحا یه epochs می گن.حالا تو این دستور گفتم می خوایم حداکثر مقدارش 50 باشه.

اگه بخوایم به یه مقدار حداقل خطا برسم از این دستور استفاده می کنم :

net.trainparam.goal=0.001

501.png

یه کد کوچولو با اجراش رو مشاهده می کنین : 

502.png

503.png

504.png

505.png

 506.png

 




مطالب مشابه :


آموزش دسته ای (batch training) اموزش افزایشی (Increasing training)

شبکه عصبی، فازی و ژنتیک الگوتیم در متلب. به بررسي شبکه های عصبی در نرم آموزش شبکه عصبی




فیلم آموزشی جامع شبکه های عصبی پرسپترون چندلایه یا MLP در متلب

بررسی مفاهیم مرتبط با آموزش شبکه های عصبی ; پیاده سازی شبکه عصبی در متلب با استفاده از




مرجع اصلی جعبه ابزار شبکه عصبی (Neural network toolbox ) نرم افزار متلب

شبکه عصبی ، فازی و اين وبلاگ به صورت تخصصي به بررسي شبکه های عصبی در نرم افزار متلب




آموزش جعبه ابزار شبکه عصبی متلب

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




آموزش شبکه عصبی در متلب

آموزش شبکه عصبی در متلب. سلام دوستای




دانلود کتاب و مقاله شبکه عصبی

از سایت های زیر می توانید در حوزه شبکه عصبی عصبی در نرم افزار متلب آموزش شبکه عصبی




انجام پروژه شبکه عصبی با متلب

انجام پروژه شبکه عصبی با متلب شبکه های عصبی در SimMechanic در Simulink آموزش برازش منحنی




روش Model Reference Adaptive Control یا MRAC در سیمولینک

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




برچسب :