如果我想为函数提供自定义或已知渐变,我该如何在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都允许用户定义函数的梯度。