Россия |
Лекция 11: Метод наискорейшего спуска. Метод Давидона – Флетчера – Пауэлла. Проблема оврагов. Проблема многоэкстремальности
1. Метод наискорейшего спуска
Суть данного метода заключается в том, что с помощью упомянутого ранее метода покоординатного спуска осуществляется поиск из заданной точки в направлении, параллельном одной из осей, до точки минимума в данном направлении. Затем поиск производится в направлении, параллельном другой оси, и т.д. Направления, конечно, фиксированы. Кажется разумным попытаться модифицировать этот метод таким образом, чтобы на каждом этапе поиск точки минимума производился вдоль "наилучшего" направления. Не ясно, какое направление является "наилучшим", но известно, что направление градиента является направлением наискорейшего возрастания функции. Следовательно, противоположное направление является направлением наискорейшего убывания функции. Это свойство может быть обосновано следующим образом.
Предположим, что осуществляется перемещение из точки x в следующую точку х + hd, где d - некоторое направление, a h - шаг некоторой длины. Следовательно, перемещение производится из точки (x1, х2, ..., хn) в точку (x1 + zx1, x2 + zх2, ..., хn + zхn), где
![]() |
( 1.1) |
![]() |
( 1.2) |
Изменение значений функции определяется соотношениями
![]() |
( 1.3) |
![\varphi(d_1,d_2,\ldots,d_n)=df+\lambda(\Sigma d_1^2 -1).](/sites/default/files/tex_cache/fa467aef46cab0a2a08827eb87dff9fd.png)
Величина df, удовлетворяющая ограничению (1.2), достигает максимума, когда функция
![\varphi(d_1,d_2,\ldots,d_n) =
h \left( \frac{\partial f}{\partial x_1}d_1 +
\frac{\partial f}{\partial x_2}d_2 + \ldots +
\frac{\partial f}{\partial x_n}d_n \right) +
\lambda(d_1^2 + d_2^2 + \ldots + d_n^2-1)](/sites/default/files/tex_cache/8e37d733b7f288657710576b9c1eb675.png)
![\frac{\partial \varphi}{\partial d_j} =
h \frac{\partial \varphi}{\partial x_j} +
\lambda d_j, \; \text{при} \; j=1,2,\ldots,n.](/sites/default/files/tex_cache/7f517a3f794d8c9078b113badb378e93.png)
![]() |
( 1.5) |
Следовательно,
![]() |
( 1.6) |
Тогда di ~ df/dxi и направление d параллельно направлению V/(x) в точке х.
Таким образом, наибольшее локальное возрастание функции для заданного малого шага h имеет место, когда d есть направление Vf(x) или g(х). Поэтому направлением наискорейшего спуска является направление
![]() |
( 1.7) |
В более простом виде уравнение (1.3) можно записать так:
![df-|\nabla f(x)||dx|\cos \theta ,](/sites/default/files/tex_cache/512510bc68b4b9ea099418645f07728d.png)
![\theta](/sites/default/files/tex_cache/2554a2bb846cffd697389e5dc8912759.png)
![\theta = 180^{\circ}](/sites/default/files/tex_cache/0967694ecaa89ba467970a582231e6d3.png)
Замечание. Направление градиента перпендикулярно в любой точке линии постоянного уровня, поскольку вдоль этой линии функция постоянна. Таким образом, если (d1, d2, ..., dn) - малый шаг вдоль линии уровня, то
![f(x_1 + d_1, x_2 + d_2, \ldots, x_n + d_n)=f(x_1, x_2, \ldots, x_n)](/sites/default/files/tex_cache/e33cb9625352a4869c91a5b8428a3149.png)
![]() |
( 1.8) |
В методе наискорейшего спуска желательно использовать рассмотренное свойство направления градиента. Поэтому, если мы находимся в точке xi на некотором шаге процесса оптимизации, то поиск минимума функции осуществляется вдоль направления -Vf(xj). Данный метод является итерационным. На шаге i точка минимума аппроксимируется точкой xi. Следующей аппроксимацией является точка
![]() |
( 1.9) |
![\lambda_i](/sites/default/files/tex_cache/5614371f803f8a78b18b27391549a107.png)
![\lambda](/sites/default/files/tex_cache/c6a6eb61fd9c6c913da73b3642ca147d.png)
![]() |
( 1.10) |
Значение может быть найдено с помощью
одного из методов одномерного поиска. Блок-схема метода наискорейшего спуска
приведена на рис. 11.2.