stringtranslate.com

Алгоритм Бройдена–Флетчера–Гольдфарба–Шенно

В числовой оптимизации алгоритм Бройдена-Флетчера-Гольдфарба-Шанно ( BFGS ) представляет собой итерационный метод решения задач нелинейной оптимизации без ограничений . [1] Как и родственный метод Дэвидона-Флетчера-Пауэлла , BFGS определяет направление спуска , предварительно определяя градиент с помощью информации о кривизне . Это достигается путем постепенного улучшения аппроксимации матрицы Гессе функции потерь , полученной только из оценок градиента (или приблизительных оценок градиента) с помощью обобщенного метода секущих . [2]

Поскольку обновления матрицы кривизны BFGS не требуют инверсии матрицы , ее вычислительная сложность составляет всего 1,0 по сравнению с методом Ньютона . Также широко используется L-BFGS , версия BFGS с ограниченной памятью, которая особенно подходит для задач с очень большим количеством переменных (например, >1000). Вариант BFGS-B обрабатывает простые ограничения блока. [3]

Алгоритм назван в честь Чарльза Джорджа Бройдена , Роджера Флетчера , Дональда Голдфарба и Дэвида Шенно . [4] [5] [6] [7]

Обоснование

Задача оптимизации состоит в минимизации , где – вектор в и – дифференцируемая скалярная функция. Нет никаких ограничений на значения, которые могут принимать.

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

Направление поиска p k на этапе k задается решением аналога уравнения Ньютона:

где – аппроксимация матрицы Гессиана в точке , которая итеративно обновляется на каждом этапе, и – градиент функции, вычисляемой в точке x k . Затем используется поиск линии в направлении p k для поиска следующей точки x k +1 путем минимизации по скаляру

Условие квазиньютона, налагаемое на обновление, равно

Пусть и , тогда удовлетворяет

,

что является секущим уравнением.

Чтобы быть положительно определенным, условие кривизны должно выполняться , что можно проверить, предварительно умножив уравнение секущего на . Если функция не является сильно выпуклой , то условие должно быть выполнено явно, например, путем нахождения точки x k +1 , удовлетворяющей условиям Вульфа , которые влекут за собой условие кривизны, с использованием поиска по прямой.

Вместо того, чтобы требовать вычисления полной матрицы Гессиана в точке как , приблизительный гессиан на этапе k обновляется путем добавления двух матриц:

Обе и являются симметричными матрицами первого ранга, но их сумма представляет собой матрицу обновления второго ранга. Матрица обновления BFGS и DFP отличается от своей предшественницы матрицей второго ранга. Другой более простой метод ранга один известен как симметричный метод ранга один , который не гарантирует положительную определенность . Чтобы сохранить симметрию и положительную определенность , форму обновления можно выбрать как . Наложение секущего условия, . Выбирая и , получим: [8]

Наконец, мы подставляем и в и получаем уравнение обновления :

Алгоритм

Рассмотрим следующую задачу неограниченной оптимизации.

На основе первоначального предположения и первоначального предположения матрицы Гессе следующие шаги повторяются по мере приближения к решению:

  1. Получите направление , решив .
  2. Выполните одномерную оптимизацию ( линейный поиск ), чтобы найти приемлемый размер шага в направлении, найденном на первом шаге. Если производится точный поиск строки, то . На практике обычно бывает достаточно неточного поиска по строке с приемлемым выполнением условий Вульфа .
  3. Установите и обновите .
  4. .
  5. .

Сходимость можно определить, наблюдая за нормой градиента; учитывая некоторые , можно остановить алгоритм, если инициализируется с помощью , первый шаг будет эквивалентен градиентному спуску , но дальнейшие шаги все более и более уточняются с помощью , приближения к гессиану.

Первый шаг алгоритма выполняется с использованием обратной матрицы , которую можно эффективно получить, применив к шагу 5 алгоритма формулу Шермана–Моррисона , что дает

Это можно эффективно вычислить без временных матриц, учитывая, что это симметрично, а что и являются скалярами, используя такое расширение, как

Следовательно, чтобы избежать инверсии матрицы, можно аппроксимировать обратную гессиану вместо самого гессиана: [9]

На основе первоначального предположения и приближенной обращенной матрицы Гессе следующие шаги повторяются по мере приближения к решению:

  1. Получите направление , решив .
  2. Выполните одномерную оптимизацию ( линейный поиск ), чтобы найти приемлемый размер шага в направлении, найденном на первом шаге. Если производится точный поиск строки, то . На практике обычно бывает достаточно неточного поиска по строке с приемлемым выполнением условий Вульфа .
  3. Установите и обновите .
  4. .
  5. .

В задачах статистической оценки ( таких как максимальное правдоподобие или байесовский вывод) достоверные интервалы или доверительные интервалы для решения могут быть оценены на основе обратной окончательной матрицы Гессе . Однако эти величины технически определяются истинной матрицей Гессе, и приближение BFGS может не сходиться к истинной матрице Гессе. [10]

Дальнейшие разработки

Формула обновления BFGS в значительной степени полагается на то, что кривизна строго положительна и не равна нулю. Это условие выполняется, когда мы выполняем поиск по прямой с условиями Вульфа на выпуклой цели. Однако некоторые реальные приложения (например, методы последовательного квадратичного программирования) обычно создают отрицательную или почти нулевую кривизну. Это может произойти при оптимизации невыпуклой цели или при использовании подхода доверительной области вместо линейного поиска. Также возможно получение ложных значений из-за шума в цели.

В таких случаях можно использовать одно из так называемых демпфированных обновлений BFGS (см. [11] ), которые модифицируют и/или получают более надежное обновление.

Известные реализации

Известные реализации с открытым исходным кодом:

Известные собственные реализации включают:

Смотрите также

Рекомендации

  1. ^ Флетчер, Роджер (1987), Практические методы оптимизации (2-е изд.), Нью-Йорк: John Wiley & Sons , ISBN 978-0-471-91547-8
  2. ^ Деннис, Дж. Э. младший ; Шнабель, Роберт Б. (1983), «Методы секущих для неограниченной минимизации», Численные методы для неограниченной оптимизации и нелинейных уравнений , Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, стр. 194–215, ISBN 0-13-627216-9
  3. ^ Берд, Ричард Х.; Лу, Пэйхуан; Носедаль, Хорхе; Чжу, Цию (1995), «Алгоритм с ограниченной памятью для оптимизации с ограниченными ограничениями», SIAM Journal on Scientific Computing , 16 (5): 1190–1208, CiteSeerX 10.1.1.645.5814 , doi : 10.1137/0916069 
  4. ^ Бройден, К.Г. (1970), «Сходимость класса двухранговых алгоритмов минимизации», Журнал Института математики и ее приложений , 6 : 76–90, doi : 10.1093/imamat/6.1.76
  5. ^ Флетчер, Р. (1970), «Новый подход к алгоритмам с переменной метрикой», Computer Journal , 13 (3): 317–322, doi : 10.1093/comjnl/13.3.317
  6. ^ Гольдфарб, Д. (1970), «Семейство обновлений переменных метрик, полученных вариационными средствами», Mathematics of Computing , 24 (109): 23–26, doi : 10.1090/S0025-5718-1970-0258249-6
  7. ^ Шанно, Дэвид Ф. (июль 1970 г.), «Обусловление квазиньютоновских методов для минимизации функций», Mathematics of Computation , 24 (111): 647–656, doi : 10.1090/S0025-5718-1970-0274029-X , МР  0274029
  8. ^ Флетчер, Роджер (1987), Практические методы оптимизации (2-е изд.), Нью-Йорк: John Wiley & Sons , ISBN 978-0-471-91547-8
  9. ^ Носедаль, Хорхе; Райт, Стивен Дж. (2006), Численная оптимизация (2-е изд.), Берлин, Нью-Йорк: Springer-Verlag , ISBN 978-0-387-30303-1
  10. ^ Ге, Рен-пу; Пауэлл, MJD (1983). «Сходимость матриц переменных показателей при безусловной оптимизации». Математическое программирование . 27 (2). 123. дои : 10.1007/BF02591941. S2CID  8113073.
  11. ^ Хорхе Носедал; Стивен Дж. Райт (2006), Численная оптимизация
  12. ^ «Научная библиотека GNU — документация GSL 2.6» . www.gnu.org . Проверено 22 ноября 2020 г.
  13. ^ «R: Универсальная оптимизация». stat.ethz.ch. _ Проверено 22 ноября 2020 г.
  14. ^ «scipy.optimize.fmin_bfgs — Справочное руководство SciPy v1.5.4» . docs.scipy.org . Проверено 22 ноября 2020 г.
  15. ^ «Настраиваемые параметры Optim.jl» . Джулианлсолверс .

дальнейшее чтение