Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
recursiveleastsquares
Search
yuki
December 27, 2020
0
13k
recursiveleastsquares
yuki
December 27, 2020
Tweet
Share
More Decks by yuki
See All by yuki
240315_発表資料_清水.pdf
yuyumoyuyu
1
420
230315_symposium
yuyumoyuyu
0
360
220305_kenkyukai
yuyumoyuyu
0
48
221124_kenkyukai
yuyumoyuyu
0
230
voltageequation5
yuyumoyuyu
0
6.3k
210910_kenkyukai
yuyumoyuyu
0
200
210826_bumontaikai
yuyumoyuyu
0
73
voltageequation4
yuyumoyuyu
1
7.6k
210518_iemdc
yuyumoyuyu
0
62
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
The Cult of Friendly URLs
andyhume
74
5.7k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Web development in the modern age
philhawksworth
203
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
Writing Fast Ruby
sferik
622
60k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
65
14k
Creatively Recalculating Your Daily Design Routine
revolveconf
211
11k
Facilitating Awesome Meetings
lara
43
5.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
Into the Great Unknown - MozCon
thekraken
14
1k
Transcript
逐次最小二乗法 Recursive Least Squares 大阪府立大学 工学研究科 清水 悠生
2 (復習)最小二乗法で扱う誤差関数 ✓ 誤差関数を誤差の2乗の和とし,誤差関数が最小となる ような係数a, bを計算する方法が最小二乗法 最小二乗法で扱う誤差関数E(a,b) , =
=1 1 2 () − () + 2 aとbの 2変数関数 誤差の2乗 x y i番目のデータ(x(i),y(i)) x(i) y(i) ax(i)+b 回帰直線 y=ax+b 誤差 (残差) n個のデータを仮定
3 時系列データの場合は? ✓ 例えば,ある時刻 t において モータに電圧 v(t) をかけたとき電流 i(t)
が流れたとする ✓ ある一定時間(e.g. t=0,…,n)の電圧と電流の関係から モータの抵抗値やインダクタンスなどを同定したい! ⇒逐次最小二乗法が有効! モータ 電圧 v(t) 電流 i(t) ノイズ
4 時系列データの場合の問題設定 ✓ 時刻 t=i (i=0,1,…)における入出力データ(x(i),y(i))が 得られた場合を仮定する ✓ xとyの関係は比例係数 θ
の比例関係であると仮定 (ただし出力データyにはノイズがのっている) ✓ この θ を最小二乗法で同定する! x y 時刻t=iにおける データ (x(i),y(i)) x(i) y(i) θx(i) 回帰直線 y=θx 誤差e(i) 時刻t=iにおける回帰誤差e(i) () = () − ()
5 時系列データの場合の2つ問題点 ✓ 時系列データを扱う際には下記の2つの問題に注意 ① 求めたい回帰係数(パラメータ)の時刻による変動 ② メモリ(記憶領域)の限界
6 問題①:パラメータの変動 ✓ 求めたい回帰係数(パラメータ)は変動する場合がある ex)抵抗値の温度変化,インダクタンスの磁気飽和etc ✓ パラメータの時間変動にすばやく追従する必要がある! 時刻t 1 までの
データ群 x y 時刻t 1 以降の データ群 回帰直線 y=θx x y 回帰直線 y=θ 1 x 回帰直線 y=θ 2 x 回帰誤差が大きい…? 係数が変化したと 考えると自然!
7 過去のデータをどんどん忘れるように工夫! ✓ 忘却係数λを誤差関数に導入し, 過去のデータの影響を小さくしていく⇒逐次最小二乗法 時刻t=iにおける回帰誤差e(i) () = () −
() 通常の最小二乗法で扱う時刻t=nでの誤差関数E[n] = =0 1 2 2 = 1 2 2 + 1 2 −1 2 + ⋯ + 1 2 0 2 逐次最小二乗法で扱う時刻t=nでの誤差関数E[n] = =0 1 2 − 2 = 1 2 0 2 + 1 2 1 −1 2 + ⋯ + 1 2 0 2 : 忘却係数 (0<<1) 過去のデータになればなるほど 忘却係数の次数が大きくなる (値が小さくなる)
8 問題②:メモリの限界 ✓ 時系列データはシステムが動作している間はずっと 増え続けるため,その全てを記憶することは不可能 時刻t=nでの誤差関数E[n] = =0 1
2 − 2 nが大きくなればなるほど 記憶しておくデータ数が膨大に! ✓ 直近のデータのみを使用して パラメータを計算できることが理想
9 まとめると… ✓ 誤差関数E[n]から求まるパラメータθ[n]に関して 漸化式を作ればよい! = =0 1 2
− 2 の最小化 ⇒ が求められるが, メモリの限界があるためこれは計算できない ⇒ と − 1 の関係を数式化できれば(漸化式を作れば) 直近のデータの計算だけでパラメータが求まる! ✓ この漸化式を導出していきます
10 まずは普通に誤差関数を解いてみる ✓ 誤差関数の最小化により 時刻 t=n におけるパラメータの最適解 θ[n] を求める min
= =0 1 2 − 2 = =0 1 2 − () − () 2 ⇒ = =0 () − []() − −() = − [][] T − = − T + [] T = 0 ⇔ [] = T −1 T ただし,時刻 t=n における各ベクトル・行列は次式のように定義 = (0) ⋮ () , = (0) ⋮ () , = 0 ⋱ (n×n行列) 微分して0 行列で表現 展開 逆行列を左から かける(正則と仮定)
11 目標の再確認 ✓ 時刻 t=n におけるパラメータの最適解 θ[n] と 時刻 t=n-1
におけるパラメータの最適解 θ[n-1] との 関係を表す漸化式を導出することが最終目標 [] = T −1 T [ − 1] = − 1 T − 1 − 1 −1 − 1 T − 1 − 1 両者の関係を数式化する!
12 漸化式の導出(1/3) ✓ θ[n]を変形する = T −1 T = [](スカラ)とおく
= T −1 = =0 − () 2 −1 = =0 −1 − () 2 + 0 () 2 −1 = =0 −1 (−1)− () 2 + () 2 −1 = − 1 −1 + () 2 −1 = − 1 + − 1 () 2 要素の和に変形 t=nの要素を 外に出す 第1項目を n-1で表現
13 漸化式の導出(2/3) ✓ つづき = T −1 T = [](スカラ)とおく
= T = =0 ()−() = =0 −1 ()−() + ()0() = =0 −1 ()(−1)−() + ()() = − 1 + ()() 要素の和に変形 t=nの要素を 外に出す 第1項目を n-1で表現
14 漸化式の導出(3/3) ✓ ついに漸化式が求まる! = T −1 T = =
− 1 + − 1 () 2 − 1 + ()() = − 1 − 1 + − 1 ()() + − 1 () 2 = − 1 + − 1 ()() + − 1 () 2 = − 1 + − 1 () + − 1 () 2 () − − 1 () 前ページの 結果を代入 展開 θ[n-1]を作る 一つ前のパラメータθ[n-1]とt=nのデータだけで θ[n]が導出可能に! ただし,p[n-1]も漸化式から計算しておく必要あり
15 導出した漸化式の解釈 ✓ 完成した漸化式はフィードバック制御のように解釈可能 = − 1 + − 1
() + − 1 () 2 () − − 1 () λで決まるゲイン (誤差をどれだけ 反映するか) 1つ前のパラメータ による予測誤差 1つ前の パラメータ x y t=nのデータ(x(n),y(n)) x(n) y(n) θ[n-1]x(n) 回帰直線 y= θ[n-1]x 予測誤差
16 単回帰から重回帰への拡張 ✓ 複数パラメータ θ 1, θ 2 を同時に同定する場合を考える ✓
回帰誤差は下記の通り 時刻t=iにおける回帰誤差e(i) () = () − 1 1 () − 2 2 () 回帰平面 y=θ 1 x 1 +θ 2 x 2 誤差e(i) 時刻t=iにおけるデータ (x 1 (i), x 2 (i), y(i)) x 1 y x 2 θ 1 x 1 (i)+θ 2 x 2 (i) y(i)
17 まずは誤差関数の最小化 ✓ パラメータ最適解 θ 1 [n],θ 2 [n] を求めると
単回帰の時と同じ解が得られる min = 1 2 − [] T − [] ⇒ = − T − [] = − T + T = ⇔ [] = T −1 T ただし,時刻 t=n における各行列は次式のように定義 = (0) ⋮ () (n×1) , = 1 (0) ⋮ 1 () 2 (0) ⋮ 2 () (n×2) = 1 [] 2 [] (2×1) , = 0 ⋱ (n×n) 微分して0 展開 逆行列を左から かける(正則と仮定)
18 漸化式の導出(1/4) ✓ Θ[n]を変形する [] = T −1 T =
[](2×2)とおく = T −1 = =0 −()T () −1 = =0 −1 (−1)−()T () + 0()T () −1 = − 1 −1 + ()T () −1 () = 1 () 2 () 要素の和に変形 t=nの要素を 外に出す 第1項目を n-1で表現
19 漸化式の導出(2/4) ✓ P[n]のつづき −1 + T −1 = −
T 1 + T = − 1 −1 + ()T () −1 = 1 − 1 − 1 − 1 ()T () 1 − 1 1 + () 1 − 1 ()T = 1 − 1 − − 1 ()T () − 1 + () − 1 ()T = − 1 + () − 1 ()T 公式を適用 : M×Mの正定値行列 : M×1行列 下記の公式を用いる(ひたすら要素計算すると証明できます) 公式に代入して 1/λでくくる 一つにまとめる − 1 () − 1 ()T = − 1 ()T () − 1 最後の変形では下記の関係を用いた(これもひたすら計算です)
20 漸化式の導出(3/4) ✓ つづき = T −1 T = [](2×1行列)とおく
= T = =0 −()T () = =0 −1 (−1)−()T () + 0()T () = − 1 + ()T () 要素の和に変形 t=nの要素を 外に出す 第1項目をn-1で表現
21 漸化式の導出(4/4) ✓ 単回帰と同じ形式の漸化式が導出できる = T −1 T = =
− 1 + () − 1 ()T − 1 + ()T () = − 1 − 1 + − 1 ()T () + () − 1 ()T = − 1 + − 1 ()T () + () − 1 ()T = − 1 + − 1 ()T + () − 1 ()T () − − 1 前ページの 結果を代入 展開 Θ[n-1]を作る λで決まるゲイン 1つ前のパラメータ による予測誤差 1つ前の パラメータ
22 逐次最小二乗法の活用例 ✓ 電圧方程式からIPMSMのインダクタンス等のパラメータを オンラインで同定することが可能 = + − = −
[1] Morimoto et al., “Mechanical Sensorless Drives of IPMSM With Online Parameter Identification,” IEEE Trans. Ind. Appl., vol. 42, no. 5, pp. 1241-1248, 2006 定常状態の電圧方程式(d軸) パラメータΘ X Y