Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Загребаев Методы матпрограммирования 2007

.pdf
Скачиваний:
124
Добавлен:
16.08.2013
Размер:
10.97 Mб
Скачать

направлен по нормали к линии уровня, т.е. перпендикулярно касательной к ней.

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

Аналитически это можно показать следующим образом. Обозначим

ϕ(λ) = f (xk − λ f (xk )) .

Поскольку шаг λ выбирается из условия минимума

dϕ

 

= 0 .

dλ

λ

 

k

Найдем ddϕλ по правилу дифференцирования сложной функции;

т.е. исходя из зависимости ϕ[x(λ)] , значение производной определяется соотношением

ddϕλ = ddxϕ ddxλ .

Откуда

dϕ

 

=< f (xk − λk f (xk )), f (xk ) > =

 

dλ

λ

144424443 14243

 

 

 

k

 

dx

 

 

 

 

 

 

 

производная

dϕ

производная

 

 

 

dx

dλ

 

 

 

 

= − < f (xk +1 ), f (xk ) >= 0 .

201

Следовательно, направления ортогональны.

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

2 вариант градиентного метода. На практике нередко доволь-

ствуются выбором шага, обеспечивающего убывание функции в направлении антиградиента ( f (xk +1 ) < f (xk )) , вместо того чтобы

отыскивать минимум функции в данном направлении. Трудоемкость итерации при таком способе выбора шага меньше. При этом скорость сходимости обоих вариантов в конечном счете примерно одинакова.

Опишем способ выбора шага λk на k-й итерации.

1.Выбирается некоторое произвольное значение λ (одно и то же на всех итерациях) и определяется точка x = xk − λ f (xk ) .

2.Вычисляется f (x) = f (xk − λ f (xk )) .

3.Производится проверка неравенства

f (xk ) f (x) ≥ ελ(< f (xk ), f (xk ) >) ,

1442443

|| f ( x )||2

где 0 < ε <1 – произвольно выбранная константа (одна и та же на всех итерациях).

Возможно использование более простого неравенства:

f(x) < f (xk ) .

4.Если неравенство выполняется, то значение λ и берется в качестве искомого: λk = λ . В противном случае производится дроб-

ление λ (путем умножения λ на произвольное число α <1 ) до тех пор, пока неравенство не окажется справедливым.

Следует отметить, что если выбрать в качестве λ слишком маленький шаг, то процесс будет сходиться очень долго, поэтому время от времени можно пробовать увеличить λ , но так чтобы не нарушить выбранное неравенство.

202

Направления поиска в этом варианте метода уже не будут ортогональны (рис. 3.22).

Рис. 3.22. Градиентный метод (второй вариант)

Можно предложить несколько критериев окончания итерационного процесса:

1) по разности аргументов на последовательных шагах

||x k +1xk ||≤ ε1 ,

2)по разности значений функции

||f (x k +1) f (xk ) ||≤ ε2 ,

3)по значению градиента

||f (xk ) ||≤ ε3 .

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

Например. Для функции

f (x1 , x2 )

 

 

 

 

 

 

 

f (x k )

 

 

f (x k

+ δ

1

, x k )

f (x k , x k )

 

 

x

=

 

 

1

 

2

 

 

1

2

,

 

 

 

 

δ

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

f (x k )

 

 

f (x k

, x k

+ δ

2

)

f (x k , x k )

 

 

x2

=

 

 

1

2

 

 

 

1

2

 

.

 

 

 

 

 

δ2

 

 

 

203

Сходимость градиентных методов. Тот факт, что градиентные методы при определенных условиях сходятся, отражается в теореме, которую приведем без доказательства.

Теорема. Если функция f (x) ограничена снизу, ее градиентf (x) удовлетворяет условию Липшица:

|| f (x) f ( y) ||R || x y ||

при любых x, y E n , а выбор шага λk производится указанными ранее способами, то для любой начальной точки x0 градиентный метод сходится, т.е. || f (xk ) || 0 при k → ∞ .

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

|| xk +1 x* ||q || xk x* ||, 0 < q <1

(такая скорость сходимости называется линейной).

Величина знаменателя прогрессии q зависит от соотношения наибольшего М и наименьшего m собственных значений матрицы вторых производных f (x) . Достаточно малым знаменатель q будет

лишь в том случае, когда эти собственные числа мало отличаются друг от друга. В этом случае градиентные методы будут сходиться

с высокой скоростью. Чем меньше отношение Mm , тем ближе к

единице знаменатель q и тем медленнее сходятся градиентные методы.

Можно дать геометрическую интерпретацию этого факта

(рис. 3.23).

Когда отношение Mm близко к единице линии уровня функции

f (x) = const близки к окружности. Для таких линий уровня градиентный метод сходится быстро (рис. 3.23, а).

204

а)

б)

Рис. 3.23. Типы линий уровня: а – линии уровня близкие к окружности,

б– линии уровня «овражного типа»

Суменьшением отношения Mm линии уровня становятся все

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

(рис. 3.23, б).

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

205

Это происходит из-за того, что кривая поиска для таких функций обычно быстро спускается на «дно оврага», а затем начинает медленное перемещение к экстремуму, так как градиент оказывается почти перпендикулярным к оси оврага (рис. 3.24).

Рис. 3.24. Использование градиентного метода в случае функции «овражного» типа

Для ускорения сходимости при поиске минимума «овражной» функции существуют специальные методы – они называются «овражными».

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

Пример. Рассмотрим функцию f (x) = x12 + 25x22 .

Очевидно, линии уровня данной функции вытянуты вдоль оси x1 .

Если ввести замену переменных: y1 = x1 , y2 = 5x2 , то функция

f ( y) = y12 + y22 будет иметь линии уровня в виде окружностей и, в

результате, градиентный метод сходится за один шаг.

В реальной задаче подобрать нужные преобразования, как правило, оказывается достаточно сложно.

Блок-схема градиентного метода (2-й вариант) изображена на рис. 3.25.

206

Рис. 3.25. Блок-схема градиентного метода, где x0 – аргумент в начале итерации;

 

– текущее значение аргумента;

f0

– функция в точке x0 ; f – функция в точке

x

 

; f0– производная в точке

 

;

λ0

– начальное λ для каждой итерации

x

x

В данном методе окончание итерационного процесса осуществляется по условию – || f (xk ) ||≤ ε .

207

Задача. Найти методом наискорейшего спуска минимум функции f (x) = 2x12 + x22 + x1 x2 + x1 + x2 с точностью ε = 0,05 (по норме градиента). В качестве начальной точки принять точку x 0 = (0,0) . Значения функции и градиента в этой точке, соответственно, будут:

 

 

 

 

f (x 0 ) = 0 ;

 

 

 

 

f

 

 

 

 

 

 

= 4x1 + x2

 

 

1

 

 

 

 

 

+1

 

 

 

 

 

f (x

 

x1

 

 

 

0

) =

 

 

 

=

.

 

 

f

= 2x2 + x1

 

 

1

 

 

 

 

 

+1

 

 

 

 

 

 

 

x2

 

 

x=x

 

 

 

 

 

 

 

0

 

 

Очевидно, нетрудно найти точное решение данной задачи:

x * = −

1

;

x* = −

3

;

f * = −

2

≈ −0,2857 .

 

 

 

1

7

 

2

7

 

7

 

 

 

 

 

 

Решим задачу с использованием градиентного метода. В результате получим следующую последовательность действий.

1-я итерация:

 

0

1

 

 

1

 

0

 

0

 

0

 

 

λ

 

− λ

 

f (x

 

;

x

= x

− λf (x

 

 

 

 

,

 

) =

 

 

 

) =

=

 

 

 

1

 

 

 

 

 

 

 

 

0

 

 

λ

 

− λ

 

f (x0 )1,4 > ε.

Так как x1 = −λ и x1 = −λ,

то

f (x1 (λ)) = f (λ) = 4λ2 2λ .

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

Таким образом,

значение

λ , обеспечивающее минимум функ-

 

 

 

 

0

 

 

1

 

 

0

 

 

1

 

ции по направлению f (x

)

=

 

из точки x

, будет

λ =

 

.

 

 

 

4

 

 

 

 

 

 

 

1

 

 

 

 

 

 

Окончательно получаем для первой итерации:

 

 

 

 

1

 

1 4

 

 

 

1

 

 

 

 

 

 

x

 

 

 

;

 

f (x

) = −1 4 = −0,25 .

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

1 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

208

 

 

 

 

 

 

2-я итерация:

 

 

 

 

 

 

 

1

 

1 4

 

 

 

f (x

 

 

 

,

|| f (x1 ) || 0,35 ;

 

) =

1 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 4

 

 

1 4

 

 

 

 

 

 

 

 

 

λ −1

 

 

 

 

 

 

 

 

 

 

(2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

x

 

 

=

 

 

 

 

 

 

 

1 4

 

 

 

 

=

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

1 4 − λ

 

 

 

 

 

 

(λ +1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (λ) =

 

2λ2

2λ −4

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

16

 

 

 

 

,

f (λ) =

16

 

 

(4λ −2) =

0 → λ =

2 ;

 

 

 

 

 

 

 

 

2

 

 

1 8

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

=

 

 

 

 

 

f (x

)

 

= −0,281.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3-я итерация:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

1 8

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

) =

 

 

,

|| f (x

 

) || 0,18 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 8

 

 

1 8

 

 

 

 

 

(λ +1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

 

8

 

 

 

 

 

 

 

 

 

x (3) =

 

 

 

− λ

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 8

 

 

1 8

 

 

 

 

 

 

(λ + 3)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (λ) =

4λ2 2λ −18

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

,

f (λ) =

 

 

 

 

(8λ − 2) = 0 → λ =

 

 

 

;

 

 

 

 

64

 

 

 

 

 

 

64

 

4

 

 

 

 

 

3

 

 

5 32

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

=

 

 

 

 

 

 

,

f (x

)

 

= −0,2852 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13 32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4-я итерация:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

1 32

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x

 

 

 

 

 

 

 

 

|| f (x

) || 0,044 < ε .

 

 

 

 

 

 

 

) =

1 32

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

*

 

3

 

5 32

 

 

 

*

 

x

= x

 

 

 

,

f (x

) = −0,2852 ,

 

 

13 32

 

 

 

 

 

 

 

 

 

 

 

 

что, с заданной степенью точности совпадает истинным решением задачи.

209

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

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

Вновь предположим, что f (x) – квадратичная функция вида:

f (x) = a + x тb + 12 x тQx ,

где Q – положительно определенная матрица, которая в данном

случае совпадает с матрицей Гессе.

В том случае, если f (x) не является квадратичной, то Q также

будет обозначать матрицу вторых производных – матрицу Гессе. При этом матрица Гессе будет изменяться при получении каждой новой точки. Для того, чтобы метод был применимым, необходимо, чтобы матицы Гессе неквадратичных функций менялись не очень быстро.

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

Вместо того чтобы использовать антиградиент в качестве направления спуска, метод сопряженных градиентов преобразует антиградиент в направление Sk , которое является Q -сопряженным с

ранее найденными направлениями.

Эти направления вырабатываются следующим образом:

S0 = − f (x0 ),

Sk = − f (xk ) + βk 1Sk 1 ,

где коэффициент βk 1 выбирается так, чтобы сделать сопряженным с Sk 1 . Иначе говоря, из условия

(3.10)

Sk Q -

0 =< Sk ,QSk 1 >= − < f (xk ),QSk 1 > +βk 1 < Sk 1,QSk 1 >.

Отсюда

 

< f (xk ),QSk 1

>

 

 

 

βk 1

=

.

(3.11)

 

< Sk 1,QSk 1

>

 

 

 

 

 

 

 

Точка

xk находится с помощью одномерного поиска в направ-

лении Sk

из точки xk 1 , т.е.

 

 

 

 

210