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