Alterna · учебный материал
05.4 Учитываем прошлые исправления
История изменения помогает не реагировать только на последний пример. Отдельно разберём накопление направления и масштаба.
Что в этом материале
- Сглаживание направления и масштабирование координат
Содержание и основные понятия
На предыдущей странице: какие примеры участвовали в исправлении.
История изменения помогает не реагировать только на последний пример. Отдельно разберём накопление направления и масштаба.
Новый градиент4; накопленная история пока0; доля истории0.9.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Сглаживание направления и масштабирование координат
Momentum хранит историю gradients. Здесь используем EMA-вариант mₖ=βmₖ₋₁+(1−β)gₖ, updateθ←θ−ηmₖ,β=.9,m₀=0. Встречается и вариант m←βm+g: численно это другое соглашение об effective learning rate. Не смешивайте их в сравнении.
При g₁=[4,6] первый EMA равен[.4,.6], а шаг сη=.1 приводит[2,1]в[1.96,.94]. История накапливается между шагами, но reset обнуляет её. Momentum может сглаживать знакопеременные составляющие и усиливать устойчивое направление; он также способен перелетать минимум.
RMSProp хранит второй момент vₖ=βvₖ₋₁+(1−β)gₖ², затем масштабирует каждую координату:
θ
k
+
1
,
j
=
θ
k
,
j
−
η
g
k
,
j
v
k
,
j
+
ϵ
.
\theta_{k+1,j}=\theta_{k,j}-\eta\frac{g_{k,j}}{\sqrt{v_{k,j}}+\epsilon}.
θ
k
+
1
,
j
=
θ
k
,
j
−
η
v
k
,
j
+
ϵ
g
k
,
j
.
В нашей версии β=.9,ε=1e−8, без bias correction. Для g₁=[4,6] получаем v₁=[1.6,3.6]; две величины шага почти одинаковы:η/√.1≈.316228. Новыйθ≈[1.683772,.683772]. Это адаптация масштаба, а не вычисление полного обратного Hessian. M06 объясняет связь с Adam; конкретные соглашения здесь объявлены явно.
Эксперимент.
На вытянутой квадратике сравните GD,Momentum,RMSProp при одном η. Двигайте курсор и смотрите не только путь, но и state m/v. Если после reset состояние не обнулилось, сравнение некорректно.
Граница.
v есть среднее
квадратов
, а не дисперсия. Дисперсия потребовала бы вычесть квадрат среднего. Добавка epsilon в знаменателе предотвращает деление на0, но не решает все проблемы плохого шага или масштаба данных.
Это память направления, а не сам новый вес. Она участвует в последующем правиле исправления.
Две истории градиента. Как этот вопрос продолжает полученный результат?
Python-примеры главы 05
Академическая база →