Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
122
Добавлен:
05.06.2015
Размер:
221.03 Кб
Скачать

Лабораторная работа 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 ,..., pi1 . Направление

pk

для очередного шага тоже будем искать в таком

 

 

 

k1

 

 

 

 

виде:

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

Соседние файлы в папке Методы оптимизации