Alterna · учебный материал
05.6 Ограничиваем шаг и меняем расписание
Слишком большой градиент, изменение самих весов и уменьшение шага — разные причины. Проверим их по отдельности.
Что в этом материале
- Разные средства решают разные проблемы
Содержание и основные понятия
На предыдущей странице: две истории градиента.
Слишком большой градиент, изменение самих весов и уменьшение шага — разные причины. Проверим их по отдельности.
Градиент [3,4] имеет длину5; хотим ограничить длину до2.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Разные средства решают разные проблемы
Если norm(g) велик,
norm clipping
ограничивает длину, сохраняя направление ненулевого gradient:
g
c
l
i
p
=
g
min
(
1
,
c
∥
g
∥
2
)
,
c
>
0.
g_{clip}=g\min\left(1,\frac{c}{\|g\|_2}\right),\quad c>0.
g
c
l
i
p
=
g
min
(
1
,
∥
g
∥
2
c
)
,
c
>
0.
Приg=[3,4],norm5,c2 получаем[1.2,1.6],norm2. Приg=0 множитель принимаем1без деления. Покоординатное обрезание до[−c,c] является другой операцией и может изменить направление. Clipping не доказывает уменьшения loss: даже ограниченный шаг может быть неподходящим.
Weight decay в простом отдельном updateθ←(1−ηλ)θ уменьшает параметры приλ>0. Дляθ2,η.1,λ.5 получаем1.9. L2-регуляризация добавляет .5λ||θ||² к objective, градиент становится g+λθ. С обычным GD оба представления согласуются; с адаптивным optimizer включение λθ внутрь нормируемого gradient и отдельный decay обычно неэквивалентны. Это мотивация decoupled decay, не обещание одной настройки для всех библиотек.
Расписание
ηₖ меняет шаг со временем, напримерη₀/(1+γk). Это настройка процедуры, не новый параметр самой модели. Слишком быстрое уменьшение может остановить полезный прогресс; слишком медленное оставить колебания. Гипотезу нужно проверять по корректной validation-задаче, не только красивому training plot.
Итоговый эксперимент.
На квадратике выберите большойη, наблюдайте рост и остановку по безопасному пределу, затем уменьшитеη. В отдельном инструменте сравните norm clipping и decay: назовите, какой объект меняется, gradient или parameters. Не приписывайте изменение графика race флагу, которого в её модели нет.
Мы связали представления, преобразования, чувствительность, вероятностный критерий и обновление. Следующий блок применит их к
классическому ML
. Эта глава ещё в программе; математический фундамент и его самопроверки уже доступны.
from math import hypot
g,c = [3,4],2
factor = min(1,c/hypot(*g))
clipped = [factor*v for v in g]
assert abs(hypot(*clipped)-2)<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Ограничение градиента не гарантирует меньшую ошибку при любом шаге. Оно решает более узкую задачу размера чувствительности.
Как эти действия превратятся в обучаемую модель?
Python-примеры главы 05
Академическая база →