Adam و زمان‌بندی نرخ یادگیری

معادلات Adam را بنویسی، دلیل اصلاح بایاس را توضیح بدهی و تفاوت AdamW با منظم‌سازی L2 را بدانی.

14 دقیقه مطالعه · 5 سؤال تمرینی · یادگیری ماشین میانی و پیشرفته

Adam

Adam برای هر پارامتر دو میانگین نمایی نگه می‌دارد: گشتاور اول (میانگین گرادیان) و گشتاور دوم (میانگین مربع گرادیان):

mt=β1mt−1+(1−β1) gt,vt=β2vt−1+(1−β2) gt2m_t = \beta_1 m_{t-1} + (1-\beta_1)\,g_t, \qquad v_t = \beta_2 v_{t-1} + (1-\beta_2)\,g_t^2

چون m0=v0=0m_0 = v_0 = 0 است، در قدم‌های اول این میانگین‌ها به سمت صفر بایاس دارند. پس اصلاح می‌شوند:

m^t=mt1−β1t,v^t=vt1−β2t\hat m_t = \frac{m_t}{1-\beta_1^t}, \qquad \hat v_t = \frac{v_t}{1-\beta_2^t} wt=wt−1−η m^tv^t+ϵw_t = w_{t-1} - \eta\,\frac{\hat m_t}{\sqrt{\hat v_t} + \epsilon}

مقادیر پیش‌فرض: β1=0.9\beta_1 = 0.9، β2=0.999\beta_2 = 0.999، ϵ=10−8\epsilon = 10^{-8}. نتیجه این است که هر پارامتر نرخ یادگیری تطبیقی خودش را دارد.

AdamW: کاهش وزن جداشده

در SGD، اضافه کردن جریمه‌ی λ2∥w∥2\tfrac{\lambda}{2}\|w\|^2 به زیان با کاهش وزن (weight decay) معادل است. در Adam این‌طور نیست: گرادیان جریمه، یعنی λw\lambda w، هم بر v^t\sqrt{\hat v_t} تقسیم می‌شود. پس پارامترهایی که گرادیان بزرگ دارند، کمتر منظم می‌شوند.

AdamW (Loshchilov و Hutter) کاهش وزن را از مسیر گرادیان جدا می‌کند:

wt=wt−1−η(m^tv^t+ϵ+λ wt−1)w_t = w_{t-1} - \eta\left(\frac{\hat m_t}{\sqrt{\hat v_t}+\epsilon} + \lambda\,w_{t-1}\right)

AdamW امروز بهینه‌ساز پیش‌فرض آموزش ترنسفورمرهاست.

زمان‌بندی نرخ یادگیری

نرخ یادگیری ثابت به‌ندرت بهترین انتخاب است. الگوی رایج امروز:

  1. گرم کردن (Warmup): نرخ در چند درصد اول آموزش از نزدیک صفر به‌صورت خطی تا مقدار اوج بالا می‌رود. در ابتدای آموزش، تخمین v^t\hat v_t در Adam هنوز قابل اعتماد نیست و قدم‌های بزرگ آموزش را ناپایدار می‌کنند.
  2. کاهش: پس از اوج، نرخ معمولاً با کسینوسی یا خطی تا نزدیک صفر کم می‌شود.

Warmup به‌خصوص در ترنسفورمرها و آموزش با دسته‌های بزرگ اهمیت دارد.

تمرین‌های این درس را حل کن (رایگان)