
- •Градиентные методы минимизации функций многих переменных.
- •1.Минимизация квадратичных функций
- •2.Минимизация неквадратичных функций
- •3.Рестарт и частота рестарта
- •4.Точность одномерной минимизации и направление убывания
- •5.Точность одномерной минимизации методом поразрядного поиска
- •6.Точность одномерной минимизации и точность решения основной задачи
- •7.Способы нахождения шага спуска
- •8.Виды коэффициента сопряжённости направлений
- •9.Эффективность метода сопряженных градиентов в задачах с большой размерностью
- •10.Память метода сопряженных градиентов
- •11.Скорость сходимости
- •Контрольные вопросы к Лабораторной работе 3
Лабораторная работа 3.
Градиентные методы минимизации функций многих переменных.
Постановка задачи: Требуется найти |
безусловный минимум |
функции n |
||||
переменных f (x) = f (x , x ,..., x ) , т.е. такую точкуx E |
n |
, что |
f (x ) = min f (x) . |
|||
1 2 |
n |
|
|
x En |
||
Предполагается, что целевая функция f (x) |
|
|
|
|||
− дифференцируема в En |
и возможно |
вычисление ее производных в произвольной точке En .
В данной работе рассматриваются итерационные процедуры минимизации вида
xk +1 |
= xk +αk pk , k = 0,1,... |
(1) |
где направление убывания |
pk определяется тем или иным способом с учетом |
информации о частных производных функции f (x) , а величина шага αk > 0 такова, что
|
|
f (xk +1 ) < f (xk ), |
k =1,2,... |
(2) |
|
|
Метод градиентного спуска. |
||
Стратегия поиска: Положим в (1) на каждом шаге |
pk = − f (xk ) . Если f (xk ) ≠ 0 , |
|||
то условие |
( f (xk ), pk ) < 0 , очевидно, |
выполнено. |
Следовательно, направление |
|
вектора pk |
является |
направлением убывания функции f (x) , причем в малой |
||
окрестности точки xk |
направление pk |
обеспечивает наискорейшее убывание этой |
функции. Поэтому найдется такое αk > 0 , что будет выполняться условие (2).
Для сильно выпуклых функций метод градиентного спуска гарантирует сходимость последовательности {xk }к точке минимума x функции f (x) . Скорость
сходимости метода − линейная. |
|
|
|
|
|
|
|
Алгоритм: |
|
|
|
|
|
|
|
1. |
Задать параметр точности ε > 0 , начальный шаг α >0 , выбрать x En . Вычислить |
||||||
f (x) . |
|
|
|
|
|
|
|
2. |
Вычислить f (x) и проверить условие достижения точности: |
|
f (x) |
|
|
|
<ε . Если оно |
|
|
|
|||||
выполнено, вычисления завершить, положив x = x , f = f (x) . |
Иначе – перейти к |
||||||
шагу 3. |
|
|
|
|
|
|
|
3. |
Найти y = x −α f (x) и f (y) . Если f (y) < f (x) , то положить x = y , |
|
f (x) = f (y) и |
||||
перейти к шагу 2, иначе − к шагу 4. |
|
|
|
|
|
|
|
4. |
Положить α =α / 2 и перейти к шагу 3. |
|
|
|
|
|
|
Замечание. Вблизи стационарной точки функции f (x) величина f (x)
становится малой. Это часто приводит к замедлению сходимости последовательности {xk }. Поэтому в основной формуле (1) иногда полагают pk = −f (xk ) /
f (xk )
, используя вместо антиградиента вектор единичной длины в этом же направлении.
1
Метод наискорейшего спуска.
Стратегия поиска: Метод является модификацией метода градиентного спуска. Здесь также полагают pk = − f (xk ) , но величина шага αk из (1) находится в результате решения задачи одномерной оптимизации
Φ |
k |
α |
→ |
min , |
Φ |
α |
= |
f (x |
k −α |
f (x |
k |
)), |
α > |
0 |
, |
(3) |
|
( ) |
|
|
k ( ) |
|
|
|
|
|
|||||||
т.е. на каждой |
итерации |
в |
направлении антиградиента |
|
− f (xk ) совершается |
исчерпывающий спуск.
Для сильно выпуклых функций метод наискорейшего спуска гарантирует сходимость последовательности {xk }к точке минимума x функции f (x) . Скорость сходимости метода − линейная.
Алгоритм:
1. Задать параметр точности ε >0 , выбрать x En . Вычислить f (x) .
2. Вычислить f (x) и проверить условие достижения точности: f (x)
<ε . Если оно
выполнено, вычисления завершить, полагая x = x , f = f (x) . Иначе – перейти к шагу 3.
3. Решить задачу одномерной оптимизации (3) для xk = x , т.е. найти α . Положить x = x −α f (x) и перейти к шагу 2.
Замечание. Решение задачи (3) можно получить одним из рассмотренных для одномерной минимизации способов. Проверять выполнение условия (2) в этом
методе необязательно. Если функция f (x) квадратична, т.е. f (x) = 12 (Ax, x) + (b,x) + c , то для величины шага исчерпывающего спуска можно получить точную формулу
αk = − |
( f (xk ), pk ) |
= − |
(Axk + b, pk ) |
, положив |
pk = − f (xk ) . |
(Apk , pk ) |
|
||||
|
|
(Apk , pk ) |
|
На практике, значения многих исследуемых функций вдоль некоторых направлений изменяются гораздо быстрее (иногда на несколько порядков), чем в других направлениях. Их поверхности уровня сильно вытягиваются, а в более сложных случаях изгибаются и представляют собой овраги. Направление антиградиента у овражных функций существенно отклоняется от направления в точку минимума, что приводит к замедлению скорости сходимости.
Скорость сходимости градиентных методов существенно зависит также от точности вычислений градиента. Потеря точности, а это обычно происходит в окрестности точек минимума или в овражной ситуации, может вообще нарушить сходимость процесса градиентного спуска.
Вследствие перечисленных причин градиентные методы зачастую используются в комбинации с другими, более эффективными методами на начальной стадии решения задачи. В этом случае точка x0 находится далеко от точки минимума, и шаги в направлении антиградиента позволяют достичь существенного убывания функции.
2

Метод сопряженных градиентов.
Стратегия поиска: В методах градиентного спуска в итерационной процедуре (1) в качестве направления убывания функции f (x) использовалось направление
антиградиента: pk = − f (xk ) . Однако такой выбор направления убывания не всегда бывает удачным. В частности, для плохо обусловленных задач минимизации направление антиградиента в точке xk может значительно отличаться от
направления к точке минимума x . В результате, траектория приближения к точке минимума имеет зигзагообразный характер. В методе сопряженных градиентов применяется другой подход. Используется итерационный процесс
xk +1 = xk +αk pk |
, |
|
|
k = 0,1,...; |
x0 En , |
p0 = − f (x0 ) , |
|
|
||||||||||||||
в котором величина шага |
αk находится из условия исчерпывающего спуска по |
|||||||||||||||||||||
направлению pk : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f (xk |
+αk pk ) = min f (xk |
+α pk ), |
k = 0,1,... . |
|
|
|||||||||||||||||
|
|
|
|
|
|
α>0 |
|
|
|
|
|
|
|
|
|
|||||||
Далее, после вычисления очередной точки |
xk +1 , |
k = 0,1,..., новое направление |
||||||||||||||||||||
поиска pk+1 находится по формуле, отличной от антиградиента: |
|
|
||||||||||||||||||||
pk +1 |
= − f (xk +1 ) + βk |
pk |
, |
k = 0,1,..., |
|
|
|
|||||||||||||||
где коэффициенты |
βk |
выбираются так, |
чтобы при минимизации квадратичной |
|||||||||||||||||||
функции f (x) с |
положительно |
|
определенной |
матрицей |
A |
получалась |
||||||||||||||||
последовательность A - ортогональных векторов p0 , p1 ,... . |
|
|
||||||||||||||||||||
Одна из возможных формул для коэффициента βk |
имеет вид |
|
|
|||||||||||||||||||
|
|
βk |
= |
|
f (xk +1 ) |
|
|
|
2 |
, |
k =1,2,... |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
f (xk ) |
|
|
|
2 |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
||||||||||||||
Выражение для |
коэффициента |
βk не |
содержит |
в явном |
виде |
матрицу A |
квадратичной формы. Поэтому метод сопряженных градиентов применяют для минимизации любых, а не только квадратичных функций.
Если функция f (x) квадратична, т.е. f (x) = 12 (Ax, x) + (b,x) + c , то для величины шага исчерпывающего спуска можно получить точную формулу
αk = − ( f (xkk ), pk k ) .
(Ap , p )
При реализации метода сопряженных градиентов применяется практический прием – через каждые N шагов производят обновление метода, полагая βm N =0, m =1,2,.... Номера m N называют моментами рестарта. Часто полагают
N = n - размерности пространства En . Если N =1, то получается частный случай метода сопряженных градиентов – метод наискорейшего спуска.
Алгоритм:
1.Задать точность вычислений ε , выбрать начальное приближение x0 и частоту обновления N .
2.Положить k = 0 ( k - номер итерации). Вычислить значение p0 = − f (x0 ) .
3

3.Вычислить значение αk из решения задачи одномерного исчерпывающего спуска
f (xk +αk |
pk ) = min |
f (xk |
+α pk ) , либо другим методом |
|
α>0 |
|
|
4.Вычислить точку xk +1 |
= xk +αk pk и градиент f (xk +1 ) . |
5.Проверить критерий окончания поиска f (xk +1 ) < ε . Если критерий выполнен,
перейти к шагу 8.
6.Если k +1 = N , то положить x0 = xk +1 , и перейти к шагу 2 (рестарт).
7.Вычислить коэффициент βk по выбранной формуле и найти новое направление
поиска pk +1 |
= − f (xk +1 ) + βk pk . Положить k = k +1 и перейти к шагу 3. |
|
|
|
|
||||||||
8.Выбрать приближенно x |
= xk +1 , f (x ) = f (xk +1 ) . Поиск завершен. |
|
|
|
|
||||||||
Дополнительные сведения о методе сопряженных градиентов |
|
||||||||||||
1.Минимизация квадратичных функций |
|
|
f (x) = cT x + 1 |
|
|
|
|||||||
Рассмотрим задачу поиска минимума квадратичной функции: |
2 |
xT Ax , где |
|||||||||||
A – симметричная положительно определенная матрица. |
|
|
|
|
|
||||||||
|
|
|
|
|
|
||||||||
Обозначим для краткости g i |
= f (xi ) - вектор градиента, |
yi = g i+1 − g i , pi - направление |
|||||||||||
спуска в формуле xi+1 = xi +αi pi . |
|
|
|
|
|
|
|
|
|
||||
Рассмотрим набор |
A – сопряженных ненулевых векторов, |
то есть: ( pi )T Ap j = 0 |
для всех |
||||||||||
i ≠ j . Так как эти вектора |
A – сопряжены, то они являются линейно независимыми. |
||||||||||||
Действительно, если представить один из этих векторов |
pk как линейную комбинацию |
||||||||||||
остальных: |
pk |
= a0 p0 +... + ak −1 pk −1 , |
то |
при |
умножении |
этого равенства на |
( pi )T A , |
||||||
получим, что ( pi )T Apk = a0 ( pi )T Ap0 |
+... + ak −1 ( pi )T Apk −1 |
= 0 , |
что невозможно, |
так как |
|||||||||
pk ≠ 0 и A – положительно определенная матрица. |
|
|
|
|
|
|
|||||||
Для рассмотренного набора |
A – сопряженных направлений |
соответствующий метод |
|||||||||||
сопряженных |
направлений |
выглядит |
так: |
xk +1 = xk +αk pk . |
(Можно доказать, что |
||||||||
последовательный исчерпывающий спуск по A – ортогональным направлениям приводит |
|||||||||||||
к точке минимума квадратичной формы не более чем за n шагов) |
|
|
|
|
|||||||||
По свойствам |
квадратичной |
функции f (x) |
для любых точек xi+1 и |
xi , |
|
связанных |
|||||||
равенством xi+1 |
= xi +αi pi , имеем: yi |
= f (xi+1 ) − f (xi ) = A(xi+1 − xi ) =αi |
Api . |
|
|
||||||||
Получаем, |
что |
условие |
сопряженности |
( pi )T Ap j |
= 0 |
эквивалентно |
|
условию |
|||||
ортогональности: (yi )T p j = 0 . |
|
|
|
|
|
|
|
|
|
||||
Докажем теперь, |
что направление pk |
для очередной итерации можно вычислять как |
линейную комбинацию градиента в текущей точке xk и предыдущего направления pk −1 . Доказываем методом математической индукции.
Пусть |
p0 |
совпадает в начальной точке с антиградиентом − g 0 в начальной точке |
x0 . |
||||
Пусть |
k |
шагов метода спуска по взаимно сопряженным направлениям p0 ,..., pk −1 |
уже |
||||
выполнены, причем каждый из векторов |
pi был суммой антиградиента − g i и линейной |
||||||
комбинации |
p0 ,..., pi−1 . Направление |
pk |
для очередного шага тоже будем искать в таком |
||||
|
|
|
k−1 |
|
|
|
|
виде: |
pk = −g k + ∑βki pi . Из этой формулы следует, что |
g k - это линейная комбинация |
|||||
|
|
|
i=0 |
|
|
|
|
направлений |
p0 ,..., pk . Учитывая |
(g i )T pi = 0 , можно |
утверждать (g k )T g i = 0,i < k . |
||||
|
|
|
|
|
|
|
4 |