本文学习过程来源是《矩阵分析与应用-张贤达》一书. 可以通过 z-lib 下载.
G i v e n s \mathrm{Givens} Givens 旋转也可以用来计算 Q R \mathrm{QR} QR 分解. 这里以 4 × 3 4 \times 3 4×3 矩阵为例, 说明 G i v e n s Q R \mathrm{Givens \ QR} Givens QR 分解的思想.
[ × × × × × × ⊗ × × ⊗ × × ] ⟶ G ( 3 , 4 ) [ × × × ⊗ × × ⊗ × × 0 × × ] ⟶ G ( 2 , 3 ) [ ⊗ × × ⊗ × × 0 × × 0 × × ] ⟶ G ( 1 , 2 ) [ × × × 0 × × 0 ⊗ × 0 ⊗ × ] ⟶ G ( 3 , 4 ) [ × × × 0 ⊗ × 0 ⊗ × 0 0 × ] ⟶ G ( 2 , 3 ) [ × × × 0 × × 0 0 ⊗ 0 0 ⊗ ] ⟶ G ( 3 , 4 ) [ × × × 0 × × 0 0 × 0 0 0 ] \begin{aligned} & \begin{bmatrix} \times & \times & \times \\ \times & \times & \times \\ \otimes & \times & \times\\ \otimes & \times & \times \end{bmatrix} \overset{G(3,4)}{\longrightarrow} \begin{bmatrix} \times & \times & \times \\ \otimes & \times & \times \\ \otimes & \times & \times\\ 0 & \times & \times \end{bmatrix} \overset{G(2,3)}{\longrightarrow} \begin{bmatrix} \otimes & \times & \times \\ \otimes & \times & \times \\ 0 & \times & \times\\ 0 & \times & \times \end{bmatrix} \overset{G(1,2)}{\longrightarrow} \begin{bmatrix} \times & \times & \times \\ 0 & \times & \times \\ 0 & \otimes & \times\\ 0 & \otimes & \times \end{bmatrix} \overset{G(3,4)}{\longrightarrow} \\ & \begin{bmatrix} \times & \times & \times \\ 0 & \otimes & \times \\ 0 & \otimes & \times\\ 0 & 0 & \times \end{bmatrix} \overset{G(2,3)}{\longrightarrow} \begin{bmatrix} \times & \times & \times \\ 0 & \times & \times \\ 0 & 0 & \otimes\\ 0 & 0 & \otimes \end{bmatrix} \overset{G(3,4)}{\longrightarrow} \begin{bmatrix} \times & \times & \times \\ 0 & \times & \times \\ 0 & 0 & \times\\ 0 & 0 & 0 \end{bmatrix} \end{aligned} ⎣⎢⎢⎡××⊗⊗××××××××⎦⎥⎥⎤⟶G(3,4)⎣⎢⎢⎡×⊗⊗0××××××××⎦⎥⎥⎤⟶G(2,3)⎣⎢⎢⎡⊗⊗00××××××××⎦⎥⎥⎤⟶G(1,2)⎣⎢⎢⎡×000××⊗⊗××××⎦⎥⎥⎤⟶G(3,4)⎣⎢⎢⎡×000×⊗⊗0××××⎦⎥⎥⎤⟶G(2,3)⎣⎢⎢⎡×000××00××⊗⊗⎦⎥⎥⎤⟶G(3,4)⎣⎢⎢⎡×000××00×××0⎦⎥⎥⎤
其中 ⊗ \otimes ⊗ 代表用 G i v e n s \mathrm{Givens} Givens 旋转进行变换的元素. 变换过程就是乘以箭头上用 G ( i , j ) G(i,j) G(i,j) 表示的 G i v e n s \mathrm{Givens} Givens 矩阵.
从上述说明中易得出结论: 如果令 G j G_j Gj 代表约化过程中的第 j j j 次 G i v e n s \mathrm{Givens} Givens 旋转, 则 Q T A = R Q^{\mathrm{T}}A=R QTA=R 是上三角矩阵, 其中, Q = G t G t − 1 ⋯ G 1 Q = G_tG_{t-1} \cdots G_1 Q=GtGt−1⋯G1, 而 t t t 是总的旋转次数.
归根到底还是为了解方程, 不论是有解还是最小二乘法, Q R \mathrm{QR} QR 分解都是一个不错的选择.
系统辨识问题的提法是: 已知系统输入 x ( k ) x(k) x(k) 和输出观测值 y ( k ) y(k) y(k), 其中, k = 1 , 2 , ⋯ , n k = 1,2,\cdots,n k=1,2,⋯,n 估计系统参数向量 θ \theta θ. 在时变系统的辨识中, 则要求在已估计 n n n 时刻的系统参数向量 θ n \theta_n θn 的情况下, 使用增加的 x ( n + 1 ) , y ( n + 1 ) x(n+1),y(n+1) x(n+1),y(n+1) 值, 通过简单的运算, 递推出 n + 1 n + 1 n+1 时刻的系统参数向量 θ n + 1 \theta_{n+1} θn+1. n n n 时刻的系统辨识问题可以化为最小二乘问题.
看起来有点像预测方面的问题.
min θ n ∥ A n θ n − y n ∥ 2 2 (1) \min_{\theta_n} \lVert A_n\theta_n - y_n \rVert^2_2 \tag{1} θnmin∥Anθn−yn∥22(1)
求解, 并且其解由 “法方程”
A n T A n θ n = A n T y n 或 者 R x x θ n = r n (2) A_n^{\mathrm{T}}A_n\theta_n = A_n^{\mathrm{T}}y_n \ 或者 \ R_{xx}\theta_n = r_n \tag{2} AnTAnθn=AnTyn 或者 Rxxθn=rn(2)
确定. 式中, R x x = A n T A n R_{xx} = A_n^{\mathrm{T}}A_n Rxx=AnTAn 代表系统输入 x ( k ) x(k) x(k) 的协方差矩阵, r n = A n T y n r_n = A_n^{\mathrm{T}}y_n rn=AnTyn.
之间求解式 (2) 的方法叫做协方差方法.
引理 1: 若 A n = Q n [ R n O ] , Q n T y n = [ y ˉ n y ~ n ] A_n = Q_n \begin{bmatrix} R_n\\ O\end{bmatrix}, Q_n^{\mathrm{T}}y_n= \begin{bmatrix} \bar{y}_n\\ \tilde{y}_n \end{bmatrix} An=Qn[RnO],QnTyn=[yˉny~n], 其中, Q n Q_n Qn 是正交矩阵, R n R_n Rn 是上三角矩阵. 故有
θ n + 1 = arg min θ ∥ A n + 1 θ − y n + 1 ∥ 2 2 = arg min θ ∥ [ λ R n x n + 1 T ] θ − [ λ y ˉ n y ( n + 1 ) ] ∥ 2 2 (3) \begin{aligned} \theta_{n+1} &= \argmin_\theta \lVert A_{n+1}\theta - y_{n+1} \rVert^2_2 &= \argmin_\theta \bigg \lVert \begin{bmatrix} \lambda R_n\\ x_{n+1}^{\mathrm{T}}\end{bmatrix}\theta - \begin{bmatrix} \lambda \bar{y}_n\\ y(n+1)\end{bmatrix} \bigg \rVert^2_2 \end{aligned} \tag{3} θn+1=θargmin∥An+1θ−yn+1∥22=θargmin∥∥∥∥[λRnxn+1T]θ−[λyˉny(n+1)]∥∥∥∥22(3)
算法 1: 系统参数的自适应估计算法
Step 1 : 对矩阵 R ˉ = [ λ R n x n + 1 T ] \bar{R} = \begin{bmatrix} \lambda R_n\\ x_{n+1}^{\mathrm{T}}\end{bmatrix} Rˉ=[λRnxn+1T] 进行 Q R \mathrm{QR} QR 分解, 得到
Q n + 1 T R ˉ = Q n + 1 T [ λ R n x n + 1 T ] = [ R n + 1 O ] (4) Q_{n+1}^{\mathrm{T}} \bar{R} = Q_{n+1}^{\mathrm{T}}\begin{bmatrix} \lambda R_n\\ x_{n+1}^{\mathrm{T}}\end{bmatrix} = \begin{bmatrix} R_{n+1}\\ O\end{bmatrix} \tag{4} Qn+1TRˉ=Qn+1T[λRnxn+1T]=[Rn+1O](4)
式子中, Q n + 1 Q_{n+1} Qn+1 是 ( n + 1 ) × ( n + 1 ) (n+1) \times (n+1) (n+1)×(n+1) 正交矩阵, R n + 1 R_{n+1} Rn+1 为 ( p + 1 ) × ( p + 1 ) (p+1) \times (p+1) (p+1)×(p+1) 上三角矩阵, 且 O O O 是 ( n − p ) × ( p + 1 ) (n-p) \times (p+1) (n−p)×(p+1) 零矩阵.
Step 2 : 进行分块运算
Q n + 1 T y n + 1 = [ y ˉ n + 1 y ~ n + 1 ] Q_{n+1}^{\mathrm{T}}y_{n+1} = \begin{bmatrix} \bar{y}_{n+1} \\ \tilde{y}_{n+1}\end{bmatrix} Qn+1Tyn+1=[yˉn+1y~n+1]
其中, y ˉ n + 1 \bar{y}_{n+1} yˉn+1 为 ( p + 1 ) × 1 (p+1) \times 1 (p+1)×1 向量, y ~ n + 1 \tilde{y}_{n+1} y~n+1 为 ( n − p ) × 1 (n-p) \times 1 (n−p)×1 向量
Step 3 : 求解三角矩阵方程 R n + 1 θ n + 1 = y ˉ n + 1 R_{n+1}\theta_{n+1} = \bar{y}_{n+1} Rn+1θn+1=yˉn+1 得到 θ n + 1 \theta_{n+1} θn+1
考查 n × ( p + 1 ) n \times (p+1) n×(p+1) 矩阵
A n = [ a 11 a 12 ⋯ a 1 , p + 1 a 21 a 22 ⋯ a 2 , p + 1 ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n , p + 1 ] A_n = \begin{bmatrix} a_{11}& a_{12}& \cdots& a_{1,p+1}\\ a_{21}& a_{22}& \cdots& a_{2,p+1}\\ \vdots& \vdots& &\vdots \\ a_{n1}& a_{n2}& \cdots& a_{n,p+1} \end{bmatrix} An=⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋯a1,p+1a2,p+1⋮an,p+1⎦⎥⎥⎥⎤
的 H o u s e h o l d e r Q R \mathrm{Householder \ QR} Householder QR 分解, 即
H n A n = [ a 11 ∗ a 12 ∗ ⋯ a 1 , p + 1 ∗ 0 a 22 ∗ ⋯ a 2 , p + 1 ∗ ⋮ ⋮ ⋮ 0 0 ⋯ a p + 1 , p + 1 ∗ 0 0 ⋯ 0 ⋮ ⋮ ⋮ 0 0 ⋯ 0 ] (5) H_nA_n = \begin{bmatrix} a_{11}^*& a_{12}^*& \cdots& a_{1,p+1}^*\\ 0& a_{22}^*& \cdots& a_{2,p+1}^*\\ \vdots& \vdots& &\vdots \\ 0 & 0 & \cdots & a_{p+1,p+1}^*\\ 0 & 0 & \cdots & 0\\ \vdots& \vdots& &\vdots \\ 0 & 0 & \cdots & 0\\ \end{bmatrix} \tag{5} HnAn=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡a11∗0⋮00⋮0a12∗a22∗⋮00⋮0⋯⋯⋯⋯⋯a1,p+1∗a2,p+1∗⋮ap+1,p+1∗0⋮0⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤(5)
为了得到上述 Q R \mathrm{QR} QR 分解, 应该选择 H n H_n Hn 为 p p p 个 H o u s e h o l d e r \mathrm{Householder} Householder 变换矩阵之积, 即
H n = H n ( p ) H n ( p − 1 ) ⋯ H n ( 1 ) (6) H_n = H_n(p)H_n(p-1)\cdots H_n(1) \tag{6} Hn=Hn(p)Hn(p−1)⋯Hn(1)(6)
式中
H n ( j ) = I − u j u j T / σ j , j = 1 , 2 , ⋯ , p (7) H_n(j) = I - u_ju_j^{\mathrm{T}}/\sigma_j, \quad j = 1,2,\cdots,p \tag{7} Hn(j)=I−ujujT/σj,j=1,2,⋯,p(7)
是对矩阵 A n ( j ) = H n ( j − 1 ) H n ( 2 ) H n ( 1 ) A n A_n^{(j)} = H_n(j-1)H_n(2)H_n(1)A_n An(j)=Hn(j−1)Hn(2)Hn(1)An 第 j j j 列向量 [ a 1 j ( j ) , a 2 j ( j ) , ⋯ , a n j ( j ) ] T [a_{1j}^{(j)},a_{2j}^{(j)},\cdots,a_{nj}^{(j)}]^{\mathrm{T}} [a1j(j),a2j(j),⋯,anj(j)]T 进行的 H o u s e h o l d e r \mathrm{Householder} Householder 变换矩阵, 其参数选择方法为
α j = ∑ i = j n [ a i j ( j ) ] 2 σ j = α j ( α j + ∣ a j j ( j ) ∣ ) u j ( i ) = { 0 i < j a j j ( j ) + s g n ( a j j ( j ) ) α j j = i a i j ( j ) i > j } , j = 1 , 2 , ⋯ , p (8) \left.\begin{aligned} \alpha_j &= \sqrt{\sum_{i=j}^{n}[a_{ij}^{(j)}]^2} & \quad\\ \sigma_j &= \alpha_j(\alpha_j + |a_{jj}^{(j)}|) \\ u_j(i) &= \left\{\begin{matrix} 0& \ i < j \\ a_{jj}^{(j)} + \mathrm{sgn}(a_{jj}^{(j)})\alpha_j& \ j = i \\ a_{ij}^{(j)} & i > j \end{matrix}\right. \end{aligned}\right\}, \qquad j = 1,2,\cdots,p \tag{8} αjσjuj(i)=i=j∑n[aij(j)]2=αj(αj+∣ajj(j)∣)=⎩⎪⎨⎪⎧0ajj(j)+sgn(ajj(j))αjaij(j) i<j j=ii>j⎭⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎫,j=1,2,⋯,p(8)
其中
A n ( j + 1 ) = A n ( j ) − u j q j T (9) A_n^{(j+1)} = A_n^{(j)} - u_jq_j^{\mathrm{T}} \tag{9} An(j+1)=An(j)−ujqjT(9)
并且
q j T = u j T A n ( j ) / σ j (10) q_j^{\mathrm{T}} = u_j^{\mathrm{T}}A_n^{(j)}/\sigma_j \tag{10} qjT=ujTAn(j)/σj(10)
算法 2: 基于 H o u s e h o l d e r Q R \mathrm{Householder} \ QR Householder QR 分解的快速自适应参数估计算法
递推求解 σ n \sigma_n σn 的变换量 δ n \delta_n δn, 而不是之间递推求 σ n + 1 \sigma_{n+1} σn+1 本身. 其式子应该为
σ n + 1 = σ n + δ n (11) \sigma_{n+1} = \sigma_{n} + \delta_n \tag{11} σn+1=σn+δn(11)
问题的关键就在于更新 δ n \delta_n δn
假定正交矩阵 Q ~ \tilde{Q} Q~ 为已知, 满足
Q ~ [ λ R n x n + 1 T ] = [ R n + 1 O ] (12) \tilde{Q} \begin{bmatrix} \lambda R_n\\ x_{n+1}^{\mathrm{T}}\end{bmatrix} = \begin{bmatrix} R_{n+1}\\ O \end{bmatrix} \tag{12} Q~[λRnxn+1T]=[Rn+1O](12)
化简得到
δ n = arg min δ n ∥ [ R n + 1 O ] δ n − Q ~ [ 0 u ( n + 1 ) ] ∥ (13) \delta_n = \argmin_{\delta_n} \bigg \lVert \begin{bmatrix} R_{n+1}\\ O \end{bmatrix}\delta_n - \tilde{Q} \begin{bmatrix} 0\\ u(n+1) \end{bmatrix} \bigg \rVert \tag{13} δn=δnargmin∥∥∥∥[Rn+1O]δn−Q~[0u(n+1)]∥∥∥∥(13)
式中, u ( n + 1 ) = y ( n + 1 ) − x n + 1 T θ n u(n+1) = y(n+1) - x_{n+1}^{\mathrm{T}}\theta_n u(n+1)=y(n+1)−xn+1Tθn. 因此, δ n \delta_n δn 可以从三角矩阵方程
R n + 1 δ n = y ˉ n + 1 (14) R_{n+1}\delta_n = \bar{y}_{n+1} \tag{14} Rn+1δn=yˉn+1(14)
解出, 其中, y ˉ k + 1 \bar{y}_{k+1} yˉk+1 满足
[ y ˉ n + 1 r ( n + 1 ) ] = Q ~ [ 0 u ( n + 1 ) ] (15) \begin{bmatrix} \bar{y}_{n+1}\\ r(n+1) \end{bmatrix} = \tilde{Q} \begin{bmatrix} 0\\ u(n+1) \end{bmatrix} \tag{15} [yˉn+1r(n+1)]=Q~[0u(n+1)](15)
为求出 Q ~ \tilde{Q} Q~, 需要对增广矩阵
[ λ R n 0 x n + 1 T u ( n + 1 ) ] (16) \begin{bmatrix} \lambda R_n & 0\\ x_{n+1}^{\mathrm{T}} & u(n+1) \end{bmatrix} \tag{16} [λRnxn+1T0u(n+1)](16)
( ! ! ! 在这个地方存疑, 不能很好的理解这个增广矩阵的由来 )
执行所需要的清零. 综上所述, 每一步递推更新需要的步骤如下
(1) 计算预测误差 y k + 1 − ϕ k + 1 T θ k y_{k+1} - \phi_{k+1}^{\mathrm{T}}\theta_k yk+1−ϕk+1Tθk
(2) 形成式子 (16) 中的 ( n + 1 ) × ( n + 1 ) (n+1) \times (n+1) (n+1)×(n+1) 矩阵
(3) 利用一系列 G i v e n s \mathrm{Givens} Givens 旋转将上述矩阵最底一行的左边 n n n 个元素扫除为零
(4) 解上三角矩阵方程得到 δ k \delta_k δk