高斯牛顿最小化用于多输入多输出功能

时间:2012-10-28 16:49:42

标签: math mathematical-optimization minimization newtons-method

给定矩阵形式的输入输出函数:

|y1|   =  |p1  p2|   |x1|     |p5| 
|y2|    = |p3  p4| * |x2|  +  |p6|
带有p1−p6个参数的

。我希望使用Gauss-Newton方法最小化最小平方误差。假设我们有100个测量值。我的问题是关于残差矢量的计算和大小。

|r1|   |y1|  ( |p1  p2|   |x1|   |p5| )
|r2| = |y2| -( |p3  p4| ∗ |x2| + |p6| )

r i = output - f(输入,参数)

err = Sum(r i 2

为了计算最小化误差的参数,我们有:

p i + 1 = p i

Δ=(J T * J) -1 * J T * r i

我认为每个的大小如下:

输入向量(x):100x2

输出向量(y):100x2

resuidual(r):100x2

雅可比(J):100x6

参数(pi):6x1(六个参数)

如您所见,Δ的大小为6x2,似乎与p_i+1不一致 现在我的残差矢量计算过程是否正确?如果是,我怎么能计算参数的向量?如果没有,那么正确答案是什么?

另一个问题是关于参数矩阵的计算方法J(雅可比)。

非常感谢你。

1 个答案:

答案 0 :(得分:2)

Delta矢量与参数矢量的大小相同。

实际上在这种情况下,可以在不进行完全最小二乘的情况下求解参数。不幸的是,我无法在网上找到参考资料,所以我试图解释这个方法:

我们想找到一个矩阵M和一个向量t,这样,给定N个点Y []和N个点X [],误差S尽可能小,其中

S = Sum{ i | (Y[i]-M*X[i]-t)'*(Y[i]-M*X[i]-t)}

('是转置)。

演习是:

a /计算Y []的平均Y ^并从每个Y [i]中减去它,得到y [i]

b /计算X []的平均X ^并从每个X [i]中减去它,得到x [i]

计算矩阵

A = Sum{ i | y[i]*x[i]'} 

C = Sum{ i | x[i]*x[i]'}

d /如果C不可逆(这意味着所有X []都在一条线上)你有点 卡住,或至少这种方法失败;否则计算

M = A*inverse(C)

e / finally,计算

t = Y^-M*X^

为什么这样做?

首先,如果我们认为M是固定的,那么很容易看出最小化S的t只是Y [i] -M * X [i]的平均值;所以我们也可以在找到M时使用这个t。将t代入S的公式中我们得到

S = Sum{ i | (y[i]-M*x[i])'*(y[i]-M*x[i])}

现在让Tr()表示将矩阵映射到其轨迹的函数(对角元素的总和)。一个经常有用的技巧是对于矢量v我们有

v'*v = Tr( v'*v) = Tr( v*v')

将此应用于S,并扩展产品,我们得到

S = Sum{ i | y[i]'*y[i]} - Tr( A*M') - Tr( M*A') + Tr( M*C*M')

如果C是可逆的,我们可以完成正方形并得到(这里D =逆(C))

S = Sum{ i | y[i]'*y[i]} - Tr( A*D*A') + Tr( (M-A*D)*C*(M-A*D)'}

前两个术语不依赖于M;第三是永远不会消极,可以 通过选择M = A * D使其为零。