证明由 AD 包(如 PyAutoDiff)获得的梯度和让求解器(如 BSGS)计算梯度之间有什么区别(例如在鲁棒性和速度方面)?这样做似乎很诱人:
from autodiff import gradient
def my_costfun(x):
return f(x)
@gradient
def g(x):
return f(x)
真的那么简单吗?有 10 个参数的函数呢?
证明由 AD 包(如 PyAutoDiff)获得的梯度和让求解器(如 BSGS)计算梯度之间有什么区别(例如在鲁棒性和速度方面)?这样做似乎很诱人:
from autodiff import gradient
def my_costfun(x):
return f(x)
@gradient
def g(x):
return f(x)
真的那么简单吗?有 10 个参数的函数呢?
如果成本函数复杂或参数较多,使用自动微分计算梯度会导致成本快速增长。通常不需要精确的梯度(尤其是远离最小值),因此其他策略可能要便宜得多。
免责声明:我将笼统地谈论 AD 包,而不是 PyAutoDiff。