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

05.2 Небольшой шаг против роста ошибки

На предыдущей странице: ошибка как поверхность.

Градиент направлен к локальному росту. Сделаем небольшой шаг в обратную сторону и проверим результат.

Функция x²+3y² в точке [2,1].

Локальное обоснование и точная граница

По первому порядку 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).

На диагональной квадратике каждая координата обновляется отдельно: 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 Академическая база →