上一次学系统辨识已经两年多了,一直也都有在用,但是很多细节概念已经有些遗忘,现在再整体梳理一遍,方便自己也便于一些想入门系统辨识的小伙伴可以参考。

系统辨识三要素

  1. 数据
  2. 模型集(线性 or 非线性,连续 or 离散 等):灰箱模型即结构已知(from physical law)参数带估计;黑箱模型即模型结构需要自己选择且参数没有物理意义
  3. 准则:用于确定什么样的模型才是best的

模型验证

  1. 根据先验知识判断是否符合系统的物理特性,比如增益方向,时间常数等;
  2. 根据未用于训练的实验数据进行验证,比较模型的仿真输出和实际观测输出。

线性系统

线性回归

系统以线性回归表示为

$$ y(k)=\phi^T(k)\theta $$ 其中 $\theta$ 为参数向量,$\phi(k)$ 为回归向量(通常包含过去时刻的输入输出值)。

等价于

$$ y(k)=G(q)u(k),G(q)=\frac{b_0+b_1q^{-1}+...+b_{nb}q^{-nb}}{1+a_1q^{-1}+...+a_{na}q^{-na}} $$

非线性系统也可以表示成线性回归的形式,比如在回归向量里包含 $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$

最小二乘估计即:

$$ \hat{\theta}_{LS}=\arg \min_{\theta} \sum_{k=1}^{N} \epsilon^2(k,\theta)=\arg \min_{\theta} ||Y-\Phi \theta||^2 $$

对 $\theta$ 求导,利用极值条件可以得到

$$ \hat{\theta}_{LS}=(\Phi^T\Phi)^{-1}Y=(\sum_{k=1}^N \phi(k)\phi^T(k))^{-1} \sum_{k=1}^N \phi(k)y(k) $$

在 Matlab 里的实现就是

$$ \hat{\theta}{LS} = \Phi \backslash Y $$

观察可以知道

$$ \Phi^T \Phi \hat{\theta}_{LS} = \Phi^T Y $$

利用 Cholesky 分解 $\Phi^T \Phi = LL^T$,其中 $L$ 是下三角矩阵,matlab代码 $L=chol(\Phi^T\Phi,‘lower’)$

因此最小二乘估计的解为:

  1. 通过 forward substitution 求解 $Lz=\Phi^T Y$
  2. 通过 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)$。代入可得

$$ \hat{\theta}_{LS}=(\Phi^T\Phi)^{-1}\Phi^TY=((Q_1R_1)^T(Q_1R_1))^{-1}(R_1^TQ_1^TY)=R_1^{-1}Q_1^TY $$

因此最小二乘估计的解为:

通过 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)$ 。

强推一波公式,记住思路就是利用误差进行修正:

\begin{aligned} \hat{\theta}_{LS}(k)&=P(k)(\sum_{l=1}^{k-1}\phi(l)y(l) + \phi(k)y(k))\\ &=P(k)(P^{-1}(k-1)\hat{\theta}_{LS}(k-1)+\phi(k)y(k))\\ &=P(k)P^{-1}(k-1)\hat{\theta}_{LS}(k-1)+P(k)\phi(k)y(k)\\ &=P(k)(P(k)^{-1}-\phi(k)\phi^T(k))\hat{\theta}_{LS}(k-1)+P(k)\phi(k)y(k)\\ &=\hat{\theta}_{LS}(k-1) - P(k)\phi(k)\phi^T(k)\hat{\theta}_{LS}(k-1) +P(k)\phi(k)y(k)\\ &=\hat{\theta}_{LS}(k-1) + P(k)\phi(k)(y(k)-\phi^T(k)\hat{\theta}_{LS}(k-1))\\ &=\hat{\theta}_{LS}(k-1) + K(k)\epsilon(k) \end{aligned}

其中 $K(k)=P(k)\phi(k)$ 可以看做是增益,$\epsilon(k)=y(k)-\phi^T(k)\hat{\theta}_{LS}(k-1)$ 看着是预测误差。

因此 Recursive 线性最小二乘总结为:

\begin{aligned} \hat{\theta}_{LS}(k) &= \hat{\theta}_{LS}(k-1) + P(k)\phi(k)(y(k)-\phi^T(k)\hat{\theta}_{LS}(k-1))\\ P(k)^{-1}&=P(k-1)^{-1}+\phi(k)\phi^T(k) \end{aligned}

由于矩阵涉及求逆费事,可以将 $P(k)^{-1}$ 转换为

$$ P(k)=P(k-1)+\frac{P(k-1)\phi(k)\phi^T(k)P(k-1)}{1+\phi^T(k)P(k-1)\phi(k)} $$

带遗忘因子的 Recursive 线性最小二乘

在目标函数引入遗忘因子 $0< \lambda \le 1$,即

$$ \hat{\theta}=\arg \min_{\theta} \sum_{l=1}^k \lambda^{k-l}(y(l)-\phi^T(l)\theta)^2 $$

$\lambda$ 越小对过去信息忘得越多。同理可以得到递推公式:

\begin{aligned} \hat{\theta}_{LS}(k) &= \hat{\theta}_{LS}(k-1) + P(k)\phi(k)(y(k)-\phi^T(k)\hat{\theta}_{LS}(k-1))\\ P(k)&=\frac{1}{\lambda} \left[ P(k-1)+\frac{P(k-1)\phi(k)\phi^T(k)P(k-1)}{\lambda+\phi^T(k)P(k-1)\phi(k)}\right] \end{aligned}

有限脉冲响应模型估计

利用 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$

  1. 如果 $M$ 足够大且系统 BIBO 稳定,FIR 模型能够很好近似原系统
  2. 需要数据量 $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$ 独立的准平稳噪声。

一致性:

\begin{aligned} \hat{g} &= \left(\frac{1}{N}\sum_{l=1}^N \phi(k)\phi^T(k)\right)^{-1}\frac{1}{N}\sum_{k=1}^N\phi(k)y(k)\\ &=g_0 + \left(\frac{1}{N}\sum_{l=1}^N \phi(k)\phi^T(k)\right)^{-1} \frac{1}{N}\sum_{l=1}^N \phi(k) v_0(k)\\ &=g_0 + R^*E[\phi(k)v_0(k)]\\ &=g_0 \end{aligned}

其中 $R$ 中每一项代表的是自相关或互相关函数的估计,$E[\phi(k)v_0(k)]=E[\phi(k)]\times 0=0$。

ARX 模型估计

模型结构为

$$ y(k)=\frac{B(q)}{A(q)}u(k)+\frac{1}{A(q)}e(k) $$

输入输出关系为:

$$ y(k)=-a_1y(k-1)-...-a_{n_a}y(k-n_a)+b_1u(k-1)+...+b_{n_b}u(k-n_b) + e(k) $$

同样可以写成线性回归的形式 $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 模型估计

模型描述

$$ y(k)=G(q^{-1},p(k))u(k)+v(k) $$

等价于

$$ A(q^{-1},p(k))y(k)=B(q^{-1},p(k))u(k)+e(k) $$

其中 $p$ 为调度变量。

通常对回归向量的系数进行相应的参数化,比如多项式

\begin{aligned} A(q^{-1},p(k))=1+\sum_{i=1}^{n_a}a_i(p(k))q^{-i}\\ a_i(p(k))=a_{i,0}+\sum_{l=1}^{n_l}a_{i,l}p^{l}(k) \end{aligned}

例子:

$$ y(k)=-[a_{1,0}+a_{1,1}p(k)]y(k-1)+[b_{1,0}+b_{1,1}p(k)]u(k-1)+e(k) $$

此时有 $\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)$ 为白噪声时,一致性能够得到保证。

输出误差模型的不一致性

模型结构

$$ y(k)=G(q)u(k)+H(q)e(k),H(q)=1 $$

对应的输入输出关系

$$ y_0(k)=-a_1y_0(k-1)-...-a_{n_a}y_0(k-n_a)+b_1u(k-1)+...+b_{n_b}u(k-n_b)\\ y(k)=y_0+e(k) $$

OE 模型则表示为

\begin{aligned} y(k)&=\phi^T(k)\theta + e(k)+a_1e(k-1)+...a_{n_a}e(k-n_a)\\ y(k)&=\phi^T(k)\theta + v(k) \end{aligned}

注意!这里 $v(k)$ 不是白噪声了!

一致性:

\begin{aligned} \hat{\theta}_{LS}&=(\Phi^T\Phi)^{-1}\Phi^TY=\left(\frac{1}{N}\sum_{k=1}^N\phi(k)\phi^T(k) \right)^{-1}\frac{1}{N}\sum_{k=1}^N \phi(k)y(k)\\ &=\left(\frac{1}{N}\sum_{k=1}^N\phi(k)\phi^T(k) \right)^{-1}\frac{1}{N}\sum_{k=1}^N \phi(k) (\phi^T(k)\theta_0 + v(k)) \\ &=\theta_0 + \left(\frac{1}{N}\sum_{k=1}^N\phi(k)\phi^T(k) \right)^{-1}\frac{1}{N}\sum_{k=1}^N \phi(k) v(k) \end{aligned}

由于 $\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 $$

修正最小二乘估计为

$$ \hat{\theta}_{IV}=(Z^T\Phi)^{-1}Z^TY=\left(\sum_{k=1}^N z(k)\phi^T(k) \right)^{-1}\sum_{k=1}^N z(k)y(k) $$

一致性:

$$ \hat{\theta}_{IV}=\theta_0 + \left(\frac{1}{N}\sum_{k=1}^Nz(k)\phi^T(k) \right)^{-1}\frac{1}{N}\sum_{k=1}^N z(k) v(k) $$

因此 $z(k)$ 应该和 $\phi(k)$ 相关否则 $R(N)$ 会收敛到零矩阵。

辅助变量的选择

$$ z(k)=[-y_0(k-1),...,-y_0(k-n_a),u(k-1),...,u(k-n_b)]^T $$

也就是说,$z(k)$ 应该尽可能和无噪的回归向量相关,但是和 $v(k)$ 无关。

辅助变量法总结为:

  1. 最小二乘估计 $\hat{\theta}$ (biased)
  2. 开环仿真 $$ \hat{y}(k)=[-\hat{y}(k-1),…,-\hat{y}(k-n_a),u(k-1),…,u(k-n_b)]^T\hat{\theta} $$
  3. 构造辅助变量 $$ z(k)=[-\hat{y}(k-1),…,-\hat{y}(k-n_a),u(k-1),…,u(k-n_b)]^T $$
  4. 通过 IV 估计 $\hat{\theta}$ (consistent)
  5. 从第2步重复直到收敛

预报误差法 PEM

线性预报器

$$ \hat{y}(k|k-1;\theta) = L_y(q^{-1},\theta)y(k) + L_u(q^{-1},\theta) u(k); L_y(0,\theta)=0, L_u(0,\theta)=0 $$

只由过去的输入输出数据决定。

预报误差为

$$ \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$ 使得预报误差的方差最小。

\begin{aligned} y(k)&=Gu(k)+He(k)=Gu(k)+(H-I)e(k)+e(k)\\ &=Gu(k)+(H-I)H^{-1}[y(k)-Gu(k)]+e(k)\\ &=[(I-H^{-1})y(k)+H^{-1}Gu(k)]+e(k)\\ &=z(k)+e(k) \end{aligned}

注意 $z(k),e(k)$ 不相关。

假设 $y^*(k)$ 为 $y(k)$ 的任意预测,$z(k)$ 的最优性:

\begin{aligned} E[(y-y^*)(y-y^*)^T]&=E[(z+e-y^*)(z+e-y^*)^T]\\ &=E[(z-y^*)(z-y^*)^T]+E[ee^T] \ge \Lambda_e \end{aligned}

因此 $z(k)$ 是最优预报,$e(k)$ 是最优预报误差。

\begin{aligned} \hat{y}(k|k-1,\theta)&=\left(I-H^{-1}(q^{-1},\theta)\right)y(k)+H^{-1}(q^{-1},\theta)G(q^{-1},\theta)u(k)\\ \epsilon (k,\theta)&=e(k)=H^{-1}(q^{-1},\theta)\left(y(k)-G(q^{-1},\theta)u(k)\right) \end{aligned}

最小化准则

采样协方差矩阵

$$ R_N(\theta)=\frac{1}{N}\sum_{k=1}^N \epsilon(k,\theta)\epsilon^T(k,\theta) $$
  • 如果 $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))$。