Реализация автоматического дифференцирования для 2-й производной: алгоритм для того, чтобы пересечь вычислительный график?

Я пытаюсь реализовать автоматическое дифференцирование для пакета статистики Python (проблемная формулировка подобна проблемным формулировкам оптимизации).

Вычислительный график сгенерирован с помощью перегрузки оператора и функций фабрики для операций как сумма (), exp (), и т.д. Я реализовал автоматическое дифференцирование для градиента с помощью обратного накопления. Однако я нашел реализующее автоматическое дифференцирование для второй производной (Гессиан) намного более трудный. Я знаю, как сделать отдельные 2-е частичные вычисления градиента, но я испытал затруднения, придумывающие интеллектуальный способ пересечь график и сделать накопления. Кто-либо знает о хороших статьях, которые дают алгоритмы для автоматического дифференцирования для вторых производных или библиотек с открытым исходным кодом, которые реализуют то же, что я могу попытаться извлечь уроки из?

8
задан Amir 18 January 2016 в 02:00
поделиться

1 ответ

Обычным методом аппроксимации гессиана в 3 измерениях является BFGS

Метод L-BFGS аналогичен.

Здесь вы можете найти исходный код L-BFGS (который вычисляет гессиан как промежуточный результат для решения ODE) на нескольких языках (C #, C ++, VBA и т. Д.), Но не на python. Я думаю, это непросто перевести.

Если вы собираетесь перевести алгоритм с другого языка, обратите особое внимание на числовые ошибки и проведите анализ чувствительности (вам нужно будет вычислить обратную матрицу Гессе)

-1
ответ дан 6 December 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: