线性高斯反问题的解,长度方法

3.1 长度

首先,以一个简单的线性回归问题(一条直线拟合数据的问题),来直观的体会“长度”。
线性高斯反问题的解,长度方法a)对数据(z,d)的最小二乘直线拟合;b)ei=diobsdipree_i = d_{i}^{obs} - d_{i}^{pre}

那么,最佳的拟合直线所具有模型参数(截距和斜率)将使总误差E最小,即
E=i=1nei2=eTe=minE = \sum\limits_{i=1}^{n}e_{i}^{2}=\bf {e^Te} = min
式中,总误差EE恰恰使向量e\bf e的欧几里得长度。

从长度方法的观点来看,最小二乘法是通过寻找预测误差的最小长度所对应的模型参数(截距和斜率)来估计反问题的解。通常来讲在,求解反问题的过程中使用长度方法是最简单的方法,也符合人的直观感受。

3.2 范数==》长度的推广

所谓范数是指对某些长度或大小的度量,其公式如下:
ep=(i=1nep)1p{\|e\|}_{p} = (\sum\limits_{i=1}^{n}e^p)^{\frac{1}{p}}
以下三种范数最为常用:
L1L_{1} norm: e1=[iei1]\quad\|\mathbf{e}\|_{1}=\left[\sum_{i}\left|e_{i}\right|^{1}\right]
L2L_{2} norm: e2=[iei2]1/2\quad\|\mathbf{e}\|_{2}=\left[\sum_{i}\left|e_{i}\right|^{2}\right]^{1 / 2}
LL_{\infty} norm: e=maxiei\quad\|\mathbf{e}\|_{\infty}=\max _{i}\left|e_{i}\right|
幂次越高的范数给e\mathbf{e}中最大元素更大的权重,LL_{\infty}表明仅对e\mathbf{e}的最大元素施加权重
线性高斯反问题的解,长度方法
从上图上看,e|e|的显著性最明显,而e10|e^{10}|最差

那么,最小二乘法究竟该选择哪种长度(即采取哪种范数),这个问题的答案涉及对远离平均趋势的离群数据进行加权的方式,如下图所示:
线性高斯反问题的解,长度方法
图中,L1L_1范数给离群点的权重最小。

3.3 线性反问题的最小二乘解

最小二乘能够以一种非常直接的方式推广到一般线性反问题。
E=eTe=(dGm)T(dGm)=i=1N[dij=1MGijmj][dik=1MGikmk]E=\mathbf{e}^{\mathrm{T}} \mathbf{e}=(\mathbf{d}-\mathbf{G} \mathbf{m})^{\mathrm{T}}(\mathbf{d}-\mathbf{G} \mathbf{m})=\sum_{i=1}^{N}\left[d_{i}-\sum_{j=1}^{M} G_{i j} m_{j}\right]\left[d_{i}-\sum_{k=1}^{M} G_{i k} m_{k}\right]
为避免混乱,对上式进行重新整理:
E=j=1Mk=1Mmjmki=1NGijGik2j=1Mmji=1NGijdi+i=1NdidiE=\sum_{j=1}^{M} \sum_{k=1}^{M} m_{j} m_{k} \sum_{i=1}^{N} G_{i j} G_{i k}-2 \sum_{j=1}^{M} m_{j} \sum_{i=1}^{N} G_{i j} d_{i}+\sum_{i=1}^{N} d_{i} d_{i}

Emp=0\frac{\partial E}{\partial m_{p}}=0
第一项为:
mq[j=1Mk=1Mmjmki=1NGijGik]=j=1Mk=1M[δjqmk+mjδkq]i=1NGijGik=2k=1Mmki=1NGiqGik\begin{aligned} \frac{\partial}{\partial m_{q}}\left[\sum_{j=1}^{M} \sum_{k=1}^{M} m_{j} m_{k} \sum_{i=1}^{N} G_{i j} G_{i k}\right] &=\sum_{j=1}^{M} \sum_{k=1}^{M}\left[\delta_{j q} m_{k}+m_{j} \delta_{k q}\right] \sum_{i=1}^{N} G_{i j} G_{i k} \\ &=2 \sum_{k=1}^{M} m_{k} \sum_{i=1}^{N} G_{i q} G_{i k} \end{aligned}

注意:模型参数是相互独立的变量,mi/mj\partial m_{i} / \partial m_{j}形式的导数只有在i=ji=j时候等于11,而iji \neq j是为0,因此mi/mj\partial m_{i} / \partial m_{j}克罗内克函数(Kronecker delta)δij\delta_{i j},包含它的公式可以明显的简化

第二项为:
2mq[j=1Mmji=1NGijdi]=2j=1Mδjqi=1NGijdi=2i=1NGiqdi-2 \frac{\partial}{\partial m_{q}}\left[\sum_{j=1}^{M} m_{j} \sum_{i=1}^{N} G_{i j} d_{i}\right]=-2 \sum_{j=1}^{M} \delta_{j q} \sum_{i=1}^{N} G_{i j} d_{i}=-2 \sum_{i=1}^{N} G_{i q} d_{i}

第三项为:
mq[i=1Ndidi]=0\frac{\partial}{\partial m_{q}}\left[\sum_{i=1}^{N} d_{i} d_{i}\right]=0

结合三项,可得:
Emq=0=2k=1Mmki=1NGiqGik2i=1NGiqdi\frac{\partial E}{\partial m_{q}}=0=2 \sum_{k=1}^{M} m_{k} \sum_{i=1}^{N} G_{i q} G_{i k}-2 \sum_{i=1}^{N} G_{i q} d_{i}

重新写成矩阵形式:
GTGmGTd=0\mathbf{G}^{\mathrm{T}} \mathbf{G m}-\mathbf{G}^{\mathrm{T}} \mathbf{d}=0
假设[GTG]1\left[\mathbf{G}^{\mathrm{T}} \mathbf{G}\right]^{-1}存在(有不存在的时候),那么有如下解:
mest=[GTG]1GTd\mathbf{m}^{\mathrm{est}}=\left[\mathbf{G}^{\mathrm{T}} \mathbf{G}\right]^{-1} \mathbf{G}^{\mathrm{T}} \mathbf{d}

对于维度较大的情况,GTG\mathbf{G}^{\mathrm{T}} \mathbf{G}的计算成本可能很高,而且GTG\mathbf{G}^{\mathrm{T}} \mathbf{G}极少像G\mathbf G那样稀疏。在这种情况下,优先考虑迭代的矩阵求解方案,如双共轭梯度算法(biconjugate gradient method)

3.4 一些最小二乘法的例子

1) 直线拟合问题:

模型是 di=m1+m2zid_i =m_1+m_2z_i,方程Gm=d\mathbf{Gm=d}形式如下:
[1z11z21zN][m1m2]=[d1d2dN]\left[\begin{array}{cc} 1 & z_{1} \\ 1 & z_{2} \\ \vdots & \vdots \\ 1 & z_{N} \end{array}\right]\left[\begin{array}{c} m_{1} \\ m_{2} \end{array}\right]=\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]
==》
GTG=[111z1z2zN][1z11z21zN]=[Ni=1Nzii=1Nzii=1Nzi2]\mathbf{G}^{\mathrm{T}} \mathbf{G}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ z_{1} & z_{2} & \cdots & z_{N} \end{array}\right]\left[\begin{array}{cc} 1 & z_{1} \\ 1 & z_{2} \\ \vdots & \vdots \\ 1 & z_{N} \end{array}\right]=\left[\begin{array}{cc} N & \sum_{i=1}^{N} z_{i} \\ \sum_{i=1}^{N} z_{i} & \sum_{i=1}^{N} z_{i}^{2} \end{array}\right]

GTd=[111z1z2zN][d1d2dN]=[i=1Ndii=1Ndizi]\mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ z_{1} & z_{2} & \cdots & z_{N} \end{array}\right]\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]=\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} d_{i} z_{i} \end{array}\right]
GTd=[111z1z2zN][d1d2dN]=[i=1Ndii=1Ndizi]\mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ z_{1} & z_{2} & \cdots & z_{N} \end{array}\right]\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]=\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} d_{i} z_{i} \end{array}\right]

mest=[GTG]1GTd=[Ni=1Nzii=1Nzii=1Nzi2]1[i=1Ndii=1Ndizi]\mathbf{m}^{\mathrm{est}}=\left[\mathbf{G}^{\mathrm{T}} \mathbf{G}\right]^{-1} \mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{cc} N & \sum_{i=1}^{N} z_{i} \\ \sum_{i=1}^{N} z_{i} & \sum_{i=1}^{N} z_{i}^{2} \end{array}\right]^{-1}\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} d_{i} z_{i} \end{array}\right]

2 抛物线拟合

模型是di=m1+m2zi+m3zi2d_{i}=m_{1}+m_{2} z_{i}+m_{3} z_{i}^{2},方程Gm=d\mathbf{Gm=d}形式如下:
[1z1z121z2z221zNzN2][m1m2m3]=[d1d2dN]\left[\begin{array}{ccc} 1 & z_{1} & z_{1}^{2} \\ 1 & z_{2} & z_{2}^{2} \\ \vdots & \vdots & \vdots \\ 1 & z_{N} & z_{N}^{2} \end{array}\right]\left[\begin{array}{c} m_{1} \\ m_{2} \\ m_{3} \end{array}\right]=\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]
==》
GTG=[111z1z2zNz12zN2zN2][1z1z121z2z221zNzN2]\mathbf{G}^{\mathrm{T}} \mathbf{G}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ z_{1} & z_{2} & \cdots & z_{N} \\ z_{1}^{2} & z_{N}^{2} & \cdots & z_{N}^{2} \end{array}\right]\left[\begin{array}{ccc} 1 & z_{1} & z_{1}^{2} \\ 1 & z_{2} & z_{2}^{2} \\ \vdots & \vdots & \vdots \\ 1 & z_{N} & z_{N}^{2} \end{array}\right]
GTd=[111z1z2zNz12zN2zN2][d1d2dN]=[i=1Ndii=1Nzidii=1Nzi2di]\mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ z_{1} & z_{2} & \cdots & z_{N} \\ z_{1}^{2} & z_{N}^{2} & \cdots & z_{N}^{2} \end{array}\right]\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]=\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} z_{i} d_{i} \\ \sum_{i=1}^{N} z_{i}^{2} d_{i} \end{array}\right]

mest=[GTG]1GTd=[Ni=1Nzii=1Nzi2i=1Nzii=1Nzi2i=1Nzi3i=1Nzi2i=1Nzi3i=1Nzi4]1[i=1Ndii=1Nzidii=1Nzi2di]\mathbf{m}^{\mathrm{est}}=\left[\mathbf{G}^{\mathrm{T}} \mathbf{G}\right]^{-1} \mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{ccc} N & \sum_{i=1}^{N} z_{i} & \sum_{i=1}^{N} z_{i}^{2} \\ \sum_{i=1}^{N} z_{i} & \sum_{i=1}^{N} z_{i}^{2} & \sum_{i=1}^{N} z_{i}^{3} \\ \sum_{i=1}^{N} z_{i}^{2} & \sum_{i=1}^{N} z_{i}^{3} & \sum_{i=1}^{N} z_{i}^{4} \end{array}\right]^{-1}\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} z_{i} d_{i} \\ \sum_{i=1}^{N} z_{i}^{2} d_{i} \end{array}\right]
线性高斯反问题的解,长度方法
上图为开普勒第三定律的验证,它阐述了行星轨道半径的立方正比于轨道周期的平方。a)对于太阳系,数据(红圈)用二次方公式di=m1+m2zi+m3zi2d_i=m_1+m_2z_i+m_3z_{i}^{2}实现了最小二乘拟合,其中did_i为半径的立方,ziz_i为周期。b)拟合误差,将数据和误差独立显示的目的是将误差以恰当的尺度画出。数据源于维基百科(Wikipedia)。

3、平面拟合

模型:di=m1+m2xi+m3yid_{i}=m_{1}+m_{2} x_{i}+m_{3} y_{i},方程Gm=d\mathbf{Gm=d}形式如下:
[1x1y11x2y21xNyN][m1m2m3]=[d1d2dN]\left[\begin{array}{ccc} 1 & x_{1} & y_{1} \\ 1 & x_{2} & y_{2} \\ \vdots & \vdots & \vdots \\ 1 & x_{N} & y_{N} \end{array}\right]\left[\begin{array}{c} m_{1} \\ m_{2} \\ m_{3} \end{array}\right]=\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]
==》
GTG=[111x1x2xNy1y2yN][1x1y11x2y21xNyN]\mathbf{G}^{\mathrm{T}} \mathbf{G}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ x_{1} & x_{2} & \cdots & x_{N} \\ y_{1} & y_{2} & \cdots & y_{N} \end{array}\right]\left[\begin{array}{ccc} 1 & x_{1} & y_{1} \\ 1 & x_{2} & y_{2} \\ \vdots & \vdots & \vdots \\ 1 & x_{N} & y_{N} \end{array}\right]
=[Ni=1Nxii=1Nyii=1Nxii=1Nxi2i=1Nxiyii=1Nyii=1Nxiyii=1Nyi2]=\left[\begin{array}{ccc} N & \sum_{i=1}^{N} x_{i} & \sum_{i=1}^{N} y_{i} \\ \sum_{i=1}^{N} x_{i} & \sum_{i=1}^{N} x_{i}^{2} & \sum_{i=1}^{N} x_{i} y_{i} \\ \sum_{i=1}^{N} y_{i} & \sum_{i=1}^{N} x_{i} y_{i} & \sum_{i=1}^{N} y_{i}^{2} \end{array}\right]

GTd=[111x1x2xNy1y2yN][d1d2dN]=[i=1Ndii=1Nxidii=1Nyidi]\mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{cccc} 1 & 1 & \cdots & 1 \\ x_{1} & x_{2} & \cdots & x_{N} \\ y_{1} & y_{2} & \cdots & y_{N} \end{array}\right]\left[\begin{array}{c} d_{1} \\ d_{2} \\ \vdots \\ d_{N} \end{array}\right]=\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} x_{i} d_{i} \\ \sum_{i=1}^{N} y_{i} d_{i} \end{array}\right]

mest=[GTG]1GTd=[Ni=1Nxii=1Nyii=1Nxii=1Nxi2i=1Nxiyii=1Nyii=1Nxiyii=1Nxiyi2]1[i=1Ndii=1Nxidii=1Nyidi]\mathbf{m}^{\mathrm{est}}=\left[\mathbf{G}^{\mathrm{T}} \mathbf{G}\right]^{-1} \mathbf{G}^{\mathrm{T}} \mathbf{d}=\left[\begin{array}{ccc} N & \sum_{i=1}^{N} x_{i} & \sum_{i=1}^{N} y_{i} \\ \sum_{i=1}^{N} x_{i} & \sum_{i=1}^{N} x_{i}^{2} & \sum_{i=1}^{N} x_{i} y_{i} \\ \sum_{i=1}^{N} y_{i} & \sum_{i=1}^{N} x_{i} y_{i} & \sum_{i=1}^{N} x_{i} y_{i}^{2} \end{array}\right]^{-1}\left[\begin{array}{c} \sum_{i=1}^{N} d_{i} \\ \sum_{i=1}^{N} x_{i} d_{i} \\ \sum_{i=1}^{N} y_{i} d_{i} \end{array}\right]

线性高斯反问题的解,长度方法
上图是使用平面拟合来检测地质断层上发生地震的例子,(圆圈)西北太平洋千岛群岛俯冲带发生的地震。xx坐标轴指向北,yy坐标轴指向东。地震散布在一个由最小二乘确定的倾斜平面附近。数据来自美国地质调查局(United States Geological Survey, USGS)。