Квазиньютоновские методы

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''DeepSeek-V3''' и проверена участником [[Участник:Nikolaev Daniil|Д. Никола...)
 
Строка 12: Строка 12:
== История ==
== История ==
-
Первый квазиньютоновский метод был разработан физиком [[Уильям Дэвидон|Уильямом Дэвидоном]] (William C. Davidon) в середине 1950-х годов в [[Аргоннская национальная лаборатория|Аргоннской национальной лаборатории]]. Дэвидон работал над длительными оптимизационными расчётами, которые не удавалось завершить из-за низкой надёжности и производительности компьютеров того времени — сбои происходили до окончания вычислений. Предложенный им метод позволял ускорить сходимость, не требуя вычисления вторых производных. Статья Дэвидона не была принята к публикации и долгое время оставалась техническим отчётом <ref name="Davidon1991">Davidon, 1991</ref>.
+
Первый квазиньютоновский метод был разработан физиком Уильямом Дэвидоном (William C. Davidon) в середине 1950-х годов в Аргоннской национальной лаборатории. Дэвидон работал над длительными оптимизационными расчётами, которые не удавалось завершить из-за низкой надёжности и производительности компьютеров того времени — сбои происходили до окончания вычислений. Предложенный им метод позволял ускорить сходимость, не требуя вычисления вторых производных. Статья Дэвидона не была принята к публикации и долгое время оставалась техническим отчётом <ref name="Davidon1991">Davidon, 1991</ref>.
В 1963 году Роджер Флетчер (Roger Fletcher) и Майкл Пауэлл (Michael J. D. Powell) независимо изучили работу Дэвидона, доказали, что предложенный алгоритм значительно эффективнее и надёжнее существовавших методов, и опубликовали его в усовершенствованном виде <ref>Fletcher, 1987</ref>. Этот алгоритм получил название [[Метод Дэвидона — Флетчера — Пауэлла|DFP]] (Davidon–Fletcher–Powell).
В 1963 году Роджер Флетчер (Roger Fletcher) и Майкл Пауэлл (Michael J. D. Powell) независимо изучили работу Дэвидона, доказали, что предложенный алгоритм значительно эффективнее и надёжнее существовавших методов, и опубликовали его в усовершенствованном виде <ref>Fletcher, 1987</ref>. Этот алгоритм получил название [[Метод Дэвидона — Флетчера — Пауэлла|DFP]] (Davidon–Fletcher–Powell).

Текущая версия

Статья написана с использованием LLM DeepSeek-V3 и проверена участником Д. Николаев 16:50, 3 июля 2026 (MSD)


Содержание

Квазиньютоновские методы (англ. quasi-Newton methods) — класс итерационных методов безусловной оптимизации, предназначенных для решения задачи

\min_{x \in \mathbb{R}^n} f(x),

где f: \mathbb{R}^n \to \mathbb{R} — дважды непрерывно дифференцируемая функция. В основе методов лежит построение последовательности приближений к матрице Гессе H(x) = \nabla^2 f(x) (либо к обратной к ней) с использованием только информации о градиентах функции, что позволяет избежать прямого вычисления и обращения гессиана.

Квазиньютоновские методы занимают промежуточное положение между градиентным спуском и методом Ньютона: они требуют только вычисления градиентов (как методы первого порядка), но благодаря накоплению информации о кривизне достигают сверхлинейной скорости сходимости, существенно превосходящей линейную сходимость градиентного спуска.

История

Первый квазиньютоновский метод был разработан физиком Уильямом Дэвидоном (William C. Davidon) в середине 1950-х годов в Аргоннской национальной лаборатории. Дэвидон работал над длительными оптимизационными расчётами, которые не удавалось завершить из-за низкой надёжности и производительности компьютеров того времени — сбои происходили до окончания вычислений. Предложенный им метод позволял ускорить сходимость, не требуя вычисления вторых производных. Статья Дэвидона не была принята к публикации и долгое время оставалась техническим отчётом [1].

В 1963 году Роджер Флетчер (Roger Fletcher) и Майкл Пауэлл (Michael J. D. Powell) независимо изучили работу Дэвидона, доказали, что предложенный алгоритм значительно эффективнее и надёжнее существовавших методов, и опубликовали его в усовершенствованном виде [1]. Этот алгоритм получил название DFP (Davidon–Fletcher–Powell).

В 1965 году Чарльз Бройден (Charles G. Broyden) предложил другой подход к обновлению приближения гессиана [1]. В 1970 году независимо друг от друга Бройден, Флетчер, Дональд Гольдфарб (Donald Goldfarb) и Дэвид Шенно (David F. Shanno) разработали BFGS — формулу обновления, которая оказалась наиболее эффективной на практике и в настоящее время является стандартом в этой области [1].

Математическая формулировка

Постановка задачи

Пусть решается задача безусловной минимизации дифференцируемой функции f(x). Метод Ньютона использует итерационную схему

x_{k+1} = x_k - \alpha_k H_k^{-1} \nabla f(x_k),

где H_k = \nabla^2 f(x_k) — матрица Гессе в точке x_k, а \alpha_k — длина шага, выбираемая, например, с помощью линейного поиска. Основные недостатки метода Ньютона: Необходимость вычисления и обращения матрицы Гессе на каждой итерации, что требует O(n^3) операций. Требование дважды дифференцируемости целевой функции и положительной определённости гессиана.

Квазиньютоновские методы обходят эти ограничения, заменяя точный гессиан H_k его приближением B_k (либо приближением D_k \approx H_k^{-1}), которое строится итеративно на основе градиентов, вычисленных в предыдущих точках.

Квазиньютоновское условие

На каждом шаге метода строится квадратичная модель целевой функции в окрестности текущей точки:

m_k(p) = f_k + \nabla f_k^T p + \frac{1}{2} p^T B_k p.

Направление спуска выбирается как

p_k = -B_k^{-1} \nabla f_k.

После перехода в новую точку x_{k+1} = x_k + s_k, где s_k = \alpha_k p_k, требуется, чтобы новое приближение B_{k+1} удовлетворяло так называемому квазиньютоновскому условию (или условию секущей):

B_{k+1} s_k = y_k,

где

s_k = x_{k+1} - x_k, \qquad y_k = \nabla f(x_{k+1}) - \nabla f(x_k).

Для квадратичной функции f(x) = \frac{1}{2} x^T A x + b^T x + c это условие выполняется точно, так как y_k = A s_k. Для произвольной функции оно является приближённым, но тем лучше, чем ближе текущая точка к оптимуму.

В терминах приближения обратного гессиана D_k \approx H_k^{-1} квазиньютоновское условие принимает вид:

D_{k+1} y_k = s_k.

Обновление приближения

Матрица B_{k+1} (или D_{k+1}) строится как минимальная модификация предыдущей матрицы, удовлетворяющая квазиньютоновскому условию. В общем виде обновление записывается как:

B_{k+1} = B_k + \Delta B_k,

где \Delta B_k — матрица поправки. Различные методы отличаются выбором этой поправки.

Основные алгоритмы

Метод Дэвидона — Флетчера — Пауэлла (DFP)

Метод DFP был первым широко распространённым квазиньютоновским методом. Он обновляет приближение обратного гессиана D_k по формуле:

D_{k+1} = D_k + \frac{s_k s_k^T}{s_k^T y_k} - \frac{D_k y_k y_k^T D_k}{y_k^T D_k y_k}.

Эта формула является обновлением ранга 2 (сумма двух матриц ранга 1) и гарантирует положительную определённость D_{k+1}, если D_k положительно определена и s_k^T y_k > 0.

Алгоритм DFP: Выбрать начальную точку x_0 и начальную матрицу D_0 = I (или другую положительно определённую). На итерации k вычислить направление p_k = -D_k \nabla f(x_k). Найти длину шага \alpha_k с помощью линейного поиска: \alpha_k = \arg\min_{\alpha > 0} f(x_k + \alpha p_k). Положить s_k = \alpha_k p_k, x_{k+1} = x_k + s_k. Вычислить y_k = \nabla f(x_{k+1}) - \nabla f(x_k). Обновить D_{k+1} по формуле DFP. Проверить критерий остановки; если не достигнут, перейти к шагу 2.

Метод Бройдена — Флетчера — Гольдфарба — Шенно (BFGS)

Метод BFGS, предложенный независимо четырьмя авторами в 1970 году, является наиболее популярным квазиньютоновским методом. Он обновляет приближение самого гессиана B_k:

B_{k+1} = B_k + \frac{y_k y_k^T}{y_k^T s_k} - \frac{B_k s_k s_k^T B_k}{s_k^T B_k s_k}.

Для обратного гессиана D_k = B_k^{-1} эквивалентная формула имеет вид:

D_{k+1} = \left( I - \frac{s_k y_k^T}{y_k^T s_k} \right) D_k \left( I - \frac{y_k s_k^T}{y_k^T s_k} \right) + \frac{s_k s_k^T}{y_k^T s_k}.

Метод BFGS является «двойственным» к DFP в том смысле, что BFGS получается из DFP заменой s \leftrightarrow y. На практике BFGS обычно превосходит DFP по устойчивости и скорости сходимости [1].

Алгоритм BFGS аналогичен DFP с заменой шага обновления.

Метод SR1 (Symmetric Rank-One)

Метод SR1 использует обновление ранга 1:

B_{k+1} = B_k + \frac{(y_k - B_k s_k)(y_k - B_k s_k)^T}{(y_k - B_k s_k)^T s_k}.

Этот метод не гарантирует положительной определённости B_{k+1} и может приводить к неограниченным направлениям спуска, однако в некоторых приложениях (например, при решении систем нелинейных уравнений) он оказывается полезным [1].

Метод Бройдена (Broyden's method)

Первоначальный метод Бройдена 1965 года был разработан для решения систем нелинейных уравнений. В применении к оптимизации он даёт несимметричное обновление:

B_{k+1} = B_k + \frac{(y_k - B_k s_k) s_k^T}{s_k^T s_k}.

Из-за потери симметрии этот метод реже используется для задач безусловной минимизации, но нашёл применение в задачах с несимметричными системами [1].

Семейство Бройдена

Все перечисленные методы могут быть объединены в однопараметрическое семейство Бройдена:

B_{k+1} = B_k - \frac{B_k s_k s_k^T B_k}{s_k^T B_k s_k} + \frac{y_k y_k^T}{y_k^T s_k} + \varphi_k (s_k^T B_k s_k) v_k v_k^T,

где \varphi_k — скалярный параметр, а

v_k = \frac{y_k}{y_k^T s_k} - \frac{B_k s_k}{s_k^T B_k s_k}.

При \varphi_k = 0 получается метод BFGS, при \varphi_k = 1 — метод DFP.

Сходимость

Для сильно выпуклых дважды дифференцируемых функций с липшицевым гессианом квазиньютоновские методы (DFP и BFGS) обладают сверхлинейной сходимостью [1]:

\lim_{k \to \infty} \frac{|x_{k+1} - x^*|}{|x_k - x^*|} = 0.

Это означает, что скорость сходимости выше линейной (как у градиентного спуска), но ниже квадратичной (как у метода Ньютона). Вблизи оптимума квазиньютоновские методы асимптотически приближаются к методу Ньютона.

Для невыпуклых функций сходимость может быть менее гарантированной, и на практике часто используют модификации (например, Damped BFGS), обеспечивающие сохранение положительной определённости [1].

Модификации для больших задач

L-BFGS (Limited-memory BFGS)

Для задач с большим числом переменных (n \gg 10^3) хранение и обновление полной матрицы B_k размера n \times n становится невозможным. Метод L-BFGS (limited-memory BFGS) хранит не саму матрицу, а только последние m пар (s_k, y_k) (обычно m = 5 \div 20). Направление спуска вычисляется с использованием двухпроходного алгоритма, который имитирует умножение D_k на градиент без явного формирования матрицы [1].

Сложность одной итерации L-BFGS составляет O(n m) вместо O(n^2) для полного BFGS, что делает метод применимым к задачам с миллионами переменных.

Модификация L-BFGS-B (L-BFGS with Bounds) учитывает ограничения типа l_i \le x_i \le u_i.

Диагональные и блочные квазиньютоновские методы

Для задач машинного обучения с очень большим числом параметров (нейронные сети) разработаны диагональные и блочно-диагональные квазиньютоновские приближения, учитывающие структуру задачи (например, послойную структуру нейронной сети) [1].

Системные аспекты реализации

При реализации квазиньютоновских методов в распределённых вычислительных системах ключевыми вопросами являются: Параллельное вычисление градиентов — основная вычислительная нагрузка при работе с большими объёмами данных (например, в задачах эмпирического риска). Распределённое хранение и обновление матрицы — для полного BFGS требуется синхронизация матрицы n \times n между узлами, что накладывает ограничения на масштабируемость. Асинхронные и стохастические варианты — разработаны стохастические квазиньютоновские методы (SQN, SBFGS) для работы с мини-батчами данных, что особенно актуально в машинном обучении. Проблема потери положительной определённости — при накоплении вычислительных погрешностей в рекуррентных процедурах может нарушаться положительная определённость матрицы B_k; для её восстановления используются модифицированное разложение Холецкого, регуляризация или демпфирование обновлений [1].

Применение в машинном обучении

Квазиньютоновские методы широко применяются в машинном обучении для:

  • Обучения нейронных сетей — как пакетные методы обучения (batch training), а также в виде стохастических и блочных модификаций.
  • Двухуровневой оптимизации (bilevel optimization) — для ускорения решения вложенных задач.
  • В задачах с большими данными предпочтение часто отдаётся методу L-BFGS благодаря его линейной по размерности памяти сложности [1].

См. также

Литература

  • Davidon, W. C. Variable Metric Method for Minimization // SIAM Journal on Optimization. — 1991. — Т. 1. — С. 1–17. (переиздание технического отчёта 1959 года)
  • Liu, D. C.; Nocedal, J. On the Limited Memory BFGS Method for Large Scale Optimization // Mathematical Programming. — 1989. — Т. 45. — С. 503–528.
Личные инструменты