5.3 递归最小二乘法
5.3 遞歸最小二乘法
前面最小二乘法中數(shù)據(jù)是一次全部測(cè)量好,然后進(jìn)行求解。但實(shí)際中有時(shí)存在測(cè)量數(shù)據(jù)是在線獲得的,即時(shí)刻獲得測(cè)量數(shù)據(jù)。比如無(wú)人駕駛車輛,需要實(shí)時(shí)判斷前面車輛的運(yùn)動(dòng)狀態(tài),獲取其加速度,所以每時(shí)每刻都需要進(jìn)行測(cè)量。當(dāng)每次獲得新的測(cè)量數(shù)據(jù)后,需要進(jìn)行最小二乘法以更新車輛狀態(tài)。如果每次更新時(shí),都采用公式 x^=(ATA)?1ATb\mathbf{\hat{x}} = (A^TA)^{-1}A^T\mathbf{b}x^=(ATA)?1ATb 進(jìn)行更新,即采用所有數(shù)據(jù)進(jìn)行計(jì)算,則當(dāng)測(cè)量次數(shù)很多時(shí),計(jì)算量很大,效率很低,且需要保存所有測(cè)量數(shù)據(jù)。我們可以采用遞歸方式,每次利用新測(cè)量數(shù)據(jù)對(duì)結(jié)果繼續(xù)修正,極大減小計(jì)算量和存儲(chǔ)量。
為了使記號(hào)簡(jiǎn)潔,我們令 x^m\mathbf{\hat{x}_m}x^m? 表示用前 mmm 次測(cè)量數(shù)據(jù)得到的最優(yōu)近似解。我們計(jì)算 ATAA^TAATA ,此時(shí)需要把矩陣 AAA 看作行向量組,即 A=[ar1Tar2T?armT]A = \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rm}} \end{matrix} \right]A=??????ar1T?ar2T??armT???????? ,每一行對(duì)應(yīng)一次測(cè)量數(shù)據(jù),總共 mmm 次測(cè)量,則
ATA=[ar1,ar2,?,arm][ar1Tar2T?armT]=ar1ar1T+ar2ar2T+?+armarmTA^TA= \left[ \begin{matrix} \mathbf{a_{r1}} , \mathbf{a_{r2}}, \cdots , \mathbf{a_{rm}} \end{matrix} \right] \left[ \begin{matrix} \mathbf{a^T_{r1}} \\ \mathbf{a^T_{r2}} \\ \vdots \\ \mathbf{a^T_{rm}} \end{matrix} \right]= \mathbf{a_{r1}}\mathbf{a^T_{r1}} + \mathbf{a_{r2}}\mathbf{a^T_{r2}} + \cdots + \mathbf{a_{rm}}\mathbf{a^T_{rm}} ATA=[ar1?,ar2?,?,arm??]??????ar1T?ar2T??armT????????=ar1?ar1T?+ar2?ar2T?+?+arm?armT?
令 Pm=(ATA)m?1P_m = (A^TA)_m^{-1}Pm?=(ATA)m?1? 表示用前 mmm 次測(cè)量數(shù)據(jù)得到的矩陣,則
Pm=(ar1ar1T+?+ar(m?1)ar(m?1)T+armarmT)?1=(Pm?1?1+armarmT)?1P_{m} = (\mathbf{a_{r1}}\mathbf{a^T_{r1}} + \cdots + \mathbf{a_{r(m-1)}}\mathbf{a^T_{r(m-1)}} + \mathbf{a_{rm}}\mathbf{a^T_{rm}} )^{-1}=(P_{m-1}^{-1}+\mathbf{a_{rm}}\mathbf{a^T_{rm}})^{-1} Pm?=(ar1?ar1T?+?+ar(m?1)?ar(m?1)T?+arm?armT?)?1=(Pm?1?1?+arm?armT?)?1
ATb=[ar1,ar2,?,arm][b1b2?bm]=b1ar1+b2ar2+?+bmarmA^T\mathbf{b} = \left[ \begin{matrix} \mathbf{a_{r1}} , \mathbf{a_{r2}}, \cdots , \mathbf{a_{rm}} \end{matrix} \right] \left[ \begin{matrix} b_1 \\ b_2 \\ \vdots \\ b_m \end{matrix} \right]= b_1\mathbf{a_{r1}} + b_2\mathbf{a_{r2}} + \cdots + b_m\mathbf{a_{rm}} ATb=[ar1?,ar2?,?,arm??]??????b1?b2??bm????????=b1?ar1?+b2?ar2?+?+bm?arm?
令 Bm=(ATb)mB_m = (A^T\mathbf{b})_mBm?=(ATb)m? 表示用前 mmm 次測(cè)量數(shù)據(jù)得到的向量,則
Bm=b1ar1+?+bm?1ar(m?1)+bmarm=Bm?1+bmarmB_{m} = b_1\mathbf{a_{r1}} + \cdots + b_{m-1}\mathbf{a_{r(m-1)}} + b_m\mathbf{a_{rm}} = B_{m-1} + b_m\mathbf{a_{rm}} Bm?=b1?ar1?+?+bm?1?ar(m?1)?+bm?arm?=Bm?1?+bm?arm?
根據(jù)公式 x^=(ATA)?1ATb\mathbf{\hat{x}} = (A^TA)^{-1}A^T\mathbf{b}x^=(ATA)?1ATb ,得利用 mmm 次測(cè)量數(shù)據(jù)的公式為
x^m=PmBm=(Pm?1?1+armarmT)?1(Bm?1+bmarm)\mathbf{\hat{x}_{m}} = P_{m}B_{m} = (P_{m-1}^{-1}+\mathbf{a_{rm}}\mathbf{a^T_{rm}})^{-1}(B_{m-1} + b_{m}\mathbf{a_{rm}}) x^m?=Pm?Bm?=(Pm?1?1?+arm?armT?)?1(Bm?1?+bm?arm?)
這就是獲得第 mmm 次測(cè)量數(shù)據(jù)后的更新公式,不需要全部從零計(jì)算所有數(shù)據(jù),只需保存前 m?1m-1m?1 次測(cè)量數(shù)據(jù)獲得的矩陣 Pm?1?1P_{m-1}^{-1}Pm?1?1? 和向量 Bm?1B_{m-1}Bm?1? 即可,計(jì)算量也很少。
根據(jù) x^m=PmBm\mathbf{\hat{x}_{m}} = P_{m}B_{m}x^m?=Pm?Bm? 得 Bm?1=Pm?1?1x^m?1B_{m-1} = P_{m-1}^{-1}\mathbf{\hat{x}_{m-1}}Bm?1?=Pm?1?1?x^m?1? ,Pm?1=Pm?1?1+armarmTP_{m}^{-1} =P_{m-1}^{-1}+\mathbf{a_{rm}}\mathbf{a^T_{rm}}Pm?1?=Pm?1?1?+arm?armT? 帶入上式得
x^m=Pm(Pm?1?1x^m?1+bmarm)=Pm((Pm?1?armarmT)x^m?1+bmarm)=x^m?1+Pmarm(bm?armTx^m?1)\mathbf{\hat{x}_{m}} = P_{m}(P_{m-1}^{-1}\mathbf{\hat{x}_{m-1}} + b_{m}\mathbf{a_{rm}})\\=P_{m}( (P_{m}^{-1}-\mathbf{a_{rm}}\mathbf{a^T_{rm}})\mathbf{\hat{x}_{m-1}} + b_{m}\mathbf{a_{rm}} )\\=\mathbf{\hat{x}_{m-1}}+P_{m}\mathbf{a_{rm}}(b_{m}-\mathbf{a^T_{rm}}\mathbf{\hat{x}_{m-1}}) x^m?=Pm?(Pm?1?1?x^m?1?+bm?arm?)=Pm?((Pm?1??arm?armT?)x^m?1?+bm?arm?)=x^m?1?+Pm?arm?(bm??armT?x^m?1?)
這就是最優(yōu)近似解的遞歸公式。
遞歸公式中 Pm=(Pm?1?1+armarmT)?1P_{m} = (P_{m-1}^{-1}+\mathbf{a_{rm}}\mathbf{a^T_{rm}})^{-1}Pm?=(Pm?1?1?+arm?armT?)?1 需要計(jì)算逆矩陣,進(jìn)一步化簡(jiǎn),利用公式 (A+BCD)?1=A?1?A?1B(C?1+DA?1B)?1DA?1(A+BCD)^{-1}=A^{-1}-A^{-1}B(C^{-1}+DA^{-1}B)^{-1}DA^{-1}(A+BCD)?1=A?1?A?1B(C?1+DA?1B)?1DA?1 最后可得
x^m=x^m?1+Km?m?m=bm?armTx^m?1Km=PmarmPm=Pm?1?Pm?1armarmTPm?11+armTPm?1arm\mathbf{\hat{x}_{m}} =\mathbf{\hat{x}_{m-1}}+K_{m}\epsilon_{m}\\ \epsilon_{m} = b_{m}-\mathbf{a^T_{rm}}\mathbf{\hat{x}_{m-1}}\\ K_{m} = P_{m}\mathbf{a_{rm}}\\ P_{m} = P_{m-1} - \frac {P_{m-1}\mathbf{a_{rm}}\mathbf{a^T_{rm}}P_{m-1}}{1+\mathbf{a^T_{rm}}P_{m-1}\mathbf{a_{rm}}} x^m?=x^m?1?+Km??m??m?=bm??armT?x^m?1?Km?=Pm?arm?Pm?=Pm?1??1+armT?Pm?1?arm?Pm?1?arm?armT?Pm?1??
時(shí)間衰減遞歸最小二乘法
遞歸最小二乘法中所有測(cè)量數(shù)據(jù)重要性都是一樣的,這樣可能會(huì)帶來(lái)一個(gè)問(wèn)題。還是以無(wú)人駕駛車輛實(shí)時(shí)判斷前面車輛的運(yùn)動(dòng)狀態(tài)為例,我們假設(shè)前面車輛做勻加速運(yùn)動(dòng),實(shí)際上車輛運(yùn)動(dòng)狀態(tài)時(shí)刻會(huì)發(fā)生變化,時(shí)而加速時(shí)而減速(這稱為機(jī)動(dòng)性),故為了準(zhǔn)確獲取車輛當(dāng)前狀態(tài),當(dāng)前數(shù)據(jù)的重要性,顯然要大于歷史數(shù)據(jù),不能同等對(duì)待。而遞歸最小二乘法卻同等對(duì)待,故最優(yōu)近似解更新速度慢,不能實(shí)時(shí)反映車輛運(yùn)作狀態(tài)的改變,會(huì)慢半拍。如何提高當(dāng)前數(shù)據(jù)的重要性,同時(shí)又不導(dǎo)致計(jì)算復(fù)雜度的增加,本節(jié)提出一種方法。根據(jù) Pm=Pm?1?Pm?1armarmTPm?11+armTPm?1armP_{m} = P_{m-1} - \frac {P_{m-1}\mathbf{a_{rm}}\mathbf{a^T_{rm}}P_{m-1}}{1+\mathbf{a^T_{rm}}P_{m-1}\mathbf{a_{rm}}}Pm?=Pm?1??1+armT?Pm?1?arm?Pm?1?arm?armT?Pm?1?? 得
Km=Pmarm=Pm?1arm1+armTPm?1armK_{m} = P_{m}\mathbf{a_{rm}} = \frac {P_{m-1}\mathbf{a_{rm}}}{1+\mathbf{a^T_{rm}}P_{m-1}\mathbf{a_{rm}}} Km?=Pm?arm?=1+armT?Pm?1?arm?Pm?1?arm??
最優(yōu)近似解的更新量為 Km?mK_{m}\epsilon_{m}Km??m? ,為了提高最新測(cè)量的權(quán)重,我們對(duì) KmK_{m}Km? 進(jìn)行修正為
Km=Pm?1arm1/κ+armTPm?1arm,κ≥1K_{m} = \frac {P_{m-1}\mathbf{a_{rm}}}{1/\kappa+\mathbf{a^T_{rm}}P_{m-1}\mathbf{a_{rm}}} ,\kappa \ge 1 Km?=1/κ+armT?Pm?1?arm?Pm?1?arm??,κ≥1
修正系數(shù) κ\kappaκ 越大,最新測(cè)量的權(quán)重越大,歷史數(shù)據(jù)的作用衰減越快,最優(yōu)解能快速跟蹤系統(tǒng)。但 κ\kappaκ 越大,如果車輛運(yùn)作狀態(tài)沒(méi)有改變,則會(huì)增大最優(yōu)近似解的誤差;κ\kappaκ 小,如果車輛運(yùn)作狀態(tài)發(fā)生改變,則最優(yōu)近似解不能快速跟隨車輛狀態(tài)的改變。所以最理想的情況是,先判斷車輛運(yùn)動(dòng)狀態(tài)是否發(fā)生改變,如果發(fā)生,則增大 κ\kappaκ ,否則可以令 κ=1\kappa=1κ=1 。
總結(jié)
以上是生活随笔為你收集整理的5.3 递归最小二乘法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 5.2 最优近似解 $\mathbf{\
- 下一篇: 5.4 加权最小二乘法