【现代信号处理】 13 - 深入探讨最小二乘

深入探讨最小二乘

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 dRN,ZRNn,θRn,N>nd=ZθminθdZθ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σ12...σn2VT(Vσ1...σn0UT)d=Vσ11...σn10UTd=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θZRaw 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(dZθ)=21θTθλT(dZθ)

  求梯度

∇ θ 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)VTV(Σ0)UT)1=V(Σ0)UT(UΣ2UT)1=V(Σ0)UTUΣ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=(dZθ)T(dZθ)

  因为我们是最小误差了,根据正交性原理,估计的残差与估计的原材料是正交的,我们可以把误差进行简化

ϵ m i n = d T ( d − Z θ ) \epsilon_{min} = d^T(d-Z \theta) ϵmin=dT(dZθ)

  我们对误差做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(dU(Σ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=θ 12+θ 22=Σ1d 2+θ 22

  这里面θ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) Goodwinminθ^n+1θ^n+1θ^n2s.t.d(n)=ZT(n)θ^n+1d(n)=k=1nZ(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+12s.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 DecompositionZRNn(N>n)Z=QRQRNNQTQ=QQT=IRRNn 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 ϵ=dZθ2=dQRθ2=Q(QTdRθ)2=QTdRθ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 ϵ=QTdRθ2=QTd(0)θ2=(d 1d 2)(0)θ2=(d 1d 2)(θ0)2=d 1θ2+d 22

  通过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 ReflectionProjux2Projuxx

  我们来表示一下这个投影,我们认为选择的轴的方向向量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=uuTxu=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 2Projuxx=2uuTxx=(2uuTI)x

  因此,我们可以得到一个反射矩阵

H = 2 u u T − I H = 2uu^T - I H=2uuTI

(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 (2uuTI)T(2uuTI)=(2uuTI)(2uuTI)=4uuTuuT2uuT2uuT+I=4uuT2uuT2uuT+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} Hx1......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+x0...0u=uu

  然后通过反射矩阵公式即可以得到反射矩阵H

H = 2 u u T − I H = 2uu^T - I H=2uuTI

  我们发现在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......0H20......0=0......00...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......00...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+x22 0)

  通过矩阵旋转的方式能够做到这个样子

( 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+x22 0)

  其中

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θ=tan1(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=1nz(n)zT(n)Z(n)=k=1nz(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)))TRNZ (N)=zT(1)...zT(N)RNn

  我们对优化条件做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}) LSObtationing(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分解的角度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值