با خواندن درس قبل فهمیدیم که پرسپترون (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) نام دارد نیز کم و زیاد کنیم تا به عددی مناسب برسیم. در درس های بعد بیشتر به این موضوع میپردازیم.
- ۱ » شبکه عصبی (Neural Network) چیست؟
- ۲ » تعریف پرسپترون (Perceptron) در شبکه های عصبی
- ۳ » پرسپترون در شبکه عصبی چگونه یاد میگیرد؟
- ۴ » پرسپترون چند لایه (Multi Layer Perceptron) چیست؟
- ۵ » درباره توابع فعال سازی پرسپترون و Sigmoid
- ۶ » تابع ضرر (Loss Function) در شبکه عصبی چیست و چه کاربردی دارد؟
- ۷ » نحوه یادگیری پس انتشار خطا (Back Propagation) در شبکه های عصبی
- ۸ » کاهش گرادیان (Gradient Descent) در شبکه های عصبی
- ۹ » حل یک مثال عددی یادگیری ماشین با شبکههای عصبی
واقعا دمتون گرم . خیلی واضح و جالب توضیح دادین
عالی توضیح دادید
ممنون از توضیحات مفید شما
فوق العاده بود
ممنون از توضیحات بسیار مفید و قابل استفاده شما
خیلی عالی بود بهتر بگم فوق العاده ولی کاش یه لینک ارتباطی بهتر داشتین که سوال هارو مطرح می کردیم و جواب میگرفتیم بخصوص ماهایی که در این زمینه تازه وارد شدیم و داریم اشنا میشیم
مثلا یکی از سوال های من اینه که چرا برای استانه اتوبوس و پراید ۹ گرفتین از چه راهی حساب کردین ؟
سلام و عرض تشکر
حدِ آستانه یکی از مسائلی است که الگوریتمهای طبقهبندی بایستی به آن دست پیدا کنند. در واقع الگوریتم بایستی این حدِ آستانه را در بیابد
سلام. مطالب عالی هستند.
یک سوال: برای رسم خط به ۲ نقطه نیاز هست. perceptron رو با یک نقطه (مثلا عدد آستانه ۹) چطوری رسم میکنید؟
ساده و زیبا
خیلی خوبه
صدتا سایت گشتم هیچکدوم مثل شما انقدر واضح کامل و ساده توضیح نداده بود واقعا ممنون
خسته نباشید. خب یادگیری رو اینجا توضیح ندادید!! اگر اشتباه نکنم یادگیریعنی یه جور کسب تجربه! فرض کنید ما نمونه اول رو به کامپیوتر دادیم و بهش گفتیم که این یک اتوبوس هست، خب از روی تجربه اول چگونه ماشین یه چیزی یاد میگیره؟؟
باز اگر اشتباه نکنم یادگیری در اینجا یعنی پیدا کردن همین خطی که قرار هست اتوبوس رو از پرای جدا کنه، ( مفهومی شبیه به رگرسیون خطی)، خب فرض کنید من ۱۰ تا نمونه دادم به ماشین گفتم این اتوبوس هست و این نیست؛ خب این نمونه هایی که من دادم و چجوری ذخیره میشه و چجوری الگوریتم ازین داده ها استفاده میکنه برای پیدا کردن خط جدا کننده؟؟
واقعااااا عالی و روان یاد دادین….خسته نباشین
ممنون از شیوه بیان خوبتون. برای من سوالی که پیش اومده این هست که چطور به معادله خط جدا کننده میرسه؟ میشه این رو به روش خودتون و با شکل توضیح بدین. ممنون
تشکر از مطالب خوبتون
سلام ممنونم بابت مطالب عالیتون
میشه بایاس رو با مثال توضیح مختصر بدین که اگه نباشه چه اتفاقی میوفته اصلا دلیل اینکه بایاس اضافه شد چیه من تو این قسمت مشکل دارم
و اینکه اگر توضیح زمانبره ممنون میشم یه منبع انگلیسی یا فارسی معرفی کنین که این قسمتو ریز و کامل توضیح داده باشه
سلام وقتتون بخیر
خیلی عالی هست مطالبتون بی نظیر توضیح می دید.
سوال من این هست که وزن ها چه طور به هر ورودی تخصیص داده می شود؟ و تابع فعال ساز چه زور محاسبه می شود؟
احسنت به این شیوایی کلام
استاد شما یک معلم بالقوه هستید
پیروز باشید
عاااالی
عالیی بود مرسی