پرسپترون در شبکه عصبی چگونه یاد میگیرد؟

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

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

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

شبکه عصبی ضرب داخلی

در تصویر بالا می‌بینید که ما دو بردار داریم. بردارِ X و W. بردارِ X در شبکه‌های عصبی همان داده‌های ورودی ماست و بردارِ W وزن‌های ما (به ازای هر ورودی یک وزن داریم). وقتی از جمعِ ضربْ صحبت می‌کنیم دقیقاً مانند کاریست که در تصویرِ بالا انجام شده است. یعنی تک‌تکِ عناصر بُردارِ X را در عنصرِ نظیرِ آن در بُردارِ W ضرب کرده و حاصلِ آن‌ها را با یکدیگر جمع می‌کنیم. به این کار در ریاضیاتْ ضربِ داخلی یا dot product می‌گویند. حاصلِ این ضربْ یک عدد است. اگر این عدد بالاتر از یک مقدارِ آستانه (Threshold) باشد خروجیِ پرسپترونْ ۱ و اگر کمتر از این مقدار باشد خروجیِ پرسپترونْ ۰ است. اجازه بدهید این خروجی را b- (منفی b) بخوانیم:

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

همان‌طور که می‌بینید اگر ضربِ داخلیِ W در X کمتر از b-  شود خروجیِ پرسپترون ۰ و اگر بیشتر از b- شود خروجیِ پرسپترون ۱ می‌شود. مثالِ پراید یا اتوبوس در درسِ قبل را به یاد بیاورید. دو ویژگی داشتیم یکی طول و یکی دیگر ارتفاع. برای یادآوری، جدول ویژگی‌های اتوبوس و پراید را دوباره با یکدیگر مرور کنیم:

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

۲ ورودی داریم (طول و ارتفاع) که همان دو ویژگی‌های ما هستند. x1 ویژگیِ طول و x2 ویژگیِ ارتفاع است. پس ۲ وزن هم داریم، یکی برای طول و یکی برای ارتفاع. اجازه بدهید وزنِ طول را ۱ و وزنِ ارتفاع را ۲ در نظر بگیریم. حال برای هر نمونه (ماشین) عددِ ویژگیِ طول را در ۱ (وزن طول) و عددِ ویژگیِ ارتفاع را در ۲ (وزن ارتفاع) ضرب کنیم و حاصلِ ضرب‌ها را با هم جمع می‌کنیم (همان ضربِ داخلی). نتیجه چیزی شبیه به شکلِ زیر برای هر نمونه از جدول بالا می‌شود:

یادگیری در شبکه عصبی

می‌بینید که با انتخابِ وزنِ طول برابر ۱ و وزنِ ارتفاعِ برابر ۲ اعدادِ تولید شده برای اتوبوس و پراید از یک‌دیگر تفکیک شدند. حال اگر عدد b- (همان حد آستانه) را برابر ۹ در نظر بگیریم، پرسپترونْ ضربِ داخلیِ‌های بالای این عدد را اتوبوس و پایین این عدد را پراید در نظر می‌گیرد. به همین سادگی.

به این دست از مسئله‌ها تفیک‌پذیرِ خطی (linear separability) می‌گویند. یعنی می‌توان آن‌ها را با یک خط (مانندِ مثال درس قبل) از یک‌دیگر جدا کرد.

نکته‌ی آخری که در این درس به آن می‌رسیم، مقدارِ انحراف (بایاس) است. به تصویر زیر نگاه کنید:

یادگیری شبکه عصبی

در اینجا همان عدد b- در تصویر اول، به سمت چپ آمده است و با ضربِ داخلیِ X و W جمع می‌شود. اگر نتیجه بزرگتر از صفر شد، پرسپترون عددِ ۱ و اگر کوچکتر از ۰ شد پرسپترون عدد ۰ را برمی‌گرداند. تفاوت زیادی در این دید نیست، فقط اینجا می‌توانیم مقدارِ b را که انحراف (bias) نام دارد نیز کم و زیاد کنیم تا به عددی مناسب برسیم. در درس های بعد بیشتر به این موضوع میپردازیم.

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

» وب سایت neuralnetworksanddeeplearning » دانشگاه استنفورد » ویکیپدیا(ضرب داخلی)

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

19 دیدگاه دربارهٔ «پرسپترون در شبکه عصبی چگونه یاد میگیرد؟»

  1. خیلی عالی بود بهتر بگم فوق العاده ولی کاش یه لینک ارتباطی بهتر داشتین که سوال هارو مطرح می کردیم و جواب میگرفتیم بخصوص ماهایی که در این زمینه تازه وارد شدیم و داریم اشنا میشیم
    مثلا یکی از سوال های من اینه که چرا برای استانه اتوبوس و پراید ۹ گرفتین از چه راهی حساب کردین ؟

  2. سلام. مطالب عالی هستند.
    یک سوال: برای رسم خط به ۲ نقطه نیاز هست. perceptron رو با یک نقطه (مثلا عدد آستانه ۹) چطوری رسم میکنید؟

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

  4. ممنون از شیوه بیان خوبتون. برای من سوالی که پیش اومده این هست که چطور به معادله خط جدا کننده میرسه؟ میشه این رو به روش خودتون و با شکل توضیح بدین. ممنون

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

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

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

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