Метод градиентного спуска
Материал из MachineLearning.
Версия 22:44, 22 ноября 2008
Содержание |
Постановка задачи
Рассмотрим задачу поиска минимума функции , записываемую в виде:
Пусть функция такова, что можно вычислить ее градиент.
Метод градиентного спуска
Идея метода
Основная идея метода заключается в том, чтобы осуществлять оптимизацию в направлении наискорейшего спуска, а это направление задаётся антиградиентом :
где выбирается
- постоянной, в этом случае метод может расходиться;
- дробным шагом, т.е. длина шага в процессе спуска делится на некое число;
- наискорейшим спуском:
Алгоритм
Вход: функция
Выход: найденная точка оптимума
- Повторять:
-
, где
выбирается одним из описанных выше способов
- если выполен критерий останова, то возвращаем текущее значение
Критерий останова
Критерии остановки процесса приближенного нахождения минимума могут быть основаны на различных соображениях. Некоторые из них:
Здеcь - значение, полученное после
-го шага оптимизации.
- наперед заданное положительное число.
Сходимость градиентного спуска с постоянным шагом
Теорема 1 о сходимости метода градиентного спуска спуска с постоянным шагом.
Пусть , функция
дифференцируема, ограничена снизу. Пусть выполняется условие Липшица для градиента
:
.
Пусть
.
Тогда при любом выборе начального приближения.
В условиях теоремы градиентный метод обеспечивает сходимость либо к точной нижней грани
(если функция
не имеет минимума) либо к значению
Существуют примеры, когда в точке
реализуется седло, а не минимум. Тем не менее, на практике методы градиентного спуска обычно обходят седловые точки и находят локальные минимумы целевой функции.
Определение. Дифференцируемая функция называется сильно выпуклой (с константой
), если для любых
и
из
справедливо
Теорема 2 о сходимости метода градиентного спуска спуска с постоянным шагом.
Пусть функция дифференцируема, сильно выпукла с константой
. Пусть выполняется условие Липшица для градиента
:
.
Пусть
.
Тогда при любом выборе начального приближения.
Выбор оптимального шага
Константа , фигурирующая в теореме 2 и характеризующая скорость сходимости метода, зависит от шага
.
Нетрудно видеть, что величина
минимальна, если шаг
выбирается из условия
, т. е. если
.
При таком выборе шага оценка сходимости будет наилучшей и будет характеризоваться величиной:
.
В качестве и
могут выступать равномерные по x оценки сверху и снизу собственных значений оператора
. Если
, то
и метод сходится очень медленно. Геометрически случай
соответствует функциям с сильно вытянутыми линиями уровня (см. рис. 2). Простейшим примером такой функции может служить функция на
, задаваемая формулой:
.
Поведение итераций градиентного метода для этой функции изображено на рис. 2 — они, быстро спустившись на "дно оврага", затем медленно "зигзагообразно" приближаются к точке минимума. Число (характеризующее, грубо говоря, разброс собственных значений оператора
) называют числом обусловленности функции
. Если
, то функции называют плохо обусловленными или овражными. Для таких функций градиентный метод сходится медленно.
Но даже для хорошо обусловленных функций проблема выбора шага нетривиальна в силу отсутствия априорной информации о минимизируемой функции. Если шаг выбирается малым (чтобы гарантировать сходимость), то метод сходится медленно. Увеличение же шага (с целью ускорения сходимости) может привести к расходимости метода. Далее будут описаны два алгоритма автоматического выбора шага, позволяющие частично обойти указанные трудности.
Градиентный метод с дроблением шага
В этом варианте градиентного метода величина шага на каждой итерации выбирается из условия выполнения неравенства
,
где - некоторая заранее выбранная константа.
Процедуру нахождения такого обычно оформляют так. Выбирается число
и некоторый начальный шаг
. Теперь для каждого k полагают
и делают шаг градиентного метода. Если с таким
условие (2) выполняется, то переходят к следующему k. Если же (2) не выполняется, то умножают
на
("дробят шаг") и повторяют эту процедуру до тех пор пока неравенство (2) не будет выполняться. В условиях теоремы 1 эта процедура для каждого k за конечное число шагов приводит к нужному
.
Можно показать, что в условиях теоремы 2 градиентный метод с дроблением шага линейно сходится. Описанный алгоритм избавляет нас от проблемы выбора на каждом шаге, заменяя ее на проблему выбора параметров
и
, к которым градиентный метод менее чувствителен. При этом, разумеется, объем вычислений возрастает (в связи с необходимостью процедуры дробления шага), впрочем, не очень сильно, поскольку в большинстве задач основные вычислительные затраты ложатся на вычисление градиента.
Метод наискорейшего спуска
Этот вариант градиентного метода основывается на выборе шага из следующего соображения. Из точки будем двигаться в направлении антиградиента до тех пор пока не достигнем минимума функции f на этом направлении, т. е. на луче
:
.
Другими словами, выбирается так, чтобы следующая итерация была точкой минимума функции f на луче L (см. рис. 3). Такой вариант градиентного метода называется методом наискорейшего спуска. Заметим, кстати, что в этом методе направления соседних шагов ортогональны.
Метод наискорейшего спуска требует решения на каждом шаге задачи одномерной оптимизации. Практика показывает, что этот метод часто требует меньшего числа операций, чем градиентный метод с постоянным шагом.
В общей ситуации, тем не менее, теоретическая скорость сходимости метода наискорейшего спуска не выше скорости сходимости градиентного метода с постоянным (оптимальным) шагом.
Числовые примеры
Рекомендации программисту
Заключение
Ссылки
Список литературы
- Н.Н.Калиткин. Численные методы. Москва «Наука», 1978.
- Н.И.Глебов, Ю.А.Кочетов, А.В.Плясунов. Методы оптимизации. 2000.
- Р.Р.Ахмеров. Методы оптимизации гладких функций.