日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5.3 递归最小二乘法

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5.3 递归最小二乘法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5.3 遞歸最小二乘法

前面最小二乘法中數據是一次全部測量好,然后進行求解。但實際中有時存在測量數據是在線獲得的,即時刻獲得測量數據。比如無人駕駛車輛,需要實時判斷前面車輛的運動狀態,獲取其加速度,所以每時每刻都需要進行測量。當每次獲得新的測量數據后,需要進行最小二乘法以更新車輛狀態。如果每次更新時,都采用公式 x^=(ATA)?1ATb\mathbf{\hat{x}} = (A^TA)^{-1}A^T\mathbfx^=(ATA)?1ATb 進行更新,即采用所有數據進行計算,則當測量次數很多時,計算量很大,效率很低,且需要保存所有測量數據。我們可以采用遞歸方式,每次利用新測量數據對結果繼續修正,極大減小計算量和存儲量。

為了使記號簡潔,我們令 x^m\mathbf{\hat{x}_m}x^m? 表示用前 mmm 次測量數據得到的最優近似解。我們計算 ATAA^TAATA ,此時需要把矩陣 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???????? ,每一行對應一次測量數據,總共 mmm 次測量,則
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 次測量數據得到的矩陣,則
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 = \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)_mBm?=(ATb)m? 表示用前 mmm 次測量數據得到的向量,則
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?

根據公式 x^=(ATA)?1ATb\mathbf{\hat{x}} = (A^TA)^{-1}A^T\mathbfx^=(ATA)?1ATb ,得利用 mmm 次測量數據的公式為

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 次測量數據后的更新公式,不需要全部從零計算所有數據,只需保存前 m?1m-1m?1 次測量數據獲得的矩陣 Pm?1?1P_{m-1}^{-1}Pm?1?1? 和向量 Bm?1B_{m-1}Bm?1? 即可,計算量也很少。

根據 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?)

這就是最優近似解的遞歸公式。

遞歸公式中 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 需要計算逆矩陣,進一步化簡,利用公式 (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??

時間衰減遞歸最小二乘法

遞歸最小二乘法中所有測量數據重要性都是一樣的,這樣可能會帶來一個問題。還是以無人駕駛車輛實時判斷前面車輛的運動狀態為例,我們假設前面車輛做勻加速運動,實際上車輛運動狀態時刻會發生變化,時而加速時而減速(這稱為機動性),故為了準確獲取車輛當前狀態,當前數據的重要性,顯然要大于歷史數據,不能同等對待。而遞歸最小二乘法卻同等對待,故最優近似解更新速度慢,不能實時反映車輛運作狀態的改變,會慢半拍。如何提高當前數據的重要性,同時又不導致計算復雜度的增加,本節提出一種方法。根據 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??

最優近似解的更新量為 Km?mK_{m}\epsilon_{m}Km??m? ,為了提高最新測量的權重,我們對 KmK_{m}Km? 進行修正為

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

修正系數 κ\kappaκ 越大,最新測量的權重越大,歷史數據的作用衰減越快,最優解能快速跟蹤系統。但 κ\kappaκ 越大,如果車輛運作狀態沒有改變,則會增大最優近似解的誤差;κ\kappaκ 小,如果車輛運作狀態發生改變,則最優近似解不能快速跟隨車輛狀態的改變。所以最理想的情況是,先判斷車輛運動狀態是否發生改變,如果發生,則增大 κ\kappaκ ,否則可以令 κ=1\kappa=1κ1 。

總結

以上是生活随笔為你收集整理的5.3 递归最小二乘法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。