3.3. Метод градиентного спуска. Метод наискорейшего спуска
Постановка задачи минимизации функции
переменных
на множестве
пространства
не отличается от постановки в одномерном случае. Если
, то говорят о безусловной минимизации функции
.
Для решения задач безусловной минимизации функции
широко применяют приближенные методы, в основе которых лежит вычисление производных первого порядка функции
[1], [6], [8], [12]-[15]. Такие методы обычно называют градиентными. Рассмотрим один из них – метод градиентного спуска.
Пусть
- выпуклая дифференцируемая во всем пространстве
функция. Требуется найти ее точку минимума
.
Опишем метод градиентного спуска [1], [12]. Метод предполагает выбор начального приближения – некоторой точки
. Общих правил выбора точки
в методе градиентного спуска нет. В тех случаях, когда из геометрических, физических и других соображений есть информация об области расположения точки минимума, то начальное приближение
стараются выбрать поближе к этой области.
Будем считать, что некоторая начальная точка
уже выбрана. Тогда метод градиентного спуска заключается в построении последовательности
по правилу
(16)
Число
из (6) называют длиной шага или шагом метода градиентного спуска.
Если
, то шаг
можно выбрать так, чтобы
.
Если
, то
- стационарная точка. В этом случае процесс (16) прекращается, и при необходимости проводится дополнительное исследование поведения функции в окрестности точки
для выяснения того, достигается ли в точке
минимум функции
или не достигается. В частности, если
- выпуклая функция, то согласно критерию оптимальности в стационарной точке всегда достигается минимум.
Существуют различные способы выбора
в методе (16). В зависимости от способа выбора
можно получить различные варианты метода градиентного спуска. Укажем наиболее часто применяемые на практике способы выбора
.
1) Метод с дроблением шага. На практике достаточно малое
часто выбирают так, чтобы выполнялось условие монотонного убывания функции:
,
.
В случае нарушения этого условия шаг
дробят до тех пор, пока данное условие не восстановится. Затем переходят к вычислению следующей итерации.
2) Метод наискорейшего спуска. На луче
,
направленном по антиградиенту, введем функцию одной переменной
,
и определим
из условий
,
. (17)
Метод (16), (17) называется методом наискорейшего спуска. Для определения
на каждом шаге решается одномерная задача минимизации (17), для чего можно использовать методы, рассмотренные нами ранее.
Приведем пример, когда величина
, определенная условием (17), существует и может быть выписана в явном виде.
Например, пусть дана квадратичная функция
, (18)
где
– симметричная неотрицательно определенная матрица порядка
;
,
– вектора из
,
– скалярное произведение из
.
- выпуклая функция, и ее производные вычисляются по формулам
,
.
Поэтому метод (6) в данном случае будет выглядеть так:
![]()
Таким образом, метод градиентного спуска для функции (18) представляет собой известный итерационный метод решения системы линейных алгебраических уравнений
.
определяется по формуле
. (19)
Таким образом, метод наискорейшего спуска для квадратичной функции (18) заключается в построении последовательности точек
по формулам (16), (19).
3) Метод с константой Липшица. Пусть функция
, т.е. функция
и градиент
удовлетворяет условию Липшица:
![]()
для любых точек
, а постоянная
называется константой Липшица.
Если константа
известна, то в (16) в качестве
может быть взято любое число, удовлетворяющее условиям
,
где
,
- положительные числа, являющиеся параметрами метода.
В частности, при
,
получим метод (16) с постоянным шагом
. Отсюда ясно, что если
- большая величина или получена с помощью грубых оценок, то шаг
будет маленьким, а значит метод будет медленно сходиться к точке минимума заданной функции.
В качестве условия окончания метода градиентного спуска обычно используется близость к нулю градиента
, т.е. выполнение неравенств
![]()
или
, (20)
где
- заданное достаточно малое число. Если на каком-то шаге
одно из этих неравенств выполнилось, то полагают выполнение приближенных равенств
,
Тогда говорят, что точка минимума заданной функции найдена с точностью
.
Пример 1. Минимизировать в
функцию
![]()
методом градиентного спуска с дроблением шага, завершив вычисления при
.
Решение. Выбрав начальное приближение
и
, построим последовательность
,
записывая результаты вычислений в таблицу 3.
Таблица 3.
Значения функции
|
|
|
|
|
|
|
|
Примечание |
|
0
1
2
3 |
0 -1
0 -0,50
0 -0,25
-0,277
-0,301 |
0 -1
0 -0,50
0 -0,25
-0,152
-0,163 |
1 3,145
1 1,118
1 0,794
0,774
0,772 |
1 -
1 -
1 0,106
0,098
0,026 |
1 -
1 -
1 -0,393
0,045
-0,023 |
1
0,50
0,25 0,25
0,25
- |
Условие монотонного убывания функции нарушено. Уменьшаем Условие монотонного убывания функции нарушено. Уменьшаем
Условие монотонного убывания функции выполнено. Условие монотонного убывания функции выполнено. Точность достигнута. |
Итак,
.
Пример 2. Дана задача безусловной минимизации
.
Точка
- начальное приближение. Сделать два шага итераций метода наискорейшего спуска.
Решение. 1 шаг. Формула (16) при
имеет вид
![]()
Найдем градиент или производную функции
:
.
Найдем
в точке
:
.
Для определения шага
составим функцию
при
:
.
Найдем точку
, подставив сюда начальное приближение
и производную
:
.
Найденную точку подставим в функцию
,
тогда
.
В силу выпуклости функции
,
найдем из условия
:
, отсюда
.
Сделаем первый шаг по методу наискорейшего спуска:
.
Точка первого приближения
найдена. Далее, если в условии задачи оговорена точность, с которой требуется найти точку минимума, то на каждом шаге итерации надо вычислять норму градиента
из условия (20). Поэтому сначала найдем градиент функции
в точке
![]()
,
а затем вычислим
:
.
2 шаг. Формула (16) при
имеет вид
![]()
Для определения шага
составим функцию
при
:
.
Найдем точку
, подставив сюда первое приближение
и производную
:
.
Найденную точку подставим в функцию
,
тогда
.
В силу выпуклости функции
,
найдем из условия
:
, отсюда
.
Сделаем второй шаг по методу наискорейшего спуска:
.
Точка второго приближения
найдена. Найдем градиент функции
в точке
![]()
,
а затем вычислим
:
.
Заметим, что уменьшение величины на каждом шаге позволяет сделать вывод о том, что метод сходится к точке минимума заданной функции. Значит, точка начального приближения
выбрана удачно, т.е. достаточно близко к точке минимума функции
.