Метод сопряжённых градиентов
Материал из MachineLearning.
(Новая: ==Постановка задачи оптимизации== Пусть задано множество <tex> X \subset R^n </tex> и на этом множестве определе...) |
|||
Строка 1: | Строка 1: | ||
- | |||
==Постановка задачи оптимизации== | ==Постановка задачи оптимизации== | ||
Строка 41: | Строка 40: | ||
Если обозначить за <tex>r_k = b - Ax_k = -f'(x_{k})</tex> , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике: <br/> | Если обозначить за <tex>r_k = b - Ax_k = -f'(x_{k})</tex> , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике: <br/> | ||
<p align = "center"> | <p align = "center"> | ||
- | <tex> | + | <tex>r_1 = b - Ax_0</tex> <br/> |
- | <tex> | + | <tex> p_1 = r_1 </tex> <br/> |
<tex> | <tex> | ||
\begin{equation*} | \begin{equation*} | ||
Строка 66: | Строка 65: | ||
Если все вычисления точные, и исходные данные точны то метод сходится к решению системы не более чем за <tex>n</tex> итераций, где<tex>n</tex> - размерность системы. Более тонкий анализ показывает, что число итераций не превышает <tex>m</tex>, где <tex>m</tex> - число различных собственных значений матрицы A. | Если все вычисления точные, и исходные данные точны то метод сходится к решению системы не более чем за <tex>n</tex> итераций, где<tex>n</tex> - размерность системы. Более тонкий анализ показывает, что число итераций не превышает <tex>m</tex>, где <tex>m</tex> - число различных собственных значений матрицы A. | ||
Для оценки скорости сходимости верна следующая (довольно грубая) оценка: <br/> | Для оценки скорости сходимости верна следующая (довольно грубая) оценка: <br/> | ||
- | ::<tex> || x_k - x_* ||_A \leq ( \frac{ \sqrt {\kappa(A) } - 1}{ \sqrt { kappa(A) } + 1} ) || x_0 - x_* ||_A </tex>, где | + | ::<tex> || x_k - x_* ||_A \leq ( \frac{ \sqrt {\kappa(A) } - 1}{ \sqrt { \kappa(A) } + 1} ) || x_0 - x_* ||_A </tex>, где |
<tex> \kappa(A) = || A || \: || A^{-1} || = \lambda_1 / \lambda_n </tex>. Она позволяет оценить скорость сходимости, если известны | <tex> \kappa(A) = || A || \: || A^{-1} || = \lambda_1 / \lambda_n </tex>. Она позволяет оценить скорость сходимости, если известны | ||
оценки для максимального <tex>\lambda_1</tex> и минимального <tex>\lambda_n</tex> собственных значений матрицы <tex>A</tex> | оценки для максимального <tex>\lambda_1</tex> и минимального <tex>\lambda_n</tex> собственных значений матрицы <tex>A</tex> | ||
Строка 97: | Строка 96: | ||
==== Сходимость метода ==== | ==== Сходимость метода ==== | ||
+ | |||
+ | ====Вычислительная сложность==== | ||
+ | На каждой итерации методов Полака-Райбера или Флетчера-Ривса по одному разу вычисляются функция <tex>F(x)</tex> и её градиент | ||
+ | <tex>F'(x)</tex>, решается задача одномерной оптимизации | ||
+ | <tex>F(x_{k - 1} + \alpha_k p_k) \to min \limits_{\alpha_k \geq 0} </tex> . Таким образом, сложность одного шага метода споряжённых градиентов имеет тот же порядок что и сложность шага метода скорейшего спуска. На практике, метод сопряжённых градиентов | ||
+ | показывает лучшую скорость сходимости. | ||
==Численные примеры== | ==Численные примеры== | ||
- | ==Рекомендации программисту== | + | ==Рекомендации программисту == |
- | + | [[Media:Slimper_LinearGradient.zip|Линейный метод сопряженных градиентов, исходный код [1кб]]] <br/> | |
+ | [[Media:Slimper_NonLinearGradient.zip|Нелинейный метод сопряжённых градиентов, исходный код [1кб] ]]<br/> | ||
+ | [[Media:Slimper_Ublas.zip| Библиотека алгоритмов линейной алгебры [180кб] ]] | ||
+ | |||
+ | == Список литературы == | ||
* '' Васильев Ф. П. '' Методы оптимизации - Издательство «Факториал Пресс», 2002 <br/> | * '' Васильев Ф. П. '' Методы оптимизации - Издательство «Факториал Пресс», 2002 <br/> | ||
- | * '' Nocedal J., Wright S.J. ''   Numerical Optimization ,Springer, 1999 | + | * '' Nocedal J., Wright S.J. '' Numerical Optimization ,Springer, 1999 |
Версия 22:27, 23 ноября 2008
Содержание |
Постановка задачи оптимизации
Пусть задано множество и на этом множестве определена целевая функция (objective function) . Задача оптимизации состоит в нахождении на множестве точной верхней или точной нижней грани целевой функции.
Множество точек, на которых достигается нижняя грань целевой функции обозначается .
Если , то задача оптимизации называется безусловной (unconstrained). Если , то задача оптимизации называется условной (constrained).
Метод сопряжённых градиентов
Метод сопряжённых градиентов (conjugate gradient method) первоначально был разработан для решения систем линейных уравнений с положительно определённой матрицей. Позже этот метод обобщили для решения задач безусловной оптимизации в
Линейный метод сопряжённых градиентов
Изложение метода
Рассмотрим сначала метод сопряжённых градиентов для решения следующей задачи оптимизации:
Здесь - симметричная положительно определённая матрица размера .
Такая задача оптимизации называется квадратичной.
Заметим, что . Условие экстремума функции эквивалентно системе
Функция достигает своей нижней грани в единственной точке , определяемой уравнением . Таким образом, данная задача оптимизации сводится к решению системы линейных уравнений
Идея метода сопряжённых градиентов состоит в следующем:
Пусть - базис в . Тогда для любой точки вектор раскладывается по базису
Таким образом, представимо в виде
Каждое следующее приближение вычисляется по формуле:
Определение. Два вектора и называются сопряжёнными относительно симметричной матрицы B, если
Опишем способ построения базиса в методе сопряжённых градиентов
В качестве начального приближения выбираем произвольный вектор.
На каждой итерации выбираются по правилу:
Базисные вектора вычисляются по формулам:
Коэффициенты выбираются так, чтобы векторы и были сопряжёнными относительно А.
Если обозначить за , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике:
Анализ метода
Для метода сопряжённых градиентов справедлива следующая теорема:
Теорема
Пусть , где - симметричная положительно определённая матрица размера . Тогда метод сопряжённых градиентов сходится не более чем за шагов
и справедливы следующие соотношения:
Сходимость метода
Если все вычисления точные, и исходные данные точны то метод сходится к решению системы не более чем за итераций, где - размерность системы. Более тонкий анализ показывает, что число итераций не превышает , где - число различных собственных значений матрицы A.
Для оценки скорости сходимости верна следующая (довольно грубая) оценка:
- , где
. Она позволяет оценить скорость сходимости, если известны оценки для максимального и минимального собственных значений матрицы На практике чаще всего используют следующий критерий останова:
- .
Вычислительная сложность
На каждой итерации метода выполняется операций. Такое количество операций требуется для вычисления произведения - это самая трудоёмкая процедура на каждой итерации. Отальные вычисления требуют O(n) операций. Суммарная вычислительная сложность метода не превышает - так как число итераций не больше n.
Нелинейный метод сопряжённых градиентов
Расссмотрим теперь модификацию метода сопряжённых градиентов, для случая, когда минимизируемый функционал не является квадратичным: Будем решать задачу:
- .
- непрерывно дифференцируемая в функция. Чтобы модифицировать метод сопряжённых градиентов для решения этой задачи, необходимо получить для формулы, в кторые не входит матрица А:
можно вычислять по одной из трёх формул:
- - Метод Флетчера - Ривса (Fletcher–Reeves method)
- - Метод Полака - Райбера (Polak–Ribi`ere method)
Если функция - квадратичная и строго выпуклая, то все три формулы дают одинаковый результат. Если -
произвольная функция, то каждой из формул cоответствует своя модификация метода сопряжённых градиентов. Третья формула используется редко, так как она требует, чтобы функция и вычисления гессиана функции на каждом шаге метода.
Анализ метода
Если функция - не квадратичная, метод сопряжённых градиентов может и не сходиться за конечное число шагов. Кроме того, точное вычисление на каждом шаге возможно только в редких случаях. Поэтому накопление погрешностей приводит к тому, что вектора перестают указывать направление убывания функции . Тогда на какои-то шаге полагают . Совокупность всех номеров , при которых принимается обозначим за . Номера называются моментами обновления метода. На практике часто выбирают , где - размерность пространства.
Сходимость метода
Вычислительная сложность
На каждой итерации методов Полака-Райбера или Флетчера-Ривса по одному разу вычисляются функция и её градиент , решается задача одномерной оптимизации . Таким образом, сложность одного шага метода споряжённых градиентов имеет тот же порядок что и сложность шага метода скорейшего спуска. На практике, метод сопряжённых градиентов показывает лучшую скорость сходимости.
Численные примеры
Рекомендации программисту
Линейный метод сопряженных градиентов, исходный код [1кб]
Нелинейный метод сопряжённых градиентов, исходный код [1кб]
Библиотека алгоритмов линейной алгебры [180кб]
Список литературы
- Васильев Ф. П. Методы оптимизации - Издательство «Факториал Пресс», 2002
- Nocedal J., Wright S.J. Numerical Optimization ,Springer, 1999