Алгоритм Бройдена–Флетчера–Гольдфарба–Шенно
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2016 г. ) |
В числовой оптимизации Бройдена -Флетчера-Гольдфарба-Шанно ( BFGS ) алгоритм представляет собой итерационный метод решения нелинейной оптимизации без ограничений. задач [1] родственный метод Дэвидона-Флетчера-Пауэлла , BFGS определяет направление спуска , предварительно определяя градиент Как и с помощью информации о кривизне. Это достигается путем постепенного улучшения аппроксимации матрицы Гессе функции потерь , полученной только из оценок градиента (или приблизительных оценок градиента) с помощью обобщенного метода секущих . [2]
Поскольку обновления матрицы кривизны BFGS не требуют инверсии матрицы , ее вычислительная сложность составляет всего лишь , по сравнению с в методе Ньютона . Также широко используется 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]
Наконец, мы заменяем и в и получить уравнение обновления :
Алгоритм [ править ]
Рассмотрим следующую задачу неограниченной оптимизации.
По первоначальному предположению и первоначальное предположение матрицы Гессе следующие шаги повторяются как сходится к решению:
- Получить направление решив .
- Выполните одномерную оптимизацию ( линейный поиск ), чтобы найти приемлемый размер шага. в направлении, найденном на первом шаге. Если производится точный поиск строки, то . На практике обычно бывает достаточно неточного поиска по строке с приемлемым значением. удовлетворяющие условиям Вульфа .
- Набор и обновить .
- .
- .
Сходимость можно определить, наблюдая за нормой градиента; учитывая некоторые , можно остановить алгоритм, когда Если инициализируется с помощью , первый шаг будет эквивалентен градиентному спуску , но дальнейшие шаги все более уточняются за счет , приближение к гессиану.
Первый шаг алгоритма осуществляется с использованием обратной матрицы , который можно эффективно получить, применив формулу Шермана–Моррисона к шагу 5 алгоритма, давая
Это можно эффективно вычислить без временных матриц, учитывая, что симметричен,и это и являются скалярами, используя такое расширение, как
Следовательно, чтобы избежать инверсии матрицы, обратную гессиану: вместо самого гессиана можно аппроксимировать [9]
По первоначальному предположению и приближенная обращенная матрица Гессе следующие шаги повторяются как сходится к решению:
- Получить направление решив .
- Выполните одномерную оптимизацию ( линейный поиск ), чтобы найти приемлемый размер шага. в направлении, найденном на первом шаге. Если производится точный поиск строки, то . На практике обычно бывает достаточно неточного поиска по строке с приемлемым значением. удовлетворяющие условиям Вульфа .
- Набор и обновить .
- .
- .
В задачах статистического оценивания (таких как максимальное правдоподобие или байесовский вывод) достоверные интервалы или доверительные интервалы для решения могут быть оценены на основе обратной окончательной матрицы Гессе. [ нужна ссылка ] . Однако эти величины технически определяются истинной матрицей Гессе, и приближение BFGS может не сходиться к истинной матрице Гессе. [10]
Дальнейшие разработки [ править ]
Формула обновления BFGS во многом зависит от кривизны. строго положительное и отделенное от нуля.Это условие выполняется, когда мы выполняем поиск по прямой с условиями Вульфа на выпуклой цели.Однако некоторые реальные приложения (например, методы последовательного квадратичного программирования) обычно создают отрицательную или почти нулевую кривизну.Это может произойти при оптимизации невыпуклой цели или при использовании подхода доверительной области вместо линейного поиска.Также возможно получение ложных значений из-за шума в цели.
В таких случаях можно использовать одно из так называемых демпфированных обновлений BFGS (см. [11] ), которые изменяют и/или чтобы получить более надежное обновление.
Известные реализации [ править ]
Известные реализации с открытым исходным кодом:
- ALGLIB реализует BFGS и его версию с ограниченной памятью на C++ и C#.
- GNU Octave использует разновидность BFGS в своей
fsolve
функция с расширениями доверительного региона . - GSL . реализует BFGS как gsl_multimin_fdfminimizer_vector_bfgs2 [12]
- В R алгоритм BFGS (и версия L-BFGS-B, допускающая ограничения блоков) реализован как опция базовой функции optim(). [13]
- В SciPy функция scipy.optimize.fmin_bfgs реализует BFGS. [14] Также возможно запустить BFGS, используя любой из алгоритмов L-BFGS , установив для параметра L очень большое число.
- В Julia пакет Optim.jl . реализует BFGS и L-BFGS в качестве опции решателя для функцииоптимизации() (среди других опций) [15]
Известные собственные реализации включают:
- Программное обеспечение для крупномасштабной нелинейной оптимизации Artelys Knitro реализует, среди прочего, алгоритмы BFGS и L-BFGS.
- В MATLAB Optimization Toolbox функция fminunc использует BFGS с поиском кубической линии, когда размер проблемы установлен на «средний масштаб».
- Mathematica включает BFGS.
- LS-DYNA также использует BFGS для решения неявных проблем.
См. также [ править ]
Ссылки [ править ]
- ^ Флетчер, Роджер (1987), Практические методы оптимизации (2-е изд.), Нью-Йорк: John Wiley & Sons , ISBN 978-0-471-91547-8
- ^ Деннис, Дж. Э. младший ; Шнабель, Роберт Б. (1983), «Методы секущих для неограниченной минимизации» , Численные методы для неограниченной оптимизации и нелинейных уравнений , Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, стр. 194–215, ISBN 0-13-627216-9
- ^ Берд, Ричард Х.; Лу, Пэйхуан; Носедаль, Хорхе; Чжу, Цию (1995), «Алгоритм с ограниченной памятью для оптимизации с ограниченными ограничениями» , SIAM Journal on Scientific Computing , 16 (5): 1190–1208, CiteSeerX 10.1.1.645.5814 , doi : 10.1137/0916069
- ^ Бройден, К.Г. (1970), «Сходимость класса двухранговых алгоритмов минимизации», Журнал Института математики и ее приложений , 6 : 76–90, doi : 10.1093/imamat/6.1.76
- ^ Флетчер, Р. (1970), «Новый подход к алгоритмам с переменной метрикой», Computer Journal , 13 (3): 317–322, doi : 10.1093/comjnl/13.3.317
- ^ Гольдфарб, Д. (1970), «Семейство обновлений переменных метрик, полученных вариационными средствами», Mathematics of Computing , 24 (109): 23–26, doi : 10.1090/S0025-5718-1970-0258249-6
- ^ Шанно, Дэвид Ф. (июль 1970 г.), «Обусловление квазиньютоновских методов для минимизации функций», Mathematics of Computation , 24 (111): 647–656, doi : 10.1090/S0025-5718-1970-0274029-X , MR 0274029
- ^ Флетчер, Роджер (1987), Практические методы оптимизации (2-е изд.), Нью-Йорк: John Wiley & Sons , ISBN. 978-0-471-91547-8
- ^ Носедаль, Хорхе; Райт, Стивен Дж. (2006), Численная оптимизация (2-е изд.), Берлин, Нью-Йорк: Springer-Verlag , ISBN 978-0-387-30303-1
- ^ Гэ, Рен-пу; Пауэлл, MJD (1983). «Сходимость матриц переменных показателей при безусловной оптимизации». Математическое программирование . 27 (2). 123. дои : 10.1007/BF02591941 . S2CID 8113073 .
- ^ Хорхе Носедал; Стивен Дж. Райт (2006), Численная оптимизация
- ^ «Научная библиотека GNU — документация GSL 2.6» . www.gnu.org . Проверено 22 ноября 2020 г.
- ^ «R: Универсальная оптимизация» . stat.ethz.ch. Проверено 22 ноября 2020 г.
- ^ «scipy.optimize.fmin_bfgs — Справочное руководство SciPy v1.5.4» . docs.scipy.org . Проверено 22 ноября 2020 г.
- ^ «Настраиваемые параметры Optim.jl» . Джулианлсолверс .
Дальнейшее чтение [ править ]
- Авриэль, Мордекай (2003), Нелинейное программирование: анализ и методы , Dover Publishing, ISBN 978-0-486-43227-4
- Боннан, Ж. Фредерик; Гилберт, Дж. Чарльз; Лемарешаль, Клод ; Сагастисабал, Клаудия А. (2006), «Ньютоновские методы», Численная оптимизация: теоретические и практические аспекты (второе изд.), Берлин: Springer, стр. 51–66, ISBN 3-540-35445-Х
- Флетчер, Роджер (1987), Практические методы оптимизации (2-е изд.), Нью-Йорк: John Wiley & Sons , ISBN 978-0-471-91547-8
- Люенбергер, Дэвид Г .; Йе, Инью (2008), Линейное и нелинейное программирование , Международная серия по исследованию операций и науке управления, том. 116 (Третье изд.), Нью-Йорк: Springer, стр. xiv+546, ISBN. 978-0-387-74502-2 , МР 2423726
- Келли, Коннектикут (1999), Итеративные методы оптимизации , Филадельфия: Общество промышленной и прикладной математики, стр. 71–86, ISBN. 0-89871-433-8