mlp

شبکه پرسپترون

شبکه عصبی پرسپترون (Perceptron Neural Network) یک الگوریتم یادگیری ماشینی است که برای دسته‌بندی داده‌ها استفاده می‌شود. این شبکه عصبی در دهه ۱۹۵۰ توسط فرانک روزنبلات (Frank Rosenblatt) اختراع شد و از آن زمان به عنوان یکی از اولین الگوریتم‌های یادگیری ماشینی مورد استفاده قرار گرفت.

شبکه عصبی پرسپترون شامل یک لایه ورودی، یک لایه خروجی و یک یا چندین لایه پنهان (hidden layer) است.

  • هر نورون در لایه ورودی از همه ابعاد ورودی اطلاعات را دریافت می کند.
  • هر نورون در لایه خروجی نشان‌دهنده‌ی یک دسته‌بندی است که متناسب با تعداد دسته های داده های ورودی می باشد.
  • نورون‌های لایه پنهان، وظیفه‌ی پردازش داده‌های ورودی را دارند و اطلاعاتی که برای دسته‌بندی لازم است را استخراج می‌کنند.

هر نورون در لایه ورودی با وزن‌هایی که به آن نسبت داده شده است، می‌تواند ورودی را به لایه پنهان انتقال دهد. هر نورون در لایه پنهان با وزن‌هایی که به آن نسبت داده شده است، ورودی را پردازش کرده و خروجی خود را به نورون‌های لایه خروجی منتقل می‌کند. خروجی هر نورون در لایه خروجی برای دسته‌بندی داده‌ها استفاده می‌شود.

مدل نرون تک ورودی

در این حالت ورودی یک بردار تک بعدی می باشد. شکل زیر ساختار این مدل شبکه را نشان می دهد. اسکالرهای p , a به ترتيب ورودی و خروجی نرون می باشند.

Single Input Neuron

ورودی ها p پس از ضرب شدن در وزن های w با مقدار بایاس b جمع می شوند و از تابع فعالساز برای  نگاشت مقادیر ایجاد شده به خروجی مطلوب استفاده می شود.

a = f(wp+b)

باید توجه داشت که پارامترهای b ، w قابل تنظيم هستند و تابع فعال سازی f نيز توسط طراح انتخاب می شود. بر اساس انتخاب f و نوع الگوریتم یادگيری، پارامترهای b ،w  ورودی و خروجی نرون با هدف خاصی مطابقت نماید.

مدل تک نرون با چند ورودی

از آنجا که بردار ورودی اکثرا ابعادی بیش از یک است، شکل زیر درک بهتری از ویژگی های چند بعدی نشان می دهد. در این تک نرون ورودی با R بعد نشان داده شده است که P نشان دهنده بردار ورودی است.

multi_input
چند ورودی

رابطه ریاضی باز هم مشابه حالت قبلی خواهد بود تنها همه پارامتر های وزن و ورودی برداری خواهد بود.

روش بروز رسانی وزن ها (یادگیری پرسپترون)

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

این روش در حالت کلی برای محاسبه وزن ها استفاده یم شود که به آن  «پس انتشار خطا» (Error Backpropagation) می گویند و الگوریتم اصلی یادگیری در شبکه عصبی پرسپترون تک لایه محسوب می‌شود. رابطه ریاضی در حالت ساده پروسپترون به صورت زیر می باشدو 

wi(t+1)=wi(t)+η(a–Target)Pi

bi(t+1)=bi(t)+η(a–Target)

در این رابطه، η مقدار نرخ یادگیری (عددی مثبت)، Target مقدار خروجی مورد انتظار برای ورودی و a خروجی تولید شده برای ورودی مسأله است. 


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

dw = learnp(w,p,[],[],[],[],[],e, [],[],[])   % dw = (Target-a)Pi


شبکه پرسپترون چند لایه (MLP)

شبکه عصبی پرسپترون چند لایه، دسته‌ای از شبکه‌های عصبی مصنوعی پیشخور (feed forward ) محسوب می‌شوند.که از روش آموزش نظارت شده پس انتشار (انتشار معکوس) برای به روز رسانی وزن ها بهره می جوید.
 MLP شامل لایه هایی از نورون ها می باشد که دارای وزنها (w) و بایاسها (b) می باشند. این وزنها و بایاسها به ورودی اعمال می شوند و نتیجه پس از عبور از تابع فعالساز مورد نظر به عنوان خروجی نورون محاسبه میگردد. خروجی نورون از رابطه ی زیر به دست می آید.

MLP
MLP

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

روش بروز رسانی وزن ها با الگوریتم پس انتشار خطا

خطا یا زیان شبکه را با تفریق مقدار مورد انتظار (Target) از مقدار پیش بینی شده (a) به دست می آوریم. پس از محاسبه مقدار زیان در مرحله قبل، این مقدار از لایه خروجی به سمت لایه اول شبکه انتشار می‌یابد (Error BackPropagation) و با استفاده از مفهوم گرادیان یا شیب، وزن‌های شبکه عصبی پرسپترون چند لایه به روز رسانی می‌شوند.
این بخش، مهم‌ترین بخش الگوریتم پس انتشار در آموزش شبکه عصبی پرسپترون چند لایه محسوب می‌شود. در مرحله بعد، با توجه به مقادیر خروجی مورد انتظار و خروجی پیش‌بینی شده برای هر کدام از نرون های لایه خروجی، مقدار پارامتر دلتا محاسبه می‌شود. و در نهایت برای تنظیم کردن وزن‌های تمامی نرون های شبکه عصبی پرسپترون چند لایه، از روش «گرادیان کاهشی» (Gradient Descent) استفاده می‌شود. 


برای ایجاد شبکه پرسپترون در متلب به مدل سازی عملگر منطقی AND می پردازیم:

P = [0  0 1 1 ; 0 1 0 1] ;% P1 = [0;0] , P2 = [0;1] , P3 = [1;0] , P4 = [1;1] 
T = [ 0 0 0 1]  ;        % AND
net = newp (P,T)
train (net,P,T)
«گرادیان کاهشی» (Gradient Descent) یک الگوریتم بهینه‌سازی برای پیدا کردن کمینه یک تابع است. در این الگوریتم کار با یک نقطه تصادفی روی تابع آغاز می‌شود و روی جهت منفی از گرادیان تابع حرکت می‌کند تا به کمینه محلی/سراسری برسد.

4 thoughts on “شبکه پرسپترون در متلب

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *