نرخ یادگیری
الگو:یادگیری ماشین<templatestyles src="Nobold/styles.css" /> در یادگیری ماشینی و آمار، نرخ یادگیری یک پارامتر تنظیم در یک الگوریتم بهینهسازی است که اندازه گام هر تکرار را هنگام حرکت به سمت حداقل یک تابع زیان تعیین میکند.[۱] این پارامتر روی میزان رونویسی اطلاعات کسب شده بر اطلاعات قدیمی تاثیر میگذارد، به همین دلیل به صورت استعاری نمایش میدهد که مدل یادگیری ماشین به چه سرعتی «یادمیگیرد». در ادبیات کنترل تطبیقی، به نرخ یادگیری بهره گفته میشود.[۲]
برای تنظیم یک نرخ یادگیری، بین پرت شدن و نرخ همگرایی یک موازنه هست. درحالیکه جهت کاهشی معمولا از گرادیان تابع زیان تعیین میشود، نرخ یادگیری تعیین میکند که یک گام در آن جهت چقدر بزرگ است. اگر نرخ یادگیری خیلی بزرگ باشد، روی حداقل یک جهش انجام میشود، اما اگر نرخ یادگیری خیلی کوچک باشد، یا میزان همگرایی بسیار طولانی میشود یا در داخل حداقل محلی ناخواسته گیر خواهیم کرد.[۳]
برای دسترسی به همگرایی سریعتر، جلوگیری از نوسان، و گیر افتادن در حداقل محلی ناخواسته، باید نرخ یادگیری را در حین یادگیری تغییر داد، یا براساس یک برنامه نرخ یادگیری یا به کمک یک نرخ یادگیری تطبیقی باید آن را متغیر کرد.[۴] نرخ یادگیری و تنظیمات آن میتواند بر اساس پارامتر تغییر کند، که در این حالت یک ماتریس قطری است که میتوان آن را به صورت یک تقریب به وارون ماتریس هسین در روش نیوتون تفسیر کرد.[۵] نرخ یادگیری با اندازه گام که توسط جستجوی خط در روشهای شبه-نیوتون و دیگر الگوریتمهای بهینهسازی تعیین میشود، مرتبط است.[۶][۷]
برنامه نرخ یادگیری
نرخ اولیه را میتوان به صورت پیشفرض سامانه قرار داد یا میتوان آن را به کمک فنونی انتخاب کرد.[۸] یک برنامه نرخ یادگیری، در واقع نرخ یادگیری را در مدت یادگیری تغییر میدهد، و به صورت معمول بین تکرارها/دورهها تغییر میکند. این کار معمولا توسط دو پارامتر انجام میشود: زوال و تکانه. تعداد بسیار متنوعی برنامه نرخ یادگیری وجود دارد، اما معمولترین آنها زمان-بینان، گام-بنیان، و نمایی است.[۴]
از پارامتر زوال برای قرار دادن یادگیری در محل مناسب و جلوگیری از نوسان استفاده میشود، این حالت وقتی اتفاق میافتد که نرخ یادگیری ثابت بسیار زیاد یک پرش یادگیری جلو و عقب روی حداقل ایجاد میکند، که این توسط یک فراپارامتر کنترل میشود.
پارامتر تکانه مشابه یک توپ است که از یک تپه پایین میآید؛ ما میخواهیم تا توپ در پایینترین نقطه تپه قرار گیرد (که متناظر با خطای حداقل است). تکانه هم یادگیری را تسریع میکند (افزایش نرخ یادگیری) وقتیکه گرادیان هزینه خطا به یک جهت برای مدت طولانی اشاره میکند، و همچنین از حداقل محلی با غلتزدن از روی برآمدگیها جلوگیری میکند. تکانه توسط یک فراپارامتر کنترل میشود، که مشابه جرم یک توپ است که باید به صورت دستی انتخاب شود- اگر بسیار بلند باشد، توپ از روی حداقل غلت میزند که ما میخواهیم، اگر کم باشد این هدف را برآورده نمیکند. فرمول فاکتورگیری در تکانه بسیار پیچیدهتر از زوال است، اما معمولا در کتابخانههای یادگیری عمیق مثل کراس ساخته میشود.
برنامههای یادگیری زمان-بنیان نرخ یادگیری را بر اساس نرخ یادگیری تکرار زمانی قبل تغییر میدهد. با فاکتورگیری در زوال، فرمول ریاضی برای نرخ یادگیری این چنین است:
که در آن نرخ یادگیری است، پارامتر زوال است، و گام تکرار است.
برنامههای یادگیری گام-بنیان نرخ یادگیری را براساس چند گام از قبل معین تغییر میدهد. فرمول کاربردی روال به صورت زیر تعریف میشود:
که در آن همان نرخ یادگیری در تکرار است، همان نرخ یادگیری اولیه است، و میزان تغییر نرخ یادگیری در هر رهاسازی است (0.5 متناسب با نیمه کردن است) و متناظر با نرخ رهاسازی است، و چقدر نرخ باید رهاسازی شود (10 متناظر با یک رهاسازی در هر 10 تکرار است). یک تابع کف () در اینجا مقدار ورودی را برای همه مقادیر کمتر از 1 به 0 انجام میدهد.
برنامه یادگیری نمایی مشابه با گام-بنیان است، اما در عوض گام، از یک تابع نمایی کاهشی استفاده میشود. فرمول ریاضی برای فاکتورگیری در زوال به این صورت است:
که در آن همان متغیر زوال است.
نرخ یادگیری تطبیقی
مشکلی که با برنامه نرخ یادگیری وجود دارد آن است که همه به فراپارامتر بستگی دارند، که باید همه برای هر جلسه یادگیری معین به صورت دستی انتخاب شوند، که بسته به مشکل با مدل استفاده شده بسیار متغیر هستند. برای حل مشکل، الگوریتمهای کاهش گرادیان تطبیقی متنوعی مثل Adagrad, Adadelta, RMSprop و Adam[۹] که معمولا در کتابخانههای یادگیری عمیق مثل کراس ساخته میشوند.[۱۰]