شبکه های عصبی مصنوعی : کلاس بندی با پرسپترون (perceptron) یک لایه ساده

الگوریتم پرسپترون تک لایه

میلاد شیری : در این مطلب قرار است مفاهیم اصلی شبکه های عصبی مصنوعی را توضیح دهم و نحوه عملکرد یک شبکه عصبی بسیار ساده تحت عنوان پرسپترون یک لایه با یک نورون را تشریح کنم.

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

بهتر است بخوانید : بهترین کشورها برای تحصیل | دانشگاه های برتر

پرسپترون یک لایه با یک نورون

از ابتدایی ترین شبکه های عصبی، پرسپترون یک لایه با یک نورون است. در اینجا شبکه عصبی مفهوم پیچیده ای نیست، در واقع نمایش گرافیکی معادله خط v=Wx+B است. در این معادله x مقدار ورودی، W و B مقادیر ثابت و v خروجی است. یعنی اگر یک ورودی x بدهیم ، خروجی y را می گیریم. حال فرض کنید مقدار ورودی دو بعدی باشد. معادله به این صورت در می آید:

v = W(۱)X(۱)+ W(۲)X(۲)-B

حال ورودی می تواند p بعدی باشد و مقدار ثابت B را به عنوان یک ورودی با یک  ضریب در نظر بگیریم، که معادله به این صورت می شود:

(v=W(۱)X(۱)+ W(۲)X(۲)+…+ W(p+1)X(p+1

به این خاطر که مقدار بایاس B به عنوان ورودی وارد شده، تعداد p+1 شده است. این رابطه به صورت ماتریسی به صورت زیر می شود :

و نمایش گرافیکی آن به این صورت می شود (مقدار ثابت B با ضریب w۰ و ورودی X۰ آمده است):

 

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

یادگیری در شبکه عصبی مصنوعی

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

کلاس بندی در شبکه های عصبی مصنوعی

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

 

twoclass

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

اما حال چگونه کلاس بندی با شبکه های عصبی صورت میگیرد.

کلاس بندی با پرسپترون یک لایه و یک نورون

برای کلاس بندی به این صورت عمل می کنیم. خروجی v را از یک تابع Sign عبور می دهیم تا خروجی y بدست آید. حال اگر مقدار v مثبت باشد، y یک (۱) می شود و اگر v منفی باشد، y منفی یک (۱-) می شود. یعنی اینجا دو کلاس ۱ و -۱ داریم.

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

به صورتی که :

حال لازم است تا ضرایب به گونه ای تعیین کنیم که اگر داده از دسته اول داده شد مقدار نهایی -۱ شود و اگر از دسته دوم داده شد ۱ شود.

 

الگوریتم محاسبه ضرایب پرسپترون تک لایه برای کلاس بندی دو کلاسه

از آنجایی که مقادیر ضرایب اولیه را نداریم، یک سری ضریب رندوم را در نظر می گیریم.  حال یک داده از کلاس اول را به ورودی شبکه می دهیم. در صورتی که خروجی y برابر با -۱ شد یعنی کلاس مربوطه درست است و ضرایب را بدون تغییر باقی می گذاریم. اما اگر مقدار خروجی برابر با ۱ شد، یعنی کلاس اشتباه است و باید ضرایب به گونه ای تصحیح شوند. برای تصحیح ضرایب از الگوریتم زیر استفاده می شود:

بهتر است بخوانید : چگونه تقلب کنیم ؟ ۶۰ روش عملی تقلب در امتحانات

در این رابطه بازگشتی ، ضرایب جدید براساس ضرایب مرحله قبل بدست می آید. متغیر d در واقع کلاس مطلوب را نشان می دهد و y خروجی بدست آمده. این رابطه می گوید اگر کلاس مطلوب و خروجی باهم برابر نبودند، ضریب قبلی w باید با ضریبی از ورودی جمع شود تا ضریب جدید w(n+1) تولید شود.

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

قبلی «
بعدی »

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

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

مطالب اخیر