数学参考
有限差方法求导,Finite Difference Approximations of Derivatives,是数值计算中常用的求导方法。数学上也比较简单易用。本文主要针对的是向量值函数,也就是 f ( x ) : R n → R f(x):\mathbb{R^n}\rightarrow \mathbb{R} f(x):Rn→R当然,普通的标量值函数是向量值函数的一种特例。
本文采用的数学参考是:有限差方法
参考的主要是Central Difference Approximations小节中的Second-order derivatives based on gradient calls的那个公式。
代码
用法
将下面代码中的Hessian矩阵一节中的Hessian函数直接复制到你的代码中,然后就可以按照用法示例使用。
特别要注意,eps的选择比较关键,直接决定了有限差方法的精度。建议大家根据函数参数的数量级动态的设置,例如某参数变化范围1-10,就可以设置为0.001;而某参数变化范围为0-0.0001,则可设置为0.000001,之类的。
用法示例
def func(x):
x_0 = x[0]
x_1 = x[1]
return x_0**2 + x_1**2
hessian(func, [0,0], esp = [0.01, 0.01])
得到结果:
array([[2., 0.],
[0., 2.]], dtype=float32)
函数主体
准备
本文的方法只需

文章介绍了如何运用有限差方法来求解向量值函数的导数,特别是针对Hessian矩阵的计算。通过提供代码示例展示了如何生成梯度函数以及计算Hessian矩阵,并强调了选择适当步长eps对精度的影响。这种方法依赖于numpy库,相比其他工具如autograd和numdifftools,具有更高的灵活性和效率。
最低0.47元/天 解锁文章
802

被折叠的 条评论
为什么被折叠?



