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

14. Метод наискорейшего спуска. Вычисление длины шага и методы наискорейшего спуска

1 Методы безусловной минимизации. Градиентные методы (метод наискорейшего спуска).

Будем рассматривать задачу

f(x)min; xD = En, (1)

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

f(x + h)  f(x)= <f '(x), h> + o(h; x), (2)

где . Если f '(x)0, то при достаточно малых h главная часть приращения (2) будет определяться дифференциалом функции df(x)= <f '(x), h>. Справедливо неравенство Коши  Буняковского

-|f '(x) h <f ' (x), h> |f '(x) h,

причем если f '(u)0, то правое неравенство превращается в равенство только при h = f '(u), а левое неравенство  только при f'(u)0, где  = const>0. Отсюда ясно, что при f '(x)0 направление наибыстрейшего возрастания функции f(x) в точке и, совпадает с направлением градиента f '(x), а направление наибыстрейшего убывания — с направлением антиградиента (f '(x)).

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

Будем считать, что некоторая начальная точка x0 уже выбрана. Тогда градиентный метод заключается в построении последовательности {xk} по правилу

xk+1 = xk  kf '(xk), k>0, k = 0, 1, ... (3)

Число k из (3) часто называют длиной шага или просто шагом градиентного метода. Если f '(xk)0, то шаг k>0 можно выбрать так, чтобы f(xk+1)< f(xk). В самом деле, из равенства (2), имеем

f(xk+1) – f(xk) = k[- |f '(xk) |2 + o(k) k-1] < 0

при всех достаточно малых k>0. Если f '(xk) = 0, то xk  стационарная точка. В этом случае процесс (3) прекращается, и при необходимости проводится дополнительное исследование поведения функции в окрестности точки xk для выяснения того, достигается ли в точке xk минимум функции f(x) или не достигается. В частности, если f(x) выпуклая функция, то в стационарной точке всегда достигается минимум. Существуют различные способы выбора величины k в методе (3). В зависимости от способа выбора k можно получить различные варианты градиентного метода. Укажем несколько наиболее употребительных на практике способов выбора k.

1) На луче {xЕn: x = xk  f '(xk), 0}, направленном по антиградиенту, введем функцию одной переменной

k() = f(xk  f '(xk))

и определим k из условий

k(k) = inf k () = k*., k>0. (4)

Метод (3), (4) принято называть методом скорейшего спуска. При f '(xk ) 0 согласно формуле

k' () = <f ' (xk + h),h>

следует, что k'(0) = - |f '(xk)|2 < О, поэтому нижняя грань в (4) может достигаться лишь при k > 0. Приведем пример, когда величина k, определяемая условием (4), существует и может быть выписана в явном виде.

Пример 1. Пусть дана квадратичная функция

f(x) = ½<Аx, x>  <b, x>, (5)

где A — симметричная положительно определенная матрица порядка nxn, b — вектор из Еn. Выше было показано, что эта функция сильно выпукла и ее производные вычисляются по формулам

f '(x) = Ax-b; f "(x) = A.

Поэтому метод (3) в данном случае будет выглядеть так:

xk+1 = xk- k(Axk-b), k = 0, 1, ...

Таким образом, градиентный метод для функции (5) представляет собой хорошо известный итерационный метод решения системы линейных алгебраических уравнений Аx = b. Определим k из условий (4). Пользуясь формулой (4.2.10), имеем

k () = f(xk)- |f '(xk)|2 + (2/2)<Af '(xk), f '(xk)> , 0.

При f '(uk ) 0 условие

k'(k) = -|f '(xk)|2 + k<Af '(xk), f '(xk)> =0

дает

Поскольку функция k(а) выпукла, то в найденной точке эта функция достигает своей нижней грани при >0. Метод скорейшего спуска для функции (5) описан, но для углубленного понимания приведем алгоритм.

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

Будем считать, что некоторая начальная точка x0 выбрана так, чтобы выполнялись условия теоремы Вейерштрасса, а именно множество С(x0) = {xRn  f(x)  f(x0) } было замкнуто и ограничено.

Шаг 1. Полагаем k=0 (номер итерации), xk = x0 = 0,  = 0,01.

Шаг 2. Вычисляем h(xk) = f '(xk), а также

k = |f '(xk) |.

Шаг 3. Если k <, то перейти в шагу 6, иначе перейти к следующему шагу 4.

Шаг 4. Вычислим k>0из условия

f(xk - kf '(xk)) =

Шаг 5. Вычисляем следующее приближение

xk+1 = xk  kf '(xk).

Полагаем k:= k+1 и переходим к шагу 2.

Шаг 6. В качестве точки минимума возьмем последнее приближение

x* = xk,

а также в качестве минимального значения функции f(x*) = f(xk).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]