深入探讨最小二乘
文章目录
1. 超定最小二乘
1.1 概述
超定最小二乘就是我们一般能遇到的最小二乘,具有方程数大于未知数的特点。一般来说,超定方程是没有解的,只能通过近似的方式来进行计算。下面我们相当于对前面介绍的最小二乘进行稍加复习。
1.2 投影角度分析
一般来说,最小二乘中需要拟合的矢量并不在数据域的子空间中,因此,我们要把这个矢量投影到列空间中进行近似计算。
d ∈ R N , Z ∈ R N ∗ n , θ ∈ R n , N > n d = Z θ ⇒ m i n θ ∣ ∣ d − Z θ ∣ ∣ 2 ⇒ θ ^ L S = ( Z T Z ) − 1 Z T d d \in R^N, \quad Z \in R^{N*n}, \quad \theta \in R^n, \quad N > n \\ d = Z \theta \Rightarrow min_\theta ||d-Z \theta||^2 \\ \Rightarrow \hat \theta_{LS} = (Z^TZ)^{-1} Z^T d d∈RN,Z∈RN∗n,θ∈Rn,N>nd=Zθ⇒minθ∣∣d−Zθ∣∣2⇒θ^LS=(ZTZ)−1ZTd
得到的结果就是一个投影。这里面Z是一个瘦长的矩阵
Z ∼ ( ) Z\sim \begin{pmatrix} & \\ &\\ &\\ \end{pmatrix} Z∼⎝⎛⎠⎞
1.3 SVD角度分析
我们也可以从奇异值分解的角度来看待超定最小二乘。
如果Z是列满秩的,我们对Z做奇异值分解有这样的式子
Z = U Λ V T Z = U \Lambda V^T \\ Z=UΛVT
其中
Λ = ( σ 1 . . . σ n 0 ) = ( Λ ~ 0 ) \Lambda = \begin{pmatrix} \sigma_1 & \\ &...\\ &&\sigma_n\\ &0\end{pmatrix} =\begin{pmatrix} \widetilde \Lambda \\ 0 \end{pmatrix} Λ=⎝⎜⎜⎛σ1...0σn⎠⎟⎟⎞=(Λ 0)
因此,最小二乘解可以做这样的变形
ω L S = [ ( V Λ T U T ) ( U Λ V T ) ] − 1 ( V Λ T U T ) d = ( V Λ T ∗ Λ V T ) − 1 ∗ ( V Λ T U T ) d ( a ) \omega_{LS} = [(V \Lambda^TU^T)(U \Lambda V^T)]^{-1} (V \Lambda^TU^T) d \\ =(V\Lambda^T*\Lambda V^T)^{-1}*(V \Lambda^TU^T) d \quad\quad(a) ωLS=[(VΛTUT)(UΛVT)]−1(VΛTUT)d=(VΛT∗ΛVT)−1∗(VΛTUT)d(a)
其中
Λ T Λ = ( Λ ~ 0 ) ∗ ( Λ ~ 0 ) = Λ ~ 2 ( b ) \Lambda^T \Lambda = \begin{pmatrix} \widetilde \Lambda & 0 \end{pmatrix} *\begin{pmatrix} \widetilde \Lambda \\ 0 \end{pmatrix} = \widetilde \Lambda^2 \quad\quad(b) ΛTΛ=(Λ 0)∗(Λ 0)=Λ 2(b)
(b)代入(a)中可得
ω L S = V ∗ ( σ 1 − 2 . . . σ n − 2 ) V T ∗ ( V ( σ 1 . . . 0 σ n ) U T ) d = V ( σ 1 − 1 . . . 0 σ n − 1 ) ∗ U T d = Z + d \omega_{LS} = V* \begin{pmatrix} \sigma_1^{-2} & \\ &...\\ &&\sigma_n^{-2}\\ \end{pmatrix} V^T *(V \begin{pmatrix} \sigma_1 & \\ &...&&0\\ &&\sigma_n\\ \end{pmatrix} U^T) d \\ = V\begin{pmatrix} \sigma_1^{-1} & \\ &...&&0\\ &&\sigma_n^{-1}\\ \end{pmatrix} *U^T d =Z^+d\\ ωLS=V∗⎝⎛σ1−2...σn−2⎠⎞VT∗(V⎝⎛σ1...σn0⎠⎞UT)d=V⎝⎛σ1−1...σn−10⎠⎞∗UTd=Z+d
伪逆使得超定最小二乘问题得到了精确解。伪逆是计算机中计算最小二乘的主要工具,一方面计算量小,另外一方面条件数小,数值计算稳定性好
2. 欠定最小二乘
2.1 概述
一般最小二乘研究的是超定方程问题,现在我们把研究的对象变成欠定问题。欠定方程问题丝毫不比超方程问题要少,但是人们对最小二乘最主要的研究还是主要集中在超定问题上。现在我们来研究欠定最小二乘问题。
欠定方程指的是变量数量大于方程数量的方程。一般来说欠定方程不仅有解,而且有无穷多解。
超定方程是找不到解,我们要做近似。而欠定方程是解太多了,我们要做选择。数据Z是个矮胖的矩阵
N<n Under-determined d = Z θ Z ∼ ( ) θ ∼ ( ) \text{N<n Under-determined} \\ d = Z \theta \\ Z \sim \begin{pmatrix} &&&& \\ & \end{pmatrix} \quad \quad \theta \sim \begin{pmatrix} \\ \\ \\ \\ \end{pmatrix} N<n Under-determinedd=ZθZ∼()θ∼⎝⎜⎜⎛⎠⎟⎟⎞
我们假设Z是一个行满秩的矩阵
2.2 投影角度分析
现在我们想找到一个满足需要的欠定方程的解。因为这是个选择问题,我们就必须要设定好选择的条件。比如模最小、能量最低、最稀疏或者显著分量最小
我们就选择最简单的。这个简单可以从两方面来考虑
- 模最小
- 最稀疏
我们今天设定的条件的模最小。我们想求模最小的估计,同时这个估计要使得欠定方程等式成立。这是一个条件极值问题
d = Z θ Z ⇒ Raw Full-Rank m i n θ ∣ ∣ θ ∣ ∣ 2 s . t . d = Z θ d = Z \theta \quad Z \Rightarrow \text{Raw Full-Rank} \\ min_\theta||\theta||^2 \quad s.t. \quad d = Z \theta d=ZθZ⇒Raw Full-Rankminθ∣∣θ∣∣2s.t.d=Zθ
我们来做这个拉格朗日数乘
L ( θ , λ ) = 1 2 ∣ ∣ θ ∣ ∣ 2 − λ T ( d − Z θ ) = 1 2 θ T θ − λ T ( d − Z θ ) L(\theta,\lambda) = \frac{1}{2} ||\theta||^2 - \lambda^T(d-Z\theta) \\ = \frac{1}{2} \theta^T \theta - \lambda^T(d- Z\theta) L(θ,λ)=21∣∣θ∣∣2−λT(d−Zθ)=21θTθ−λT(d−Zθ)
求梯度
∇ θ L = θ + Z T λ = 0 \nabla_\theta L = \theta +Z^T \lambda =0 ∇θL=θ+ZTλ=0
可得
θ = − Z T λ ( i ) \theta = -Z^T \lambda \quad\quad(i) θ=−ZTλ(i)
把(i)代入条件极值,求λ
L ( λ ) = 1 2 λ T Z Z T λ − λ T ( d + Z Z T λ ) = − 1 2 λ T Z Z T λ − λ T d L(\lambda) = \frac{1}{2} \lambda^T Z Z^T \lambda- \lambda^T(d+ ZZ^T \lambda) \\ =-\frac{1}{2}\lambda^T Z Z^T \lambda-\lambda^Td L(λ)=21λTZZTλ−λT(d+ZZTλ)=−21λTZZTλ−λTd
我们再对λ求梯度
∇ L ( λ ) = − Z Z T λ − d = 0 \nabla L(\lambda) = -ZZ^T \lambda - d = 0 ∇L(λ)=−ZZTλ−d=0
即
λ = − ( Z Z T ) − 1 d ( i i ) \lambda = -(ZZ^T)^{-1}d \quad\quad(ii) λ=−(ZZT)−1d(ii)
把(ii)代入(i)
θ = Z T ( Z Z T ) − 1 d \theta = Z^T(ZZ^T)^{-1}d θ=ZT(ZZT)−1d
可以与超定最小二乘的结果进行比较
θ ^ L S = ( Z T Z ) − 1 Z T d \hat \theta_{LS} = (Z^TZ)^{-1}Z^Td θ^LS=(ZTZ)−1ZTd
我们发现两个式子是有差别的。因为一个是行满秩,一个是列满秩,使得转置和Z的乘积位置不一样,不然没有办法求逆。
2.3 SVD角度分析
虽然在传统的分析角度看不出差别,但是放到SVD的角度来看,二者就是一致的了
Z
=
U
(
Σ
0
)
V
T
Z = U(\Sigma \quad 0) V^T
Z=U(Σ0)VT
Z
T
(
Z
Z
T
)
−
1
=
V
(
Σ
0
)
U
T
(
U
(
Σ
0
)
V
T
∗
V
(
Σ
0
)
U
T
)
−
1
=
V
(
Σ
0
)
U
T
∗
(
U
Σ
2
U
T
)
−
1
=
V
(
Σ
0
)
U
T
∗
U
Σ
−
2
U
T
=
V
(
Σ
−
1
0
)
U
T
=
Z
+
Z^T(ZZ^T)^{-1} = V\begin{pmatrix} \Sigma \\ 0 \end{pmatrix} U^T(U(\Sigma \quad 0) V^T* V \begin{pmatrix} \Sigma \\ 0 \end{pmatrix} U^T)^{-1} \\ = V\begin{pmatrix} \Sigma \\ 0 \end{pmatrix} U^T*(U\Sigma^2U^T)^{-1} = V\begin{pmatrix} \Sigma \\ 0 \end{pmatrix}U^T*U\Sigma^{-2}U^T \\ = V\begin{pmatrix} \Sigma^{-1} \\ 0 \end{pmatrix}U^T = Z^+
ZT(ZZT)−1=V(Σ0)UT(U(Σ0)VT∗V(Σ0)UT)−1=V(Σ0)UT∗(UΣ2UT)−1=V(Σ0)UT∗UΣ−2UT=V(Σ−10)UT=Z+
我们发现得到的其实还是一个伪逆
θ
=
Z
+
d
\theta = Z^+d
θ=Z+d
伪逆对我们理解最小二乘有非常本质的作用
2.4 基于SVD透视欠定最小二乘
奇异值分解其实有透视的问题,让我们能够看到最小二乘的本质在哪里。这个透视是可以分析误差组成及其影响的
我们把这个误差写出来
ϵ m i n = ( d − Z θ ) T ( d − Z θ ) \epsilon_{min} = (d- Z\theta)^T(d-Z \theta) ϵmin=(d−Zθ)T(d−Zθ)
因为我们是最小误差了,根据正交性原理,估计的残差与估计的原材料是正交的,我们可以把误差进行简化
ϵ m i n = d T ( d − Z θ ) \epsilon_{min} = d^T(d-Z \theta) ϵmin=dT(d−Zθ)
我们对误差做SVD,因为矩阵Z是个欠定矩阵,所以是行满秩的
ϵ m i n = d T ( d − U ( Σ 0 ) V T θ ) = d T U ( U T d − ( Σ 0 ) V T θ ) \epsilon_{min} = d^T(d-U(\Sigma \quad 0)V^T \theta) \\ = d^T U(U^Td-(\Sigma \quad 0)V^T \theta) ϵmin=dT(d−U(Σ0)VTθ)=dTU(UTd−(Σ0)VTθ)
我们令
d ~ = U T d θ ~ = V T θ = ( θ ~ 1 θ ~ 2 ) \widetilde d = U^T d \\ \widetilde \theta = V^T \theta = \begin{pmatrix} \widetilde \theta_1 \\ \widetilde \theta_2 \end{pmatrix} d =UTdθ =VTθ=(θ 1θ 2)
误差式子可以变换为
ϵ m i n = d T U ( d ~ − ( Σ 0 ) θ ~ ) = d T U ( d ~ − ( Σ 0 ) ( θ ~ 1 θ ~ 2 ) ) \epsilon_{min} = d^T U(\widetilde d - (\Sigma \quad 0)\widetilde \theta ) \\ = d^T U(\widetilde d - (\Sigma \quad 0) \begin{pmatrix} \widetilde \theta_1 \\ \widetilde \theta_2 \end{pmatrix}) ϵmin=dTU(d −(Σ0)θ )=dTU(d −(Σ0)(θ 1θ 2))
做到这里,我们就可以对我们的误差进行透视了。因为我们是欠定方程,θ会被分成两个部分。在优化中,这两个部分是截然不同的,这里面只有θ1是有作用的
d ~ = Σ θ ~ 1 \widetilde d = \Sigma \widetilde\theta_1 d =Σθ 1
我们可以看到θ2对约束条件成立没有任何作用,因为这个约束条件总是成立的
事实上,θ1是负责约束条件成立的,而θ2是负责欠定方程的优化条件的。比如我们要优化估计的模最小
∣ ∣ θ ∣ ∣ 2 = ∣ ∣ θ ~ ∣ ∣ 2 ||\theta||^2 = ||\widetilde \theta||^2 ∣∣θ∣∣2=∣∣θ ∣∣2
上面这个式子是成立的,因为他们两个之间只不过是相差了一个正交变换。
∣
∣
θ
∣
∣
2
=
∣
∣
θ
~
∣
∣
2
=
∣
∣
θ
~
1
∣
∣
2
+
∣
∣
θ
~
2
∣
∣
2
=
∣
∣
Σ
−
1
d
~
∣
∣
2
+
∣
∣
θ
~
2
∣
∣
2
||\theta||^2 = ||\widetilde \theta||^2 = ||\widetilde \theta_1||^2 +||\widetilde \theta_2||^2 \\ = ||\Sigma^{-1} \widetilde d||^2 + ||\widetilde \theta_2||^2
∣∣θ∣∣2=∣∣θ
∣∣2=∣∣θ
1∣∣2+∣∣θ
2∣∣2=∣∣Σ−1d
∣∣2+∣∣θ
2∣∣2
这里面θ1是没有办法修改的,要想让这个优化条件最小,就只能让θ2归零了
m i n θ ∣ ∣ θ ∣ ∣ 2 ⇒ θ ~ 2 = 0 min_\theta ||\theta||^2 \Rightarrow \widetilde \theta_2 =0 minθ∣∣θ∣∣2⇒θ 2=0
2.5 应用:NLMS(Normalized LMS)
这里我们回顾一个NLMS,归一化自适应滤波,这里面其实我们是有用到欠定最小二乘的
先看LMS
L M S : θ ^ n + 1 = θ ^ n + μ Z ( n ) e ( n ) e ( n ) = d ( n ) − Z T ( n ) θ n LMS: \hat \theta_{n+1} = \hat \theta_n + \mu Z(n) e(n) \\ e(n) = d(n) - Z^T(n) \theta_n LMS:θ^n+1=θ^n+μZ(n)e(n)e(n)=d(n)−ZT(n)θn
LMS虽然非常好用,但是也有显著的缺点。尤其是Z的尺度对LMS的步幅有很大的影响
我们可以看出来,估计的误差e也是与Z有关的。我们假设目标和Z扩大两倍,因为θ是个与尺度无关的量,因此θ不会有任何的变化,最后产生的结果就是误差e扩大了两倍。因为前面还有一个Z,所以步幅其实就是扩大了四倍
2
e
(
n
)
=
2
d
(
n
)
−
2
Z
T
(
n
)
θ
n
2e(n) =2 d(n) - 2Z^T(n) \theta_n
2e(n)=2d(n)−2ZT(n)θn
L
M
S
:
θ
^
n
+
1
=
θ
^
n
+
4
μ
Z
(
n
)
e
(
n
)
LMS: \hat \theta_{n+1} = \hat \theta_n + 4\mu Z(n) e(n) \\
LMS:θ^n+1=θ^n+4μZ(n)e(n)
也可以是看做μ扩大了四倍。这就引入了很大的不确定性。比如自动驾驶中的追踪问题。前面的车的信号不是恒定不变的,而是随着与前面车之间的距离变化的。信号的强度是在不断的发生强弱变化的。我们的追踪器应该消除掉这种强弱变化的影响。
所以有人就觉得LMS应该做归一化,也就是有了NLMS
θ ^ n + 1 = θ ^ n + μ Z ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) \hat \theta_{n+1} = \hat \theta_n + \mu \frac{Z(n)}{||Z(n)||^2} e(n) θ^n+1=θ^n+μ∣∣Z(n)∣∣2Z(n)e(n)
事实上,当我们发现某个因素会受到尺寸因素的影响时,我们总喜欢做归一化。
但是我们这么做其实没有理论支持,手工的痕迹太明显,就是在调参数。
如果我们能够设计一个优化问题,并且最终得到的结果就是NLMS,那么就不是一个简单的调参动作了,而是具有了坚实的理论结果了。这其实是一个逆向思考的问题
Goodwin实现了这个事情,设计出来了这个优化问题,他让θn+1去尽可能逼近θn,并且希望新的估计参数也能满足旧的约束条件。
G o o d w i n ⇒ m i n θ ^ n + 1 ∣ ∣ θ ^ n + 1 − θ ^ n ∣ ∣ 2 s . t . d ( n ) = Z T ( n ) θ ^ n + 1 d ( n ) = ∑ k = 1 n Z ( n , k ) θ ^ n + 1 ( k ) Goodwin \Rightarrow min_{\hat\theta_{n+1}} ||\hat \theta_{n+1}-\hat \theta{n}||^2 \quad s.t. \quad d(n) = Z^T(n) \hat \theta_{n+1} \\ d(n) = \sum_{k=1}^n Z(n,k) \hat \theta_{n+1}(k) Goodwin⇒minθ^n+1∣∣θ^n+1−θ^n∣∣2s.t.d(n)=ZT(n)θ^n+1d(n)=k=1∑nZ(n,k)θ^n+1(k)
我们令
Δ θ ^ n + 1 = θ ^ n + 1 − θ ^ n \Delta \hat \theta_{n+1} = \hat \theta_{n+1} - \hat \theta_n Δθ^n+1=θ^n+1−θ^n
则
Z T ( n ) Δ θ ^ n + 1 = d ( n ) − Z T ( n ) θ ^ n = e ( n ) Z^T(n)\Delta \hat \theta_{n+1} = d(n) - Z^T(n) \hat \theta_n = e(n) ZT(n)Δθ^n+1=d(n)−ZT(n)θ^n=e(n)
我们可以发现,这就是个欠定最小二乘问题,因为方程就一个,但是未知数却很多。并且限定条件是模最小
m i n θ ^ n + 1 ∣ ∣ Δ θ ^ n + 1 ∣ ∣ 2 s . t . Z T ( n ) Δ θ ^ n + 1 = e ( n ) min_{\hat\theta_{n+1}} ||\Delta \hat \theta_{n+1}||^2 \quad s.t. \quad Z^T(n)\Delta \hat \theta_{n+1} = e(n) minθ^n+1∣∣Δθ^n+1∣∣2s.t.ZT(n)Δθ^n+1=e(n)
我们代入欠定最小二乘的结果
Δ θ ^ n + 1 = Z ( n ) ( Z T ( n ) Z ( n ) ) − 1 e ( n ) = Z ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) θ ^ n + 1 − θ ^ n = Z ( n ) ∣ ∣ Z ( n ) ∣ ∣ 2 e ( n ) \Delta \hat \theta_{n+1} = Z(n)(Z^T(n)Z(n))^{-1}e(n) \\ = \frac{Z(n)}{||Z(n)||^2} e(n) \\ \hat \theta_{n+1} - \hat \theta_n = \frac{Z(n)}{||Z(n)||^2} e(n) Δθ^n+1=Z(n)(ZT(n)Z(n))−1e(n)=∣∣Z(n)∣∣2Z(n)e(n)θ^n+1−θ^n=∣∣Z(n)∣∣2Z(n)e(n)
我们发现,在这个优化下得到的确实就是归一化的LMS。
3. QR分解与最小二乘
3.1 概述
我们对最小二乘的认识其实已经有两个视角了,一个视角是传统的视觉,另外一个视角是伪逆的视角。下面我们将从第三个视角,也就是QR分解的视角去看待最小二乘。
QR Decomposition Z ∈ R N ∗ n ( N > n ) Z = Q R Q ∈ R N ∗ N Q T Q = Q Q T = I R ∈ R N ∗ n Upper Triangle \text{QR Decomposition} \\ Z \in R^{N*n} (N>n) Z = QR \quad Q \in R^{N*N} \quad Q^TQ = QQ^T = I \\ R \in R^{N*n} \text{ Upper Triangle} QR DecompositionZ∈RN∗n(N>n)Z=QRQ∈RN∗NQTQ=QQT=IR∈RN∗n Upper Triangle
3.2 基于QR分解透视超定最小二乘
QR分解对理解最小二乘非常有用。我们刚才使用SVD透视了欠定的最小二乘,现在我们要用QR分解透视超定的最小二乘了
ϵ = ∣ ∣ d − Z θ ∣ ∣ 2 = ∣ ∣ d − Q R θ ∣ ∣ 2 = ∣ ∣ Q ( Q T d − R θ ) ∣ ∣ 2 = ∣ ∣ Q T d − R θ ∣ ∣ 2 \epsilon = || d- Z\theta ||^2 = ||d-QR\theta||^2 = ||Q(Q^Td-R\theta)||^2 =||Q^Td-R\theta||^2 ϵ=∣∣d−Zθ∣∣2=∣∣d−QRθ∣∣2=∣∣Q(QTd−Rθ)∣∣2=∣∣QTd−Rθ∣∣2
令
d ~ = Q T d R = ( ∇ 0 ) d ~ = ( d ~ 1 d ~ 2 ) \widetilde d = Q^T d \\ R = \begin{pmatrix} \nabla \\ 0 \end{pmatrix} \\ \widetilde d = \begin{pmatrix} \widetilde d_1 \\ \widetilde d_2 \end{pmatrix} d =QTdR=(∇0)d =(d 1d 2)
则
ϵ = ∣ ∣ Q T d − R θ ∣ ∣ 2 = ∣ ∣ Q T d − ( ∇ 0 ) θ ∣ ∣ 2 = ∣ ∣ ( d ~ 1 d ~ 2 ) − ( ∇ 0 ) θ ∣ ∣ 2 = ∣ ∣ ( d ~ 1 d ~ 2 ) − ( ∇ ∗ θ 0 ) ∣ ∣ 2 = ∣ ∣ d ~ 1 − ∇ ∗ θ ∣ ∣ 2 + ∣ ∣ d ~ 2 ∣ ∣ 2 \epsilon = ||Q^Td-R\theta||^2 = ||Q^T d - \begin{pmatrix} \nabla \\ 0 \end{pmatrix}\theta||^2 \\ = ||\begin{pmatrix} \widetilde d_1 \\ \widetilde d_2 \end{pmatrix} - \begin{pmatrix} \nabla \\ 0 \end{pmatrix}\theta||^2 \\ = ||\begin{pmatrix} \widetilde d_1 \\ \widetilde d_2 \end{pmatrix} - \begin{pmatrix} \nabla *\theta \\ 0 \end{pmatrix}||^2 \\ = ||\widetilde d_1 - \nabla *\theta||^2 + ||\widetilde d_2||^2 ϵ=∣∣QTd−Rθ∣∣2=∣∣QTd−(∇0)θ∣∣2=∣∣(d 1d 2)−(∇0)θ∣∣2=∣∣(d 1d 2)−(∇∗θ0)∣∣2=∣∣d 1−∇∗θ∣∣2+∣∣d 2∣∣2
通过QR分解的透视,我们发现误差可以分为前后两部分。前面那一部分,我们可以通过调整θ,然后令第一项等于0。但是无论θ怎么调整,我们都影响不到第二项。因此超定最小二乘一般来说是等号不成立的。可以说第二部分就是内在误差,也就是不能消掉的误差。因此,通过近似计算,其实我们可以得到这样的结果
θ = ∇ + d ~ 1 \theta = \nabla^+ \widetilde d_1 θ=∇+d 1
3.3 基于QR分解实现数值稳定的上三角化
3.3.1 高斯消元中的不稳定性
其实提到上三角化,最常见的就是高斯消去(高斯-若尔当消元法)
我们在做高斯消去的时候,如果第一个元素是0的话,我们还要通过行变换进行更改。我们找的主元应该尽可能小,不然后面消去的时候会乘以主元的倒数。
高斯消去虽然比较简单,但是有很大的问题,就是数值稳定性不好,因为每次计算不能保证每次计算的主元大小。
因此,我们就有这样的希望,能不能做正交化的对角化,使得变化前后并不影响每个列向量的模。
这里介绍两种方法
- HouseHolder Reflection
- Givens Rotation
3.2.2 HouseHolder Reflection
(1)反射
Householder 反射每次把矩阵的一列变成上三角矩阵应该有的样子,并且通过不断的减少反射矩阵的维度,保证不会修改前面已经变换完成的量。并且每一次变换都是正交变换,然后经过n次正交变换以后得到上三角矩阵
所谓反射,其实就是找到一个轴,将一个矢量对这个轴做镜像
具体的思路就是,先将矢量在这个轴上做投影,但是投影延长一倍,再做减法,就可以得到反射矢量
Householder Reflection P r o j u x ⇒ 2 P r o j u x − x \text{Householder Reflection} Proj_u x \Rightarrow 2Proj_u x - x Householder ReflectionProjux⇒2Projux−x
我们来表示一下这个投影,我们认为选择的轴的方向向量u是个单位向量
P r o j u x = u ( u T u ) − 1 u T x = u u T x ∣ ∣ u ∣ ∣ = 1 Proj_u x = u(u^Tu)^{-1} u^T x \\ = u u^T x \\ ||u|| = 1 Projux=u(uTu)−1uTx=uuTx∣∣u∣∣=1
表示一下反射变换
2 P r o j u x − x = 2 u u T x − x = ( 2 u u T − I ) x 2Proj_u x - x = 2u u^Tx -x \\ = (2uu^T - I)x 2Projux−x=2uuTx−x=(2uuT−I)x
因此,我们可以得到一个反射矩阵
H = 2 u u T − I H = 2uu^T - I H=2uuT−I
(2)反射矩阵
我们研究一下得到的反射矩阵的性质
- 对称性
H T = H H^T = H HT=H
- 正交性
这个反射矩阵一定是正交的
( 2 u u T − I ) T ( 2 u u T − I ) = ( 2 u u T − I ) ∗ ( 2 u u T − I ) = 4 u u T u u T − 2 u u T − 2 u u T + I = 4 u u T − − 2 u u T − 2 u u T + I = I (2uu^T - I)^T(2uu^T - I) = (2uu^T - I)*(2uu^T - I) \\ = 4uu^Tuu^T - 2uu^T - 2uu^T +I \\ = 4uu^T - - 2uu^T - 2uu^T +I = I (2uuT−I)T(2uuT−I)=(2uuT−I)∗(2uuT−I)=4uuTuuT−2uuT−2uuT+I=4uuT−−2uuT−2uuT+I=I
H T H = H H T = I H^TH = HH^T = I HTH=HHT=I
- 幂等性
一个矢量反射两次就是它本身
H 2 = I H^2 = I H2=I
(3)上三角化
下面我们来用householder反射来做正交的上三角化,解决消去问题
我们想通过反射达到这样的效果
H ( x 1 . . . . . . x k ) = ( ∗ 0 . . . 0 ) H\begin{pmatrix} x_1 \\ ... \\ ...\\ x_k \end{pmatrix} =\begin{pmatrix} * \\ 0 \\ ...\\ 0 \end{pmatrix} H⎝⎜⎜⎛x1......xk⎠⎟⎟⎞=⎝⎜⎜⎛∗0...0⎠⎟⎟⎞
因为反射变换不影响矢量的模,所以
∗ = ( x 1 2 + . . . + x k 2 ) 1 2 {*} = (x_1^2+...+x_k^2)^{\frac{1}{2}} ∗=(x12+...+xk2)21
我们想计算出这个反射矩阵。我们首先就要找到反射轴。
反射轴其实就是矢量+反射的矢量
u ′ = ( x 1 . . . . . . x k ) + ( ∣ ∣ x ∣ ∣ 0 . . . 0 ) u = u ′ ∣ ∣ u ′ ∣ ∣ u' = \begin{pmatrix} x_1 \\ ... \\ ...\\ x_k \end{pmatrix} +\begin{pmatrix} ||x|| \\ 0 \\ ...\\ 0 \end{pmatrix} \\ u = \frac{u'}{||u'||} u′=⎝⎜⎜⎛x1......xk⎠⎟⎟⎞+⎝⎜⎜⎛∣∣x∣∣0...0⎠⎟⎟⎞u=∣∣u′∣∣u′
然后通过反射矩阵公式即可以得到反射矩阵H
H = 2 u u T − I H = 2uu^T - I H=2uuT−I
我们发现在householder反射使得正交上三角化变得简单了。不过还有其他问题。因为我们不仅要搞第一列,还要搞第二列,并且搞第二列的时候第一列不能变化。
H 1 ( ∗ ) = ( ∗ 0 . . . ∗ . . . 0 ) H 2 ( ∗ 0 . . . ∗ . . . 0 ) = ( ∗ ∗ 0 ∗ . . . 0 ∗ . . . . . . 0 0 ) H_1 \begin{pmatrix} * \\ \end{pmatrix} = \begin{pmatrix} * &&&&\\ 0 &&&&\\ ...&&*&&\\ ...&&&&\\ 0&&&& \end{pmatrix} \\ H_2 \begin{pmatrix} * &&&&\\ 0 &&&&\\ ...&&*&&\\ ...&&&&\\ 0&&&& \end{pmatrix} = \begin{pmatrix} * &*&&&\\ 0 &*&&&\\ ...&0&&*&\\ ...&...&&&\\ 0&0&&& \end{pmatrix} H1(∗)=⎝⎜⎜⎜⎜⎛∗0......0∗⎠⎟⎟⎟⎟⎞H2⎝⎜⎜⎜⎜⎛∗0......0∗⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛∗0......0∗∗0...0∗⎠⎟⎟⎟⎟⎞
这里有个小技巧,我们使用少一阶的反射矩阵就行
(
1
0
0
H
2
)
(
∗
0
.
.
.
∗
.
.
.
0
)
=
(
∗
∗
0
∗
.
.
.
0
∗
.
.
.
.
.
.
0
0
)
\begin{pmatrix} 1&0\\ 0&H_2 \end{pmatrix} \begin{pmatrix} * &&&&\\ 0 &&&&\\ ...&&*&&\\ ...&&&&\\ 0&&&& \end{pmatrix} = \begin{pmatrix} * &*&&&\\ 0 &*&&&\\ ...&0&&*&\\ ...&...&&&\\ 0&0&&& \end{pmatrix}
(100H2)⎝⎜⎜⎜⎜⎛∗0......0∗⎠⎟⎟⎟⎟⎞=⎝⎜⎜⎜⎜⎛∗0......0∗∗0...0∗⎠⎟⎟⎟⎟⎞
一直这样变换下去,最终就能得到上三角矩阵
但是householder反射进行正交上三角化的问题在于,一改就是一列,像机关枪一样,只能扫射。
3.2.3 Givens Rotation
第二种方法叫做Givens Rotation,就类似于精准狙击了,能把指定位置变成0
( x 1 x 2 ) → ( x 1 2 + x 2 2 0 ) \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} \rightarrow \begin{pmatrix} \sqrt{x_1^2+x_2^2} \\ 0 \end{pmatrix} (x1x2)→(x12+x220)
通过矩阵旋转的方式能够做到这个样子
( c o s θ − s i n θ s i n θ c o s θ ) ∗ ( x 1 x 2 ) = ( x 1 2 + x 2 2 0 ) \begin{pmatrix} cos \theta& -sin \theta \\ sin \theta & cos \theta \end{pmatrix}* \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} =\begin{pmatrix} \sqrt{x_1^2+x_2^2} \\ 0 \end{pmatrix} (cosθsinθ−sinθcosθ)∗(x1x2)=(x12+x220)
其中
x 1 s i n θ + x 2 c o s θ = 0 ⇒ θ = t a n − 1 ( − x 2 x 1 ) x_1 sin \theta + x_2 cos \theta = 0 \\ \Rightarrow \theta = tan^{-1}(-\frac{x_2}{x_1}) x1sinθ+x2cosθ=0⇒θ=tan−1(−x1x2)
如果我们想让第i行,第j列的元素归零怎么办
( x i j ) \begin{pmatrix} &&&&\\ &&&&\\ &&x_{ij}&&\\ &&&&\\ &&&& \end{pmatrix} ⎝⎜⎜⎜⎜⎛xij⎠⎟⎟⎟⎟⎞
Givens Rotation一定要选择两个元素进行操作,另外一个元素一般会选在对角线上
最终会有这样的一个式子。旋转矩阵的样子为,对角线都是1,其他地方都是0,在i和j的位置上放置旋转量
这个旋转矩阵只会对第i行和第j行产生影响。由于在连续旋转的时候,操作数字左边的部分都已经归零了,所以旋转操作不会影响前面已经修改好了的部分,只会影响后面的部分。
3.3 QR分解与递归最小二乘
在了解了householder reflection和givens rotation之后,我们要从一个全新的角度看待递归最小二乘
RLS θ n = ϕ − 1 ( n ) Z ( n ) ϕ ( n ) = ∑ k = 1 n z ( n ) z T ( n ) Z ( n ) = ∑ k = 1 n z ( n ) d ( n ) \text{RLS} \\ \theta_n = \phi^{-1}(n)Z(n) \\ \phi(n) = \sum_{k=1}^n z(n)z^T(n) \\ Z(n) = \sum_{k=1}^n z(n)d(n) RLSθn=ϕ−1(n)Z(n)ϕ(n)=k=1∑nz(n)zT(n)Z(n)=k=1∑nz(n)d(n)
我们希望能够通过低阶逆递推构造高阶的逆
ϕ − 1 ( n ) → ϕ − 1 ( n + 1 ) \phi^{-1}(n) \rightarrow \phi^{-1}(n+1) ϕ−1(n)→ϕ−1(n+1)
在以前的求解中,我们是使用矩阵求逆公式做的
ϕ − 1 ( n ) → ϕ − 1 ( n + 1 ) = ( ϕ ( n ) + z ( n + 1 ) z T ( n + 1 ) ) − 1 \phi^{-1}(n) \rightarrow \phi^{-1}(n+1) = (\phi(n) + z(n+1)z^T(n+1))^{-1} ϕ−1(n)→ϕ−1(n+1)=(ϕ(n)+z(n+1)zT(n+1))−1
现在我们要从QR分解的角度看待递归最小二乘
D ( N ) = ( d ( 1 ) , . . , d ( N ) ) ) T ∈ R N Z ~ ( N ) = ( z T ( 1 ) . . . z T ( N ) ) ∈ R N ∗ n D(N) = (d(1),..,d(N)))^T \in R^N \\ \widetilde Z(N) = \begin{pmatrix} z^T(1) \\ ... \\ z^T(N) \end{pmatrix} \in R^{N*n} D(N)=(d(1),..,d(N)))T∈RNZ (N)=⎝⎛zT(1)...zT(N)⎠⎞∈RN∗n
我们对优化条件做QR分解
m i n θ ∣ ∣ D ( N ) − Z ~ ( N ) θ ∣ ∣ 2 = m i n θ ∣ ∣ D ( N ) − Q N R θ ∣ ∣ 2 = m i n θ ∣ ∣ Q N ( Q N T D ( N ) − R θ ) ∣ ∣ 2 = m i n θ ∣ ∣ Q N T D ( N ) − R θ ∣ ∣ 2 = m i n θ ∣ ∣ Q N T D ( N ) − ( ∇ N 0 ) θ ∣ ∣ 2 min_\theta ||D(N) - \widetilde Z(N) \theta ||^2 \\ = min_\theta ||D(N) - Q_N R \theta ||^2 \\ = min_\theta ||Q_N(Q_N^TD(N) -R \theta )||^2 \\ = min_\theta ||Q_N^TD(N) -R \theta||^2 \\ =min_\theta ||Q_N^TD(N) -\begin{pmatrix} \nabla_N \\ 0 \\ \end{pmatrix} \theta||^2 minθ∣∣D(N)−Z (N)θ∣∣2=minθ∣∣D(N)−QNRθ∣∣2=minθ∣∣QN(QNTD(N)−Rθ)∣∣2=minθ∣∣QNTD(N)−Rθ∣∣2=minθ∣∣QNTD(N)−(∇N0)θ∣∣2
其中
Z ~ ( N ) = Q N ( ∇ N 0 ) \widetilde Z(N) = Q_N \begin{pmatrix} \nabla_N \\ 0 \\ \end{pmatrix} Z (N)=QN(∇N0)
我们发现Z(N)是与θ和上三角阵有关的,我们只要找到θ的递推式和上三角阵有关的递推式,我们就能够找到Z的递推式
L S ⇔ O b t a t i o n i n g ( Q N , ∇ N ) ( Q N , ∇ N ) → ( Q N + 1 , ∇ N + 1 ) LS \Leftrightarrow Obtationing(Q_N,\nabla_N) \\ (Q_N,\nabla_N) \rightarrow (Q_{N+1},\nabla_{N+1}) LS⇔Obtationing(QN,∇N)(QN,∇N)→(QN+1,∇N+1)
Z ~ ( N + 1 ) = ( z 1 T ( 1 ) . . . z T ( N + 1 ) ) = ( Z ~ ( N ) z T ( N + 1 ) ) \widetilde Z(N+1) =\begin{pmatrix} z_1^T(1) \\ ... \\ z^T(N+1) \end{pmatrix} =\begin{pmatrix} \widetilde Z(N) \\ \\ z^T(N+1) \end{pmatrix} Z (N+1)=⎝⎛z1T(1)...zT(N+1)⎠⎞=⎝⎛Z (N)zT(N+1)⎠⎞
N+1数据矩阵是在N数据矩阵的前提下加了一行
左乘一个矩阵
( Q N 0 0 1 ) Z ~ ( N + 1 ) = ( Q N 0 0 1 ) ∗ ( Z ~ ( N ) z T ( N + 1 ) ) = ( ∇ N 0 z T ( N + 1 ) ) \begin{pmatrix} Q_N& 0 \\ 0&1\\ \end{pmatrix} \widetilde Z(N+1) \\ =\begin{pmatrix} Q_N& 0 \\ 0&1\\ \end{pmatrix} * \begin{pmatrix} \widetilde Z(N) \\ \\ z^T(N+1) \end{pmatrix} =\begin{pmatrix} \nabla_N \\ 0 \\ z^T(N+1) \end{pmatrix} (QN001)Z (N+1)=(QN001)∗⎝⎛Z (N)zT(N+1)⎠⎞=⎝⎛∇N0zT(N+1)⎠⎞
现在相当于在原来的上三角矩阵下面,多了一行,我们希望把最后一行的数字给消掉。其实我们就可以使用Givens Rotation的方法去做,每次消掉一个数,然后不断乘旋转矩阵,最后就能使得最后一行消失
G n ( N + 1 ) ∗ . . . ∗ G 3 ( N + 1 ) G 2 ( N + 1 ) G 1 ( N + 1 ) ( Q N 0 0 1 ) ∗ ( Z ~ ( N ) z T ( N + 1 ) ) = ( ∇ N + 1 0 ) G_n^{(N+1)}*...*G_3^{(N+1)}G_2^{(N+1)}G_1^{(N+1)}\begin{pmatrix} Q_N& 0 \\ 0&1\\ \end{pmatrix} * \begin{pmatrix} \widetilde Z(N) \\ \\ z^T(N+1) \end{pmatrix} = \begin{pmatrix} \nabla_{N+1} \\ 0 \\ \end{pmatrix} Gn(N+1)∗...∗G3(N+1)G2(N+1)G1(N+1)(QN001)∗⎝⎛Z (N)zT(N+1)⎠⎞=(∇N+10)
然后我们就可以得到上三角阵的递推,而左边这部分式子,其实就是Q的递推
Q N + 1 = G n ( N + 1 ) ∗ . . . ∗ G 3 ( N + 1 ) G 2 ( N + 1 ) G 1 ( N + 1 ) ( Q N 0 0 1 ) Q_{N+1} =G_n^{(N+1)}*...*G_3^{(N+1)}G_2^{(N+1)}G_1^{(N+1)}\begin{pmatrix} Q_N& 0 \\ 0&1\\ \end{pmatrix} QN+1=Gn(N+1)∗...∗G3(N+1)G2(N+1)G1(N+1)(QN001)
Q N + 1 Z ~ ( N + 1 ) = ( ∇ N + 1 0 ) Q_{N+1} \widetilde Z(N+1) = \begin{pmatrix} \nabla_{N+1} \\ 0 \\ \end{pmatrix} QN+1Z (N+1)=(∇N+10)
我们得到了基于QR分解的递归最小二乘。这个递归最小二乘在芯片里面用的最多。原来的那个更像卡尔曼滤波,在跟踪问题中用的比较多
4. 小结
现在,我们对最小二乘有了更多维度的认识。从一开始的传统的投影的角度,到SVD的伪逆的角度,最后我们又接触了QR分解的角度。