تعریف پرسپترون (Perceptron) در شبکه های عصبی

مدرس: مسعود کاویانی

در درس قبل یک شمای کلی از شبکه‌های عصبی و قانونِ ضربِ ورودی در وزن‌ها را یادگرفتیم. اجازه بدهید در این درس ببنیم کامپیوتر با شبکه‌های عصبی چگونه یادگیری را انجام می‌دهد.

فرض کنید به یک بچه‌ی کوچک می‌خواهید آموزش بدهید. مثلاً می‌خواهید به او بگویید که یک اتوبوس چیست؟ برای این کار چه کاری می‌کنید؟ یک راهِ ساده (که خودِ ما هم خیلی چیزها را از همین طریق یاد گرفته‌ایم) این است که به بچه‌ی کوچک بگوییم مثلاً این اتوبوس است و آن اتوبوس نیست. چندین مورد اتوبوس را به بچه نشان می‌دهیم و چندین موردی که اتوبوس نیست را هم به او می‌گوییم. به راحتی یک بچه با چند بار تمرین می‌تواند یاد بگیرد که اتوبوس چیست! یعنی می‌تواند تمایزِ اتوبوس را با بقیه ماشین‌های دیگر درک کند. این روش پایه‌ی روشِ یادگیری در پرسپترون و بسیاری دیگر از الگوریتم‌های داده‌کاوی است.

فرمول زیر را برای دو ورودیِ X1 و X2 که ضرب ورودی در وزن‌ها بود، به خاطر بیاورید:

W1*X1 + W2*X2 + θ = ۰

فرمولِ بالا زیاد سخت نیست. ابتدا X1 را در وزن W1 ضرب کرده‌ایم (برای X2 و W2 هم همینطور) سپس آن‌ها را با هم جمع کرده‌ایم. دقیقاً مانند اتفاقی که در درسِ قبل افتاد. فقط اینجا دو ورودی X1 و X2 داریم (قبلا n تا داشتیم). این شما را یاد چه چیز می‌اندازد؟ معادله‌ی خط؟ بلی. حال فرض کنید که W1 و W2 دو عددِ ثابت مثلاً ۲ و ۱ هستند که همان‌طور که می‌دانید شیبِ خط نام دارند. θ هم که اگر یادتان باشد عرض از مبدا است. اجازه بدهید ببینیم این خط چگونه به یادگیریِ پرسپترون کمک می‌کند.

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

به شکل زیر نگاهی بیندازید:

پرسپترون شبکه عصبی

همان‌طور که می‌بینید نمونه‌های مختلف را در یک جدول آوردیم. مثلاً نمونه‌ی ۱ را نگاه کنید. این نمونه یک اتوبوس است که طولِ ۷متر و ارتفاعِ ۴متر دارد. نمونه‌ی ۵ نیز یک پراید است که طولِ ۳متر و ارتفاعِ ۱.۵ متر دارد. به همین صورت چندین اتوبوس را برچسب‌گذاری کرده‌ایم و ویژگی‌های مختلفِ آن (طول و ارتفاع) را اندازه‌گیری کرده و آماده ساخته‌ایم. پس اینجا ما دو ویژگی داریم. یکی طول و دیگری ارتفاع. این دو ویژگی باعث ایجادِ دو بُعد در ریاضیاتِ مورد استفاده‌ی ما می‌شود. برای واضح‌تر شدنِ بحثْ به تصویر زیر نگاهی بیندازید. در این تصویر ما جدولِ بالا را در دو بُعد که محورِ افقیِ آن نشان‌دهنده‌ی طول و محور عمودی نشان دهنده ارتفاع است قرار داده و هر کدام از نمونه‌ها را به صورتِ یک نقطه‌ در این فضای دو بعدی درج کرده‌ایم:

تحلیل تصویر بالا ساده است. نگاهی به جدولِ بالاتر بیندازید. در اینجا هر کدام از نمونه‌ها را با توجه به طول (محورِ افقی) و ارتفاع (محورِ عمودی) بر روی محورِ مختصات با شماره درج کرده‌ایم. رنگِ قرمز اتوبوس‌ها و رنگ سبز پراید‌ها هستند. مثلا نمونه‌ی #۴ نشان دهنده‌ی اتوبوسِ شماره‌ی ۴ است که طولِ آن ۹ و ارتفاع آن ۴.۵ متر بود. حال به معادله‌ی خط می‌رسیم. خط آبی را در تصویر زیر نگاه کنید:

پرسپترون شبکه عصبی

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

در واقع پرسپترون ساده‌ترین تابع فعال‌سازی در شبکه‌ی عصبی است. (به درسِ قبل رجوع کنید و ببینید که یک قسمت به عنوان تابعِ فعال ساز داشتیم) که قادر است یک نمونه را به خروجیِ صفر یا یک تبدیل کند. در مثالِ ما پرسپترون اگر اتوبوس بیاد ۱ و اگر پراید بیاید عدد ۰ را در خروجی نمایش می‌دهد.

تا اینجا یک درس کلی از فضای مختصات و کاربردِ عملکرد پرسپترون در شبکه‌ی عصبی را یاد گرفتیم. این ها تماماً مقدماتی برای درکِ هر چه بهترِ کارکرد شبکه‌های عصبی و بسیاری از الگوریتم‌های دیگر داده‌کاوی است.

منابع این بحث و اطلاعات بیشتر

» وب سایت aass » وب سایت medium » وب سایت appliedgo

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

27 دیدگاه دربارهٔ «تعریف پرسپترون (Perceptron) در شبکه های عصبی»

  1. با سلام ابتدا متشکرم به جهت بیان ساده و زیبا
    با خواندن این درس سوالی برایم پیش امد که چون درس های بعدی را مرور نکرده ام ، ممکن است پاسخ آن در درس های بعدی باشد ، به هر حال خوشحال میشوم اگر مرا راهنمایی کنید :
    آیا ممکنه الگوریتم پرسپترون در پیدا کردن آن خط دچار اشتباه بشود ؟
    آیا ممکنه ما در تعریف های ویژگی هایی که قرار است به ماشین یاد بدهیم دچار کاهش دقت یا نقص تعریف بشویم و در نهایت ماشین خودش هم دچار اشتباه بشود ؟
    مثلا در مثال فوق الذکر شما ممکن است چنین موردی پیش بیاید که : طول ۹ و عرض ۱.۵ باشد ؟ در این صورت آیا ماشین ممکن است بگوید در دسته پراید است و از نظر سیستم درست باشد اما در واقعیت آنچه ما مشاهده می کنیم پیش بینی سیستم غلط باشد ؟
    در این صورت تشخیص اشتباه به چه صورت می شود ؟ آیا اصلا امکان دارد متوجه بشویم که اشتباه شده است ؟ خواهش می کنم اگه ممکنه کامل برام توضیح بدین .

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

  3. سلام
    سوالی که ازتون دارم اینه که معادله ی w1 * x1 + w2 * x2 +b =0 رو چطور یک معادله ی خط در نظر گرفتید.
    چون همچین معادله ای اصلا جوابی به ما نمیده. چطور از یک معادله و دو مجهول به جواب برسیم؟؟
    خواهش میکنم جواب بدید خیلی درگیرش شدم.
    ممنون

    1. سلام و ممنون از دقتتون
      در واقع یک معادله نیست نیست. x1 و x2 با توجه به دیتاست ما تکمیل می شوند
      پس چندین معادله (به تعداد نمونه‌های داده‌های آموزشی – مثلا ۱۰۰۰ عدد) و دو مجهول وجود دارد

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

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

  6. سلام
    خیلی عالی توضیح دادید
    واقعا ممنونم
    خدا بهتون خیر بده و آرزوی موفقیت براتون دارم
    امیدوارم همینطور ادامه داشته باشه

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

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