در درس قبل یک شمای کلی از شبکههای عصبی و قانونِ ضربِ ورودی در وزنها را یادگرفتیم. اجازه بدهید در این درس ببنیم کامپیوتر با شبکههای عصبی چگونه یادگیری را انجام میدهد.
فرض کنید به یک بچهی کوچک میخواهید آموزش بدهید. مثلاً میخواهید به او بگویید که یک اتوبوس چیست؟ برای این کار چه کاری میکنید؟ یک راهِ ساده (که خودِ ما هم خیلی چیزها را از همین طریق یاد گرفتهایم) این است که به بچهی کوچک بگوییم مثلاً این اتوبوس است و آن اتوبوس نیست. چندین مورد اتوبوس را به بچه نشان میدهیم و چندین موردی که اتوبوس نیست را هم به او میگوییم. به راحتی یک بچه با چند بار تمرین میتواند یاد بگیرد که اتوبوس چیست! یعنی میتواند تمایزِ اتوبوس را با بقیه ماشینهای دیگر درک کند. این روش پایهی روشِ یادگیری در پرسپترون و بسیاری دیگر از الگوریتمهای دادهکاوی است.
فرمول زیر را برای دو ورودیِ 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) در شبکه های عصبی
- ۹ » حل یک مثال عددی یادگیری ماشین با شبکههای عصبی
سلام خوب بود استفاده کردم
عالی بود
عالی بود ممنون
با سلام ابتدا متشکرم به جهت بیان ساده و زیبا
با خواندن این درس سوالی برایم پیش امد که چون درس های بعدی را مرور نکرده ام ، ممکن است پاسخ آن در درس های بعدی باشد ، به هر حال خوشحال میشوم اگر مرا راهنمایی کنید :
آیا ممکنه الگوریتم پرسپترون در پیدا کردن آن خط دچار اشتباه بشود ؟
آیا ممکنه ما در تعریف های ویژگی هایی که قرار است به ماشین یاد بدهیم دچار کاهش دقت یا نقص تعریف بشویم و در نهایت ماشین خودش هم دچار اشتباه بشود ؟
مثلا در مثال فوق الذکر شما ممکن است چنین موردی پیش بیاید که : طول ۹ و عرض ۱.۵ باشد ؟ در این صورت آیا ماشین ممکن است بگوید در دسته پراید است و از نظر سیستم درست باشد اما در واقعیت آنچه ما مشاهده می کنیم پیش بینی سیستم غلط باشد ؟
در این صورت تشخیص اشتباه به چه صورت می شود ؟ آیا اصلا امکان دارد متوجه بشویم که اشتباه شده است ؟ خواهش می کنم اگه ممکنه کامل برام توضیح بدین .
بله ممکنه
بسیار عالی ، مفهومی و زیبا بیان کردید
کتابهای زیادی که ترجمه شده بودند مطالعه کردم ولی متأسفانه بدلیل ترجمه تحت الفظی بسیار گنگ چیز زیادی دستگیرم نشد، کتا اینکه بصورت اتفاقی این سایت و درسهای شما رو پیدا و مطالعه کردم و خیلی راحت مطالب رو متوجه شدم
ضمن تشکر فراوان از جناب مهندس کاویانی عزیز برای ایشون و دیگر دست اندرکاران این سایت ارزشمند، آرزوی توفیق دارم
سلام بسیار عالی،اگه میشه در مورد پیوند الگو وnftool نیز توضیح دهید.
واقعا عالی بود خیلی ساده و قابل فهمه
خسته نباشید
سلام
سوالی که ازتون دارم اینه که معادله ی w1 * x1 + w2 * x2 +b =0 رو چطور یک معادله ی خط در نظر گرفتید.
چون همچین معادله ای اصلا جوابی به ما نمیده. چطور از یک معادله و دو مجهول به جواب برسیم؟؟
خواهش میکنم جواب بدید خیلی درگیرش شدم.
ممنون
سلام و ممنون از دقتتون
در واقع یک معادله نیست نیست. x1 و x2 با توجه به دیتاست ما تکمیل می شوند
پس چندین معادله (به تعداد نمونههای دادههای آموزشی – مثلا ۱۰۰۰ عدد) و دو مجهول وجود دارد
ممنونم از پاسختون
عالی
چه قدر شما زیبا درس میدید. آدم کیف میکنه میخونه مطلبارو خیلی ممنون.
خیلی ساده و قابل فهم توضیح دادید
خیلی ممنون
عالی بود
خیلی خوب بود، تازه متوجه شدم اون همه بعد و ماتریس که بهمون گفتن یعنی چه. ممنون
سلام و خسته نباشید.. از کجا میتونیم تشخصی بدیم از کدوم نوع شبکه عصبی (پرسپترون چندلایه .. هاپفیلد و..) استفاده کنیم؟
واااااااااااااااااااااای که چقدر عالی توضیح دادین واقعا ممنونم خیلی مطالعه کرده بودم ولی واقعا هر منبعی استفاده میکردم بصورت پیشرفته توضیح داده بودند بازم متشکرم از شما
سلام
خیلی عالی توضیح دادید
واقعا ممنونم
خدا بهتون خیر بده و آرزوی موفقیت براتون دارم
امیدوارم همینطور ادامه داشته باشه
سلام
عالی بود
مرسی
عالی بود
درود بر شما
خیلی عالی توضیح دادید.
مطالب عالی! ممنون.