یه روش خفن جدید واسه تنظیم سرعت یادگیری شبکه‌های عصبی: VolSched!

Fall Back

بذار داستان رو از یه سوال ساده شروع کنم: واقعاً چجوری باید سرعت یادگیری یا همون Learning Rate موقع آموزش شبکه‌های عصبی تنظیم بشه؟ می‌دونی که، سرعت یادگیری یکی از اون چیزای خیلی حساسه؛ اگه زیاد باشه کل مدل می‌پره، اگه کم باشه هیچی یاد نمی‌گیره و یه سری تو plateau (یعنی یه حالت سفت و سخت و بی‌حرکت تو نمودار خطا) گیر می‌کنه.

همه معمولاً یا با یه برنامه از قبل تعریف شده سرعت یادگیری رو کم و زیاد می‌کنن یا از الگوریتم‌های adaptive (یعنی تنظیم‌شونده بر اساس رفتار مدل) استفاده می‌کنن. ولی انصافاً بازم حتی اینا گاهی به جواب بهینه نمی‌رسن و مدل خوب generalize (یعنی با داده‌های جدید خوب کار کنه) نمی‌شه.

حالا یه تیم باحال اومدن یه ایده جدید به اسم VolSched معرفی کردن که به شکل هوشمندانه‌ای به قضیه «ناپایداری یا volatility» موقع آموزش نگاه می‌کنه. ولتیلیتیش کلاً یعنی چقدر خروجی یه چیزی بالا پایین می‌شه؛ تو معاملات بورس هم زیاد بحثشه، ولی اینجا هم جالبه!

تو VolSched مثل بورس (!) مدل رو نگاه می‌کنن تا ببینن دامنه تغییرات درست چجوریه. دقیق‌تر بخوام بگم، می‌آن نوسان دقت شبکه رو تو مدت زمان کوتاه با مدت زمان بلند مقایسه می‌کنن. این نسبت که دراصل همون ratio بین volatility کوتاه مدت و بلندمدته، راهنمایی‌شون می‌کنه که چه زمانی سرعت یادگیری رو زیاد کنن (تا مدل از قفل شدن روی نقطه‌های سفت دربیاد و تو landscape loss یا همون منظره خطا بیشتر راه بره) و چه وقت کمش کنن (که آموزش رو آروم‌تر و باثبات‌تر کنن).

یه طورایی انگار با این کار می‌خواد مدل رو تشویق کنه که وقتی زیادی ثابت شده، حرکت کنه و وقتی زیادی داره ویراژ می‌ده، آروم شه. مثل یه راننده که نه خیلی گاز بده نه خیلی ترمز!

خب، این ایده رو روی دیتاست معروف CIFAR-100 امتحان کردن با ResNet-18 و ResNet-34 (این دوتا مدل شبکه عصبی عمیق معروف و قوی هستن، تو تشخیص تصویر خیلی امتحان‌شون رو پس دادن). برای تست هم از یک augmentation pipeline استاندارد یعنی همون روش‌های تقویتی عکس‌ها موقع آموزش، استفاده کردن که نتایج، واقعاً بی‌نظیر بوده!

با VolSched، مدل ResNet-18 حدود ۱.۴ درصد و ResNet-34 حدود ۱.۳ درصد بهبود دقیقیت (Top-1 accuracy یعنی دقیقیت بالاترین پیش‌بینی مدل روی داده تست) گرفتن. جالبه بدونی تو آموزش‌های عمیق حتی نصف درصد هم خیلیه، چه برسه به این عددها!

تحلیل نمودار خطا هم نشون داد که مدل با VolSched اون فاز «گشت و گذار» رو طولانی‌تر می‌ره. یعنی قبل از اینکه زود گیر بیفته و یاد نگیره، بیشتر به مدل فرصت داده می‌شه تا جاهای بهتری از landscape رو کشف کنه.

یه بخش حرفه‌ای‌ترش هم اینه که اومدن مقادیر مربوط به «هسین» یا Hessian رو چک کردن. Hessian خلاصه بگم، یعنی یه جور ماتریسی که نشون می‌ده شکل منظر خطا چقدر تیزه یا صاف. هرچی مینیمومش صاف‌تر باشه یعنی مدل تو جای بهتری گیر کرده و روی داده جدید هم بهتر جواب می‌ده (این بهش می‌گن generalization). نتیجه: مدل با VolSched تونسته مینیموم‌هایی پیدا کنه که ۳۸ درصد «پهن‌تر» از سایر روش‌ها بوده؛ یعنی نتیجه واقعاً قابل توجهه.

آخرش هم باید بگم که این Scheduler جدید چشم‌انداز جالبی رو باز کرده، مخصوصاً برای کسایی که می‌خوان مدل‌ها رو بدون دردسر و آزمون و خطای خیلی زیاد، بهتر آموزش بدن. اونم صرفاً با کنترل بهتر یه پارامتر اساسی: سرعت یادگیری!

منبع: +