Alterna · учебный материал

16.3 Исправляем и независимо проверяем

После шага измерим учебную и проверочную ошибку. Проверка сама веса не изменяет.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: ошибка и влияние весов.
После шага измерим учебную и проверочную ошибку. Проверка сама веса не изменяет.
Каждый известный токен готовит прогноз следующего. Ошибка проходит назад по программе, оптимизатор меняет веса, а отдельные данные проверяют результат. Разметка диалога и предпочтений меняет objective.
Одно исправление модели
Общая модель требуетJavaScript; её вычисления, формулы и код разобраны в открытом тексте далее.
Градиент и правило обновления — разные объекты
Backward вычисляет gradient при старых parameters; optimizer хранит собственное состояние и только затем меняет parameters. В Adam используются экспоненциальные moments и bias correction. AdamW добавляет decoupled weight decay непосредственно в update, а не смешивает его с gradient перед adaptive normalization. F02, F06.
m
t
=
β
1
m
t
−
1
+
(
1
−
β
1
)
g
t
,
v
t
=
β
2
v
t
−
1
+
(
1
−
β
2
)
g
t
2
,
m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,\quad
v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2,
m
t
​
=
β
1
​
m
t
−
1
​
+
(
1
−
β
1
​
)
g
t
​
,
v
t
​
=
β
2
​
v
t
−
1
​
+
(
1
−
β
2
​
)
g
t
2
​
,
θ
t
=
θ
t
−
1
−
η
t
(
m
t
/
(
1
−
β
1
t
)
v
t
/
(
1
−
β
2
t
)
+
ϵ
+
λ
θ
t
−
1
)
.
\theta_t=\theta_{t-1}-\eta_t\left(
\frac{m_t/(1-\beta_1^t)}{\sqrt{v_t/(1-\beta_2^t)}+\epsilon}
+\lambda\theta_{t-1}\right).
θ
t
​
=
θ
t
−
1
​
−
η
t
​
(
v
t
​
/
(
1
−
β
2
t
​
)
​
+
ϵ
m
t
​
/
(
1
−
β
1
t
​
)
​
+
λ
θ
t
−
1
​
)
.
Learning-rate schedule определяется по
optimizer steps
, а при gradient accumulation один step может включать несколько micro-batches. Checkpoint для продолжения должен содержать не только weights, но и moments, scheduler position, scaler mixed precision, step, RNG states и идентичность данных/config. Сохранение одних weights подходит для inference, но не воспроизводит продолжение training.
Что показывает модель.
Пошаговая модель разделяет
zero_grad → forward → masked loss → backward → clip → optimizer → scheduler
. При accumulation параметры не должны обновляться после каждого micro-batch. Weight decay обычно не применяют автоматически ко всем tensors: bias и normalization gains часто получают отдельную parameter group, что обязано быть записано в config.
Граница применимости.
Один scalar fixture не отражает распределение tensor gradients, mixed precision и distributed reduction. Одинаковый seed не гарантирует bitwise reproducibility между hardware/kernels. Checkpoint из недоверенного источника может быть исполняемым контейнером в некоторых форматах; безопасная загрузка и проверка hash являются отдельной обязанностью.
from math import sqrt
w_16c,g_16c,lr_16c,b1_16c,b2_16c,eps_16c,wd_16c=1.0,0.2,0.1,0.9,0.99,1e-8,0.01
m_16c=(1-b1_16c)*g_16c; v_16c=(1-b2_16c)*g_16c*g_16c
w_next_16c=w_16c-lr_16c*((m_16c/(1-b1_16c))/(sqrt(v_16c/(1-b2_16c))+eps_16c)+wd_16c*w_16c)
assert abs(w_next_16c-0.899000005)<1e-9
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Validation измеряет фиксированное состояние и не выполняет update.
Учебные примеры вопроса и ответа. Как этот вопрос продолжает полученный результат?
Python-примеры главы 16
Академическая база →

Структурная карта учебников