Alterna · учебный материал
05.2 Небольшой шаг против роста ошибки
Градиент направлен к локальному росту. Сделаем небольшой шаг в обратную сторону и проверим результат.
Что в этом материале
- Локальное обоснование и точная граница
Содержание и основные понятия
На предыдущей странице: ошибка как поверхность.
Градиент направлен к локальному росту. Сделаем небольшой шаг в обратную сторону и проверим результат.
Функция x²+3y² в точке [2,1].
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Локальное обоснование и точная граница
По первому порядку Taylor при малом δ: L(θ+δ)≈L(θ)+gᵀδ. Подставим δ=−ηg,η>0: изменение≈−η||g||²≤0. При ненулевом g достаточно малый шаг уменьшает гладкую функцию. Но остаток Taylor запрещает переносить этот вывод на любой η. M05.
θ
k
+
1
=
θ
k
−
η
∇
L
(
θ
k
)
.
\theta_{k+1}=\theta_k-\eta\nabla L(\theta_k).
θ
k
+
1
=
θ
k
−
η
∇
L
(
θ
k
)
.
На диагональной квадратике каждая координата обновляется отдельно: x_new=(1−2aη)x,y_new=(1−2bη)y. Для сходимости по обоим направлениям из произвольного старта нужно |1−2aη|<1 и |1−2bη|<1, то есть0<η<1/max(a,b). Для a=1,b=3 этоη<1/3.
Приθ=[2,1],η=.1 получаем g=[4,6],θ_new=[1.6,.4],L_new=3.04. Приη=.5θ_new=[0,−2],L_new=12: ошибка растёт. Приη=0 движения нет; на границеη=1/3 второе направление меняет знак без уменьшения амплитуды.
Исследовать.
Сначала предскажите поведение трёх η=.1,1/3,.5, потом двигайте курсор. Все координаты одного шага используют один старый g. Нельзя обновить x, пересчитать gradient и только затем обновлять y, продолжая называть процедуру тем же GD.
Остановка по малому norm(g), числу итераций или росту величин является решением алгоритма. Предел безопасности лаборатории1e6для абсолютных координат останавливает дальнейшее вычисление с подписью «предел», не объявляет сходимость.
x,y,eta = 2,1,.1
gx,gy = 2*x,6*y
nx,ny = x-eta*gx,y-eta*gy
assert abs(nx*nx+3*ny*ny-3.04)<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Изменились настройки; данные и правило оценки ошибки остались прежними. Успех шага нужно проверять заново.
Какие примеры участвовали в исправлении. Как этот вопрос продолжает полученный результат?
Python-примеры главы 05
Академическая база →