Алгоритм Франк — Вульфа

Материал из testwiki
Перейти к навигации Перейти к поиску

Алгоритм Франк — Вульфа[1] — это итеративный алгоритм оптимизации Шаблон:Не переведено 5 для выпуклой оптимизации Шаблон:Не переведено 5. Алгоритм известен также как метод условного градиентаШаблон:Sfn, метод приведённого градиента и алгоритм выпуклых комбинаций. Метод первоначально предложили Шаблон:Не переведено 5 и Шаблон:Не переведено 5 в 1956Шаблон:Sfn. На каждой итерации алгоритм Франк — Вульфа рассматривает линейное приближение целевой функции и движется в направлении минимизации этой линейной функции (на том же множестве допустимых решений).

Формулировка задачи

Предположим, что 𝒟 является компактным выпуклым множеством в векторном пространстве, а f:𝒟 является выпуклой, дифференцируемой вещественнозначной функцией. Алгоритм Франк — Вульфа решает задачу оптимизации

Минимизировать f(𝐱)
при условии 𝐱𝒟.

Алгоритм

Шаг алгоритма Франк — Вульфа
Инициализация: Пусть k0 и пусть 𝐱0 будет точкой в 𝒟.
Шаг 1. Подзадача поиска направления: Находим 𝐬k, решающее задачу
Минимизировать 𝐬Tf(𝐱k)
при условиях 𝐬𝒟
(Интерпретация: Минимизируем линейное приближение задачи, полученное аппроксимацией Тейлора первого порядка функции f около 𝐱k.)
Шаг 2. Определение размера шага: Положим γ2k+2, или, альтернативно, находим γ, минимизирующее f(𝐱k+γ(𝐬k𝐱k)) при условии 0γ1 .
Шаг 3. Пересчёт: Положим 𝐱k+1𝐱k+γ(𝐬k𝐱k), kk+1 и переходим к шагу 1.

Свойства

В то время как конкурирующие методы, такие как градиентный спуск для оптимизации с ограничениями, требуют на каждой итерации шага проецирования в множество допустимых значений, для алгоритма Франк — Вульфа нужно на каждой итерации лишь решить задачу линейного программирования на том же самом множестве, так что решение всегда остаётся принадлежащим множеству допустимых решений.

Сходимость алгоритма Франк — Вульфа в общем случае сублинейна — ошибка целевой функции по отношению к оптимальному значению равна O(1/k) после k итераций при условии, что градиент непрерывен по Липшицу по некоторой норме. Та же самая сходимость может быть показана, если подзадачи решаются лишь приближённоШаблон:Sfn.

Итерации алгоритма могут быт всегда представлены как неплотная выпуклая комбинация экстремальных точек множества допустимых решений, что помогло популярности алгоритма для задач разрежённой жадной оптимизации в машинном обучении и обработки сигналовШаблон:Sfn, а также для нахождения потоков минимальной стоимости в транспортных сетяхШаблон:Sfn.

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

Хотя скорость сходимости в худшем случае O(1/k) для общего случая не может быть улучшена, более высокая скорость сходимости может быть получена для специальных задач, таких как строго выпуклые задачиШаблон:Sfn.

Нижние границы на значение решения и прямо-двойственный анализ

Поскольку функция f выпукла, для любых двух точек 𝐱,𝐲𝒟 имеем:

f(𝐲)f(𝐱)+(𝐲𝐱)Tf(𝐱)

Это выполняется также для (неизвестного) оптимального решения 𝐱*. То есть f(𝐱*)f(𝐱)+(𝐱*𝐱)Tf(𝐱). Лучшая нижняя граница с учётом точки 𝐱 задаётся формулой

f(𝐱*)f(𝐱)+(𝐱*𝐱)Tf(𝐱)min𝐲D{f(𝐱)+(𝐲𝐱)Tf(𝐱)}=f(𝐱)𝐱Tf(𝐱)+min𝐲D𝐲Tf(𝐱)

Эта последняя задача решается на каждой итерации алгоритма Франк — Вульфа, поэтому решение 𝐬k подзадачи нахождения направления на k-й итерации может быть использовано для определения возрастающих нижних границ lk на каждой итерации путём присвоения l0= и

lk:=max(lk1,f(𝐱k)+(𝐬k𝐱k)Tf(𝐱k))

Такие нижние границы на неизвестное оптимальное значение на практике очень важны, поскольку могут быть использованы как критерий остановки алгоритма и дают эффективный показатель качества приближения на каждой итерации, поскольку всегда lkf(𝐱*)f(𝐱k).

Было показано, что разрыв двойственности, являющийся разницей между f(𝐱k) и нижней границей lk, уменьшается с той же скоростью, то есть f(𝐱k)lk=O(1/k).

Примечания

Шаблон:Примечания

Литература

Шаблон:Refbegin

Шаблон:Refend

Ссылка

См. также

Шаблон:Методы оптимизации Шаблон:Rq

  1. Алгоритм разработали Маргарита Франк и Филип Вульф, так что широко распространённое в русской литературе название Алгоритм Франка — Вульфа является ошибочным.