پرسپترون: اولین نورون یادگیرنده
جواب کوتاه
پرسپترون یه نورون مصنوعی با خروجی صفر یا یکه که وزنهاش رو خودش از مثالها یاد میگیره، و سال ۱۹۵۷ ساخته شد. قانونش خیلی سادهست: مثالها رو یکییکی میبینه؛ اگه درست گفت، هیچ کاری نمیکنه؛ اگه باید «آره» میگفت و «نه» گفت، ورودیها رو به وزنها اضافه میکنه؛ اگه برعکس، کم میکنه. اگه دو دسته با یه خط صاف جدا بشن، پرسپترون حتما بعد از چند تا اشتباه به جواب میرسه. ولی فقط خط صاف بلده؛ برای همین مسئلهای مثل «فقط یکی از ما دو نفر» (XOR) رو نمیتونه حل کنه. راهحلش چند لایه نورون پشت سر هم بود.
ماشین پیچدار
توی درس نورون مصنوعی وزنهای تصمیم جمعه رو خودمون گذاشتیم. ولی اگه نورون خودش یاد بگیره چی؟
سال ۱۹۵۷ دقیقا همین کار رو کردن و اسمش رو گذاشتن پرسپترون. جالبش اینه که بعدش یه ماشین واقعی هم براش ساختن: وزنهاش پیچهایی بودن که موقع یادگیری، موتورهای برقی میچرخوندنشون. هر بار ماشین اشتباه میکرد، پیچها یه کم میچرخیدن.
اون موقع کلی هیجان درست کرد و دربارهاش ادعاهای خیلی بزرگی شد. ولی خود ایدهاش خیلی ساده بود.
قانون یادگیری
پرسپترون مثالها رو یکییکی میبینه و برای هر کدوم جوابش رو با جواب درست مقایسه میکنه. فقط سه حالت داره:
- درست گفت: هیچ کاری نمیکنه.
- باید «آره» میگفت، گفت «نه»: ورودیها رو به وزنها اضافه میکنه و بایاس رو یکی زیاد میکنه. اینطوری دفعهی بعد جمعش بیشتر میشه.
- باید «نه» میگفت، گفت «آره»: ورودیها رو از وزنها کم میکنه و بایاس رو یکی کم میکنه.
معمولا این تغییر رو در یه عدد کوچیک ضرب میکنن تا قدمها آرومتر باشن؛ همون نرخ یادگیری. اینجا برای سادگی، نرخ رو ۱ میگیریم.
با عدد
چهار تا جمعهی قبلی رو داریم. هر کدوم سه تا ورودی داره (هوا خوب بود، دوستا اومدن، خسته بودم) و اینکه آخرش رفتم یا نه. همهی وزنها از صفر شروع میشن. جواب «بریم» یعنی جمع بیشتر از صفر:
- جمعهی الف: جمع صفره، پس گفت «نریم»، ولی رفته بودم. ورودیها (۱، ۱، ۰) رو به وزنها اضافه کرد و بایاس شد ۱.
- جمعهی ب: جمع شد ۰ + ۱ + ۰ + ۱، یعنی ۲؛ گفت «بریم»، ولی نرفته بودم. ورودیها (۰، ۱، ۱) رو کم کرد و بایاس برگشت صفر.
- جمعهی پ و ت: هر دو رو درست گفت؛ هیچ تغییری.
دور دوم هر چهار تا رو درست میگه، پس یادگیری تموم شد. وزنهایی که پیدا کرد: هوا ۱، دوستا ۰، خستگی منفی ۱. یعنی از روی این چهار جمعه فهمید هوا مهمه و خستگی منصرف میکنه؛ بی اینکه کسی بهش گفته باشه.
فقط یه خط صاف
یه نورون، ورودیها رو در وزنها ضرب و جمع میکنه و با صفر مقایسه میکنه. اگه این رو روی نقشه بکشیم، مرزش همیشه یه خط صافه؛ مثل مرز تصمیم رگرسیون لجستیک. به این جور مدل میگن دستهبند خطی.
یه خبر خوب هم ثابت شده: اگه دو دسته با یه خط صاف جدا بشن، پرسپترون حتما بعد از تعداد محدودی اشتباه به جواب میرسه. ولی اگه هیچ خط صافی جداشون نکنه، هیچوقت آروم نمیگیره و تا ابد وزنهاش رو عوض میکنه.
جایی که گیر کرد
دو تا قانون خرید رو مقایسه کنید. اولی: «فقط وقتی من و تو هر دو بریم، خرید انجام میشه». دومی: «یا من برم یا تو؛ نه هر دو، نه هیچکدوم».
اولی رو یه خط صاف جدا میکنه و پرسپترون راحت یادش میگیره. ولی دومی، که اسمش XOR هست، دو تا نقطهی توپرش روی یه قطرن و دو تا توخالی روی قطر دیگه. هر خطی بکشید، یه طرفش هم توپر داره هم توخالی. پس یه پرسپترون تنها هیچوقت یادش نمیگیره.
سال ۱۹۶۹ یه کتاب معروف همین رو نشون داد، و بعدش علاقه و بودجه برای شبکههای عصبی تا سالها خیلی کم شد.
راه نجات
راهحلش رو نویسندههای همون کتاب هم میدونستن: یه نورون یه خط میکشه، ولی دو تا نورون دو تا خط. اگه یه لایهی دیگه نورون بذاریم که جواب این دو تا خط رو با هم ترکیب کنه، XOR حل میشه. به این میگن شبکهی عصبی چندلایه.
فقط یه مشکل داشت: قانون سادهی پرسپترون برای چند لایه کار نمیکنه، چون نمیدونیم اشتباه تقصیر کدوم نورون لایهی وسط بوده. جوابش بعدها اومد و اسمش پسانتشار خطا هست. ولی قبلش، درس بعد باید ببینیم چرا نورونها به یه تابع غیرخطی نیاز دارن: تابع فعالسازی.
جمعبندی. آنچه از این درس با خودتان میبرید.
- یه نورون با خروجی صفر یا یک.
- درست گفت: هیچی؛ اشتباه: وزنها رو هل بده.
- اگه خط صافی باشه، پیداش میکنه.
- فقط خط صاف؛ XOR رو نمیتونه.
- راهحل: چند لایه نورون.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.