Метод сопряжённых градиентов: формулы и пример
Метод сопряжённых градиентов - это итерационный способ минимизировать квадратичную функцию или, что то же самое, решить систему линейных уравнений с симметричной положительно определённой матрицей. Его ценят за главное свойство: на функции от переменных он находит точный минимум не более чем за шагов, тогда как обычный градиентный спуск может зигзагом идти сотнями итераций. Ниже разберём, из каких формул он состоит, что такое сопряжённость направлений, почему она ускоряет сходимость и где студенты чаще всего ошибаются при ручном счёте. Чтобы сразу увидеть разницу с градиентным спуском, покрути калькулятор ниже: он рисует линии уровня, траекторию обоих методов и график падения функции по итерациям.
Какую задачу решает метод
Метод работает с квадратичной функцией вида
где - симметричная положительно определённая матрица размера , а и - векторы. Её градиент равен , и в точке минимума он обращается в ноль. Значит, минимизация полностью эквивалентна решению системы : где функция минимальна, там и выполняется уравнение. Именно поэтому метод сопряжённых градиентов одновременно считают и методом оптимизации, и методом решения СЛАУ - особенно ценным для больших разреженных матриц, где прямые методы вроде разложения Холецкого слишком дороги.
Идея в том, что наивный спуск «строго вниз по склону» теряет уже сделанный прогресс: каждый новый шаг частично портит то, чего добились на предыдущем. Метод сопряжённых градиентов строит направления так, чтобы шаги не мешали друг другу.
Что такое сопряжённые направления
Два ненулевых вектора и называются -сопряжёнными (или просто сопряжёнными относительно матрицы ), если
Это обобщение обычной ортогональности: если бы была единичной матрицей, условие превратилось бы в , то есть в перпендикулярность. Геометрически сопряжённость учитывает «вытянутость» линий уровня: направления, ортогональные в искажённой метрике, заданной матрицей .

Ключевой факт: если у нас есть набор из взаимно сопряжённых направлений, то минимум квадратичной функции достигается ровно за точных одномерных шагов вдоль этих направлений. Минимизация по одному сопряжённому направлению не сбивает уже достигнутый минимум по предыдущим - вот почему прогресс не теряется.
Формулы шага метода
Метод сопряжённых градиентов строит сопряжённые направления на ходу, не зная их заранее. Введём остаток (он же антиградиент) . Стартуем с произвольной точки , берём и первое направление . Дальше на каждой итерации:
Здесь - это длина шага из точного одномерного поиска вдоль (минимум по этому направлению), а - коэффициент, который подмешивает старое направление к новому антиградиенту так, чтобы получившееся оказалось сопряжённым со всеми предыдущими. Приведённая формула для называется формулой Флетчера-Ривса. Обновление остатка позволяет не пересчитывать заново: за итерацию матрица умножается на вектор всего один раз, в произведении .
Почему он сходится за n шагов
На квадратичной функции от переменных направления , построенные методом, попарно -сопряжены, а остатки попарно ортогональны. Поскольку сопряжённых направлений образуют базис, после точных шагов вдоль них компонента ошибки по каждому направлению обнуляется - и метод приходит в точный минимум. Это его принципиальное отличие от градиентного спуска, который сопряжённость не использует и потому на вытянутых оврагах буксует.
Скорость зависит от числа обусловленности - отношения наибольшего и наименьшего собственных чисел матрицы . Для градиентного спуска число итераций растёт примерно как , а для сопряжённых градиентов - как , что на плохо обусловленных задачах даёт огромный выигрыш. На практике из-за ошибок округления точную сходимость за шагов не всегда удаётся получить, поэтому метод применяют итерационно с критерием остановки по малости остатка . Чтобы ускорить сходимость, матрицу часто предобуславливают, искусственно уменьшая .
Пример решения типовой задачи
Минимизируем с диагональной матрицей (то есть , минимум в начале координат) из стартовой точки . Здесь , значит метод обязан сойтись за два шага.
Считаем остаток и первое направление:
Длина первого шага:
Делаем шаг - точка ушла к длинной оси эллипса. Пересчитываем остаток , коэффициент и новое направление . Второй шаг с длиной приводит в точку - точный минимум. Градиентному же спуску при том же нужно около десяти итераций, чтобы подойти на ту же точность. Оба калькулятора выше собирают эту цепочку автоматически: первый строит траекторию и график сходимости, а кнопка разворачивает полный пошаговый вывод в чате.
Частые ошибки
- Применение к несимметричной или незнакоопределённой матрице. Базовый метод требует симметричной положительно определённой . Для произвольных систем используют варианты вроде BiCG или CG для нормальных уравнений, а не исходную формулу.
- Неверный знак остатка. Остаток равен , это антиградиент. Если перепутать знак и взять , направления поедут в сторону роста функции.
- Пересчёт остатка через вместо рекуррентной формулы. Формула экономит умножения матрицы на вектор; считать заново не ошибка по результату, но теряет смысл метода и накапливает погрешность иначе.
- Ожидание сходимости меньше чем за шагов в общем случае. За шагов гарантирован точный минимум, но не раньше, если только начальная ошибка не лежит в подпространстве меньшей размерности.
- Игнорирование обусловленности. На плохо обусловленной матрице без предобуславливателя даже сопряжённые градиенты могут потребовать много итераций из-за округления.
FAQ
Чем метод сопряжённых градиентов отличается от градиентного спуска? Градиентный спуск всегда идёт против градиента, поэтому соседние шаги перпендикулярны и траектория зигзагует по дну вытянутого оврага. Метод сопряжённых градиентов подмешивает к антиградиенту прошлое направление с коэффициентом , делая шаги -сопряжёнными, и за счёт этого на квадратике от переменных приходит в минимум за шагов.
Что такое A-сопряжённость направлений? Два вектора -сопряжены, если . Это ортогональность в метрике, заданной матрицей : такие направления учитывают вытянутость линий уровня, и минимизация вдоль одного не портит достигнутый минимум вдоль другого.
Зачем нужен коэффициент бета в формуле? Коэффициент задаёт, сколько прошлого направления подмешать к новому антиградиенту, чтобы получившееся направление оказалось сопряжённым со всеми предыдущими. Без него метод выродился бы в обычный спуск.
Коротко
Метод сопряжённых градиентов минимизирует квадратичную функцию с симметричной положительно определённой , что эквивалентно решению системы . Он строит -сопряжённые направления по формулам , , , и за счёт сопряжённости находит точный минимум не более чем за шагов, обгоняя градиентный спуск на плохо обусловленных задачах.
Читайте также

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

Алгоритм обратного распространения ошибки: как учится сеть
Backpropagation простыми словами: как обратное распространение ошибки считает градиенты по цепному правилу, обновляет веса нейросети и при чём тут исчезающий градиент. С формулами и разбором.

Оптимизатор RMSprop: формула и параметры
Как работает RMSprop: формула скользящего среднего квадратов градиента, роль rho и learning rate, отличия от AdaGrad и Adam. Разбор с интерактивным калькулятором траектории.