Градиентный спуск
Градиентный спуск — метод нахождения локального минимума (максимума) функции с помощью движения вдоль градиента. Для минимизации функции в направлении градиента используются методы одномерной оптимизации, например, метод золотого сечения. Также можно искать не наилучшую точку в направлении градиента, а какую-либо лучше текущей.
Наиболее простой в реализации из всех методов локальной оптимизации. Имеет довольно слабые условия сходимости, но при этом скорость сходимости достаточно мала (линейна). Шаг градиентного метода часто используется как часть других методов оптимизации, например, метод Флетчера - Ривса.
Содержание |
[править] Описание
Пусть целевая функция имеет вид:
.
И задача оптимизации задана следующим образом:
Основная идея метода заключается в том, чтобы идти в направлении наискорейшего спуска, а это направление задаётся антиградиентом
:
![\overrightarrow{x}^{[j+1]}=\overrightarrow{x}^{[j]}-\lambda^{[j]}\nabla F(\overrightarrow{x}^{[j]}) \!](http://upload.wikimedia.org/wikipedia/ru/math/9/9/5/995db8c1d4c6a934a121ac5fbcf522a0.png)
где
выбирается
- постоянной, в этом случае метод может расходиться;
- дробным шагом, т.е. длина шага в процессе спуска делится на некое число;
- наискорейшим спуском:
![\lambda^{[j]}=\mathrm{argmin}_{\lambda} \,F(\vec{x}^{[j]}-\lambda^{[j]}\nabla F(\vec{x}^{[j]})) \!](//upload.wikimedia.org/wikipedia/ru/math/c/4/d/c4d8afc5087509bb231764426b5cdac4.png)
[править] Алгоритм
- Задают начальное приближение и точность расчёта

- Рассчитывают
, где ![\lambda^{[j]}=\mathrm{argmin}_{\lambda} \,F(\vec{x}^{[j]}-\lambda^{[j]}\nabla F(\vec{x}^{[j]})) \!](//upload.wikimedia.org/wikipedia/ru/math/c/4/d/c4d8afc5087509bb231764426b5cdac4.png)
- Проверяют условие остановки:
- Если
,
или
(выбирают одно из условий), то
и переход к шагу 2. - Иначе
и останов.
- Если
[править] Соотношение Канторовича
Для квадратичной функции вида
метод наискорейшего градиентного поиска сходится из любой начальной точки
со скоростью геометрической прогрессии (линейно) со знаменателем, не превосходящим значение
. При этом справедливы следующие оценки:
,
,
,
где
и
- минимальное и максимальное собственные числа числа матрицы вторых производных
.
Таким образом, поскольку функция близка в малом к своей квадратичной аппроксимации, скорость сходимости, в окрестности точки минимума, зависит от отношения собственных чисел. Чем больше это отношение, тем хуже сходимость метода.
[править] Пример
Применим градиентный метод к функции
. Тогда последовательные приближения будут выглядеть так:
[править] Усовершенствование
Метод градиентного спуска оказывается очень медленным при движении вдоль оврага ( см. овражные функции). Примером такой функции является функции Розенброка. Более эффективным считается метод сопряжённых градиентов.
[править] Ссылки
- J. Mathews. Module for Steepest Descent or Gradient Method.
[править] Литература
- Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов эконом. спец. вузов. — М.: Высш. шк., 1986.
- Гилл Ф., Мюррей У., Райт М. Практическая оптимизация. Пер. с англ. — М.: Мир, 1985.
- Коршунов Ю.М., Коршунов Ю.М. Математические основы кибернетики. — М.: Энергоатомиздат, 1972.
- Максимов Ю.А.,Филлиповская Е.А. Алгоритмы решения задач нелинейного программирования. — М.: МИФИ, 1982.
- Максимов Ю.А. Алгоритмы линейного и дискретного программирования. — М.: МИФИ, 1980.
- Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. — М.: Наука, 1970. — С. 575-576.
- С. Ю. Городецкий, В. А. Гришагин. Нелинейное программирование и многоэкстремальная оптимизация. — Нижний Новгород: Издательство Нижегородского Университета, 2007. — С. 357-363.
|
|
|
|---|---|
| Одномерные | Метод золотого сечения • Дихотомия • Метод парабол • Перебор по сетке • Метод Фибоначчи • Троичный поиск |
| Прямые методы | Метод Гаусса • Метод Нелдера — Мида • Метод Хука — Дживса • Метод конфигураций • Метод Розенброка |
| Первого порядка | Градиентный спуск • Метод Зойтендейка • Покоординатный спуск • Метод сопряжённых градиентов • Квазиньютоновские методы |
| Второго порядка | Метод Ньютона • Метод Ньютона — Рафсона |
| Стохастические | Метод Монте-Карло • Имитация отжига • Эволюционные алгоритмы • Генетические алгоритмы • Дифференциальная эволюция • Муравьиный алгоритм • Метод роя частиц |
| Методы линейного программирования |
Симплекс-метод • Алгоритм Гомори • Метод эллипсоидов • Метод потенциалов |
| Методы нелинейного программирования |
Последовательное квадратичное программирование |
.
![\lambda^{[j]}=\mathrm{argmin}_{\lambda} \,F(\vec{x}^{[j]}-\lambda^{[j]}\nabla F(\vec{x}^{[j]})) \!](http://upload.wikimedia.org/wikipedia/ru/math/c/4/d/c4d8afc5087509bb231764426b5cdac4.png)

,
или
(выбирают одно из условий), то
и переход к шагу 2.
и останов.