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

Матеріал з testwiki
Версія від 22:56, 17 лютого 2024, створена imported>Alessot (+шаблон)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Алгори́тм Франк-Ву́льфа[1] — це ітеративний алгоритм оптимізації Шаблон:Не перекладено для опуклої оптимізації з обмеженнями. Алгоритм відомий також як ме́тод умо́вного градіє́нтаШаблон:Sfn, ме́тод зве́деного градіє́нта і алгори́тм опу́клих комбіна́цій. Метод першими запропонували 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.

Властивості

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

Збіжність алгоритму Франк — Вульфа в загальному випадку сублінійна — помилка цільової функції відносно оптимального значення після k ітерацій дорівнює O(1/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).

Примітки

Шаблон:Reflist

Література

Шаблон:Refbegin

Шаблон:Refend

Посилання

Див. також

Шаблон:Бібліоінформація Шаблон:Алгоритми оптимізації

  1. Алгоритм розробили Маргарита Франк і Філіп Вульф, тому поширена в літературі назва Алгоритм Франка — Вульфа є помилковою.