赞
踩
本篇开启一个非常重要的内容,最小二乘法。它在方程组求解、多视图几何计算、线性优化等方面具有广泛的应用。
本节是最小二乘法的第一部分,将最小二乘与线性代数关联。
最小二乘法的起源
在数值计算拟合法中已经提到过,最小二乘法最早用于数据拟合:
arg min
f
(
x
)
∑
i
=
0
n
(
f
(
x
i
)
−
y
i
)
2
\argmin_{f(x)} \sum_{i=0}^n (f(x_i)-y_i)^2
f(x)argmini=0∑n(f(xi)−yi)2
非齐次线性方程组
现在考虑下面这个线性方程组:
{
x
1
+
x
2
=
0
x
1
+
2
x
2
=
2
2
x
1
+
3
x
2
=
3
由非齐次线性方程组的秩与解的关系,上面的线性方程组的稀疏矩阵和增广矩阵有
r
a
n
k
(
A
)
<
r
a
n
k
(
A
,
b
)
rank(A)<rank(A,b)
rank(A)<rank(A,b),因此是没有解析解的。方程数比未知量要多,就是所谓的超定方程,没有解析解。
在工程实践中,既然得不到使超定方程完全符合等式的解,那就寻找一个能在最大程度上使方程组成立的解。因此,我们引入了线性方程组的最小二乘解。
线性方程组的最小二乘解
对于超定的线性方程组
A
x
=
b
,
A
∈
R
m
×
n
Ax=b,A\in R^{m\times n}
Ax=b,A∈Rm×n,没有使其成立的解析解,则可以求它的一个最小二乘解
x
^
\hat x
x^,满足:
∀
x
∈
R
n
,
∣
∣
A
x
^
−
b
∣
∣
2
2
≤
∣
∣
A
x
−
b
∣
∣
2
2
i
.
e
.
arg min
x
∣
∣
A
x
−
b
∣
∣
2
2
(
1
)
\forall x\in R^n, ||A\hat x-b||^2_2\le ||Ax-b||^2_2 \\ \quad \\ i.e. \quad \argmin_{x}||Ax-b||^2_2 \quad (1)
∀x∈Rn,∣∣Ax^−b∣∣22≤∣∣Ax−b∣∣22i.e.xargmin∣∣Ax−b∣∣22(1)
观察式(1)的形式,其实是向量的2-范数的平方,而向量的2-范数的平方又可以写成内积的形式,因此式(1)实际上可以写成以下关于向量
x
x
x的方程:
arg min
x
∣
∣
A
x
−
b
∣
∣
2
2
=
arg min
x
(
A
x
−
b
)
⋅
(
A
x
−
b
)
=
arg min
x
(
A
x
−
b
)
T
(
A
x
−
b
)
\argmin_{x}||Ax-b||^2_2 = \argmin_{x} (Ax-b)\cdot(Ax-b) \\ \quad \\ = \argmin_{x} (Ax-b)^T(Ax-b)
xargmin∣∣Ax−b∣∣22=xargmin(Ax−b)⋅(Ax−b)=xargmin(Ax−b)T(Ax−b)
既然是求最小值,那么就可以通过对上面矩阵求导,使得偏导数为0,得到极值点。(并非所有函数都满足偏导为0的点都是极值点,但是线性最小二乘是满足的)
激动人心的矩阵求导时刻来了(参考我之前写的矩阵求导法),我将通过之前写的快速求导法和微分求导法分别对这个方程求导:
快速求导法:分子布局,向量后置求导,系数不变;向量前置求导,系数前置并转置。
d
[
(
A
x
−
b
)
T
(
A
x
−
b
)
]
d
x
T
=
(
A
x
−
b
)
T
d
(
A
x
−
b
)
d
x
T
+
(
A
x
−
b
)
T
d
(
A
x
−
b
)
T
d
x
T
=
(
A
x
−
b
)
T
A
+
(
A
x
−
b
)
T
A
\frac {d[(Ax-b)^T(Ax-b)]}{dx^T}\\ \quad \\ = (Ax-b)^T\frac {d(Ax-b)}{dx^T}+(Ax-b)^T\frac {d(Ax-b)^T}{dx^T} \\ \quad \\ = (Ax-b)^TA+(Ax-b)^TA
dxTd[(Ax−b)T(Ax−b)]=(Ax−b)TdxTd(Ax−b)+(Ax−b)TdxTd(Ax−b)T=(Ax−b)TA+(Ax−b)TA
微分求导法:分子布局,将矩阵求导写成全微分形式:
t
r
(
∂
f
(
x
)
∂
x
T
d
x
)
tr(\frac{\partial f(x)}{\partial x^T}dx)
tr(∂xT∂f(x)dx)。
t
r
(
d
[
(
A
x
−
b
)
T
(
A
x
−
b
)
]
)
=
t
r
(
d
[
(
A
x
−
b
)
T
]
(
A
x
−
b
)
+
(
A
x
−
b
)
T
d
(
A
x
−
b
)
)
=
t
r
(
(
A
x
−
b
)
T
d
(
A
x
−
b
)
+
(
A
x
−
b
)
T
A
d
x
)
=
t
r
(
2
(
A
x
−
b
)
T
A
d
x
)
(
A
x
−
b
)
T
(
A
x
−
b
)
∂
x
T
=
2
(
A
x
−
b
)
T
A
tr(d[(Ax-b)^T(Ax-b)]) \\ = tr(d[(Ax-b)^T](Ax-b)+(Ax-b)^Td(Ax-b)) \\ = tr((Ax-b)^Td(Ax-b)+(Ax-b)^TAdx) \\ =tr(2(Ax-b)^TAdx) \\ \quad \\ \frac{(Ax-b)^T(Ax-b)}{\partial x^T} = 2(Ax-b)^TA
tr(d[(Ax−b)T(Ax−b)])=tr(d[(Ax−b)T](Ax−b)+(Ax−b)Td(Ax−b))=tr((Ax−b)Td(Ax−b)+(Ax−b)TAdx)=tr(2(Ax−b)TAdx)∂xT(Ax−b)T(Ax−b)=2(Ax−b)TA
接下来,由偏导为0求极值:
2
(
A
x
−
b
)
T
A
=
0
A
T
A
x
−
A
T
b
=
0
A
T
A
x
=
A
T
b
i
f
r
a
n
k
(
A
)
=
n
,
x
=
(
A
T
A
)
−
1
A
T
b
2(Ax-b)^TA=0 \\ A^TAx-A^Tb=0 \\ A^TAx=A^Tb \\ \quad \\ if \quad rank(A)=n, \\ x=(A^TA)^{-1}A^Tb
2(Ax−b)TA=0ATAx−ATb=0ATAx=ATbifrank(A)=n,x=(ATA)−1ATb
也就是说,如果
A
A
A是列满秩的,即
A
T
A
A^TA
ATA是可逆阵,则线性最小二乘解用上面的公式就能计算出来了。
补充证明
r
(
A
)
=
r
(
A
T
A
)
r(A)=r(A^TA)
r(A)=r(ATA):
秩
−
零
度
化
定
理
有
:
r
(
A
)
+
d
i
m
N
U
L
(
A
)
=
n
r
(
A
T
A
)
+
d
i
m
N
U
L
(
A
T
A
)
=
n
A
x
=
0
→
A
T
A
x
=
0
A
T
A
x
=
0
→
x
T
A
T
A
x
=
(
A
x
)
T
A
x
=
0
→
A
x
=
0
i
.
e
.
A
x
=
0
⟺
A
T
A
x
=
0
∴
N
U
L
(
A
)
=
N
U
L
(
A
T
A
)
r
(
A
)
=
r
(
A
T
A
)
秩-零度化定理有:\\ r(A)+dimNUL(A)=n \\ r(A^TA)+dimNUL(A^TA)=n \\ \quad \\ Ax=0 \to A^TAx=0 \\ A^TAx=0 \to x^TA^TAx=(Ax)^TAx=0 \to Ax=0 \\ i. e. \quad Ax=0 \iff A^TAx=0 \\ \\ \quad \\ \therefore \quad NUL(A)=NUL(A^TA) \\ r(A)=r(A^TA)
秩−零度化定理有:r(A)+dimNUL(A)=nr(ATA)+dimNUL(ATA)=nAx=0→ATAx=0ATAx=0→xTATAx=(Ax)TAx=0→Ax=0i.e.Ax=0⟺ATAx=0∴NUL(A)=NUL(ATA)r(A)=r(ATA)
本篇是最小二乘法的开篇,引出最小二乘与方程组的关系,并且获得了线性最小二乘的矩阵形式 arg min x ( A x − b ) T ( A x − b ) \argmin_{x} (Ax-b)^T(Ax-b) xargmin(Ax−b)T(Ax−b),并计算了当超定方程列满秩时的最小二乘解形式 x = ( A T A ) − 1 A T b x=(A^TA)^{-1}A^Tb x=(ATA)−1ATb。
下篇将讨论当 A A A不是列满秩时,线性最小二乘的SVD解法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。