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

برنامه نویسی در حال حاضر یکی از شاخه‌های بسیار مهم در علم به شمار می‌رود و در این بین نیز زبان‌های برنامه نویسی بسیار مختلفی به چشم می‌خورند که هر کدام کار کرد خاصی دارند. یکی از زبان‌های برنامه نویسی پرکاربرد، زبان برنامه نویسی متلب (Matlab) نام دارد که بیشتر مورد استفاده رشته‌های مهندسی و مدیریت قرار می‌گیرد. در مقالات گذشته از متلب آنالیز، در خصوص شبکه عصبی در متلب مطالبی را منتشر کرده‌ایم و اکنون نیز در این مقاله تصمیم داریم به ادامه مبحث شبکه‌های عصبی در زمینه آموزش شبکه‌ عصبی پرسپترون چند لایه در متلب ابزار‌های مورد استفاده برای آن بپردازیم. پس تا انتهای مقاله همراه ما باشید.

شبکه عصبی پرسپترون چند لایه

شاید بتوان گفت که تصویر زیر یک توضیح جامع و کاربردی از شبکه عصبی پرسپترون چند لایه را شامل می‌شود. این نوع از شبکه عصبی دارای یک لایه ورودی است که ۵ نورون دارد و یک لایه میانی با ۶ نورون به همراه یک لایه خروجی با ۳ نرون در آن قرار گرفته است.

matlab-1

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

matlab-2

شاید بتوان گفت که در یک شبکه عصبی هدف از یادگیری، تعیین بهینه ضرایب وزن نورون‌ها است. اما این کار باید به گونه‌ای باشد که خروجی مورد انتظار (واقعی) به خروجی جاری – به خروجی‌ای که حاصل از اعمال ورودی به شبکه و گرفتن خروجی از آن باشد خروجی جاری گفته می‌شود – تا حد ممکن نزدیک باشد یا در واقع خطای مقدار خروجی واقعی و مقدار خروجی شبکه کمینه شود.

آماده سازی محیط برنامه نویسی متلب

جعبه ابزار شبکه عصبی: باید توجه داشت که برای طبقه بندی داده‌های بازار بورس از جعبه ابزار شبکه عصبی متلب استفاده می‌شود. اما باید به جای محیط گرافیکی، از محیط کد نویسی برای انجام این کار استفاده کرد. در ادامه با ابزار‌های مختلف در خصوص شبکه عصبی متلب آشنا خواهیم شد و اطلاع از این ابزار‌ها برای تشکیل یک شبکه عصبی و یادگیری آن بسیار مهم است.

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

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

(Net = newff(PR,[S1  S2…..SN1],{TF1 TF2……TFN1},BLF,PF

در ساختار بالا PR یک ماتریس R*2 از مقادیر مینیمم و ماکزیمم R تا ورودی شبکه است. Si نیز تعداد نرون‌ها را در لایه iام شامل می‌شود. گفتنی است که در این ساختار TFi تابع انتقال لایه iام است. البته باید توجه داشت که تابع انتقال پیش فرض مورد استفاده در متلب، تابع tansig‌ است.

BTF در این فرمت مربوط به تابع یادگیری شبکه پس از انتشار خطا است که تابع پیش‌فرض آن trainlm است. BLF نیز مربوط به تابع یادگیری وزن‌ها و بایاس در روش پس از انتشار خطا است که تابع پیش فرض آن نیز learngdm نام دارد. در این فرمت، PF نیز تابع عملکرد یا همان ارزیابی شبکه است.

شبکه‌های پرسپترون

باید توجه داشته باشید که شبکه‌های پرسپترون متفاوتی در بین شبکه‌های عصبی وجود دارد اما در این بین مهم‌ترین آن‌ها، شبکه عصبی تک لایه است. از این نوع از شبکه عصبی نیز می‌توان برای کاربرد‌های آسان شناسایی الگو استفاده کرد. نکته‌ای که در متلب وجود دارد، این است که گاها راهنمایی‌هایی را در اختیار کاربران قرار می‌دهد و برای مثال با تایپ کردن دستور زیر در محیط زبان برنامه نویسی متلب می‌توانید اطلاعاتی را در خصوص شبکه‌های پرسپترون به دست آورید (توجه داشته باشید که این دستور را می‌توانید برای مسائل طبقه‌بندی خطی مورد استفاده قرار دهید:

help perceptron<<

آشنایی با معماری پرسپترون: هر شبکه پرسپتون دارای لایه‌ای از S پرسپترون است که به R ورودی از طریق وزن‌های Wij وصل شده است. در این بین Wij نشان دهنده وزن لینک ورودی jام به پرسپترون iام است. در این معماری، الگوریتم یادگیری قادر به یادگیری یک لایه است که البته محدودیت‌هایی را نیز داراست.

ایجاد شبکه پرسپترون: کاربران برای ایجاد یک شبکه پرسپترون باید دستور زیر را در محیط برنامه نویسی متلب وارد کنند:

(newp (P, S<<

در این دستور نیز P یک ماتریس با ابعاد R*2است که R تعداد ورودی آن است و هر سطر آن هم از یک حد پایین و یک حد بالای ورودی بهره می‌برد. در این دستور S تعداد نرون‌ها را نمایش می‌دهد. گفتنی است که در متلب به صورت پیش فرض تابع hardlim در پرسپترون‌ها مورد استفاده قرار می‌گیرد.

مثال: از طریق دستور زیر می‌توانید یک شبکه پرسپترون با یک ورودی که مقدار‌های آن ۰ و۲ است، ایجاد کنید. در این مثال تعداد نورون‌ها نیز ۱ در نظر گرفته شده است:

;[S=[0  ۲

;S=1

;(Net = newp (P,S

حال اگر بخواهیم این شبکه را که ساخته‌ایم، مشاهده کنیم، باید از دستور زیر استفاده کرد:

{Inputweights = net.inputweights {1,1

حال با اجرا کردن این سیستم، خروجی زیر نمایش داده می‌شود:

=  inputweights

delays: 0

‘initFcn: ‘initzero

learn: 1

‘learnFcn: ‘learnp

: [learnParam]

: [size [ 1 1

[userdata: [1×1 struct

‘weightFcn: ‘dotprod

البته باید بدین نکته توجه داشت که تابع یادگیری پرسپترون به صورت پیش‌فرض learnnp است. تابع‌ای هم که مقادیر آغازین را مقداردهی می‌کند، initzero نام دارد. گفتنی است که این تابع مقدار اولیه‌ای وزن‌ها را برابر با صفر می‌گیرد. تابع مورد استفاده برای محاسبه وزن ورودی hardlim نیز dotprod نام دارد.

کاربران با وارد کردن دستور زیر می‌توانند مقداردهی اولیه بایاس‌ها را مشاهده کنند:

{Biases = net.biases {1

وارد کردن دستور بالا در متلب، خروجی ارایه شده توسط برنامه به شکل زیر خواهد بود:

= biases

‘initFcn: ‘initzero

learn: 1

‘learnFcn: ‘learnp

: [learnParam]

size: 1

[userdata: [1×1 struct

همان طور که در خروجی بالا می‌توان مشاهده کرد، مقدار اولیه در نظر گرفته شده برای بایاس‌ها، صفر است.

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