最小二乘系统辨识课 上篇:辨识模型与最小二乘
- 前言
- 系统辨识定义
- 默认表示方法
- 系统模型分类
- 自回归模型AR
- 滑动平均模型MA
- 滑动平均自回归模型ARMA
- 确定性模型DARMA
- 受控自回归模型ARX
- 受控自回归滑动平均模型ARMAX
- 受控ARARX模型
- 受控ARARMA模型
- 输出误差模型OE
- 输出误差滑动平均模型OEMA
- 输出误差自回归模型OEAR
- 输出误差自回归滑动平均模型OEARMA
- 辨识模型与最小二乘
- 系统的辨识模型
- 参数的最小二乘
- 后记
前言
电脑再跑程序把CPU占满了,那就回顾一下系统辨识课的内容吧。
系统辨识定义
系统辨识可以分为两类,第一类是系统结构辨识,也就是判断系统属于哪种参数模型。第二类是已知系统结构,估计系统模型的参数。
本文总结的是第二类系统辨识的内容。
系统辨识的四大要素为:输入输出(已知),模型集合(给定),准则函数(误差函数)和优化方法(各种最小二乘迭代法)。
默认表示方法
u ( t ) , y ( t ) , v ( t ) u(t),y(t),v(t) u(t),y(t),v(t)分别表示 t 时刻系统的输出,输入,系统白噪声,白噪声服从高斯分布 v ( t ) ∼ N ( 0 , σ 2 ) v(t) \sim N(0, \sigma^2) v(t)∼N(0,σ2)。默认每个时刻 t 的输入输出是已知的,白噪声是未知的。
此外,系统参数模型可以表示为:
A
(
z
)
=
1
+
a
1
z
−
1
+
.
.
.
+
a
n
a
z
−
n
a
B
(
z
)
=
b
1
z
−
1
+
.
.
.
+
b
n
b
z
−
n
b
C
(
z
)
=
1
+
c
1
z
−
1
+
.
.
.
+
c
n
c
z
−
n
c
D
(
z
)
=
1
+
d
1
z
−
1
+
.
.
.
+
d
n
d
z
−
n
d
A(z)=1+a_1z^{-1}+...+a_{n_a}z^{-n_a} \\ B(z)=b_1z^{-1}+...+b_{n_b}z^{-n_b} \\ C(z)=1+c_1z^{-1}+...+c_{n_c}z^{-n_c} \\ D(z)=1+d_1z^{-1}+...+d_{n_d}z^{-n_d} \\
A(z)=1+a1z−1+...+anaz−naB(z)=b1z−1+...+bnbz−nbC(z)=1+c1z−1+...+cncz−ncD(z)=1+d1z−1+...+dndz−nd
其中,
z
−
1
ϕ
(
t
)
=
ϕ
(
t
−
1
)
z^{-1}\phi(t)=\phi(t-1)
z−1ϕ(t)=ϕ(t−1),依此类推。
例如:
A
(
z
)
y
(
t
)
=
B
(
z
)
u
(
t
)
+
v
(
t
)
=
>
y
(
t
)
+
a
1
y
(
t
−
1
)
+
.
.
.
+
a
n
a
y
(
t
−
n
a
)
=
b
1
u
(
t
−
1
)
+
.
.
.
+
b
n
b
y
(
t
−
n
b
)
=
>
y
(
t
)
=
−
a
1
y
(
t
−
1
)
−
.
.
.
−
a
n
a
y
(
t
−
n
a
)
+
b
1
u
(
t
−
1
)
+
.
.
.
+
b
n
b
y
(
t
−
n
b
)
A(z)y(t)=B(z)u(t)+v(t) \\ => \\ y(t)+a_1y(t-1)+...+a_{n_a}y(t-n_a)=b_1u(t-1)+...+b_{n_b}y(t-n_b) \\ => \\ y(t)=-a_1y(t-1)-...-a_{n_a}y(t-n_a)+b_1u(t-1)+...+b_{n_b}y(t-n_b) \\
A(z)y(t)=B(z)u(t)+v(t)=>y(t)+a1y(t−1)+...+anay(t−na)=b1u(t−1)+...+bnby(t−nb)=>y(t)=−a1y(t−1)−...−anay(t−na)+b1u(t−1)+...+bnby(t−nb)
系统模型分类
自回归模型AR
A ( z ) y ( t ) = v ( t ) A(z)y(t)=v(t) A(z)y(t)=v(t)
滑动平均模型MA
y ( t ) = D ( z ) v ( t ) y(t)=D(z)v(t) y(t)=D(z)v(t)
滑动平均自回归模型ARMA
A ( z ) y ( t ) = D ( z ) v ( t ) A(z)y(t)=D(z)v(t) A(z)y(t)=D(z)v(t)
确定性模型DARMA
A ( z ) y ( t ) = B ( z ) u ( t ) A(z)y(t)=B(z)u(t) A(z)y(t)=B(z)u(t)
受控自回归模型ARX
A ( z ) y ( t ) = B ( z ) u ( t ) + v ( t ) A(z)y(t)=B(z)u(t)+v(t) A(z)y(t)=B(z)u(t)+v(t)
受控自回归滑动平均模型ARMAX
A ( z ) y ( t ) = B ( z ) u ( t ) + D ( z ) v ( t ) A(z)y(t)=B(z)u(t)+D(z)v(t) A(z)y(t)=B(z)u(t)+D(z)v(t)
受控ARARX模型
A ( z ) y ( t ) = B ( z ) u ( t ) + 1 C ( z ) v ( t ) A(z)y(t)=B(z)u(t)+\frac{1}{C(z)}v(t) A(z)y(t)=B(z)u(t)+C(z)1v(t)
受控ARARMA模型
A ( z ) y ( t ) = B ( z ) u ( t ) + D ( z ) C ( z ) v ( t ) A(z)y(t)=B(z)u(t)+\frac{D(z)}{C(z)}v(t) A(z)y(t)=B(z)u(t)+C(z)D(z)v(t)
输出误差模型OE
y ( t ) = B ( z ) A ( z ) u ( t ) + v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+v(t) y(t)=A(z)B(z)u(t)+v(t)
输出误差滑动平均模型OEMA
y ( t ) = B ( z ) A ( z ) u ( t ) + D ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+D(z)v(t) y(t)=A(z)B(z)u(t)+D(z)v(t)
输出误差自回归模型OEAR
y ( t ) = B ( z ) A ( z ) u ( t ) + 1 C ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+\frac{1}{C(z)}v(t) y(t)=A(z)B(z)u(t)+C(z)1v(t)
输出误差自回归滑动平均模型OEARMA
y ( t ) = B ( z ) A ( z ) u ( t ) + D ( z ) C ( z ) v ( t ) y(t)=\frac{B(z)}{A(z)}u(t)+\frac{D(z)}{C(z)}v(t) y(t)=A(z)B(z)u(t)+C(z)D(z)v(t)
辨识模型与最小二乘
系统的辨识模型
上面的各种系统模型,经过移项或替换后都可以统一写成下面这样的形式:
y
(
t
)
=
φ
T
(
t
)
θ
+
v
(
t
)
y(t)=\varphi^T(t)\theta+v(t) \\
y(t)=φT(t)θ+v(t)
其中,
y
(
t
)
y(t)
y(t)已知,
v
(
t
)
v(t)
v(t)未知,
φ
T
(
t
)
\varphi^T(t)
φT(t)是否已知需要根据具体的移项操作判断,如果
φ
T
(
t
)
\varphi^T(t)
φT(t),则还需要替换成已知量,这是参数辨识的关键。
假设有如下的多输入单输出线性回归模型,其中
x
i
(
t
)
,
y
(
t
)
x_i(t), y(t)
xi(t),y(t)分别表示 t 时刻的输入分量和输出,
θ
n
\theta_n
θn表示输入分量的权重参数:
y
(
t
)
=
θ
1
x
1
(
t
)
+
θ
2
x
2
(
t
)
+
.
.
.
+
θ
n
x
n
(
t
)
+
v
(
t
)
设
:
φ
(
t
)
=
[
x
1
(
t
)
x
2
(
t
)
.
.
.
x
n
(
t
)
]
T
θ
=
[
θ
1
θ
2
.
.
.
θ
n
]
T
有
:
y
(
t
)
=
φ
T
(
t
)
θ
+
v
(
t
)
y(t)=\theta_1x_1(t) + \theta_2x_2(t) + ... + \theta_nx_n(t) + v(t) \\ \quad \\ 设:\varphi(t)=[x_1(t)\quad x_2(t) \quad ... \quad x_n(t)]^T \\ \quad \\ \theta = [\theta_1 \quad \theta_2 \quad ... \theta_n]^T \\ \quad \\ 有:y(t)=\varphi^T(t)\theta+v(t)
y(t)=θ1x1(t)+θ2x2(t)+...+θnxn(t)+v(t)设:φ(t)=[x1(t)x2(t)...xn(t)]Tθ=[θ1θ2...θn]T有:y(t)=φT(t)θ+v(t)
这就构建了该系统的辨识模型。辨识目的是获得参数 θ \theta θ的估计值。
参数的最小二乘
我们的目的是估计模型参数
θ
\theta
θ,并且系统辨识模型中当前时刻与之前时刻的输入输出
y
(
t
)
y(t)
y(t)和
φ
T
(
t
)
\varphi^T(t)
φT(t)都是已知的,即:
{
y
(
1
)
=
φ
T
(
1
)
θ
+
v
(
1
)
y
(
2
)
=
φ
T
(
2
)
θ
+
v
(
2
)
.
.
.
y
(
t
)
=
φ
T
(
t
)
θ
+
v
(
t
)
设
:
Y
t
=
[
y
(
1
)
y
(
2
)
.
.
.
y
(
t
)
]
T
H
t
=
[
φ
(
1
)
φ
(
2
)
.
.
.
φ
(
t
)
]
T
V
t
=
[
v
(
1
)
v
(
2
)
.
.
.
v
(
n
)
]
T
有
:
Y
t
=
H
t
θ
+
V
t
\left \{ \begin{aligned} y(1)&=\varphi^T(1)\theta+v(1) \\ y(2)&=\varphi^T(2)\theta+v(2) \\ &... \\ y(t)&=\varphi^T(t)\theta+v(t) \end{aligned} \right . \\ \quad \\ \begin{aligned} 设: Y_t&=[y(1)\quad y(2)\quad ... \quad y(t)]^T \\ H_t&=[\varphi(1) \quad \varphi(2) \quad ... \quad \varphi(t)]^T \\ V_t&=[v(1) \quad v(2) \quad ... \quad v(n)]^T \end{aligned} \\ \quad \\ 有: Y_t=H_t\theta +V_t
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y(1)y(2)y(t)=φT(1)θ+v(1)=φT(2)θ+v(2)...=φT(t)θ+v(t)设:YtHtVt=[y(1)y(2)...y(t)]T=[φ(1)φ(2)...φ(t)]T=[v(1)v(2)...v(n)]T有:Yt=Htθ+Vt
我们希望估计的参数
θ
^
\hat \theta
θ^能够使系统输出误差尽量小:
J
(
θ
)
=
∑
i
=
1
t
v
2
(
i
)
=
∑
i
=
1
t
[
y
(
i
)
−
φ
T
(
i
)
θ
]
2
=
V
t
T
V
t
=
(
Y
t
−
H
t
θ
)
T
(
Y
t
−
H
t
θ
)
θ
^
L
S
=
arg min
θ
J
(
θ
)
J(\theta)= \sum_{i=1}^t v^2(i) = \sum_{i=1}^t [y(i)-\varphi^T(i)\theta]^2 \\ =V_t^TV_t = (Y_t-H_t\theta)^T(Y_t-H_t\theta) \\ \quad \\ \hat \theta_{LS} = \argmin_\theta J(\theta)
J(θ)=i=1∑tv2(i)=i=1∑t[y(i)−φT(i)θ]2=VtTVt=(Yt−Htθ)T(Yt−Htθ)θ^LS=θargminJ(θ)
求
J
(
θ
)
J(\theta)
J(θ)取极值时的
θ
^
\hat \theta
θ^,就是参数的最小二乘估计:
d
J
d
θ
=
H
t
T
(
Y
t
−
H
t
θ
^
)
=
0
(
H
t
T
H
t
)
θ
^
L
S
=
H
t
T
Y
t
θ
^
L
S
=
(
H
t
T
H
t
)
−
1
H
t
T
Y
t
\frac{dJ}{d\theta} = H_t^T(Y_t-H_t\hat \theta)=0 \\ (H_t^TH_t)\hat \theta_{LS} = H_t^TY_t \\ \hat\theta_{LS} = (H_t^TH_t)^{-1}H_t^TY_t
dθdJ=HtT(Yt−Htθ^)=0(HtTHt)θ^LS=HtTYtθ^LS=(HtTHt)−1HtTYt
后记
中篇将继续学习辨识模型的递归最小二乘算法。
