線性最小二乘和非線性最小二乘

本文基于下面的博客,結(jié)合自己第一次看的時(shí)候的一些問題,重新梳理總結(jié)一下

https://blog.csdn.net/wsj998689aa/article/details/41558945

一:什么是最小二乘

最小二乘:就是最小化\sum_{i = 0}^n (y_i - f_i(x))^2,

其中:y_i是第i個(gè)實(shí)際觀測(cè)到的值,也可以叫做真實(shí)值或者目標(biāo)值;

? ? ? ? ??f_i(x)則可以看作是通過x這個(gè)參數(shù)預(yù)測(cè)得到的第i個(gè)值,是對(duì)y_i的一個(gè)預(yù)測(cè)(估計(jì))。

最小二乘就是為了使得觀測(cè)值(真實(shí)值)和估計(jì)值之間的差距最小。

二:什么是線性最小二乘

所謂線性,指的是f_i(x)是x的線性函數(shù),f_i(x) = x_0+t_1x_1+?+t_qx_q。

那么對(duì)于整個(gè)f(x)可以表示為圖一:

圖一

寫成矩陣形式,為圖二

圖二

此時(shí),我們有f(x) = Ax,此時(shí)最小二乘形式變?yōu)榍髕使得||Ax-y||最小化。(這里A是固定的,是需要自己尋找的,這也是線性的前提)

三:如何求解線性最小二乘

對(duì)于線性最小二乘,我們要求解min_x||Ax-y||,那么最理想的情況是求x使得Ax =y,這樣||Ax-y|| = 0也就是最小了(別問我為什么0是最小的,因?yàn)槠椒胶停?dāng)然0是最小值)

此時(shí),問題轉(zhuǎn)換為求解A^TAx = A^Ty,最終得到x = (A^TA)^{-1}A^Ty的解析解形式,一步求解,不需要迭代,完美~

這個(gè)具體的證明過程參考下面這篇博客,我就不當(dāng)搬運(yùn)工了:

https://blog.csdn.net/u013007900/article/details/45933435

四:什么是非線性最小二乘

所謂非線性,就是f_i(x)無(wú)法表示為x的線性關(guān)系,即:f_i(x)
無(wú)法表示為x_0+t_1x_1+?+t_qx_q這種線性的關(guān)系,而是f_i(x) = e^{a_0x_0}+ e^{a_1x_1}+...+e^{a_nx_n}這種非線性關(guān)系(當(dāng)然這里也不一定是指數(shù)形式,對(duì)數(shù)啥的,或者什么奇奇怪怪表示不出來(lái)的形式也有可能)

當(dāng)f(x)x的非線性關(guān)系時(shí),此時(shí)最小二乘就變?yōu)椋悍蔷€性最小二乘

五:如何求解非線性最小二乘

非線性最小二乘問題無(wú)法構(gòu)造出來(lái)一個(gè)矩陣線性方程組的,沒有辦法求一步求得解析解,那么我們?cè)趺辞蠼饽兀?/p>

思路:既然是非線性的,那么我們可不可以將其轉(zhuǎn)換為線性的呢?或者近似線性的?

答案當(dāng)然是可以啦~~~~

這就是大名鼎鼎的一階泰勒展開:f_i(x) \approx  f_i(x_k)+\bigtriangledown f_i(x)(x-x_k)

(一定要一階泰勒展開,不能采用二階以上,因?yàn)橹挥幸浑A泰勒展開才是線性函數(shù),才能轉(zhuǎn)換為線性最小二乘問題來(lái)直接求解。)

此時(shí)min_x\sum_{i = 0}^n (y_i-f_i(x))^2變成了min_x\sum_{i = 0}^n (y_i-f_i(x_k)-\bigtriangledown f_i(x)(x-x_k))^2

我們?cè)趯⑶皟身?xiàng)合并就變成了

min_x\sum_{i = 0}^n ((y_i-f_i(x_k))-\bigtriangledown f_i(x)(x-x_k))^2

其中如果將(y_i-f_i(x_k))看作e_i,將\bigtriangledown f_i(x)看作一個(gè)矩陣的第i行(其實(shí)這里\bigtriangledown f_i(x)本來(lái)就是一個(gè)矩陣的第i行,也就是大名鼎鼎的雅各比矩陣J的第i行)

那么就變成了min_x\sum_{i = 0}^n (e_i-J_i(x-x_k))^2對(duì)應(yīng)著線性最小二乘的形式

min_x\sum_{i = 0}^n (e_i-J_i(x-x_k))^2 =min_x||e-J(x-x_k)||

此時(shí),我們?cè)撛趺醋瞿貇~當(dāng)然是模仿線性最小二乘的解鴨:

求解:J(x-x_k) = e

照著抄:J^TJ(x-x_k) = J^Te

最終:(x-x_k) = (J^TJ)^{-1}J^Te

這樣子我們就得到了關(guān)于當(dāng)前x_k的一個(gè)更新值,這樣,我們只需要不停的迭代更新x的值,直到e達(dá)到某一個(gè)精度即可~~是不是很簡(jiǎn)單呢^_^

六:結(jié)語(yǔ)

看到這里,你就入坑了鴨,你以為(x-x_k) = (J^TJ)^{-1}J^Te就這么好求解么~~

這里有幾個(gè)難點(diǎn):

1. J不會(huì)求~~腫么辦?(這點(diǎn)我不知道,我只會(huì)逆運(yùn)動(dòng)學(xué)得求雅各比的方法)

2.(J^TJ)^{-1}注意到了這一項(xiàng)么,哼哼,誰(shuí)告訴你這東西一定有逆矩陣的?那么沒有逆矩陣腫么辦,這就是一個(gè)ill-condition的問題,他的condition number非常大。這時(shí)候,我們通常引入正則項(xiàng)來(lái)降低condition number,也可以理解為強(qiáng)行讓(J^TJ)^{-1}這個(gè)逆矩陣存在。那就是~~(J^TJ + \lambda I)^{-1}直接加入一個(gè)帶權(quán)重的單位矩陣就好了。

3. 至于什么是ill condition 和condition number,等我后續(xù)有空了更新,或者大家自己搜一搜吧~我懶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容