مقدار اولیهی وزنها
جواب کوتاه
پیش از اینکه آموزش شروع بشه، باید به هر وزن شبکه یه عدد اولیه بدیم. اگه همه رو صفر بذاریم، همهی نورونهای یه لایه مثل دوقلوهای همسان میشن: یه چیز حساب میکنن، یه جور عوض میشن و تا آخر عین هم میمونن. پس وزنها رو تصادفی میذاریم. ولی اندازهشون هم مهمه: اگه زیادی کوچیک باشن، عددها لایه به لایه کوچیکتر میشن و محو میشن؛ اگه زیادی بزرگ، منفجر میشن. قانون کلی اینه که هر چی یه نورون ورودی بیشتری داره، وزنهاش ریزتر باشن، تا اندازهی عددها از لایهای به لایهی بعد تقریبا ثابت بمونه. بایاسها معمولا صفر شروع میشن.
دوقلوهای همسان
قبل از اینکه شبکه یاد بگیره، وزنهاش باید یه عددی داشته باشن. سادهترین فکر: همه رو صفر بذاریم. ولی ببینید چی میشه:
با وزنهای صفر، هر سه نورون دقیقا یه عدد حساب میکنن. توی پسانتشار هم سهمشون دقیقا یکیه، پس دقیقا یه جور عوض میشن. بعد از هزار قدم هم هنوز عین همان؛ مثل دوقلوهای همسان. انگار جای سه نورون، فقط یه نورون داریم.
با وزنهای تصادفی، هر نورون از یه جای متفاوت شروع میکنه، و هر کدوم دنبال یه چیز متفاوت میره.
چرا صفر نه؟
به این مشکل میگن تقارن. قدم به قدمش:
- همهی وزنها یکیان، پس همهی نورونها یه جواب میدن.
- جوابها یکیان، پس سهمشون از خطا هم یکیه.
- سهمها یکیان، پس همه یه اندازه عوض میشن.
- بعد از تغییر، هنوز همه یکیان؛ برگرد به قدم ۱.
برای همین وزنها رو تصادفی انتخاب میکنن؛ از همون زمان پرسپترون هم همین کار رو میکردن. ولی برای بایاسها، صفر معمولا مشکلی نداره، چون وزنهای تصادفی خودشون تقارن رو میشکنن.
چقدر بزرگ؟
تصادفی، باشه؛ ولی چقدر بزرگ؟ فرض کنید هر لایه، عدد ورودیش رو یه ضریبی کنه. یه عدد ۱ رو از ده تا لایه رد میکنیم:
اگه هر لایه نصفش کنه، بعد از ده لایه میشه حدود ۰٫۰۰۱؛ عملا محو شده. اگه هر لایه دو برابرش کنه، میشه ۱۰۲۴؛ منفجر شده. فقط وقتی ضریب حدود ۱ باشه، عدد سالم به آخر میرسه. و این توی هر دو جهت هست: هم عددها توی گذر رو به جلو، هم سهمها توی پسانتشار.
وزنهای اولیهی زیادی بزرگ یا زیادی کوچیک، دقیقا همین بلا رو سر شبکهی عمیق میارن.
قانون اندازه
خروجی هر نورون جمع خیلی تا ورودی ضرب در وزنه. هر چی تعداد ورودیها بیشتر، این جمع بزرگتر میشه. پس برای اینکه اندازهی جواب ثابت بمونه:
قانونش اینه: وزنها تصادفی، با میانگین صفر، و پخششون (واریانسشون) حدود ۱ تقسیم بر تعداد ورودیهای نورون. این روش سال ۱۹۹۸ معروف شد. بعدها نسخههایی اومدن که هم گذر رو به جلو رو در نظر میگیرن هم برگشت رو، و یه نسخهی مخصوص هم برای ReLU، که پخش رو ۲ تقسیم بر تعداد ورودیها میگیره.
چند نکته
- چرا مهمه: مقدار اولیه روی سرعت یادگیری و حتی کیفیت مدل آخر اثر داره.
- قدیم چی کار میکردن: پیش از دههی ۲۰۱۰، آموزش مستقیم شبکههای عمیق اونقدر سخت بود که اول لایه به لایه با یه روش دیگه آمادهشون میکردن، بعد آموزش اصلی.
- بایاس: معمولا صفر.
اون محو و انفجاری که دیدیم، یکی از بزرگترین دردسرهای شبکههای عمیقه. درس بعد مفصلتر میبینیمش: محو و انفجار گرادیان.
جمعبندی. آنچه از این درس با خودتان میبرید.
- همه صفر: همهی نورونها عین هم.
- پس وزنها تصادفی.
- زیادی کوچیک: محو؛ زیادی بزرگ: انفجار.
- ورودی بیشتر، وزن ریزتر.
- بایاس معمولا صفر.
خودتون رو بسنجید
۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو میبینید: چند تا درست، چند تا نادرست.