递推最小二乘RLS推导

批次的最小二乘是给定一批数据比如 { y i ∈ R , x i ∈ R n , i = 1 , . . . , N } \{y_i\in\mathbb{R},x_i\in \mathbb{R}^n,i=1,...,N\} {yiR,xiRn,i=1,...,N},满足 y i = x i T θ y_i = x_i^T\theta yi=xiTθ 从而辨识 n × 1 n \times 1 n×1维参数向量 θ = [ θ 1 , . . . , θ n ] \theta = [\theta_1,...,\theta_n] θ=[θ1,...,θn]
写成紧凑的形式为 Y N = X N θ Y_N = X_N \theta YN=XNθ 其中 Y N ∈ R N Y_N\in \mathbb{R}^N YNRN X N X_N XN 是个 N × n N\times n N×n 的矩阵,每一行对应一个 x i T x_i^T xiT
估计的参数 θ ^ \hat{\theta} θ^ 越准,则模型的预测值 X N θ ^ X_N\hat{\theta} XNθ^ 的结果越接近 Y N Y_N YN,因此我们的目标是最小化估计的误差 m i n i m i z e ∣ ∣ Y N − X N θ ^ ∣ ∣ 2 minimize ||Y_N - X_N\hat{\theta}||_2 minimizeYNXNθ^2 θ ^ \hat{\theta} θ^ 求导 X N T ( Y N − X N θ ^ ) = 0 X N T Y N − X N T X N θ ^ = 0 X_N^T(Y_N-X_N\hat{\theta})=0\\ X_N^TY_N-X_N^TX_N\hat{\theta}=0 XNT(YNXNθ^)=0XNTYNXNTXNθ^=0 得到 (1) θ ^ = ( X N T X N ) − 1 X N T Y N \hat{\theta} = (X_N^TX_N)^{-1}X_N^TY_N \tag{1} θ^=(XNTXN)1XNTYN(1) 也就是说如果在 t t t 时刻有了 N N N 组数据,我们就可以用 ( 1 ) (1) (1) 来辨识模型参数 θ ^ t \hat{\theta}_t θ^t
那么问题来了,每个时刻会有新的数据进来,都这么一搞也太折腾了,于是有了递推最小二乘,目的在于每步更新模型参数是基于上一时刻的模型参数以及这一时刻的数据进行修正,即
θ ^ t = θ ^ t − 1 + 修 正 量 f ( y t , x t ) \hat{\theta}_t = \hat{\theta}_{t-1} + 修正量f(y_t,x_t) θ^t=θ^t1+f(yt,xt) 观察公式 ( 1 ) (1) (1),需要建立相邻两个时刻之间的关系,首先定义变量 P N − 1 = ( X N T X N ) P_N^{-1} = (X_N^TX_N) PN1=(XNTXN),即 (2) P N − 1 = [ x 1 , x 2 , . . . , x N ] [ x 1 T ; x 2 T ; . . . ; x N T ] = ∑ i = 1 N − 1 x i x i T + x N x N T = P N − 1 − 1 + x N x N T P_N^{-1} = [x_1,x_2,...,x_N][x_1^T;x_2^T;...;x_N^T]\\ =\sum_{i=1}^{N-1}x_ix_i^T+x_Nx_N^T\\ =P_{N-1}^{-1}+x_Nx_N^T\tag{2} PN1=[x1,x2,...,xN][x1T;x2T;...;xNT]=i=1N1xixiT+xNxNT=PN11+xNxNT(2)同理 (3) X N T Y N = X N − 1 T Y N − 1 + x N y N X_N^TY_N=X_{N-1}^TY_{N-1}+x_Ny_N \tag{3} XNTYN=XN1TYN1+xNyN(3) 利用公式 ( 2 ) ( 3 ) (2)(3) (2)(3) 重新梳理公式 ( 1 ) (1) (1) (4) θ ^ t = P N ( X N − 1 T Y N − 1 + x N y N ) \hat{\theta}_t = P_N(X_{N-1}^TY_{N-1}+x_Ny_N) \tag{4} θ^t=PN(XN1TYN1+xNyN)(4) 利用 (5) θ ^ t − 1 = P N − 1 X N − 1 T Y N − 1 P N − 1 − 1 θ ^ t − 1 = X N − 1 T Y N − 1 \hat{\theta}_{t-1} = P_{N-1} X_{N-1}^TY_{N-1}\\ P_{N-1}^{-1} \hat{\theta}_{t-1} = X_{N-1}^TY_{N-1} \tag{5} θ^t1=PN1XN1TYN1PN11θ^t1=XN1TYN1(5) ( 5 ) (5) (5) 带入 ( 4 ) (4) (4) (6) θ ^ t = P N ( P N − 1 − 1 θ ^ t − 1 + x N y N ) = P N ( P N − 1 − x N x N T ) θ ^ t − 1 + P N x N y N = θ ^ t − 1 + P N x N y N − P N x N x N T θ ^ t − 1 = θ ^ t − 1 + P N ( x N y N − x N x N T θ ^ t − 1 ) \hat{\theta}_t = P_N(P_{N-1}^{-1} \hat{\theta}_{t-1}+x_Ny_N)\\ =P_N(P_N^{-1}-x_Nx_N^T)\hat{\theta}_{t-1} + P_Nx_Ny_N\\ =\hat{\theta}_{t-1} + P_Nx_Ny_N-P_Nx_Nx_N^T\hat{\theta}_{t-1}\\ =\hat{\theta}_{t-1} + P_N(x_Ny_N-x_Nx_N^T\hat{\theta}_{t-1}) \tag{6} θ^t=PN(PN11θ^t1+xNyN)=PN(PN1xNxNT)θ^t1+PNxNyN=θ^t1+PNxNyNPNxNxNTθ^t1=θ^t1+PN(xNyNxNxNTθ^t1)(6) ( 2 ) (2) (2) 可得 P N = ( P N − 1 − 1 + x N x N T ) − 1 P_N=(P_{N-1}^{-1}+x_Nx_N^T)^{-1} PN=(PN11+xNxNT)1根据

矩阵逆引理:
[ A + B C D ] − 1 = A − 1 − A − 1 B [ C − 1 + D A − 1 B ] − 1 D A − 1 [A+BCD]^{-1}=A^{-1}-A^{-1}B[C^{-1}+DA^{-1}B]^{-1}DA^{-1} [A+BCD]1=A1A1B[C1+DA1B]1DA1

(7) P N = P N − 1 − P N − 1 x N [ I + x N T P N − 1 x N ] − 1 x N T P N − 1 P_N=P_{N-1}-P_{N-1}x_N[I+x_N^TP_{N-1}x_N]^{-1}x_N^TP_{N-1} \tag{7} PN=PN1PN1xN[I+xNTPN1xN]1xNTPN1(7)因此RLS的求解为
P N = P N − 1 − P N − 1 x N [ I + x N T P N − 1 x N ] − 1 x N T P N − 1 θ ^ t = θ ^ t − 1 + P N x N ( y N − x N T θ ^ t − 1 ) P_N=P_{N-1}-P_{N-1}x_N[I+x_N^TP_{N-1}x_N]^{-1}x_N^TP_{N-1}\\ \hat{\theta}_t=\hat{\theta}_{t-1} + P_Nx_N(y_N-x_N^T\hat{\theta}_{t-1}) PN=PN1PN1xN[I+xNTPN1xN]1xNTPN1θ^t=θ^t1+PNxN(yNxNTθ^t1)其中, ( y N − x N T θ ^ t − 1 ) (y_N-x_N^T\hat{\theta}_{t-1}) (yNxNTθ^t1) 相当于 t − 1 t-1 t1 时刻的参数用于 t t t 时刻预测时带来的偏差, P N x N P_Nx_N PNxN 相当于修正系数

你可能感兴趣的:(系统辨识)