Лекция 06

Как шагать по ландшафту потерь

Градиент \(\nabla_\theta\mathcal{L}\) указывает направление наискорейшего роста функции потерь. Обучение идёт в противоположную сторону. Базовый шаг — градиентный спуск:

$$\theta_{t+1} = \theta_t - \eta_t \nabla_\theta \mathcal{L}(\theta_t)$$

Полный градиент по всей выборке честен, но дорог. Стохастический градиентный спуск (SGD) оценивает его по мини-пакету \(\mathcal{B}\):

$$\mathbf{g}_t = \frac{1}{|\mathcal{B}|} \sum_{i\in\mathcal{B}} \nabla_\theta \ell(f_{\theta_t}(\mathbf{x}_i), y_i)$$

Шум оценки даже полезен: он помогает выбираться из острых минимумов.

Импульс

Momentum копит экспоненциальное среднее градиентов, как скорость шарика, катящегося по поверхности:

$$\mathbf{v}_{t+1} = \mu \mathbf{v}_t + \mathbf{g}_t, \qquad \theta_{t+1} = \theta_t - \eta \mathbf{v}_{t+1}$$

Типичные значения \(\mu \approx 0.9\). Nesterov смотрит градиент чуть впереди по направлению скорости — часто сходится устойчивее.

Адаптивные методы

RMSProp делит шаг на корень из среднего квадрата градиента по каждой координате:

$$\mathbf{s}_{t+1} = \rho\mathbf{s}_t + (1-\rho)\mathbf{g}_t\odot\mathbf{g}_t, \qquad \theta_{t+1}=\theta_t - \frac{\eta}{\sqrt{\mathbf{s}_{t+1}}+\varepsilon}\odot\mathbf{g}_t$$

Adam объединяет импульс и адаптивный масштаб. Сначала считают смещённые моменты

$$\mathbf{m}_t = \beta_1\mathbf{m}_{t-1}+(1-\beta_1)\mathbf{g}_t, \qquad \mathbf{v}_t = \beta_2\mathbf{v}_{t-1}+(1-\beta_2)\mathbf{g}_t\odot\mathbf{g}_t$$

затем поправляют смещение в начале обучения и делают шаг:

$$\hat{\mathbf{m}}_t=\frac{\mathbf{m}_t}{1-\beta_1^t}, \quad \hat{\mathbf{v}}_t=\frac{\mathbf{v}_t}{1-\beta_2^t}, \quad \theta_{t+1}=\theta_t-\eta\frac{\hat{\mathbf{m}}_t}{\sqrt{\hat{\mathbf{v}}_t}+\varepsilon}$$

Канонические гиперпараметры: \(\beta_1=0.9\), \(\beta_2=0.999\), \(\varepsilon=10^{-8}\).

Расписание скорости обучения

Популярна косинусная анниляция после прогрева:

$$\eta_t = \eta_{\min} + \frac12(\eta_{\max}-\eta_{\min}) \left(1+\cos\pi\frac{t-t_{\mathrm{warm}}}{T-t_{\mathrm{warm}}}\right)$$

Слишком большой \(\eta\) даёт расходимость (лосс становится NaN). Слишком маленький — сеть почти не учится.

Weight decay

В чистом \(L2\)-штрафе градиент содержит \(\lambda\theta\). В AdamW затухание отделяют от адаптивного масштаба:

$$\theta_{t+1} = (1-\eta\lambda)\,\theta_t - \eta\frac{\hat{\mathbf{m}}_t}{\sqrt{\hat{\mathbf{v}}_t}+\varepsilon}$$
Оптимизация нейросетей невыпуклая. Никто не обещает глобальный минимум. На практике достаточно хорошей точки, которая хорошо обобщается на новые данные.