Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
№6.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
158 Кб
Скачать
☆
  1. Метод покоординатного спуска.

 Пусть требуется найти наи­меньшее значение целевой функции и = f(x1,x2…,xn). В качестве начального приближения выберем в n - мерном пространстве некоторую точку M0 с координатами х1(0) , х2(0) , ... ,хn(0). Зафиксируем все координаты функции и, кроме первой. Тогда v(x1) = f(xl t х2(0),..., xn(0) ) — функция одной переменной x1. Первый шаг процесса оптимизации состоит в спус­ке по координате x1 в направлении убывания функции v от точки М0 до некоторой точки M1 (x1(1), х2(0),..., xn(0) ). Если функция f  дифференци­руемая, то значение х1(0) может быть найдено как

Здесь а1(1)>0 — некоторый шаг. Соотношение (6.17) определяет дви­жение в сторону уменьшения значений функции v (если только шаг а1(1) не слишком велик, в противном случае его нужно уменьшить). Действи­тельно, пусть df / dx1(M0) > 0. Тогда с ростом х1 функция v возрастает, а (6.17) определяет движение в сторону уменьшения х1.

Значение х1(1) можно найти и иначе. А именно, можно решить одно­мерную задачу оптимизации для функции v(x1). Тогда функция v в точ­ке M1 примет наименьшее значение, т. е. функция и примет в этой точке наименьшее значение по координате xi при фиксированных остальных координатах.

Зафиксируем теперь все координаты, кроме х2, и рассмотрим функцию этой переменной w(x2)=f(x1(1), х2, х3(0),… ,xn(0) . Снова осуществляем спуск, теперь по координате x2, в сторону убывания функции wот точки

M1 до точки М2 (х1(1) , х2(1), х3(0) ,..., хn(0)).

Значение x2(1) можно найти либо как

либо, решив задачу одномерной оптимизации для функции w(x2).

Аналогично проводится спуск по координатам х3, х4,… , хп, а затем процедура снова повторяется от х1 до хп и т. д. В результате этого процесса получается последовательность точек M0, М1, ... , в которых значения целевой функции составляют монотонно убывающую последовательность

f (М0) ≥ f (М1) ≥ ...

В качестве критерия завершения итерационного процесса можно ис­пользовать условия близости значений проектных параметров или целе­вой функции на двух последовательных итерациях. Однако под итерацией здесь следует понимать всю процедуру спуска по координатам от х1 до хп. Таким образом, близость проектных параметров можно трактовать как выполнение условий (4.21) - (4.23), а близость значений целевой функции как выполнение условия

 

М етод покоординатного спуска сводит задачу о нахождении наимень­шего значения функции многих переменных к многократному спуску в сторону уменьшения значений функции по каждому проектному пара­метру. Данный метод легко проиллюстрировать геометрически для случая функции двух переменных z= f(x,y), описывающей некоторую поверх­ность в трехмерном пространстве. На рис 6.5 нанесены линии уровня этой поверхности. Процесс оптимизации в этом случае проходит следующим образом. Точка М0(Х0,У0) описывает начальное приближение. Проводя спуск по координате х, попадем в точку M1(x1,y0). Далее, двигаясь па­раллельно оси ординат, придем в точку M2(X1, y1) и т. д.

 

 

 

3. Метод градиентного спуска.

Переходя на математический язык, заключаем, что направление наиско­рейшего спуска соответствует направлению наибольшего убывания функ­ции. Из курса математики известно, что направление наибольшего возраста­ния функции двух переменных u = f(x,y) характеризуется ее градиентом

где e1, e2 — единичные векторы (орты) в направлении координатных осей. Следовательно, направление, противоположное градиентному, укажет на­правление наибольшего убывания функции. Методы, основанные на выбо­ре пути оптимизации с помощью градиента, называются градиентными. Идея метода градиентного спуска состоит в следующем. Выбираем неко­торую начальную точку , и вычисля­ем в ней градиент рассматриваемой функции. Делаем шаг в направлении, обратном градиентному:

 

В результате приходим в точку M1 (x(1)), значение функции в которой обыч­но меньше первоначального (а(1) > 0). Если это условие не выполнено, т. е. значение функции не изменилось либо даже возросло, то нужно уменьшить шаг а(1) . В новой точке процедуру повторяем: вычисляем градиент и снова делаем шаг в обратном к нему направлении:

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

Метод градиентного спуска обладает тем же недостатком, что и метод покоординатного спуска: при наличии оврагов на поверхности сходимость метода очень медленная.

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

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

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

 

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

Заметим, что сведение многомерной задачи оптимизации к последователь­ности одномерных задач на каждом ша­ге оптимизации рассмотрено в п. 2 для метода покоординатного спуска. Раз­ница состоит в том, что здесь направле­ние одномерной оптимизации опреде­ляется градиентом целевой функции, тогда как покоординатный спуск проводится на каждом шаге вдоль одного из координатных направлений.

Проиллюстрируем метод наискорейшего спуска на рис. 6.8 для случая функции двух переменных z=f(x,y) и отметим некоторые его геомет­рические особенности.

В о-первых, легко показать, что градиент функции перпендикулярен касательной к линии уровня в данной точке. Следовательно, в градиентных методах спуск происходит по нормали к линии уровня.

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

Советуем читателю для лучшего понимания метода наискорейшего спуска составить алгоритм, аналогичный представленному на рис. 6.7 для метода покоординатного спуска.