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

پرسپترون (Perceptron) قدیمی ترین مدل شبکه های عصبی است که اولین بار در سال ۱۹۵۷ توسط Frank Rosenblatt ارائه شد (فایل مقاله). پرسپترون ساده ترین مدل شبکه های عصبی است که شکل آن در ادامه آمده است. یک پرسپترون، یک نورون (یا همان واحد محاسباتی) است که برابر با شکل زیر می تواند از یک تا چندین ورودی، یک پردازشگر (Processor) و تنها یک خروجی داشته باشد.

همانطور که از شکل بالا مشخص است، به ترتیب n ورودی x1, x2, … ,xn در وزن های w1, w2, …, wn ضرب شده اند و سپس توسط تابع زیگما که در شکل بالا با S (مخفف ) مجموع حاصل ضرب های ورودی در وزن بدست آمده است و این مقدار به تابع فعال سازی که از نوع غیر خطی است، ارسال شده است. فرض می کنیم تابع فعال سازی از نوع تابع سیگموئید باشد. هدف از تابع فعال سازی محدود کردن بازه مقادیر خروجی و آماده سازی خروجی است.

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

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

کاربرد پرتپسرون

در مفاهیم یادگیری ماشین (Machine Learning) پرتپسرون یک الگوریتم طبقه بندی دودویی (Binary Classification) که مجموعه ای از ورودی ها را به دو دسته (Category) طبقه بندی (Classifies) می کند. در واقع و از دید مفاهیم شبکه عصبی مصنوعی پرتپسرون یک تک نورون است که مجموعه ای از ورودی ها را دریافت و سپس آنها را به دو دسته طبقه بندی می کند.

توجه کنید نورون ها واحدهای پردازشی هستند که عملیات ریاضی در آنها انجام می شود. به بیان ساده در الگوریتم پرتپسرون ۲ کلاس (Class) داریم و نورون تصمیم می گیرد که داده ورودی مربوط به کدام یکی از دو کلاس است.  به طور مثال مجموعه ای از تصاویر داریم و می خواهیم آنها را به دو دسته گربه و سگ طبقه بندی کنیم.

توجه کنید که شبکه پرسپترون برای طبقه بندی دودیی پسندیده است به گونه ای که ورودی های شبکه به یکی از دو کلاس تعلق دارند. شکل زیر چگونگی کارکرد شبکه پرسپترون را با گیت های منطقی نشان می دهد. دو کلاس 1 با دایره تهی و 0 با دایره پر داریم. بردارها ورودی های شبکه هستند و توجه کنید ورودی ها ما نیز شماره های 0 و 1 هستند. برای گیت AND اگر دو ورودی شماره 1 باشند، پس کلاس آنها دایره تهی یا همان کلاس 1 است. برای گیت OR اگر هر دو ورودی 0 باشند، پس کلاس آنها دایره پر یا همان کلاس 0 است. برای گیت XOR زمانی کلاس 1 یا دایره تهی است که ورودی ها یکسان نباشند. بنابراین در اینجا، شبکه دارای دو ورودی و یک خروجی (شماره کلاس) است.

با توجه به شکل بالا، می بینید که می توانیم نمودار AND و OR را با یک خط طبقه بندی کنیم ولی این برای XOR نیست و نمی توانیم با کشیدن یک خط، کلاس دایره تهی و پر را در دسته های جدا گذاشت، پس می بینیم که شبکه پرسپترون ساده یا شبکه پرسپترون تک لایه برای XOR پاسخ گو نیست و نیاز به چندین لایه (Perceptron Multiple Layers) داریم. در نوشته پَسین، درباره سه لایه ورودی (Input Layer)، لایه پنهان (Hidden Layer) و لایه خروجی (Output Layer) گفته ایم.

لایه های شبکه های عصبی

بنابراین طبق مطالب گذشته پرتپسرون ساده باید دارای ۵ مولفه باشد:

  • مقدارهای ورودی
  • وزن ها و بایاس (Bias) که به هر اتصال (Connection) انتساب داده شده است.
  • تابع زیگما ∑ که آنرا تابع جمع یا Sum نیز می گویند.
  • تابع فعال سازی
  • خروجی

شکل زیر همانی را نشان می دهد که گفتیم می توانیم برای AND و OR با یک خط دو کلاس دایره پر (شماره 0) و دایره تهی (شماره 1) را از هم جدا کنیم. همانگونه که می بینید با توجه به نتیجه معادله سمت چپ زیر و فرستادن مقدار آن به تابع فعال سازی، اگر نتیجه برابر یا بیشتر از صفر باشد، کلاش شماره 1 خواهد بود.

تابع فعال سازی پرسپترون

شکل زیر معادله تابع فعال سازی پرسپترون برای طبقه بندی دودویی را نشان می دهد که در آن آستانه b هست و بررسی می شود که آیا مقدار مجموعه حاصل ضرب هر ورودی x در وزن خودش w بعلاوه بایاس، بیشتر یا برابر با b است یا نه؟ اگر باشد، پس کلاس 1 برگشت داده می شود، وگرنه کلاس 0 برگشت داده می شود. توجه کنید در معادله زیر، بایاس کم است و در شکل دیگر معادله درست ضرب هر ورودی در وزن خودش بعلاوه بایاس نشان داده شده است.

در شکل زیر فرض شده که از تابع پله ای (Step Function) به عنوان تابع فعال سازی استفاده شده است. همچنین می خواهیم مقادیر ورودی را به دو کلاس صفر و یک طبقه بندی کنیم. در تابع Step Function اگر مقدار ورودی تابع کمتر از صفر باشد، پس 0 برگشت داده می شود ولی اگر ورودی برابر یا بیشتر از 0 باشد، پس یک برگشت داده می شود. در اینجا مقدار آستانه شماره صفر است.

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