Alterna · учебный материал
05.5 Две истории градиента
Оптимизатор Adam хранит сглаженные значения градиента и его квадрата. Они влияют на длину следующего исправления, а начальное смещение корректируется.
Что в этом материале
- Два момента и два знаменателя
Содержание и основные понятия
На предыдущей странице: учитываем прошлые исправления.
Оптимизатор Adam хранит сглаженные значения градиента и его квадрата. Они влияют на длину следующего исправления, а начальное смещение корректируется.
Первый градиент4, обе истории стартуют с0.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Два момента и два знаменателя
Adam соединяет EMA направления и второго момента. При нулевой инициализации первые оценки смещены к0: сумма использованных EMA-весов меньше1. Для постоянного g сумма весов равна1−βᵏ, что объясняет bias correction. M06; происхождение алгоритма M09 abstract.
m
k
=
β
1
m
k
−
1
+
(
1
−
β
1
)
g
k
,
v
k
=
β
2
v
k
−
1
+
(
1
−
β
2
)
g
k
2
,
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
=
β
1
m
k
−
1
+
(
1
−
β
1
)
g
k
,
v
k
=
β
2
v
k
−
1
+
(
1
−
β
2
)
g
k
2
,
m
^
k
=
m
k
1
−
β
1
k
,
v
^
k
=
v
k
1
−
β
2
k
,
θ
k
+
1
=
θ
k
−
η
m
^
k
v
^
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}.
m
^
k
=
1
−
β
1
k
m
k
,
v
^
k
=
1
−
β
2
k
v
k
,
θ
k
+
1
=
θ
k
−
η
v
^
k
+
ϵ
m
^
k
.
Все операции с векторами в последней дроби покоординатные. В лаборатории β₁=.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
Академическая база →