МатВектор

Command Palette

Search for a command to run...

🔢 Численные методы30 минСложность 3/5+65 XP

Градиентный спуск: как метод учится на числах

Антиградиент как компас в овраге: выбор шага обучения, спуск на f(x,y)=x²+4y² с числами по шагам, овраги, зигзаги и идея стохастической версии.

2 интерактива2 квизаУрок 11 из 11Обновлено 05.10.2026Обычный

Функция задана, минимизировать надо: невязка модели, энергия конструкции, ошибка предсказания на миллионе параметров. Формулы для точки минимума нет — есть только возможность вычислять и её градиент. Градиентный спуск отвечает на такую постановку честно и минимально: шагаем против градиента, смотрим, куда выведет, повторяем. Метод стоит в фундаменте обучения почти всех моделей машинного обучения, но устроен до смешного просто и полностью просчитывается руками. Протестируем его на квадратичной функции , где видно всё: и выбор шага, и скорость сходимости, и место, где метод ломается.

Идея антиградиента: куда идти вниз#

Градиент — вектор из частных производных, он указывает направление наискорейшего роста функции. Значит, минус-градиент — наискорейшее убывание: производная по направлению среди всех направлений единичной длины минимальна. Отсюда итерация метода — небольшой шаг в сторону минус-градиента:

итерация градиентного спуска: α — шаг обучения (learning rate)

Слово «локально» здесь ключевое: минус-градиент гарантирует убывание только на малом шаге. На большом шаге функция может уже пойти в гору — поэтому у шага есть верхняя граница, и мы её сейчас найдём точно. Для одной переменной метод превращается в простейшую рекуррентность, и его удобно прощупать численно: производная любой функции одной переменной считается через решатель производной, если лень дифференцировать руками.

Выбор шага: цена ошибки в обе стороны#

Тестовая функция одной переменной : градиент равен , и спуск даёт умножение координаты на константу. Вся судьба метода — в этой константе:

для f(x)=x²: шаг 0,4 даёт множитель 0,2; шаг 0,7 даёт −0,4 (сходимость с колебанием); шаг 1,1 даёт −1,2 (взрыв)

Слишком большой шаг — итерации разлетаются: при множитель , точка скачет через минимум, размах растёт. Слишком маленький — спуск жив, но ползёт: при множитель , и чтобы уменьшить ошибку в тысячу раз, нужно примерно шага. Для квадратичной функции с кривизнами (собственными числами матрицы Гессе — как их считать численно, см. численный поиск собственных значений) за один шаг ошибка умножается на худший из множителей:

множитель сходимости за шаг и условие устойчивости; λmax — наибольшая кривизна

Спуск на f(x, y) = x² + 4y²: числа по шагам#

Градиент: . Старт , шаг — вдвое меньше границы , запас есть. Минимум в нуле, стартовое значение .

При ближе к границе картина меняется качественно: возьмите — и множитель по станет , координата начнёт проскакивать ноль, а траектория превратится в зигзаг поперёк «долины». Значение функции всё ещё убывает, но путь становится длинным и дёрганым — узнаваемая картинка, которую рисуют в каждом курсе по обучению моделей.

Как выбирать шаг без гадания? Дробление: шагнули, если выросла — вернитесь и уменьшите вдвое. Для квадратичных функций работает и прикидка по кривизне: всегда внутри границы , а для нашего примера даёт — множители по и ровно по : минимум по крутой координате достигается за один шаг. По остаётся множитель , и до точности нужно шагов — против 31 при , причём без всякого риска взрыва. Одна цифра экономит и время, и нервы.

Овраги, зигзаги и стохастическое спасение#

Отношение кривизн — «овражность» функции. У нашего примера — терпимо: с оптимальным шагом множитель ошибки . Но при он даёт : спуск тысячами шагов молотит поперёк оврага, продвигаясь вдоль него со скоростью улитки. Лекарства разные: предобусловливание и нормировка признаков выравнивают кривизны, метод Ньютона использует вторые производные и снимает проблему одной шкалой, спуск с моментом накапливает движение вдоль оврага. Для ограничений вида «не выходить из области» оптимизацию ведут через функцию Лагранжа либо проекционные варианты спуска.

Стохастическая версия (SGD) решает другую проблему — объём данных. Полный градиент на миллионе примеров дорог, вместо него берут случайную мини-выборку: её градиент шумный, но в среднем правильный, а стоит в сто раз меньше. Парадокс в том, что шум полезен: он выбивает траекторию из зигзагов и помогает проскакивать неглубокие ямы невыпуклого ландшафта. Шаг обучения при этом обычно убывает по расписанию: большие шаги вначале — быстро добраться до окрестности минимума, мелкие в конце — точная доводка.

  • Считать градиент в старой точке, а шаг делать по новым координатам — классическая ошибка реализации: сначала пересчитали градиент, потом шагнули.
  • Выбирать α без проверки: при α > 2/λmax спуск расходится, а не «медленно сходится» — ищите ошибку знака или масштаба.
  • Мерить сходимость значением f, а не нормой градиента ‖∇f‖: на овражной функции значение стагнирует далеко от минимума.
  • Ждать глобального минимума от невыпуклой функции: спуск честно сходится к стационарной точке, которая бывает седлом или локальной ямой.
  • Забывать про масштаб переменных: овраг возникает из-за разнокалиберных координат, нормировка дешевле хитрых методов.
  • Держать один и тот же шаг до конца обучения: убывающее α (например, α₀/(1 + k/50)) обычно выигрывает и по скорости, и по точности.
Проверь себя+10 XP

Точка , функция , шаг . Куда шагнёт спуск?

Проверь себя+10 XP

Для при каких спуск сходится?

Частые вопросы

Почему именно минус градиент?

Производная функции по направлению единичной длины равна . По неравенству Коши–Буняковского она минимальна при . То есть минус-градиент — не эвристика, а точное решение задачи «в каком направлении функция убывает быстрее всего».

Как на практике выбирать шаг?

Три рабочих стратегии: константа с проверкой (подобрал на малом числе итераций и зафиксировал), расписание с убыванием (шумный SGD без него не доводит до минимума), дробление шага — если после шага функция не уменьшилась, α делится пополам. Для квадратичных задач есть точная граница , и рабочий выбор обычно .

Чем спуск отличается от метода Ньютона?

Ньютон умножает шаг на обратную матрицу Гессе — использует кривизну и сходится квадратично, но требует вычислять и обращать Гессе: при миллионе параметров это неприлично дорого. Спуск использует только градиент — один вектор, — поэтому и живёт в больших задачах. Для решения нелинейных уравнений, где производные считать дёшево, ньютоновские методы из урока про нелинейные уравнения обычно выигрывают.

Зачем спуску случайность?

Две причины. Первая — экономия: градиент по мини-выборке в сотню примеров в сто раз дешевле полного при том же качестве «в среднем». Вторая — шум: он выбивает траекторию из узких зигзагов и мелких ям, где полный спуск застревает. Плата — необходимость убывающего шага: с постоянным шум не даёт сойтись точно, значение функции колеблется вокруг минимума.

Итог: антиградиент задаёт направление, шаг задаёт судьбу. Квадратичный пример показал всё за пять итераций — от падения функции в шесть раз до разгона координат с разными множителями. Там, где минимизация сводится к линейной системе — например, нормальные уравнения МНК, это численные методы для СЛАУ, — спуск конкурирует с прямыми методами; в больших невыпуклых задачах у него конкурентов почти нет. Дальше по теме: стохастические варианты, момент и адаптивные шаги — но их логика целиком вырастает из того, что мы посчитали руками.

Готовитесь к контрольной?

Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.

Открыть чеклист предмета →

Проверьте себя в бою

Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.

Начать босс-экзамен →