Документация Engee

Градиентный спуск

Конструктор

GradientDescent(; alphaguess = LineSearches.InitialPrevious(),
                  linesearch = LineSearches.HagerZhang(),
                  P = nothing,
                  precondprep = (P, x) -> nothing)

Описание

Градиентный спуск — это общее название квазиньютоновского решателя. Это означает, что он выполняет шаги в соответствии с

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

Как и в других квазиньютоновских решателях в этом пакете, скаляр представлен следующим образом

и выбирается алгоритмом линейного поиска так, чтобы каждый шаг давал достаточный спуск.

Пример

Справочные материалы