Как добавить пользовательские градиенты в библиотеку автоопределения Haskell «ad»? - PullRequest
3 голосов
/ 19 марта 2019

Если я хочу дать пользовательский или известный градиент для функции, как я могу это сделать в библиотеке ad?(Я не хочу авто-дифференцировать через эту функцию.) Я использую функцию grad в этой библиотеке.

Если библиотека не предоставляет эту функцию, есть ли способ, которым я могуЯ могу легко реализовать эту функцию самостоятельно, возможно, изменив определения листовых узлов в ad или отредактировав двойные числа, которые предположительно несут числовые градиенты?

Вот конкретный пример того, что я имею в виду:

Скажем, у меня есть некоторая функция, которую я хочу взять градиент, скажем, f(x, y) = x^2 + 3 * g(x, y)^2.Затем скажите, что g(x, y) - это функция, определение которой сложно, но градиент которой я уже рассчитал аналитически и довольно прост.Таким образом, когда я беру grad f и оцениваю его в точке (x, y), я хотел бы просто подключить свой собственный градиент для g вместо автоматического отклонения через него: что-то вроде my_nice_grad_of_g (x, y).

Я вижу, что другие библиотеки AutoDiff предоставляют эту функцию, например Stan и Tensorflow обе позволяют пользователям определять градиенты функции.

...