در درس قبل یک شمای کلی از شبکههای عصبی و قانونِ ضربِ ورودی در وزنها را یادگرفتیم. اجازه بدهید در این درس ببنیم کامپیوتر با شبکههای عصبی چگونه یادگیری را انجام میدهد.
فرض کنید به یک بچهی کوچک میخواهید آموزش بدهید. مثلاً میخواهید به او بگویید که یک اتوبوس چیست؟ برای این کار چه کاری میکنید؟ یک راهِ ساده (که خودِ ما هم خیلی چیزها را از همین طریق یاد گرفتهایم) این است که به بچهی کوچک بگوییم مثلاً این اتوبوس است و آن اتوبوس نیست. چندین مورد اتوبوس را به بچه نشان میدهیم و چندین موردی که اتوبوس نیست را هم به او میگوییم. به راحتی یک بچه با چند بار تمرین میتواند یاد بگیرد که اتوبوس چیست! یعنی میتواند تمایزِ اتوبوس را با بقیه ماشینهای دیگر درک کند. این روش پایهی روشِ یادگیری در پرسپترون و بسیاری دیگر از الگوریتمهای دادهکاوی است.
فرمول زیر را برای دو ورودیِ X1 و X2 که ضرب ورودی در وزنها بود، به خاطر بیاورید:
W1*X1 + W2*X2 + θ = ۰
فرمولِ بالا زیاد سخت نیست. ابتدا X1 را در وزن W1 ضرب کردهایم (برای X2 و W2 هم همینطور) سپس آنها را با هم جمع کردهایم. دقیقاً مانند اتفاقی که در درسِ قبل افتاد. فقط اینجا دو ورودی X1 و X2 داریم (قبلا n تا داشتیم). این شما را یاد چه چیز میاندازد؟ معادلهی خط؟ بلی. حال فرض کنید که W1 و W2 دو عددِ ثابت مثلاً ۲ و ۱ هستند که همانطور که میدانید شیبِ خط نام دارند. θ هم که اگر یادتان باشد عرض از مبدا است. اجازه بدهید ببینیم این خط چگونه به یادگیریِ پرسپترون کمک میکند.
فرض کنید میخواهیم تفاوتِ بین اتوبوس و پراید را این بار به کامپیوتر یاد بدهیم. در کل نحوهی یاد گرفتنِ کامپیوتر به این صورت است که باید یک سری ویژگیها را به کامپیوتر داده و بگوییم این اتوبوس است. یک سری ویژگیهای دیگر را هم به کامپیوتر داده و بگوییم که این پراید است. برای یادگیری در شبکههای عصبی (و کلا بقیهی الگوریتمهای دادهکاوی) نمونههای مختلفِ یک اتوبوس و نمونههای مختلفِ یک پراید را همراه با ویژگیهای آنها به الگوریتم شبکهی عصبی (یا دیگر الگوریتمهای دادهکاوی) میدهیم و از این الگوریتمها انتظار داریم که یادگیری را انجام دهد.
به شکل زیر نگاهی بیندازید:
همانطور که میبینید نمونههای مختلف را در یک جدول آوردیم. مثلاً نمونهی ۱ را نگاه کنید. این نمونه یک اتوبوس است که طولِ ۷متر و ارتفاعِ ۴متر دارد. نمونهی ۵ نیز یک پراید است که طولِ ۳متر و ارتفاعِ ۱.۵ متر دارد. به همین صورت چندین اتوبوس را برچسبگذاری کردهایم و ویژگیهای مختلفِ آن (طول و ارتفاع) را اندازهگیری کرده و آماده ساختهایم. پس اینجا ما دو ویژگی داریم. یکی طول و دیگری ارتفاع. این دو ویژگی باعث ایجادِ دو بُعد در ریاضیاتِ مورد استفادهی ما میشود. برای واضحتر شدنِ بحثْ به تصویر زیر نگاهی بیندازید. در این تصویر ما جدولِ بالا را در دو بُعد که محورِ افقیِ آن نشاندهندهی طول و محور عمودی نشان دهنده ارتفاع است قرار داده و هر کدام از نمونهها را به صورتِ یک نقطه در این فضای دو بعدی درج کردهایم:
تحلیل تصویر بالا ساده است. نگاهی به جدولِ بالاتر بیندازید. در اینجا هر کدام از نمونهها را با توجه به طول (محورِ افقی) و ارتفاع (محورِ عمودی) بر روی محورِ مختصات با شماره درج کردهایم. رنگِ قرمز اتوبوسها و رنگ سبز پرایدها هستند. مثلا نمونهی #۴ نشان دهندهی اتوبوسِ شمارهی ۴ است که طولِ آن ۹ و ارتفاع آن ۴.۵ متر بود. حال به معادلهی خط میرسیم. خط آبی را در تصویر زیر نگاه کنید:
این خط یک خط جدا کننده بین اتوبوس و پراید است. یعنی تمامیِ نقاطی که بالای این خط قرار میگیرند اتوبوس هستند و تمامیِ نقاطی که پایین این خط قرار میگیرند پراید هستند. در واقع کار پرسپترون در شبکهی عصبی پیدا کردنِ این خط (یا چیزی شبیه به این خط) است به طوری که بین دو نمونهی مختلف تمایز ایجاد کند.
در واقع پرسپترون سادهترین تابع فعالسازی در شبکهی عصبی است. (به درسِ قبل رجوع کنید و ببینید که یک قسمت به عنوان تابعِ فعال ساز داشتیم) که قادر است یک نمونه را به خروجیِ صفر یا یک تبدیل کند. در مثالِ ما پرسپترون اگر اتوبوس بیاد ۱ و اگر پراید بیاید عدد ۰ را در خروجی نمایش میدهد.
تا اینجا یک درس کلی از فضای مختصات و کاربردِ عملکرد پرسپترون در شبکهی عصبی را یاد گرفتیم. این ها تماماً مقدماتی برای درکِ هر چه بهترِ کارکرد شبکههای عصبی و بسیاری از الگوریتمهای دیگر دادهکاوی است.
- ۱ » شبکه عصبی (Neural Network) چیست؟
- ۲ » تعریف پرسپترون (Perceptron) در شبکه های عصبی
- ۳ » پرسپترون در شبکه عصبی چگونه یاد میگیرد؟
- ۴ » پرسپترون چند لایه (Multi Layer Perceptron) چیست؟
- ۵ » درباره توابع فعال سازی پرسپترون و Sigmoid
- ۶ » تابع ضرر (Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟
- ۷ » نحوه یادگیری پس انتشار خطا (Back Propagation) در شبکه های عصبی
- ۸ » کاهش گرادیان (Gradient Descent) در شبکه های عصبی
- ۹ » حل یک مثال عددی یادگیری ماشین با شبکههای عصبی
سلام ایا پرسپترون فقط یک خط را پیدا میکند یا چندین خط؟
عالی
خیلی ممنونم از محبتتون بابت این درس
بسته به داده ها و ارتباط بین داده ها به این صورت که اگه رابطه بین داده ها از نوع رگرسیون خطی باشه خب طبیعتا خروجی خط هست ولی در مورد مسایلی که بین داده ها یا همون فیچر ها غیرخطی باشن خب شاید منحنی یا تابع چندجزئی برگردونه