「系统辨识」再回首
上一次学系统辨识已经两年多了,一直也都有在用,但是很多细节概念已经有些遗忘,现在再整体梳理一遍,方便自己也便于一些想入门系统辨识的小伙伴可以参考。
系统辨识三要素
- 数据
- 模型集(线性 or 非线性,连续 or 离散 等):灰箱模型即结构已知(from physical law)参数带估计;黑箱模型即模型结构需要自己选择且参数没有物理意义
- 准则:用于确定什么样的模型才是best的
模型验证
- 根据先验知识判断是否符合系统的物理特性,比如增益方向,时间常数等;
- 根据未用于训练的实验数据进行验证,比较模型的仿真输出和实际观测输出。
线性系统
线性回归
系统以线性回归表示为
$$ y(k)=\phi^T(k)\theta $$ 其中 $\theta$ 为参数向量,$\phi(k)$ 为回归向量(通常包含过去时刻的输入输出值)。
等价于
非线性系统也可以表示成线性回归的形式,比如在回归向量里包含 $y^2(k-1);u(k)y(k-1)$ 等。
最小二乘估计
定义残差(residuals)为 $\epsilon(k,\theta)=y(k)-\hat{y}(k,\theta)=y(k)-\phi^T(k)\theta$
最小二乘估计即:
对 $\theta$ 求导,利用极值条件可以得到
在 Matlab 里的实现就是
观察可以知道
利用 Cholesky 分解 $\Phi^T \Phi = LL^T$,其中 $L$ 是下三角矩阵,matlab代码 $L=chol(\Phi^T\Phi,‘lower’)$
因此最小二乘估计的解为:
- 通过 forward substitution 求解 $Lz=\Phi^T Y$
- 通过 backward substitution 求解 $L^T\hat{\theta}_{LS}=z$
利用 QR 分解 $\Phi = QR=Q_1R_1$,其中 $Q=[Q_1,Q_2],R=[R_1,0]^T$,$Q_1^TQ=I$,$R_1$ 为上三角且当 $\Phi$ 满秩时 $R_1$ 对角线元素 $r_{ii}$ 大于0。matlab代码 $qr(\Phi)$。代入可得
因此最小二乘估计的解为:
通过 backward substitution 求解 $R_1\hat{\theta}_{LS} = Q_1^TY$
Recursive 线性最小二乘
可以对 $k-1$ 时刻的参数估计 $\hat{\theta}_{LS}(k-1)$ 进行更新得到 $\hat{\theta}_{LS}(k)$。
定义 $P(k)=(\sum_{l=1}^k\phi(l)\phi^T(l))^{-1}$,满足 $P(k)^{-1}=P(k-1)^{-1}+\phi(k)\phi^T(k)$ 。
强推一波公式,记住思路就是利用误差进行修正:
其中 $K(k)=P(k)\phi(k)$ 可以看做是增益,$\epsilon(k)=y(k)-\phi^T(k)\hat{\theta}_{LS}(k-1)$ 看着是预测误差。
因此 Recursive 线性最小二乘总结为:
由于矩阵涉及求逆费事,可以将 $P(k)^{-1}$ 转换为
带遗忘因子的 Recursive 线性最小二乘
在目标函数引入遗忘因子 $0< \lambda \le 1$,即
$\lambda$ 越小对过去信息忘得越多。同理可以得到递推公式:
有限脉冲响应模型估计
利用 FIR 模型来描述系统的动态:
$$ \hat{y}(k,g) = \sum_{l=0}^M g(l)u(k-l) = \phi^T(k)g $$ 其中 $\phi(k)=[u(k),u(k-1),…,u(k-M)]^T,g=[g(0),…,g(M)]^T$
- 如果 $M$ 足够大且系统 BIBO 稳定,FIR 模型能够很好近似原系统
- 需要数据量 $N >> M$
最小二乘估计为 $\hat{g}=(\Phi^T\Phi)^{-1}\Phi^TY$
假设真实系统可以被描述为
$$ y(k)=\sum_{l=0}^M g_0(l)u(k-l)+v_0(k)=\phi^T(k )g_0+v_0(k) $$ 其中 $v_0(k)$ 是零均值且与输入 $u$ 独立的准平稳噪声。
一致性:
其中 $R$ 中每一项代表的是自相关或互相关函数的估计,$E[\phi(k)v_0(k)]=E[\phi(k)]\times 0=0$。
ARX 模型估计
模型结构为
输入输出关系为:
同样可以写成线性回归的形式 $y(k)=\phi^T(k)\theta + e(k)$,同理得到最小二乘估计 $\hat{\theta}_{LS}=(\Phi^T\Phi)^{-1}\Phi^TY$。
假设真实系统为 $y(k)=\phi^T(k)\theta_0+e(k)$,一致性检验可以得到 $lim_{N \rightarrow \infty} \hat{\theta}_{LS}=\theta_0 $
线性参变 ARX 模型估计
模型描述
等价于
其中 $p$ 为调度变量。
通常对回归向量的系数进行相应的参数化,比如多项式
例子:
此时有 $\phi^T(k)=[-y(k-1),-p(k)y(k-1),u(k-1),p(k)u(k-1)], \theta=[a{1,0},a{1,1},b{1,0},b{1,1}]^T$,同理还是利用最小二乘进行估计。当 $e(t)$ 为白噪声时,一致性能够得到保证。
输出误差模型的不一致性
模型结构
对应的输入输出关系
OE 模型则表示为
注意!这里 $v(k)$ 不是白噪声了!
一致性:
由于 $\phi(k)$ 和 $v(k)$ 相关,所以 $lim_{N \rightarrow \infty} \frac{1}{N} \sum_{k=1}^N \phi(k)v(k) \neq 0$。
辅助变量法
给定模型结构 $A(q^{-1}y(k))=B(q^{-1})u(k)+v(k)$,只有当 $v(k)$ 和回归向量不相关时,一致性才能得到保证。
选择与回归向量 $\phi(k)$ 维度相同的辅助变量 $z(k)$ 使得
$$ E[z(k)v(K)]=0 $$
修正最小二乘估计为
一致性:
因此 $z(k)$ 应该和 $\phi(k)$ 相关否则 $R(N)$ 会收敛到零矩阵。
辅助变量的选择
也就是说,$z(k)$ 应该尽可能和无噪的回归向量相关,但是和 $v(k)$ 无关。
辅助变量法总结为:
- 最小二乘估计 $\hat{\theta}$ (biased)
- 开环仿真 $$ \hat{y}(k)=[-\hat{y}(k-1),…,-\hat{y}(k-n_a),u(k-1),…,u(k-n_b)]^T\hat{\theta} $$
- 构造辅助变量 $$ z(k)=[-\hat{y}(k-1),…,-\hat{y}(k-n_a),u(k-1),…,u(k-n_b)]^T $$
- 通过 IV 估计 $\hat{\theta}$ (consistent)
- 从第2步重复直到收敛
预报误差法 PEM
线性预报器
只由过去的输入输出数据决定。
预报误差为
$$ \epsilon (k,\theta) = y(k)-\hat{y}(k|k-1,\theta) $$
待估计的参数应该使得预报误差尽可能小。
- 模型结构,对 $G(q,\theta),H(q,\theta)$ 的参数化;
- 预报器,定义 $L_y,L_u$;
- 准则,预报误差的 scalar 函数 $V_N(\theta)$;
- 估计 $\hat{\theta}=\arg \min_{\theta} V_N(\theta)$
单变量模型结构
- ARX $$y(k)=\frac{B(q,\theta)}{A(q,\theta)}u(k)+\frac{1}{A(q,\theta)}e(k)$$
- ARMAX $$y(k)=\frac{B(q,\theta)}{A(q,\theta)}u(k)+\frac{C(q,\theta)}{A(q,\theta)}e(k)$$
- OE $$y(k)=\frac{B(q,\theta)}{A(q,\theta)}u(k)+e(k)$$
- BJ $$y(k)=\frac{B(q,\theta)}{A(q,\theta)}u(k)+\frac{C(q,\theta)}{D(q,\theta)}e(k)$$
预报滤波器
应该选择滤波器 $L_y,L_u$ 使得预报误差的方差最小。
注意 $z(k),e(k)$ 不相关。
假设 $y^*(k)$ 为 $y(k)$ 的任意预测,$z(k)$ 的最优性:
因此 $z(k)$ 是最优预报,$e(k)$ 是最优预报误差。
最小化准则
采样协方差矩阵
- 如果 $y$ 是标量,$R_N(\theta)$ 可以直接作为 $V_N(\theta)$ 用于最小化。
- 如果是多变量,我们可以最小化 $$ V_N(\theta)=h(R_N(\theta)) $$ 其中,$h$ 为定义在正半定矩阵集合上的连续的单调递增函数满足 $h(Q+\Delta Q)\ge h(Q),\forall Q,\Delta Q \ge 0$,比如矩阵的迹 $V_N(\theta)=h(R_N(\theta))=tr(R_N(\theta))$。