alterna ai
ALTERNA AI / ГЛАВА 05 · 04

05.4 Учитываем прошлые исправления

На предыдущей странице: какие примеры участвовали в исправлении.

История изменения помогает не реагировать только на последний пример. Отдельно разберём накопление направления и масштаба.

Новый градиент4; накопленная история пока0; доля истории0.9.

Сглаживание направления и масштабирование координат

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−ηgk,jvk,j+ϵ.\theta_{k+1,j}=\theta_{k,j}-\eta\frac{g_{k,j}}{\sqrt{v_{k,j}}+\epsilon}.

В нашей версии β=.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 Академическая база →