当解析雅可比行列式可用时,通过以下方式近似 Hessian 矩阵是否更好?Ĵ吨ĴJTJ,还是通过雅可比行列式的有限差分?

机器算法验证 标准错误 配件
2022-02-07 07:56:27

假设我正在计算一些模型参数以最小化残差平方和,并且我假设我的错误是高斯的。我的模型产生解析导数,因此优化器不需要使用有限差分。拟合完成后,我想计算拟合参数的标准误差。

通常,在这种情况下,误差函数的 Hessian 被认为与协方差矩阵有关:

σ2H1=C
在哪里σ2是残差的方差。

当没有可用的误差分析导数时,计算 Hessian 通常是不切实际的,因此JTJ被视为一个很好的近似值。

但是,就我而言,我有一个解析 J,因此通过有限差分 J 计算 H 对我来说相对便宜。

所以,我的问题是:使用我的精确 J 并应用上述近似值来近似 H 或通过有限差分 J 近似 H 会更准确吗?

1个回答

好问题。首先,回忆一下这个近似值HJTJ来自。(xi,yi)成为您的数据点,f()成为你的模特和β成为模型的参数。那么非线性最小二乘问题的目标函数为12rTr在哪里r是残差的向量,ri=yif(xi,β). 目标函数的精确 Hessian 矩阵是H=JTJ+ri2ri. 所以这个近似值的误差是HJTJ=ri2ri. 当残差本身很小时,这是一个很好的近似值;或者当残差的二阶导数很小时。线性最小二乘可以被认为是残差的二阶导数为零的特殊情况。

至于有限差分近似,它相对便宜。要计算中心差,您需要额外评估雅可比行列式2n次(远期差价将花费您n额外的评估,所以我不会打扰)。中心差分近似的误差与4rh2, 在哪里h是步长。最佳步长为hϵ13, 在哪里ϵ是机器精度。因此,除非残差的导数爆炸,否则很明显,有限差分近似应该更好。我应该指出,虽然计算量很小,但簿记却很重要。Jacobian 上的每个有限差分将为每个残差提供一行 Hessian。然后,您必须使用上面的公式重新组装 Hessian。

然而,还有第三种选择。如果您的求解器使用准牛顿法(DFP、BFGS、Bryoden 等),它已经在每次迭代中逼近 Hessian。近似值可能非常好,因为它使用每次迭代的目标函数和梯度值。大多数求解器都会让您访问最终的 Hessian 估计(或其逆估计)。如果这是您的选择,我会将其用作 Hessian 估计值。它已经计算过了,可能会是一个很好的估计。