使用迭代最小二乘法最小化成本函数

计算科学 迭代法 最小二乘
2021-12-14 08:09:20

我目前正在尝试使用迭代最小二乘法来解决一个系统, y=Hx+v 在哪里y是观察向量,H是设计矩阵,并且v是观察误差。

据我了解,迭代最小二乘法试图最小化成本J在哪里J=min(Hxy)2.

我的伪代码是

while ||x^k-x^{k-1}||
   H = h(x^{k-1})
   r = f(x^{k-1}) - y
   dx = pinv(H)*r
   x^{k} = x^{k-1} + dx
end

其中是雅可比矩阵,的输出是预期观测值。Hf(x)

是否可以称为系统成本,因为它是在估计之间的残差/差?在迭代最小二乘的实现中是否应该平方?rf(x)xk1y

1个回答

线性最小二乘问题等价于求解 ,称为正规方程。表示转置或伴随矩阵。有很多方法可以解决这个问题,具体取决于您的问题,但共轭梯度法是一种很好的通用方法。minHxy2HTHx=HTyHT

请注意,您使用的伪逆 (pinv) 函数将计算,所以(HTH)1HT

x=pinv(H)*y

这意味着您的迭代方法将在第一次迭代中收敛。如果性能不是问题并且相当小,这是解决问题的最简单方法,但对于较大的迭代方法通常会明显更快。如果是一个稀疏矩阵,则尤其如此,或者矩阵向量乘积可以通过诸如傅里叶变换之类的快速方法来计算。HHHHr

正如hardmath所提到的,是残差向量并且rJ=r2