最小二乘解(Least-squares Minimization )

来源:互联网 发布:windows 2000 编辑:程序博客网 时间:2024/05/17 02:33

对于线性方程组,解的判别条件如下:
1. Ax=0 总有解,至少有零解
2. Am×nx=0
 当r(A)=n,只有零解
 当r(A)<n,有无穷多解
3. Am×nx=b
 当r(A)r(A|b),无解
 当r(A)=r(A|b)=n,有唯一解
 当r(A)=r(A|b)=r<n,有无穷多解

  我一般我们会面临形如Am×nx=b的方程。我们考虑测量数据和我们需要的解的参数之间的关系,该方程的解可以分为以下几种情况:

  1. 如果m<n,未知数大于方程数。那么解不唯一,存在一个解矢量空间。
  2. 如果m=n,那么只要A可逆(非奇异,也就是满秩)就有唯一解,解为x=A1b
  3. 如果m>n,方程数大于未知数。方程一般没有解,除非b属于A的列向量组成的子空间。

  我们考虑mn并且r(A)=n的情况。如果解不存在,我们找一个最接近Am×nx=b的解矢量仍然有意义,这个方程成为超定方程(方程大于未知数)。也就是说,我们寻找一个向量x使得 Axb最小,这里的表示矢量范数。这样的x称为该超定方程组的最小二乘解。接下来讨论三种解最小二乘的方法,分别用奇异值分解正规方程QR分解


奇异值分解

  奇异值分解(SVD)是最有用的矩阵分解方法中的一种。给定一个矩阵Am×n(mn),存在一个正交矩阵Um×mVn×n,有

A=UDVT=U[Σ0]VT

  其中Σ=diag(σ1,σ2,,σn)Rn×n,且σ1σ2σn0。上述分解就称为奇异值分解σ1,σ2,,σn称为A奇异值,矩阵UV满足UTU=IVTV=I。由上式可知
ATA=VDUTUDVT=VΣ2VTAAT=U[ΣΣT000]UT

  所以σ21,σ22,,σ2nATAAAT特征值

  用奇异值分解在求线性最小二乘解的时候,我们找一个向量x使得Axb最小,我们可以化为(矩阵U具有保范性)

Axb=UDVTxb=DVTxUTb

  令y=VTxb=UTb。则问题变成最小化DybD=[Σ0]是除对角线线元素以外全是0m×n矩阵。可以把该方程写成如下形式:
d1d20dny1y2yn=b1b2bnbn+1bm

  显然,最接近bDy是矢量(b1,b2,,bn,0,,0)T,通过令yi=bi/di(i=1,,n)得到。假定A的秩为n保证di0。最后通过x=Vy求得x

概括一下可以这样实现:

  1. A进行奇异值分解:A=UDVT
  2. b=UTb
  3. yi=bi/didi是D的第i个对角元素
  4. 所求的解为x=Vy

  我们通常会遇到齐次方程的情况,形如Ax=0,有零解x=0,然而我们不需要这样的解,需要的是非零解。对于超定方程,我们可以找到近似满足方程的非零解。对于解x,与上面非齐次的处理方式相同,我们令y=VTx,把问题转换为最小化Dy,做进一步处理,可以转换为最小化yTDTDy。有

yTDTDy=yTΣ2y=[y1y2yn]σ1σ2σny1y2yn=σ1y21+σ2y22++σny2n

  我们知道,y若是解,乘以任意倍数的ky也是方程的解,所以,我们不妨增加约束,取y=1。观察上述等式,由于σ1σ2σn0,当y=[001]T时,所得的yTDTDy最小。所以原始的齐次方程的解为
x=Vy=[V1V2Vn]y1y2yn=[V1V2Vn]001=Vn

  
  也就是说超定方程Ax=0的最小二乘解为A奇异值分解后,V最后一列向量


正规方程

  线性最小二乘问题也可以使用正规方程(normal equations )的方法来解。考虑Am×nx=b,其中m>n。这个方程一般不存在解,所以去找最小化范数 Axb的矢量x。把A写成列空间的形式A=(a1,a2,...,an),其中aim维列向量,那么当x变量所有的值的时候,可以认为向量Ax遍历了A的整个列空间,即由A的列生成的Rm的子空间。而我们需要找到在这个子空间中最接近向量b的那个情况。

  几何上我们可以这么理解,要是Ax最接近b,我们需要使得Axb最小,也就是让向量Axb垂直A的列空间。如下图

最小二乘

  也就是说让Axb垂直A的每一列,即aTi(Axb)=0,则有

aT1aT2aTn(Axb)=AT(Axb)=0

  把上式括号拆开做整理可以得到
ATAx=ATb

  这是一个n×n的线性方程组,称为正规方程组。如果A的秩为n,那么ATA的秩也为n,上式有解为
x=(ATA)1ATb


QR分解

  QR分解是把一个矩阵分解为一个正交矩阵和一个上三角矩阵的积。对于矩阵Am×n(mn),存在一个单位列正交矩阵Qm×n(即QTQ=In×n)和一个上三角矩阵Rn×n,使得

A=QR

  若A满秩,则QR分解唯一,且矩阵R的对角元素都为正数。

在解线性最小二乘,同上述方法一样,我们找一个向量x使得Axb最小,首先把矩阵Q扩充为一个正交矩阵[Q,Q˜]Rm×m,于是有

Axb=[Q,Q˜]T(Axb)=[QTQ˜T](QRxb)=[RxQTbQ˜Tb]

  所以Axb最小也就是取RxQTb最小。所以最小二乘解为

x=R1QTb


参考

  • 线性最小二乘问题

  • Multiple View Geometry in Computer Vision,Second Edition

  • 【泡泡机器人原创】SVD之最小二乘(推导与证明)