RLS带遗忘因子的递归最小二乘法

递归最小二乘(Recursive Least Squares, RLS)算法是一种自适应滤波算法,用于在线估计动态系统的参数。它是一种最小化误差平方和的算法,并且可以递归地更新估计值,而不需要存储历史数据。

1 系统模型

假设系统模型为线性回归模型:
z ( k ) = φ ( k ) T θ + v ( k ) z(k) = \varphi(k)^T \theta + v(k) z(k)=φ(k)Tθ+v(k)
其中:

  • z ( k ) z(k) z(k) 是时刻 k k k 的输出。
  • φ ( k ) \varphi(k) φ(k) 是时刻 k k k 的输入向量。
  • θ \theta θ 是参数向量。
  • v ( k ) v(k) v(k) 是噪声项,假设为高斯白噪声。

2 目标函数

递归最小二乘算法的目标是最小化预测误差的加权平方和:
J ( θ ) = ∑ i = 1 k λ k − i [ z ( i ) − φ ( i ) T θ ] 2 J(\theta) = \sum_{i=1}^k \lambda^{k-i} [z(i) - \varphi(i)^T \theta]^2 J(θ)=i=1kλki[z(i)φ(i)Tθ]2
其中:

  • λ \lambda λ 是遗忘因子,通常在 0 到 1 之间,用于控制历史数据的权重。

3 递归更新

为了递归更新参数估计 θ ^ ( k ) \hat{\theta}(k) θ^(k) 和误差协方差 P ( k ) P(k) P(k),我们首先对目标函数 J ( θ ) J(\theta) J(θ) 进行最优化。

3.1 参数更新

我们首先对代价函数 J ( θ ) J(\theta) J(θ) 关于参数向量 θ \theta θ 进行求导,并令导数为零,以找到最小化代价函数的参数估计。

J ( θ ) J(\theta) J(θ) 关于 θ \theta θ 的导数为:
∂ J ( θ ) ∂ θ = − 2 ∑ i = 1 k λ k − i φ ( i ) [ z ( i ) − φ ( i ) T θ ] \frac{\partial J(\theta)}{\partial \theta} = -2 \sum_{i=1}^k \lambda^{k-i} \varphi(i) [z(i) - \varphi(i)^T \theta] θJ(θ)=2i=1kλkiφ(i)[z(i)φ(i)Tθ]

令导数为零,得到:
∑ i = 1 k λ k − i φ ( i ) [ z ( i ) − φ ( i ) T θ ] = 0 \sum_{i=1}^k \lambda^{k-i} \varphi(i) [z(i) - \varphi(i)^T \theta] = 0 i=1kλkiφ(i)[z(i)φ(i)Tθ]=0

将上式重新组织,得到:
∑ i = 1 k λ k − i φ ( i ) z ( i ) = ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T θ \sum_{i=1}^k \lambda^{k-i} \varphi(i) z(i) = \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \theta i=1kλkiφ(i)z(i)=i=1kλkiφ(i)φ(i)Tθ

解得 θ \theta θ 为:
θ ( k ) = ( ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T ) − 1 ∑ i = 1 k λ k − i φ ( i ) z ( i ) \theta(k) = \left( \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \right)^{-1} \sum_{i=1}^k \lambda^{k-i} \varphi(i) z(i) θ(k)=(i=1kλkiφ(i)φ(i)T)1i=1kλkiφ(i)z(i)

3.2 递归形式

为了简化计算,我们引入 P ( k ) P(k) P(k) 作为 θ ( k ) \theta(k) θ(k) 的估计误差协方差矩阵的逆。那么,我们有:
P ( k ) = ( ∑ i = 1 k λ k − i φ ( i ) φ ( i ) T ) − 1 P(k) = \left( \sum_{i=1}^k \lambda^{k-i} \varphi(i) \varphi(i)^T \right)^{-1} P(k)=(i=1kλkiφ(i)φ(i)T)1

参数更新可以表示为:
θ ^ ( k ) = θ ^ ( k − 1 ) + P ( k ) φ ( k ) [ z ( k ) − φ ( k ) T θ ^ ( k − 1 ) ] \hat{\theta}(k) = \hat{\theta}(k-1) + P(k) \varphi(k) [z(k) - \varphi(k)^T \hat{\theta}(k-1)] θ^(k)=θ^(k1)+P(k)φ(k)[z(k)φ(k)Tθ^(k1)]

3.3 误差协方差更新

误差协方差的更新公式可以表示为:
P ( k ) = 1 λ ( k ) [ P ( k − 1 ) − P ( k − 1 ) φ ( k ) φ ( k ) T P ( k − 1 ) λ ( k ) ] P(k) = \frac{1}{\lambda(k)} \left[ P(k-1) - P(k-1) \varphi(k) \varphi(k)^T P(k-1) \lambda(k) \right] P(k)=λ(k)1[P(k1)P(k1)φ(k)φ(k)TP(k1)λ(k)]

为了简化,我们定义增益向量 y ( k ) y(k) y(k) 为:
y ( k ) = P ( k − 1 ) φ ( k ) [ φ ( k ) T P ( k − 1 ) φ ( k ) + λ ( k ) ] − 1 y(k) = P(k-1) \varphi(k) \left[ \varphi(k)^T P(k-1) \varphi(k) + \lambda(k) \right]^{-1} y(k)=P(k1)φ(k)[φ(k)TP(k1)φ(k)+λ(k)]1

那么,误差协方差的更新公式可以简化为:
P ( k ) = 1 λ ( k ) [ I − y ( k ) φ ( k ) ] P ( k − 1 ) P(k) = \frac{1}{\lambda(k)} \left[ I - y(k) \varphi(k) \right] P(k-1) P(k)=λ(k)1[Iy(k)φ(k)]P(k1)

  • θ ^ ( k ) \hat{\theta}(k) θ^(k) 是时刻 k k k 的参数估计。
  • P ( k ) P(k) P(k) 是时刻 k k k 的误差协方差矩阵的逆。
  • y ( k ) y(k) y(k) 是增益向量,用于调整输入向量 $ \varphi(k) $ 对参数估计的影响。

这些递归公式允许算法在每个时间步更新参数估计,而不需要存储整个历史数据,从而实现高效的在线参数估计。

4 总结

RLS 最重要的:
θ ^ ( k ) = θ ^ ( k − 1 ) + y ( k ) [ z ( k ) − φ ( k ) T θ ^ ( k − 1 ) ] \hat{\theta}(k) = \hat{\theta}(k-1) + y(k) [z(k) - \varphi(k)^T \hat{\theta}(k-1)] θ^(k)=θ^(k1)+y(k)[z(k)φ(k)Tθ^(k1)]
y ( k ) = P ( k − 1 ) φ ( k ) [ φ ( k ) T P ( k − 1 ) φ ( k ) + λ − 1 ] − 1 y(k) = P(k-1) \varphi(k) \left[ \varphi(k)^T P(k-1) \varphi(k) + \lambda^{-1} \right]^{-1} y(k)=P(k1)φ(k)[φ(k)TP(k1)φ(k)+λ1]1
P ( k ) = [ P ( k − 1 ) − 1 + λ − 1 φ ( k ) φ ( k ) T ] − 1 P(k) = \left[ P(k-1)^{-1} + \lambda^{-1} \varphi(k) \varphi(k)^T \right]^{-1} P(k)=[P(k1)1+λ1φ(k)φ(k)T]1

这些递归公式允许算法在每个时间步更新参数估计,而不需要存储整个历史数据,从而实现高效的在线参数估计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越临界点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值