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

05.5 Две истории градиента

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

Оптимизатор Adam хранит сглаженные значения градиента и его квадрата. Они влияют на длину следующего исправления, а начальное смещение корректируется.

Первый градиент4, обе истории стартуют с0.

Два момента и два знаменателя

Adam соединяет EMA направления и второго момента. При нулевой инициализации первые оценки смещены к0: сумма использованных EMA-весов меньше1. Для постоянного g сумма весов равна1−βᵏ, что объясняет bias correction. M06; происхождение алгоритма M09 abstract.

mk=β1mk−1+(1−β1)gk,vk=β2vk−1+(1−β2)gk2,m_k=\beta_1m_{k-1}+(1-\beta_1)g_k,\quad v_k=\beta_2v_{k-1}+(1-\beta_2)g_k^2,
m^k=mk1−β1k,v^k=vk1−β2k,θk+1=θk−ηm^kv^k+ϵ.\hat m_k=\frac{m_k}{1-\beta_1^k},\quad \hat v_k=\frac{v_k}{1-\beta_2^k},\quad \theta_{k+1}=\theta_k-\eta\frac{\hat m_k}{\sqrt{\hat v_k}+\epsilon}.

Все операции с векторами в последней дроби покоординатные. В лаборатории β₁=.9,β₂=.999,ε=1e−8; k начинается с1для первого update. При g=[4,6]:m₁=[.4,.6],v₁=[.016,.036]; после correction получаем[4,6] и[16,36]. Сη=.1 новыйθпочти[1.9,.9], с микроскопической поправкой epsilon.

Debug. Без correction первый шаг масштабируется примерно на.1/√.001≈3.1623 по отношению к нормированному g. Выражение eta*mhat/sqrt(vhat) + eps не равно eta*mhat/(sqrt(vhat)+eps). Важны скобки, место epsilon и номер шага.

Исследовать. Поставьте старт[0,0]. При нулевых moments и gradient все алгоритмы должны остаться вначале без NaN. Затем верните обычный старт и сравните1,10,50шагов. Adam не гарантирует лучшего результата при каждом k и не является универсально сходящимся для любых последовательностей gradients.

g, beta1, beta2 = 4,.9,.999
m, v = (1-beta1)*g,(1-beta2)*g*g
mhat, vhat = m/(1-beta1),v/(1-beta2)
assert abs(mhat-4)<1e-12 and abs(vhat-16)<1e-12

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Adam хранит две разные истории, а не только вчерашний градиент. Точное исправление зависит от обеих.

Ограничиваем шаг и меняем расписание. Как этот вопрос продолжает полученный результат?

Python-примеры главы 05 Академическая база →