Участник:Slimper/Песочница
Материал из MachineLearning.
Строка 1: | Строка 1: | ||
==Постановка задачи оптимизации== | ==Постановка задачи оптимизации== | ||
- | Пусть задано множество <tex> X \subset R^n </tex> и на этом множестве определена ''целевая функция'' (''objective function'') <tex>f : R^n \mapsto R</tex>. Задача оптимизации состоит в нахождении на множестве <tex>X</tex> точной верхней или точной нижней грани ''целевой функции''. | + | Пусть задано множество <tex> X \subset R^n </tex> и на этом множестве определена ''целевая функция'' (''objective function'') <tex>f : R^n \mapsto R</tex>. Задача оптимизации состоит в нахождении на множестве <tex>X</tex> точной верхней или точной нижней грани ''целевой функции''. <br/> |
Множество точек, на которых достигается нижняя грань целевой функции обозначается <tex>X_* </tex>. <br/> | Множество точек, на которых достигается нижняя грань целевой функции обозначается <tex>X_* </tex>. <br/> | ||
- | ::<tex>X_* = \{x \in X| f(x) = inf \limits_{x \in X} f(x) \} </tex> | + | ::<tex>X_* = \{x \in X| f(x) = inf \limits_{x \in X} f(x) \} </tex> <br/> |
- | <br/> | + | |
Если <tex> X = R^n </tex>, то задача оптимизации называется ''безусловной'' (''unconstrained''). | Если <tex> X = R^n </tex>, то задача оптимизации называется ''безусловной'' (''unconstrained''). | ||
Если <tex> X \neq R^n </tex>, то задача оптимизации называется ''условной'' (''constrained''). | Если <tex> X \neq R^n </tex>, то задача оптимизации называется ''условной'' (''constrained''). | ||
- | ==Метод сопряжённых | + | ==Метод сопряжённых градиентов== |
- | ''Метод сопряжённых | + | ''Метод сопряжённых градиентов'' (''conjugate gradient method'') первоначально был разработан для решения систем линейных уравнений с положительно определённой матрицей. Позже этот метод обобщили для решения задач безусловной оптимизации в <tex>R^n</tex> |
==Линейный метод сопряжённых градиентов == | ==Линейный метод сопряжённых градиентов == | ||
=== Изложение метода === | === Изложение метода === | ||
Рассмотрим сначала метод сопряжённых градиентов для решения следующей задачи оптимизации: <br/> | Рассмотрим сначала метод сопряжённых градиентов для решения следующей задачи оптимизации: <br/> | ||
- | <tex>F(x) = \frac{1}{2} | + | <tex>F(x) = \frac{1}{2} \langle Ax, x \rangle - \langle b, x \rangle \to inf, \quad x \in R^n</tex> <br/> |
Здесь <tex>A</tex> - симметричная положительно определённая матрица размера <tex>n \times n</tex>. | Здесь <tex>A</tex> - симметричная положительно определённая матрица размера <tex>n \times n</tex>. | ||
Такая задача оптимизации называется квадратичной. | Такая задача оптимизации называется квадратичной. | ||
Строка 21: | Строка 21: | ||
Таким образом, <tex>x_*</tex> представимо в виде <br/> | Таким образом, <tex>x_*</tex> представимо в виде <br/> | ||
::<tex>x_* = x_0 + \alpha_1 p_1 + \dots \alpha_n p_n </tex> | ::<tex>x_* = x_0 + \alpha_1 p_1 + \dots \alpha_n p_n </tex> | ||
- | |||
Каждое следующее приближение вычисляется по формуле: <br/> | Каждое следующее приближение вычисляется по формуле: <br/> | ||
::<tex>x_k = x_0 + \alpha_1 p_1 + \dots \alpha_n p_k </tex> <br/> | ::<tex>x_k = x_0 + \alpha_1 p_1 + \dots \alpha_n p_k </tex> <br/> | ||
- | Два вектора <tex>p</tex> и <tex>q</tex> называются ''сопряжёнными'' относительно симметричной матрицы B, если <tex> | + | '''Определение.''' Два вектора <tex>p</tex> и <tex>q</tex> называются ''сопряжёнными'' относительно симметричной матрицы B, если <tex> \langle Bp,q \rangle = 0</tex> |
Опишем способ построения базиса <tex> \{p_k \}_{k = 1}^n </tex> в методе сопряжённых градиентов | Опишем способ построения базиса <tex> \{p_k \}_{k = 1}^n </tex> в методе сопряжённых градиентов | ||
Строка 37: | Строка 36: | ||
<br/> | <br/> | ||
Коэффициенты <tex>\beta_k</tex> выбираются так, чтобы векторы <tex>p_k</tex> и <tex>p_{k + 1} </tex>были сопряжёнными относительно А. <br/> | Коэффициенты <tex>\beta_k</tex> выбираются так, чтобы векторы <tex>p_k</tex> и <tex>p_{k + 1} </tex>были сопряжёнными относительно А. <br/> | ||
- | ::<tex>\beta_k = \frac{ | + | ::<tex>\beta_k = \frac{ \langle F'(x_{k}), Ap_k \rangle}{ \langle Ap_k, p_k \rangle} </tex> |
<br/> | <br/> | ||
- | Если обозначить за <tex>r_k = b - Ax_k = -f'(x_{k})</tex> , то после нескольких упрощений получим окончательные формулы, используемые применении метода сопряжённых градиентов на практике: <br/> | + | Если обозначить за <tex>r_k = b - Ax_k = -f'(x_{k})</tex> , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике: <br/> |
::<tex>r_0 = b - Ax_0</tex> <br/> | ::<tex>r_0 = b - Ax_0</tex> <br/> | ||
::<tex> p_0 = r_0 </tex> <br/> | ::<tex> p_0 = r_0 </tex> <br/> | ||
<tex> | <tex> | ||
\begin{equation*} | \begin{equation*} | ||
- | \alpha_k = \frac{ | + | \alpha_k = \frac{ \langle r_k, r_k \rangle }{ \langle Ap_k, p_k \rangle } \\ |
x_{k + 1} = x_k + \alpha_k p_k \\ | x_{k + 1} = x_k + \alpha_k p_k \\ | ||
r_{k + 1} = r_k - \alpha_k Ap_k \\ | r_{k + 1} = r_k - \alpha_k Ap_k \\ | ||
- | \beta_k = \frac{ | + | \beta_k = \frac{ \langle r_{k + 1}, r_{k + 1} \rangle }{\langle r_k, r_k \rangle} \\ |
p_{k + 1} = r_{k + 1} + b_k p_k \\ | p_{k + 1} = r_{k + 1} + b_k p_k \\ | ||
\end{equation*} | \end{equation*} | ||
</tex> | </tex> | ||
+ | <br/> | ||
=== Анализ метода === | === Анализ метода === | ||
+ | Для метода сопряжённых градиентов справедлива следующая теорема: | ||
+ | Пусть <tex>F(x) = \frac{1}{2} <Ax, x> </tex> | ||
==== Сходимость метода ==== | ==== Сходимость метода ==== | ||
Если все вычисления точные, и исходные то метод сходится к решению системы не более чем за <tex>m</tex> итераций, где | Если все вычисления точные, и исходные то метод сходится к решению системы не более чем за <tex>m</tex> итераций, где | ||
Строка 62: | Строка 64: | ||
== Общий случай == | == Общий случай == | ||
Расссматриваем задачу <tex>F(x) \to min, \quad x \in R^n </tex>. | Расссматриваем задачу <tex>F(x) \to min, \quad x \in R^n </tex>. | ||
- | <tex>F(x) </tex> - непрерывно дифференцируемая в R^n функция. | + | <tex>F(x) </tex> - непрерывно дифференцируемая в <tex>R^n </tex> функция. |
Чтобы получить из метода сопряжённых градиентов метод для решения данной задачи, нужно получить для <tex>p_k, \alpha_k, \beta_k </tex> формулы, в кторые не входит матрица А: | Чтобы получить из метода сопряжённых градиентов метод для решения данной задачи, нужно получить для <tex>p_k, \alpha_k, \beta_k </tex> формулы, в кторые не входит матрица А: | ||
::<tex>\alpha_k = argmin \limits_{\alpha_k} F(x_{k-1} + \alpha_k p_k)</tex> | ::<tex>\alpha_k = argmin \limits_{\alpha_k} F(x_{k-1} + \alpha_k p_k)</tex> | ||
Строка 68: | Строка 70: | ||
<tex> \beta_k </tex> можно вычислять по одной из трёх формул: | <tex> \beta_k </tex> можно вычислять по одной из трёх формул: | ||
- | ::<tex> \beta_k = - \frac{ | + | ::<tex> \beta_k = - \frac{\langle F'(x_{k + 1} ), F'(x_{k + 1}) \rangle}{\langle F'(x_k), F'(x_k) \rangle} </tex> |
- | ::<tex> \beta_k = \frac{ | + | ::<tex> \beta_k = \frac{\langle F'(x_{k + 1}), F'(x_k) - F'(x_{k + 1} ) \rangle}{\langle F'(x_k}), F'(x_k) \rangle} </tex> |
- | ::<tex> \beta_k = \frac{ | + | ::<tex> \beta_k = \frac{\langle F''(x_{k+1} )p_{k},F'(x_{k + 1}) \rangle}{\langle F''(x_{k})p_k, p_k \rangle} </tex> |
Версия 19:54, 23 ноября 2008
Содержание |
Постановка задачи оптимизации
Пусть задано множество и на этом множестве определена целевая функция (objective function) . Задача оптимизации состоит в нахождении на множестве точной верхней или точной нижней грани целевой функции.
Множество точек, на которых достигается нижняя грань целевой функции обозначается .
Если , то задача оптимизации называется безусловной (unconstrained). Если , то задача оптимизации называется условной (constrained).
Метод сопряжённых градиентов
Метод сопряжённых градиентов (conjugate gradient method) первоначально был разработан для решения систем линейных уравнений с положительно определённой матрицей. Позже этот метод обобщили для решения задач безусловной оптимизации в
Линейный метод сопряжённых градиентов
Изложение метода
Рассмотрим сначала метод сопряжённых градиентов для решения следующей задачи оптимизации:
Здесь - симметричная положительно определённая матрица размера .
Такая задача оптимизации называется квадратичной.
Заметим, что . Условие экстремума функции эквивалентно системе
Функция достигает своей нижней грани в единственной точке , определяемой уравнением . Таким образом, данная задача оптимизации сводится к решению системы линейных уравнений
Идея метода сопряжённых градиентов состоит в следующем:
Пусть - базис в . Тогда для любой точки вектор раскладывается по базису
Таким образом, представимо в виде
Каждое следующее приближение вычисляется по формуле:
Определение. Два вектора и называются сопряжёнными относительно симметричной матрицы B, если
Опишем способ построения базиса в методе сопряжённых градиентов
В качестве начального приближения выбираем произвольный вектор.
На каждой итерации выбираются по правилу:
Базисные вектора вычисляются по формулам:
Коэффициенты выбираются так, чтобы векторы и были сопряжёнными относительно А.
Если обозначить за , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике:
Анализ метода
Для метода сопряжённых градиентов справедлива следующая теорема: Пусть
Сходимость метода
Если все вычисления точные, и исходные то метод сходится к решению системы не более чем за итераций, где - число различных собственных значений матрицы A. На практике чаще всего используют следующий критерий останова: норма погрешности становится меньше некоторого заданного порога .
Вычислительная сложность
На каждой итерации метода выполняется операций. Такое количество операций требуется для вычисления произведения - это самая трудоёмкая процедура на каждой итерации. Отальные вычисления требуют O(n) операций. Суммарная вычислительная сложность метода не превышает - так как число итераций не больше n.
Общий случай
Расссматриваем задачу . - непрерывно дифференцируемая в функция. Чтобы получить из метода сопряжённых градиентов метод для решения данной задачи, нужно получить для формулы, в кторые не входит матрица А:
можно вычислять по одной из трёх формул:
Литература
Васильев Ф. П. Методы оптимизации - Издательство «Факториал Пресс», 2002
Nocedal J., Wright S.J. Numerical Optimization ,Springer, 1999