【问题标题】:Optimizing a function given its computed partial derivatives给定计算的偏导数来优化函数
【发布时间】:2014-05-20 22:39:46
【问题描述】:

我需要优化一个函数(找到它的最小值)。该函数使用向量w 进行参数化。所以我所做的基本上是计算函数相对于每个参数的偏导数。然后我只是为此使用梯度下降。但是据我所知,可以使用比梯度下降更复杂的优化方法,不需要参数来调整或关心。我想在numpyscipy 中尝试其中一种方法,但我不知道怎么做。我需要的是一种接受计算出的偏导数值作为输入然后优化函数的方法。 numpyscipy 中是否存在类似的内容?

【问题讨论】:

    标签: python numpy scipy


    【解决方案1】:

    scipy.optimize.minimize 让您可以选择输入目标函数的 Jacobian 和 Hessian:

    jac : bool or callable, optional

    目标函数的雅可比(梯度)。仅适用于 CG、BFGS、Newton-CG、L-BFGS-B、TNC、SLSQP、dogleg、trust-ncg。如果 jac 是布尔值并且为 True,则假定 fun 将梯度与目标函数一起返回。如果为 False,梯度将以数值方式估计。 jac 也可以是返回目标梯度的可调用函数。在这种情况下,它必须接受与 fun 相同的参数。 赫斯,

    hessp : callable, optional

    目标函数的Hessian(二阶导数矩阵)或目标函数的Hessian乘以任意向量p。仅适用于 Newton-CG、dogleg、trust-ncg。只需要给出 hessp 或 hess 之一。如果提供 hess,则 hessp 将被忽略。如果既没有提供 hess 也没有提供 hessp,则 Hessian 乘积将使用 jac 上的有限差分来近似。 hessp 必须计算 Hessian 乘以任意向量。

    正如@ffriend 在评论中提到的,您可以找到一些带有和不带有渐变的示例here

    【讨论】:

    • 一些examples,有和没有渐变。
    • @ffriend 谢谢!我已将其添加到答案中,因为它是一个非常全面的教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2021-09-15
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    相关资源
    最近更新 更多