Метод сопряженных градиентов delphi. Метод сопряжённых градиентов для квадратичного функционала. Постановка задачи оптимизации

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

f(x) = (х, Нх) + (b, х) + а

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

По определению, два n-мерных вектора х и у называют сопряженными по отношению к матрице H (или H-сопряженными), если скалярное произведение (x, Ну) = 0. Здесь Н - симметрическая положительно определенная матрица размером пхп.

Одной из наиболее существенных проблем в методах сопряженных градиентов является проблема эффективного построения направлений. Метод Флетчера-Ривса решает эту проблему путем преобразования на каждом шаге антиградиента -f(x[k]) в направление p[k], H-сопряженное с ранее найденными направлениями р, р, ..., р. Рассмотрим сначала этот метод применительно к задаче минимизации квадратичной функции.

Направления р[k] вычисляют по формулам:

p[k] = -f’(x[k])+k-1p, k >= 1; p = -f’(x).

Величины k-1 выбираются так, чтобы направления p[k], р были H-сопряженными:

(p[k], Hp)= 0.

В результате для квадратичной функции

итерационный процесс минимизации имеет вид

x =x[k] +akp[k],

где р[k] - направление спуска на k-м шаге; аk - величина шага. Последняя выбирается из условия минимума функции f(х) по а в направлении движения, т. е. в результате решения задачи одномерной минимизации:

f(х[k] + аkр[k]) = f(x[k] + ар [k]).

Для квадратичной функции

Алгоритм метода сопряженных градиентов Флетчера-Ривса состоит в следующем.

1. В точке х вычисляется p = -f’(x).

2. На k-м шаге по приведенным выше формулам определяются шаг аk. и точка х.



3. Вычисляются величины f(x) и f’(x).

4. Если f’(x) = 0, то точка х является точкой минимума функции f(х). В противном случае определяется новое направление p из соотношения

и осуществляется переход к следующей итерации. Эта процедура найдет минимум квадратичной функции не более чем за п шагов. При минимизации неквадратичных функций метод Флетчера-Ривса из конечного становится итеративным. В таком случае после (п+1)-й итерации процедуры 1-4 циклически повторяются с заменой х на х[п+1] , а вычисления заканчиваются при , где - заданное число. При этом применяют следующую модификацию метода:

x = x[k] +akp[k],

p[k] = -f’(x[k])+k-1p, k >= 1;

f(х[k] + akp[k]) = f(x[k] + ap[k];

Здесь I- множество индексов: I = {0, n, 2п, Зп, ...}, т. е. обновление метода происходит через каждые п шагов.

Геометрический смысл метода сопряженных градиентов состоит в следующем (Рис. 1.19). Из заданной начальной точки х осуществляется спуск в направлении р = -f"(x). В точке х определяется вектор-градиент f"(x ). Поскольку х является точкой минимума функции в направлении р, то f’(х) ортогонален вектору р. Затем отыскивается вектор р , H-сопряженный к р . Далее отыскивается минимум функции вдоль направления р и т. д.



Рис. 1.19. Траектория спуска в методе сопряженных градиентов

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

Численные методы безусловной оптимизации второго порядка, варианты алгоритмов метода Ньютона

Особенности методов второго порядка. Методы безусловной оптимизации второго порядка используют вторые частные производные минимизируемой функции f(х). Суть этих методов состоит в следующем.

Необходимым условием экстремума функции многих переменных f(x) в точке х* является равенство нулю ее градиента в этой точке:

Разложение f’(х) в окрестности точки х[k] в ряд Тейлора с точностью до членов первого порядка позволяет переписать предыдущее уравнение в виде

f"(x) f’(x[k]) + f"(x[k]) (х - х[k]) 0.

Здесь f"(x[k]) Н(х[k]) - матрица вторых производных (матрица Гессе) минимизируемой функции. Следовательно, итерационный процесс для построения последовательных приближений к решению задачи минимизации функции f(x) описывается выражением

x x[k] - H-1(x[k]) f’(x[k]) ,

где H-1(x[k]) - обратная матрица для матрицы Гессе, а H-1(x[k])f’(x[k]) р[k] - направление спуска.

Полученный метод минимизации называют методом Ньютона. Очевидно, что в данном методе величина шага вдоль направления р[k] полагается равной единице. Последовательность точек {х[k]}, получаемая в результате применения итерационного процесса, при определенных предположениях сходится к некоторой стационарной точке х* функции f(x). Если матрица Гессе Н(х*) положительно определена, точка х* будет точкой строгого локального минимума функции f(x). Последовательность x[k] сходится к точке х* только в том случае, когда матрица Гессе целевой функции положительно определена на каждой итерации.

Если функция f(x) является квадратичной, то, независимо от начального приближения х и степени овражности, с помощью метода Ньютона ее минимум находится за один шаг. Это объясняется тем, что направление спуска р[k] H-1(x[k])f’(x[k]) в любых точках х всегда совпадает с направлением в точку минимума х*. Если же функция f(x) не квадратичная, но выпуклая, метод Ньютона гарантирует ее монотонное убывание от итерации к итерации. При минимизации овражных функций скорость сходимости метода Ньютона более высока по сравнению с градиентными методами. В таком случае вектор р[k] не указывает направление в точку минимума функции f(x), однако имеет большую составляющую вдоль оси оврага и значительно ближе к направлению на минимум, чем антиградиент.

Существенным недостатком метода Ньютона является зависимость сходимости для невыпуклых функций от начального приближения х. Если х находится достаточно далеко от точки минимума, то метод может расходиться, т. е. при проведении итерации каждая следующая точка будет более удаленной от точки минимума, чем предыдущая. Сходимость метода, независимо от начального приближения, обеспечивается выбором не только направления спуска р[k] H-1(x[k])f’(x[k]), но и величины шага а вдоль этого направления. Соответствующий алгоритм называют методом Ньютона с регулировкой шага. Итерационный процесс в таком случае определяется выражением

x x[k] - akH-1(x[k])f’(x[k]).

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

f(x[k] – ak H-1(x[k])f’(x[k]) (f(x[k] - aH-1(x[k])f’(x[k])).

Такой вариант алгоритма называют также методом Ньютона-Рафсона. Графическая интерпретация этого варианта метода Ньютона представлена на рис. 1.20. На выносных элементах рисунка приведены графики одномерных функций, подлежащих оптимизации с целью определения шага.

Рис. 1.20. Геометрическая интерпретация метода Ньютона-Рафсона

Алгоритм метода Ньютона-Рафсона состоит в следующем. Часть действий выполняется до начала итерационного процесса. А именно необходимо получить вектор формул, составляющих градиент f’([x]) (т.е. вектор первых частных производных) и матрицу формул, составляющих матрицу Гессе H(x) (т.е. матрицу вторых частных производных). Далее в итерационном цикле в эти формулы подставляются значения компонент вектора х и эти массивы становятся массивами чисел.

1. В начальной точке х вычисляется вектор, определяющий направление спуска p - H-1(x)f’(). Тем самым задача многомерная сводится к задаче одномерной оптимизации.

2. На k-й итерации определяется шаг аk (по схеме, изображенной на рис. 1.20, для этого решается задача одномерной оптимизации) и точка х.

3. Вычисляется величина f(х).

4. Проверяются условия выхода из подпрограммы, реализующей данный алгоритм. Эти условия аналогичны условиям выхода из подпрограммы при методе наискорейшего спуска. Если эти условия выполняются, осуществляется прекращение вычислений. В противном случае вычисляется новое направление

р –H-1(x[k])f’([k])

и осуществляется переход к следующей итерации, т. е. на шаг 2.

Количество вычислений на итерации методом Ньютона, как правило, значительно больше, чем в градиентных методах. Это объясняется необходимостью вычисления и обращения матрицы вторых производных целевой функции (или решения системы уравнений, что требует меньше трудозатрат). Однако на получение решения с достаточно высокой степенью точности с помощью метода Ньютона обычно требуется намного меньше итераций, чем при использовании градиентных методов. В силу этого метод Ньютона существенно более эффективен. Он обладает сверхлинейной или квадратичной скоростью сходимости в зависимости от требований, которым удовлетворяет минимизируемая функция f(x). Тем не менее в некоторых задачах трудоемкость итерации методом Ньютона может оказаться очень большой за счет необходимости вычисления матрицы вторых производных минимизируемой функции, что потребует затрат значительного количества машинного времени.

В ряде случаев целесообразно комбинированное использование градиентных методов и метода Ньютона. В начале процесса минимизации, когда точка х находится далеко от точки экстремума х*, можно применять какой-либо вариант градиентных методов. Далее, при уменьшении скорости сходимости градиентного метода можно перейти к методу Ньютона. Или вследствие накопления ошибок в процессе счета матрица Гессе на некоторой итерации может оказаться отрицательно определенной или ее нельзя будет обратить. В таких случаях в подпрограммах оптимизации полагается H-1(x[k]) Е, где Е - единичная матрица. Итерация при этом осуществляется по методу наискорейшего спуска.

В другой модификации метода Ньютона, получившей название метод Левенберга - Маркардта (метод Ньютона с регулировкой матрицы) для обеспечения положительной определенности матрицы Гессе в точках последовательности используется регуляризация этой матрицы. В методе Левенберга - Маркардта точки строятся по закону: , где - последовательность положительных чисел, обеспечивающих положительную определенность матрицы . Обычно в качестве берется значение на порядок больше наибольшего элемента матрицы . Так в ряде стандартных программ полагается . Если, то , в противном случае Очевидно, что если , то метод Левенберга - Маркардта представляет собой метод Ньютона, а если велико, то поскольку при больших метод Левенберга - Маркардта близок к градиентному методу. Поэтому, подбирая значения параметра , можно добиться, чтобы метод Левенберга - Маркардта сходился

Градиентные методы, базирующиеся только на вычислении градиента R (x ), являются методами первого порядка, так как на интервале шага они заменяют нелинейную функцию R (x ) линейной.

Более эффективными могут быть методы второго порядка, которые используют при вычислении не только первые, но и вторые производные от R (x ) в текущей точке. Однако у этих методов есть свои труднорешаемые проблемы – вычисление вторых производных в точке, к тому же вдали от оптимума матрица вторых производных может быть плохо обусловлена.

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

Первый шаг аналогичен первому шагу метода наискорейшего спуска, второй и следующий шаги выбираются каждый раз в направлении, образуемом в виде линейной комбинации векторов градиента в данной точке и предшествующего направления.

Алгоритм метода можно записать следующим образом (в векторной форме):

x 1 = x 0 – h grad R(x 0),

x i+1 = x i – h .

Величина α может быть приближенно найдена из выражения

Алгоритм работает следующим образом. Из начальной точки х 0 ищут minR (x ) в направлении градиента (методом наискорейшего спуска), затем, начиная с найденной точки и далее, направление поиска min определяется по второму выражению. Поиск минимума по направлению может осуществляться любым способом: можно использовать метод последовательного сканирования без коррекции шага сканирования при переходе минимума, поэтому точность достижения минимума по направлению зависит от величины шага h .

Для квадратичной функции R (x ) решение может быть найдено за п шагов (п – размерность задачи). Для других функций поиск будет медленнее, а в ряде случаев может вообще не достигнуть оптимума вследствие сильного влияния вычислительных ошибок.

Одна из возможных траекторий поиска минимума двумерной функции методом сопряженных градиентов приведена на рис. 1.

Алгоритм метода сопряжённых градиентов для поиска минимума.

Начальный этап. Выполнение градиентного метода.

Задаём начальное приближение x 1 0 , х 2 0 . Определяем значение критерия R (x 1 0 , х 2 0). Положить k = 0 и перейти к шагу 1 начального этапа.

Шаг 1. и
.

Шаг 2. Если модуль градиента

Шаг 3.

x k+1 = x k h grad R (x k)).

Шаг 4. R (x 1 k +1 , х 2 k +1). Если R (x 1 k +1 , х 2 k +1) < R (x 1 k , х 2 k), то положить k = k+1 и перейти к шагу 3. Если R (x 1 k +1 , х 2 k +1) ≥ R (x 1 k , х 2 k), то перейти к основному этапу.

Основной этап.

Шаг 1. Вычислить R(x 1 k + g, x 2 k), R(x 1 k – g, x 2 k), R(x 1 k , x 2 k + g), R(x 1 k , x 2 k). В соответствии с алгоритмом с центральной или парной пробы вычислить значение частных производных и . Вычислить значение модуля градиента
.

Шаг 2. Если модуль градиента
, то расчёт остановить, а точкой оптимума считать точку (x 1 k , x 2 k). В противном случае перейти к шагу 3.

Шаг 3. Вычислить коэффициент α в соответствии с формулой:

Шаг 4. Выполнить рабочий шаг, рассчитав по формуле

x k+1 = x k – h .

Шаг 5. Определить значение критерия R (x 1 k +1 , х 2 k +1). Положить k = k+1 и перейти к шагу 1.

Пример.

Для сравнения рассмотрим решение предыдущего примера. Первый шаг делаем по методу наискорейшего спуска (табл. 5).

Таблица 5

Найдена наилучшая точка. Вычисляем производные в этой точке: dR / dx 1 = –2.908; dR / dx 2 =1.600; вычисляем коэффициент α, учитывающий влияние градиента в предыдущей точке: α = 3,31920 ∙ 3,3192/8,3104 2 =0,160. Делаем рабочий шаг в соответствии с алгоритмом метода, получаем х 1 = 0,502, х 2 = 1,368. Далее все повторяется аналогично. Ниже, в табл. 6 приведены текущие координаты поиска следующих шагов.

Таблица 6

Метод Ньютона и квазиньютоновские методы, обсуждавшиеся в предыдущем параграфе, весьма эффективны как средство решения задач безусловной минимизации. Однако они предъявляют довольно высокие требования к объему используемой памяти ЭВМ. Это связано с тем, что выбор направления поиска требует решения систем линейных уравнений, а также с возникающей необходимостью хранения матриц типа Поэтому при больших использование этих методов может оказаться невозможным. В существенной степени от этого недостатка избавлены методы сопряженных направлений.

1. Понятие о методах сопряженных направлений.

Рассмотрим задачу минимизации квадратичной функции

с симметричной положительно определенной матрицей А Напомним, что для ее решения требуется один шаг метода Ньютона и не более чем шагов квазиньютоновского метода Методы сопряженных направлений также позволяют найти точку минимума функции (10.33) не более чем за шагов. Добиться этого удается благодаря специальному выбору направлений поиска.

Будем говорить, что ненулевые векторы являются взаимно сопряженными (относительно матрицы А), если для всех

Под методом сопряженных направлений для минимизации квадратичной функции (10.33) будем понимать метод

в котором направления взаимно сопряжены, а шаги

получаются как решение задач одномерной минимизации:

Теорема 10.4. Метод сопряженных направлений позволяет найти точку минимума квадратичной функции (10 33) не более чем за шагов.

Методы сопряженных направлений отличаются один от другого способом построения сопряженных направлений. Наиболее известным среди них является метод сопряженных градиентов

2. Метод сопряженных градиентов.

В этом методе направления строят правилу

Так как то первый шаг этого метода совпадает с шагом метода наискорейшего спуска. Можно показать (мы этого делать не будем), что направления (10.34) действительно являются

сопряженными относительно матрицы А. Более того, градиенты оказываются взаимно ортогональными.

Пример 10.5. Применим метод сопряженных градиентов для минимизации квадратичной функции - из примера 10.1. Запишем виде где

Возьмем начальное приближение

1-й шаг метода совпадает с первым шагом метода наискорейшего спуска. Поэтому (см. пример 10.1)

2-й шаг. Вычислим

Так как то и решение оказалось найденным за два шага.

3. Метод сопряженных градиентов для минимизации неквадратичных функций.

Для того чтобы указанный метод можно было применить для минимизации произвольной гладкой функции формулу (10.35) для вычисления коэффициента преобразуют к виду

или к виду

Преимущество формул (10 36), (10.37) в том, что они не содержат явным образом матрицу А.

Минимизацию функции методом сопряженных градиентов производят в соответствии с формулами

Коэффициенты вычисляют по одной из формул (10.36), (10.37).

Итерационный процесс здесь уже не оканчивается после конечного числа шагов, а направления не являются, вообще говоря, сопряженными относительно некоторой матрицы.

Решение задач одномерной минимизации (10.40) приходится осуществлять численно. Отметим также то, что часто в методе сопряженных градиентов при коэффициент не вычисляют по формулам (10.36), (10.37), а полагают равным нулю. При этом очередной шаг производят фактически методом наискорейшего спуска. Такое "обновление" метода позволяет уменьшить влияние вычислительной погрешности.

Для сильно выпуклой гладкой функции при некоторых дополнительных условиях метод сопряженных градиентов обладает высокой сверхлинейной скоростью сходимости. В то же время его трудоемкость невысока и сравнима с трудоемкостью метода наискорейшего спуска. Как показывает вычислительная практика, он незначительно уступает по эффективности квазиньютоновским методам, но предъявляет значительно меньшие требования к используемой памяти ЭВМ. В случае, когда решается задача минимизации функции с очень большим числом переменных, метод сопряженных градиентов, по-видимому, является единственным подходящим универсальным методом.

Метод наискорейшего спуска

При использовании метода наискорейшего спуска на каждой итерации величина шага а k выбирается из условия минимума функции f(x) в направлении спуска, т. е.
f(x [k ] -a k f"(x [k ])) = f(x [k] - af"(x [k ])) .

Это условие означает, что движение вдоль антиградиента происходит до тех пор, пока значение функции f(x) убывает. С математической точки зрения на каждой итерации необходимо решать задачу одномерной минимизации по а функции
j(a) = f(x [k ] - af"(x [k ])) .

Алгоритм метода наискорейшего спуска состоит в следующем.

1. Задаются координаты начальной точки х .

2. В точке х [k ], k = 0, 1, 2, ... вычисляется значение градиента f"(x [k ]) .

3. Определяется величина шага a k , путем одномерной минимизации по а функции j(a) = f(x [k ] - af"(x [k ])).

4. Определяются координаты точки х [k+ 1]:

х i [k+ 1] = x i [k ] - а k f" i [k ]), i = 1 ,..., п.

5. Проверяются условия останова стерационного процесса. Если они выполняются, то вычисления прекращаются. В противном случае осуществляется переход к п. 1.

В рассматриваемом методе направление движения из точки х [k ] касается линии уровня в точке x [k+ 1] (Рис. 2.9). Траектория спуска зигзагообразная, причем соседние звенья зигзага ортогональны друг другу. Действительно, шаг a k выбирается путем минимизации по а функции ц(a) = f(x [k] - af"(x [k ])) . Необходимое условие минимума функции d j(a)/da = 0. Вычислив производную сложной функции, получим условие ортогональности векторов направлений спуска в соседних точках:

d j(a)/da = -f"(x [k+ 1]f"(x [k ]) = 0.

Градиентные методы сходятся к минимуму с высокой скоростью (со скоростью геометрической прогрессии) для гладких выпуклых функций. У таких функций наибольшее М и наименьшее m собственные значения матрицы вторых производных (матрицы Гессе)

мало отличаются друг от друга, т. е. матрица Н(х) хорошо обусловлена. Напомним, что собственными значениями l i , i =1, …, n , матрицы являются корни характеристического уравнения

Однако на практике, как правило, минимизируемые функции имеют плохо обусловленные матрицы вторых производных (т/М << 1). Значения таких функций вдоль некоторых направлений изменяются гораздо быстрее (иногда на несколько порядков), чем в других направлениях. Их поверхности уровня в простейшем случае сильно вытягиваются, а в более сложных случаях изгибаются и представляют собой овраги. Функции, обладающие такими свойствами, называют овражными. Направление антиградиента этих функций (см. Рис. 2.10) существенно отклоняется от направления в точку минимума, что приводит к замедлению скорости сходимости.

Метод сопряженных градиентов

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

f(x) = (х, Нх) + (b, х) + а

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

По определению, два n -мерных вектора х и у называют сопряженными по отношению к матрице H (или H -сопряженными), если скалярное произведение (x , Ну) = 0. Здесь Н - симметрическая положительно определенная матрица размером п хп.

Одной из наиболее существенных проблем в методах сопряженных градиентов является проблема эффективного построения направлений. Метод Флетчера-Ривса решает эту проблему путем преобразования на каждом шаге антиградиента -f(x [k ]) в направление p [k ], H -сопряженное с ранее найденными направлениями р , р , ..., р [k -1]. Рассмотрим сначала этот метод применительно к задаче минимизации квадратичной функции.

Направления р [k ] вычисляют по формулам:

p [k ] = -f"(x [k ]) +b k-1 p [k -l], k >= 1;

p = -f "(x ) .

Величины b k -1 выбираются так, чтобы направления p [k ], р [k -1] были H -сопряженными:

(p [k ], Hp [k- 1])= 0.

В результате для квадратичной функции

итерационный процесс минимизации имеет вид

x [k +l] =x [k ] +a k p [k ],

где р [k ] - направление спуска на k- м шаге; а k - величина шага. Последняя выбирается из условия минимума функции f(х) по а в направлении движения, т. е. в результате решения задачи одномерной минимизации:

f(х [k ] + а k р [k ]) = f(x [k ] + ар [k ]) .

Для квадратичной функции

Алгоритм метода сопряженных градиентов Флетчера-Ривса состоит в следующем.

1. В точке х вычисляется p = -f"(x ) .

2. На k- м шаге по приведенным выше формулам определяются шаг а k . и точка х [k+ 1].

3. Вычисляются величины f(x [k +1]) и f"(x [k +1]) .

4. Если f"(x ) = 0, то точка х [k +1] является точкой минимума функции f(х). В противном случае определяется новое направление p [k +l] из соотношения

и осуществляется переход к следующей итерации. Эта процедура найдет минимум квадратичной функции не более чем за п шагов. При минимизации неквадратичных функций метод Флетчера-Ривса из конечного становится итеративным. В таком случае после (п+ 1)-й итерации процедуры 1-4 циклически повторяются с заменой х на х [п +1] , а вычисления заканчиваются при, где - заданное число. При этом применяют следующую модификацию метода:

x [k +l] = x [k ] +a k p [k ],

p [k ] = -f"(x [k ])+ b k- 1 p [k -l], k >= 1;

p = -f"(x );

f(х [k ] + a k p [k ]) = f(x [k ] + ap [k ];

Здесь I - множество индексов: I = {0, n, 2п, Зп, ...} , т. е. обновление метода происходит через каждые п шагов.

Геометрический смысл метода сопряженных градиентов состоит в следующем (Рис. 2.11). Из заданной начальной точки х осуществляется спуск в направлении р = -f"(x ). В точке х определяется вектор-градиент f"(x ). Поскольку х является точкой минимума функции в направлении р , то f"(х ) ортогонален вектору р . Затем отыскивается вектор р , H -сопряженный к р . Далее отыскивается минимум функции вдоль направления р и т. д.

Рис. 2.11.

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

Введение

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

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

Пусть задано множество и на этом множестве определена целевая функция (objective function ) . Задача оптимизации состоит в нахождении на множестве точной верхней или точной нижней грани целевой функции .
Множество точек, на которых достигается нижняя грань целевой функции обозначается .


Если , то задача оптимизации называется безусловной (unconstrained ). Если , то задача оптимизации называется условной (constrained ).

Метод сопряжённых градиентов для квадратичного функционала

Изложение метода

Рассмотрим следующую задачу оптимизации:


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

Каждое следующее приближение вычисляется по формуле:


Определение. Два вектора и называются сопряжёнными относительно симметричной матрицы B, если

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


Базисные вектора вычисляются по формулам:



Коэффициенты выбираются так, чтобы векторы и были сопряжёнными относительно А.

Если обозначить за , то после нескольких упрощений получим окончательные формулы, используемые при применении метода сопряжённых градиентов на практике:

Анализ метода

Для метода сопряжённых градиентов справедлива следующая теорема:
Теорема Пусть , где - симметричная положительно определённая матрица размера . Тогда метод сопряжённых градиентов сходится не более чем за шагов и справедливы следующие соотношения:

Сходимость метода

Если все вычисления точные, и исходные данные точны то метод сходится к решению системы не более чем за итераций, где - размерность системы. Более тонкий анализ показывает, что число итераций не превышает , где - число различных собственных значений матрицы A. Для оценки скорости сходимости верна следующая (довольно грубая) оценка:

, где

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

.

Вычислительная сложность

На каждой итерации метода выполняется операций. Такое количество операций требуется для вычисления произведения - это самая трудоёмкая процедура на каждой итерации. Отальные вычисления требуют O(n) операций. Суммарная вычислительная сложность метода не превышает - так как число итераций не больше n.

Численный пример

Применим метод сопряжённых градиентов для решения системы , где

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

Заключение

Метод сопряжённых градиентов - один из наиболее эффективных методов решения СЛАУ с положительно определённой матрицей. Метод гарантирует сходимость за конечное число шагов, а нужная точность может быть достигнута значительно раньше. Основная проблема заключается в том, что из-за накопления погрешностей может нарушаться ортогональность базисных веторов , что ухудшает сходимость

Метод сопряжённых градиентов в общем случае

Расссмотрим теперь модификацию метода сопряжённых градиентов для случая, когда минимизируемый функционал не является квадратичным: Будем решать задачу:

.

Непрерывно дифференцируемая в функция. Чтобы модифицировать метод сопряжённых градиентов для решения этой задачи необходимо получить для формулы, в которые не входит матрица А:

Можно вычислять по одной из трёх формул:

Если функция - квадратичная и строго выпуклая, то все три формулы дают одинаковый результат. Если - произвольная функция, то каждой из формул cоответствует своя модификация метода сопряжённых градиентов. Третья формула используется редко, так как она требует, чтобы функция и вычисления гессиана функции на каждом шаге метода.

Анализ метода

Если функция - не квадратичная, метод сопряжённых градиентов может и не сходиться за конечное число шагов. Кроме того, точное вычисление на каждом шаге возможно только в редких случаях. Поэтому накопление погрешностей приводит к тому, что вектора перестают указывать направление убывания функции . Тогда на каком-то шаге полагают . Совокупность всех номеров , при которых принимается , обозначим за . Номера называются моментами обновления метода . На практике часто выбирают , где - размерность пространства.

Сходимость метода

Для метода Флетчера - Ривса существует теорема о сходимости, накладывающая не слишком жёсткие условия на минимизируемую функцию :
Теорема .
Пусть и выполняются следующие условия:

множества M: .
Тогда

Для метода Полака-Райбера доказана сходимость в предположении, что - строго выпуклая функция. В общем случае доказать сходимость метода Полака - Райбера невозможно. Напоротив, верна следующая теорема:
Теорема.
Предположим, что в методе Полака-Райбера значения на каждом шаге вычисляются точно. Тогда существует функция , и начальное приближение , такие что %200,%20%5Cforall%20k%20=%200,%201,%202,%20...%20%5Cquad%20%7C%7Cf(x_k)%7C%7C%20>%20%5Cdelta" alt="\exists \delta > 0, \forall k = 0, 1, 2, ... \quad ||f(x_k)|| > \delta">.

Тем не менее, на практике метод Полака-Райбера работает лучше.
Наиболее распространённые критерии останова на практике: Норма градиента становится меньше некоторого порога
Значение функции в течении m последовательных итераций почти не изменилось

Вычислительная сложность

На каждой итерации методов Полака-Райбера или Флетчера-Ривса по одному разу вычисляются функция и её градиент , решается задача одномерной оптимизации . Таким образом, сложность одного шага метода сопряжённых градиентов имеет тот же порядок, что и сложность шага метода скорейшего спуска. На практике метод сопряжённых градиентов показывает лучшую скорость сходимости.

Числовой пример

Будем искать методом сопряжённых градиентов минимум функции . Минимум этой функции равен 1 и достигается в точке (5, 4). Сравним на примере этой функции методы Полака-Райбера и Флетчера-Ривса. Итерации в обоих методах прекращаются, когда на текущем шаге квадрат нормы градиента становится меньше . Для выбора используется метод золотого сечения

Метод Флетчера - Ривса Метод Полака - Райбера
Число итераций Найденное решение Значение функции Число итераций Найденное решение Значение функции
0.01 18 (5.01382198,3.9697932) 1.00110367 15 (5.03942877,4.00003512) 1.00155463
0.001 20 (5.01056482,3.99018026) 1.00020805 18 (4.9915894,3.99999044) 1.00007074
0.0001 24 (4.9979991,4.00186173) 1.00000747 20 (5.00336181,4.0000018) 1.0000113
0.00001 25 (4.99898277,4.00094645) 1.00000193 22 (4.99846808,3.99999918) 1.00000235
0.00001 29 (4.99974658,4.0002358) 1.00000012 26 (4.99955034,3.99999976) 1.0000002

Реализовано два варианта метода сопряжённых градиентов: для минимизации квадратичного функционала, и для минимизации произвольной функции. В первом случае метод реализуется функцией
vector FindSolution(matrix A, vector b)
Здесь A и b - матрица и вектор, фигурирющие в определении квадратичной задачи оптимизации.
Для минимизации произвольного функционала можно использовать одну из двух функций:
vector FletcherRievesMethod(int spaceSize, Function F, vector (*GradF) (vector))
vector PolakRibiereMethod(int spaceSize, Function F, vector (*GradF) (vector))
Параметры для обеих функций совпадают и имеют следующий смысл:
spaceSize - размерность пространства(число переменных, от которых зависит минимизируемый функционал)
F - указатель на минимизируемую функцию. Функция должна иметь вид double <имя функции>(vector)
GradF - указатель на функцию, вычисляющую градиент минимизируемого функционала
Оба метода используют вспомогательную функцию для решения задачи одномерной оптимизации. В программе реализована одномерная оптимизация методом золотого сечения.

Заключение

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

См. также

Список литературы

  • Васильев Ф. П. Методы оптимизации - Издательство «Факториал Пресс», 2002
  • Nocedal J., Wright S.J. Numerical Optimization ,Springer, 1999