BFGS с ограниченной памятью ( L-BFGS или LM-BFGS ) — это алгоритм оптимизации в семействе квазиньютоновских методов , который аппроксимирует алгоритм Бройдена–Флетчера–Гольдфарба–Шенно (BFGS), используя ограниченный объем компьютерной памяти . [1] Это популярный алгоритм для оценки параметров в машинном обучении . [2] [3] Целевая задача алгоритма — минимизация по неограниченным значениям действительного вектора, где — дифференцируемая скалярная функция.
Как и оригинальный BFGS, L-BFGS использует оценку обратной матрицы Гессе для управления поиском через переменное пространство, но там, где BFGS хранит плотное приближение к обратному Гессе ( n — число переменных в задаче), L-BFGS хранит только несколько векторов, которые неявно представляют приближение. Из-за его результирующего линейного требования к памяти метод L-BFGS особенно хорошо подходит для задач оптимизации со многими переменными. Вместо обратного Гессе H k , L-BFGS сохраняет историю последних m обновлений позиции x и градиента ∇ f ( x ), где, как правило, размер истории m может быть небольшим (часто ). Эти обновления используются для неявного выполнения операций, требующих произведения векторов H k .
Алгоритм начинается с начальной оценки оптимального значения, и итеративно продолжается для уточнения этой оценки с помощью последовательности лучших оценок . Производные функции используются в качестве ключевого драйвера алгоритма для определения направления наискорейшего спуска, а также для формирования оценки матрицы Гессе (второй производной) .
L-BFGS имеет много общих черт с другими квазиньютоновскими алгоритмами, но сильно отличается тем, как выполняется умножение матрицы на вектор, где — приблизительное направление Ньютона, — текущий градиент, а — обратная матрица Гессе. Существует несколько опубликованных подходов, использующих историю обновлений для формирования этого вектора направления. Здесь мы приводим общий подход, так называемую «двухцикловую рекурсию». [4] [5]
Мы принимаем как заданное , позицию на k -й итерации, и где - минимизируемая функция, и все векторы являются векторами-столбцами. Мы также предполагаем, что мы сохранили последние m обновлений формы
Мы определяем , и будет «начальным» приближением обратного гессиана, с которого начинается наша оценка на итерации k .
Алгоритм основан на рекурсии BFGS для обратного гессиана:
Для фиксированного k мы определяем последовательность векторов как и . Тогда рекурсивный алгоритм для вычисления из заключается в определении и . Мы также определяем другую последовательность векторов как . Существует еще один рекурсивный алгоритм для вычисления этих векторов, который заключается в определении и затем рекурсивном определении и . Значение тогда является нашим направлением восхождения.
Таким образом, мы можем вычислить направление спуска следующим образом:
Эта формулировка дает направление поиска для задачи минимизации, т.е. . Для задач максимизации следует, таким образом, вместо этого взять -z . Обратите внимание, что начальный приближенный обратный гессиан выбирается как диагональная матрица или даже кратная единичной матрице, поскольку это численно эффективно.
Масштабирование исходной матрицы гарантирует, что направление поиска хорошо масштабируется, и, следовательно, длина единичного шага принимается в большинстве итераций. Линейный поиск Вульфа используется для обеспечения того, чтобы условие кривизны было выполнено, а обновление BFGS было стабильным. Обратите внимание, что некоторые программные реализации используют линейный поиск с возвратом Armijo , но не могут гарантировать, что условие кривизны будет выполнено выбранным шагом, поскольку длина шага может быть больше, чем требуется для выполнения этого условия. Некоторые реализации решают эту проблему, пропуская обновление BFGS, когда отрицательно или слишком близко к нулю, но этот подход обычно не рекомендуется, поскольку обновления могут быть пропущены слишком часто, чтобы позволить приближению Гессе захватить важную информацию о кривизне. Некоторые решатели используют так называемое затухающее (L)BFGS-обновление, которое изменяет величины и для выполнения условия кривизны.
Формула двухконтурной рекурсии широко используется неограниченными оптимизаторами из-за ее эффективности при умножении на обратный гессиан. Однако она не допускает явного формирования прямого или обратного гессиана и несовместима с небоксовыми ограничениями. Альтернативным подходом является компактное представление , которое включает низкоранговое представление для прямого и/или обратного гессиана. [6] Это представляет гессиан как сумму диагональной матрицы и низкорангового обновления. Такое представление позволяет использовать L-BFGS в ограниченных условиях, например, как часть метода SQP.
L-BFGS был назван «алгоритмом выбора» для подгонки логарифмически линейных (MaxEnt) моделей и условных случайных полей с -регуляризацией . [2] [3]
Поскольку BFGS (и, следовательно, L-BFGS) разработан для минимизации гладких функций без ограничений , алгоритм L-BFGS должен быть модифицирован для обработки функций, которые включают недифференцируемые компоненты или ограничения. Популярный класс модификаций называется методами активного набора, основанными на концепции активного набора . Идея заключается в том, что при ограничении небольшой окрестностью текущей итерации функция и ограничения могут быть упрощены.
Алгоритм L-BFGS-B расширяет L-BFGS для обработки простых ограничений типа box (они же граничные ограничения) на переменные; то есть ограничений вида l i ≤ x i ≤ u i , где l i и u i являются постоянными нижними и верхними границами для каждой переменной соответственно (для каждого x i одна или обе границы могут быть опущены). [7] [8] Метод работает путем определения фиксированных и свободных переменных на каждом шаге (с использованием простого градиентного метода), а затем использования метода L-BFGS только для свободных переменных для получения более высокой точности, а затем повторения процесса.
Квази-Ньютон с ограниченной памятью по ортанту ( OWL-QN ) — это вариант L-BFGS для подгонки регуляризованных моделей , использующий присущую таким моделям разреженность . [3] Он минимизирует функции вида
где — дифференцируемая выпуклая функция потерь . Метод является методом типа активного множества: на каждой итерации он оценивает знак каждого компонента переменной и ограничивает последующий шаг тем же знаком. После того, как знак зафиксирован, недифференцируемый член становится гладким линейным членом, который может быть обработан L-BFGS. После шага L-BFGS метод позволяет некоторым переменным менять знак и повторяет процесс.
Шраудольф и др. представляют онлайн- аппроксимацию как для BFGS, так и для L-BFGS. [9] Подобно стохастическому градиентному спуску , это может быть использовано для снижения вычислительной сложности путем оценки функции ошибки и градиента на случайно выбранном подмножестве общего набора данных в каждой итерации. Было показано, что O-LBFGS имеет глобальную почти верную сходимость [10] , в то время как онлайн-аппроксимация BFGS (O-BFGS) не обязательно сходится. [11]
Известные реализации с открытым исходным кодом включают в себя:
optim
использует метод L-BFGS-B.Известные реализации с закрытым исходным кодом включают в себя: