BFGS против метода сопряженных градиентов


25

Какие соображения следует учитывать при выборе между BFGS и сопряженным градиентом для оптимизации? Функция, которую я пытаюсь согласовать с этими переменными, является экспоненциальной функцией; тем не менее, фактическая целевая функция включает в себя, среди прочего, интеграцию и очень дорогая, если это вообще помогает.


3
Ну, BFGS, безусловно, дороже с точки зрения хранения, чем CG. Один требует поддержания приблизительного гессиана, а другому нужно только несколько векторов от вас. С другой стороны, оба требуют вычисления градиента, но мне говорят, что с BFGS вы можете избежать использования конечно-разностных аппроксимаций вместо того, чтобы писать подпрограмму для градиента (но версия с использованием конечных разностей немного сходится медленнее, чем тот, который использует реальные градиенты, конечно). Если у вас есть автоматическое средство дифференциации, то ваше единственное беспокойство - это хранение.
JM

должны соответствовать только ~ 7 (определенно меньше 10) переменных означает, что гессенское приближение является только (максимум) правильной матрицей 10x10? в каком случае один быстрее другого?
drjrm3

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

Ответы:


13

JM прав насчет хранения. BFGS требует приблизительного гессиана, но вы можете инициализировать его с помощью матрицы тождеств, а затем просто вычислять обновления ранга два для приблизительного гессиана, пока у вас есть доступная информация о градиенте, предпочтительно аналитически, а не через конечные различия. BFGS - это квазиньютоновский метод, который будет сходиться за меньшее количество шагов, чем CG, и имеет немного меньшую тенденцию «застрять» и требует небольших алгоритмических настроек, чтобы добиться значительного снижения для каждой итерации.

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

NN

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

Наконец, несколько слов об автоматической дифференциации: имея некоторый опыт работы с внутренним средством автоматической дифференцировки (AD) для Fortran ( DAEPACK ), я могу сказать, что инструменты AD часто бывают привередливыми. Они могут не обязательно различать код, который они генерируют сами. Существует два типа инструментов AD:

  • инструменты AD от источника к источнику
  • оператор перегрузки AD инструментов

Инструменты «источник-источник» - это существенно модифицированные компиляторы, которые берут написанный вами исходный код, анализируют его и автоматически генерируют новый исходный код, который вычисляет градиент функций в вашем исходном коде. Перегрузка операторов инструментами AD требует, чтобы вы использовали перегруженные операторы AD в исходном коде, чтобы можно было рассчитать производные, что потребовало бы от вас дополнительных усилий для расчета аналитических производных с AD.


22

мм

По моему опыту, BFGS с большим количеством обновлений хранит информацию слишком далеко от текущего решения, чтобы быть действительно полезной для аппроксимации не запаздывающего якобиана, и вы можете фактически потерять сходимость, если будете хранить слишком много. Существуют варианты «без памяти» BFGS, которые во многом выглядят как нелинейные сопряженные градиенты (см. Последнее обновление, описанное для одного из них) именно по этим причинам. Поэтому, если вы хотите использовать L-BFGS, а не BFGS, проблемы с памятью исчезают, а методы связаны . Неофициальные данные указывают на то, что перезапуск является сложной задачей, так как иногда это бывает ненужным, а иногда очень необходимым.

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

м


Я полностью забыл о L-BFGS. +1 за это.
JM

15

В небольших измерениях хорошо реализованный метод BFGS, как правило, быстрее и надежнее CG, особенно если функция не очень далека от квадратичной.

Ни BFGS, ни CG не нуждаются в предположении о выпуклости; только начальное гессенское приближение (для BFGS) соотв. предварительный кондиционер (для CG) должен быть положительно определенным. Но они всегда могут быть выбраны в качестве матрицы идентичности в небольших измерениях без особого вреда. Смотрите также /scicomp//a/3213/1117

В отсутствие запрограммированного градиента использование числовых градиентов является большой тратой усилий, особенно когда значения функций являются дорогостоящими. Скорее, следует использовать алгоритм без производных. См. Http://archimedes.cheme.cmu.edu/?q=dfocomp для недавнего опроса.


Ссылка дает мне "404 Not Found", не могли бы вы это исправить?
Штифель

@Stiefel: я исправил это. Новая ссылка указывает на значительно улучшенную версию.
Арнольд Ноймайер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.