3.1 はじめに
システムの解析、予測、制御、シミュレーション及び異常診断のため、システムの動特性を知る必要がある。
システムの入出力信号の観測値に基づいて、ある評価規範のもとでそのシステムをもっともよく記述する数学モデルを決定することをシステム同定(System Identification)という。
このように、統計学に基づいた同定法は大量かつ複雑なデータ処理を必要とする。最小二乗法で代表されるシステムのパラメータ推定手段は実システムに使える。

3.2 最小二乗法の導出
グラフに示すような線形システムの入出力関係を表す数式モデルの記述について考える。線形システムの次数nを既知と仮定すると、入出力関係は次式のような差分方程式で表される。
xt=−i=1∑naixt−i+i=1∑nbiut−i
ただし、utとxtはそれぞれシステムの入出力信号の離散時刻tにおけるサンプル値であり、aiとbiはシステムモデルのパラメータである。
ここで、出力信号xtには、平均値ゼロの離散値確率雑音vtが加わると仮定する。
yt=xt+vt
一般に、観測雑音vtはシステムの入力信号utとは無相関である。すなわち、E[utvt]=0。ただし、E[⋅]は期待値を意味する。
我々の目的は、システムの入力utと出力の観測値ytからシステムのパラメータを推定することである。
ここで、ytの式を差分方程式に代入すると:
yt=−i=1∑naiyt−i+i=1∑nbiut−i+rt
が得られる。ただし、観測雑音による誤差は:
rt=i=0∑naivt−i(a0=1)
ベクトル形式での表現
yt=ztTθ+rt
ztT=[−yt−1,…,−yt−n,ut−1,…,ut−n]
θ=a1⋮anb1⋮bn
二乗誤差評価関数
システムのパラメータを推定するため、次のような二乗誤差評価を導入する。
J=t=1∑NρN−trt2=t=1∑NρN−t(yt−ztTθ)2
ただし、0<ρ≤1は忘却係数である。
Nを現在時刻とみれば、N−tにすると、現在の時間より前の過去のt個時間の意味である。時間tが大きいほど、遠くなる過去値が現在に対する影響を意味する。よって、忘却係数が小さくすると、推定値への寄与(貢献)を小さくする役割を果たしており、一種の忘却機能を持っている。この忘却の効果のため、ゆっくり変動する時変パラメータの推定にも適用できる。
最小二乗推定値の導出
Jを最小にする必要条件は∂J/∂θ=0である。すなわち:
∂θ∂J=∂θ∂(t=1∑NρN−t(yt−ztTθ)2)=−t=1∑NρN−t2zt(yt−ztTθ)=−2t=1∑NρN−tztyt+2t=1∑NρN−tztztTθ=0
ベクトルAとベクトルxの積をベクトルxで微分する:
∂x∂(Ax)=AT
よって:
∂θ∂(ztTθ)=zt
より、θの最小二乗推定値が得られる(Jが最小にするθ^):
θ^=(t=1∑NρN−tztztT)−1t=1∑NρN−tztyt
上式が成り立つためには、(∑t=1NρN−tztztT)−1が存在しなければならない。
一般に、入力信号u(t)が十分多くの周波数成分を含んでいれば、上記の逆行列が存在する。
3.2.1 推定値の漸近的性質
データが多くなるにつれて、確率極限:
plimN→∞θ^=θ
が成立するとき、θ^は一致推定値であるという。
ここで、忘却係数ρ=1、すなわち過去のデータを忘却しない場合について考察する。θ^の式にyt=ztTθ+rtを代入すると:
plimN→∞θ^=(plimN→∞N1t=1∑NztztT)−1(plimN→∞N1t=1∑Nzt{ztTθ+rt})=θ+(plimN→∞N1t=1∑NztztT)−1(plimN→∞N1t=1∑Nztrt)
が得られる。ベクトルztと誤差rtは無関係でなければならない、すなわち:
plimN→∞N1t=1∑Nztrt=0
という条件が成り立たなければならない。
一般に上式が成立することが期待できないので、観測雑音のレベルが高い場合、最小二乗推定は一致推定量でなく、偏り(バイアス)を持つ。
3.3 逐次最小二乗法(Recursive Least Squares)
前に導出した最小二乗法は、データを蓄えておき、データ行列の逆行列を計算して推定値を得るバッチ処理である。このような方法は繰り返し計算を必要としないことからone-shot法またはオフライン法とも呼ばれている。
システムの特性を実時間での監視や、異常の検出と診断には不向きである。
いま、N個のデータから得られる推定値をθNとする。そこで、θNを過去の推定値及び時刻Nでのデータより求めることを考える。**新しくデータが得られる度に直前の推定値を修正していく方式(逐次計算式)**が実現されれば、オンライン推定や実時間推定への適用が可能である。
逐次最小二乗法のアルゴリズム
θ^N=θ^N−1+LNεN
εN=yN−zNTθ^N−1
LN=ρN+zNTPN−1zNPN−1zN
PN=ρN1[PN−1−ρN+zNTPN−1zNPN−1zNzNTPN−1]
ただし、PNは2n×2nの行列で、LNは2n×1のベクトルである。
逐次最小二乗法の特徴
-
推定値θ^Nは、1時刻前の推定値θ^N−1に、式誤差yN−zNTθ^N−1に比例した修正項を加えることによって生成される。したがって、バッチ処理に比べて記憶容量が少なくすむ。また、逐次計算では逆行列の計算を必要としない。
-
上述の逐次アルゴリズムを実行するためには初期値の設定が必要である。通常、次のように選べばよい:
θ^0=0,P0=αI
ただし、α=103∼105
忘却係数の設定
忘却係数ρNも推定アルゴリズムの性能を大きく左右する。
忘却係数が小さいほど、忘却機能が強く働くので、推定速度が速く、パラメータの変動にも対応できるが、システムに関する情報を速く忘却するので、観測雑音に弱く、推定値が振動的になる。
時不変システムの場合
通常、時不変システムのパラメータ推定において、ρN=1としても差し支えないが、忘却係数を時間の経過とともに1に近づくように設定したほうが、パラメータの推定値が速く真値へ収束する。
ρN=(1−0.01)ρN−1+0.01,ρ0=0.95
すなわち、最初のうちに忘却係数を小さくすることによって推定速度を上げるが、推定値がある程度その真値に近づいたら、雑音の影響を軽減するために、忘却係数を1とすることによって推定速度を落とす。
時変システムの場合
一方、時変システムのパラメータ推定において、ρN=0.97∼0.999と、1よりやや小さい定数にすればよい。忘却係数が小さいほど、時変パラメータへの追従速度が速くなるが、雑音の影響を受けやすくなる。
いずれにしても、雑音のレベルが高い場合、時変システムのパラメータ推定は困難である。
3.4 補助変数法によるパラメータ一致推定
ベクトルztと同じサイズの補助変数ベクトルmtを導入し、次のように補助変数法による推定値を得る。
θ^IV=(t=1∑NρN−tmtztT)−1t=1∑NρN−tmtyt
そこで、忘却係数ρ=1の場合(過去のデータを忘却しない)における補助変数推定値の漸近的性質について考察する。上式の推定値にyt=ztTθ+rtを代入して、確率極限をとると:
plimN→∞θ^IV=(plimN→∞N1t=1∑NmtztT)−1(plimN→∞N1t=1∑Nmt{ztTθ+rt})=θ+(plimN→∞N1t=1∑NmtztT)−1(plimN→∞N1t=1∑Nmtrt)
一致推定の条件
補助変数ベクトルmtが次のような条件を満足すれば、パラメータ推定値は一致推定値である:
-
逆行列(plimN→∞N1∑t=1NmtztT)−1が存在する。
-
補助変数ベクトルmtと式誤差rtは無相関である。すなわち:
plimN→∞N1∑t=1Nmtrt=0
補助変数ベクトルの構成方法
(1) 遅延された入力を利用
mt=[ut−1−d,…,ut−n−d,ut−1,…,ut−n]T
ただし、d≥n
(2) 遅延された出力を利用
mt=[yt−1−d,…,yt−n−d,ut−1,…,ut−n]T
ただし、d≥n
(3) 推定された出力を利用(Bootstrap法)
mt=[−x^t−1,…,−x^t−n,ut−1,…,ut−n]T
ただし、推定された出力:
x^t=−∑i=1na^ix^t−i+∑i=1nb^iut−i
ここで、a^i,b^iは何らかの方法で得たパラメータの推定値である(一致推定値でなくてもよい)。このように、システムの出力とパラメータを交互に推定することを**Bootstrap法(靴のひもかけ)**という。
3.4.1 逐次推定アルゴリズム
最小二乗法と補助変数法に関する逐次推定アルゴリズムをまとめると、以下のようになる:
θ^N=θ^N−1+LNεN
εN=yN−ϕNTθ^N−1
LN=ρN+ϕNTPN−1ψNPN−1ψN
PN=ρN1[PN−1−ρN+ϕNTPN−1ψNPN−1ψNϕNTPN−1]
ただし、PNは2n×2nの行列で、LNは2n×1のベクトルである。
上式において:
逐次最小二乗法の場合:
ϕN=zN,ψN=zN
逐次補助変数法の場合:
ϕN=zN,ψN=mN
Bootstrap補助変数法の注意点
Bootstrap補助変数法に関して、下記の点に留意しておくべきである。
推定された出力を使って補助変数を構成する場合、推定されたシステムの安定性をチェックしなければならない。
補助変数ベクトルは次のように構成される:
mN=[−x^N−1,…,−x^N−n,uN−1,…,uN−n]T
ただし:
x^N=−∑i=1naˉi,N−1x^N−i+∑i=1nb^i,N−1uN−i
ここで:
- b^i,N−1は逐次推定アルゴリズムから得られた時刻N−1における推定値
- aˉi,N−1は安定性を考慮して修正された推定値
安定性チェック
時刻Nにおいて、推定出力x^Nを計算するとき、上記システムの極が安定でなければ、値が発散してしまう。したがって、システムの極:
zn+aˉ1,N−1zn−1+⋯+aˉn,N−1=0
の解が単位円の内部にあれば(複素数の半径が1より小さい)、システムが安定である。
a^i,N−1(i=1,2,…,n)が安定な極を構成していれば、aˉi,N−1=a^i,N−1(i=1,2,…,n)とする。そうでなければ、a^i,N−1(i=1,2,…,n)を適当な安定パラメータに置き換える。
射影による修正手法
複雑な手法として、以下のような「射影」による修正手法もある:
アルゴリズム:
- Step a:
- If a^i,N−1(i=1,2,…,n) stable then
- aˉi,N−1=a^i,N−1(i=1,2,…,n)
- Stop
- Else
- aˉi,N−1=aˉi,N−2+0.5∗(a^i,N−1−aˉi,N−2)
- Endif
- Step b:
- If aˉi,N−1(i=1,2,…,n) stable then
- Else
- aˉi,N−1=aˉi,N−2+0.5∗(aˉi,N−1−aˉi,N−2)
- Endif
- Step c: Go to Step b
上述の修正は、推定出力の計算だけのために行われることに注意されたい。逐次推定アルゴリズムに対しては、推定されたシステムの安定性の如何に関わらず、このような修正をしない。
最初のうち、パラメータ推定値が揺れるので、最初の50〜100ステップの推定を最小二乗法で行い、そのあとBootstrap補助変数法に切り替えたほうがよい。
3.6 逐次最小二乗法の導出
最小二乗法による二乗誤差評価∂J/∂θ=0のとき、最小二乗法推定値θ^により:
θ^=(t=1∑NρN−tztztT)−1t=1∑NρN−tztyt
が得られる。このとき、逆行列を仮定すると:
PN=(t=1∑NρN−tztztT)−1
よって:
忘却係数ρが時不変であれば、ρt=ρNである。これによって、忘却係数ρが小さくなると、昔のことを忘れてPNが大きくなる。
PN−1=(t=1∑NρNN−tztztT)=(ρNN−1z1z1T+ρNN−2z2z2T+⋯+ρNzN−1zN−1T)+ρN0zNzNT=ρNt=1∑N−1ρNN−1−tztztT+zNzNT=ρNPN−1−1+zNzNT
Woodbury逆行列補題の適用
(A−1+CTB−1D)−1=A−ACT(DACT+B)−1DA
A=ρNPN−1,B=1,CT=zN,D=zNT
したがって:
PN=ρN1PN−1−ρN1PN−1zN[1+zNTρNPN−1zN]−1zNTPN−1ρN1=ρN1[PN−1−ρN+zNTPN−1zNPN−1zNzNTPN−1]
PNを最小二乗推定値θ^に代入すると:
θ^N=(t=1∑NρNN−tztztT)−1t=1∑NρNN−tztyt=PN[ρNt=1∑N−1ρNN−1−tztyt+zNyN]
整理すると:
θ^N=PN[ρNPN−1−1θ^N−1+zNyN]=PN[[PN−1−zNzNT]θ^N−1+zNyN]=θ^N−1+PNzN[yN−zNTθ^N−1]
LN=PNzNでPNが大きくなると、LNが大きくなる。偏差係数が大きくなるので、偏差に対応する変化が大きいため、前のことを忘れた。
PNzN=LN=ρN1[PN−1−ρN+zNTPN−1zNPN−1zNzNTPN−1]zN=ρN+zNTPN−1zNPN−1zN
3.7 射影と最小二乗法の幾何学的意味
3.7.1 ベクトル空間と部分空間
実数集合Rまたは複素数集合Cなどは、加減乗除の演算、いわゆる四則演算が定義されている。このような集合を**体(field)**という。体F上のベクトル空間Xは以下のように定義される。
定義 3.7.1:線形ベクトル空間
x,y∈Xおよびα∈Fについて、x+y∈Xとαx∈Xが定義され、以下の公理(axiom)が満足されるとき、Xを体F(RあるいはC)上の線形ベクトル空間という。

F上のベクトル空間Xの部分空間(subspace)SはXの空ではない部分集合であり、S自身も同じF上のベクトル空間である。
3.7.2 行列の階数と次元
定義 3.7.2:一次独立性
Cm上のベクトルの組{x1,…,xk}は、その**一次結合(線形結合)**が0であるとき:
α1x1+⋯+αkxk=0
α1=α2=⋯=αk=0であれば、**一次独立(linearly independent)**であるという。
逆に、すべてが0ではないあるスカラー組α1,…,αkによって、{x1,…,xk}の一次結合がゼロであれば、{x1,…,xk}は**一次従属(linearly dependent)**であるという。
xi=(ai,bi,…,ni)Tがベクトル、αiがスカラーで:
α1x1+⋯+αkxk=0⇒[x1…xk]α1⋮αk=Ax=0
ベクトルxiを展開したら、一次結合(線形結合)が行列とベクトルの掛け算がゼロという形になる。
- この線形変換が成り立つベクトルが、ベクトルαが零ベクトルしかいないと、**一次独立(線形独立)**である。つまり、ベクトル組xでの行列の階数が次元数と同じであり、線形変換した空間の次元が圧縮されない。
- 逆にこの線形変換が成り立つベクトルが、ベクトルα以外に存在すると、**一次従属(線形従属)**である。つまり、ベクトル組xでの行列の階数が次元数より小さく、線形変換した空間の次元が圧縮された。
定義 3.7.3:部分空間
ベクトル組{x1,…,xk}∈Cnの一次結合の全体は、部分空間となり、{x1,…,xk}によって張られる**部分空間(subspace spanned by vectors)**と呼ばれる。以下のように表される:
span{x1,…,xk}={∑i=1nβixi,βi∈C}
{x1,…,xn}が一次独立(線形独立)で、かつb∈span{x1,…,xn}であれば、bはx1,…,xnによる唯一の一次結合(線形結合)である。
基底ベクトルはお互いに独立であれば、基底ベクトルで張られる空間に存在するベクトルは、当然唯一の座標がある。
X∈Rn×mの列ベクトルによって張られる部分空間R(X)をその列空間という。
列空間と行空間
R(X)={Xの列ベクトル{x1,…,xM}で張られる部分空間}
R(XT)={Xの行ベクトルで張られる部分空間}
行列XT∈RN×Mについて、階数rは、独立な列の最大個数あるいは独立な行の最大個数である。
dimR(X)=dimR(XT)=r
左零空間
αT(x1,…,xk)=xTA=0
左零空間:
N(XT)={n∈RN∣XTn=0}
dimN(XT)=N−r
列空間と左零空間が直交している:
R(X)⊥N(XT),R(X)⊥=N(XT),N(XT)⊥=R(X)
列空間と左零空間の和空間は、空間全体である:
R(X)⊕N(XT)=RN
零空間(核空間)
N(X)={h∈RM∣Xh=0}
dimN(X)=M−r
R(XT)⊥N(X),R(XT)⊥=N(X),N(X)⊥=R(XT)
R(XT)⊕N(X)=RM

3.7.3 射影と最小二乗法
直線への射影=ベクトルの内積
yTx=xTy=∣∣x∣∣⋅∣∣y∣∣cosθ
yがxへの射影yr=axとおくと(aがスカラー、単なる比例を表す):
(y−yr)Tx=(y−ax)Tx=0,a=xTxyTx=xTxxTy
つまり、ベクトルがベクトルの線形結合である。元のyベクトルをxベクトルへの方向の成分を除くと、垂直成分しかないので、内積(射影)はゼロである。
yr=hx=xTxxTyx=[(xTx)−1xxT]y=[x(xTx)−1xT]y
射影と最小二乗法
モデル:
y=yr+ynyr=XhX=[x1,⋯,xM]∈RN×Mh=[h1,⋯,hM]T
Xの列空間R(X)上の任意のベクトルXgについて考えると、ynがXgに垂直すれば:
(Xg)Tyn=(Xg)T(y−yr)=gTXT(y−Xh)=gT(XTy−XTXh)=0
よって、すべてのgについて成り立つために:
XTy=XTXh=XTyr
つまり、部分空間Xに存在する任意のベクトルgに対して、あるベクトルyのベクトル成分ynと垂直すれば、yが部分空間Xへの射影はyrである。
すなわち:
h=(XTX)−1XTy
まとめ
本章では線形システムのパラメータ推定について以下の重要な手法を学習した:
- 最小二乗法: バッチ処理によるパラメータ推定の基礎
- 逐次最小二乗法: リアルタイム推定のための逐次アルゴリズム
- 補助変数法: 一致推定を実現するための手法
- 射影理論: 最小二乗法の幾何学的解釈
これらの手法は、システム同定における実用的なパラメータ推定の基盤となる重要な理論である。特に逐次最小二乗法は、オンライン推定や適応制御において広く応用されている。