談談自己對線性最小二乘和非線性最小二乘之間關係的理解~

最小二乘問題,是最基本、最實用、最應用廣泛的的數學模型,在機器學習中更是得到了極大的應用(公式1),比如說我們的PCA,最經典的解釋就是:最小化樣本與其重構樣本之間的誤差和。採用的公式我不用寫出來大家都會明白,二者先取個差值,在來個平方,最後搞一個和號上去,這就是最小二乘問題的思想。該數學模型的目的十分直觀,就是想要計算出一組參數,這組參數可以讓計算出來的數據與觀測數據最爲接近。 進一步,最小二乘又可以分爲線性和非線性兩種,分別對應fi(x)的線性形式與非線性形式,線性最小二乘很好求解,可以將公式(1)變換爲矩陣方程(公式2),最後直接求解矩陣方程即可,不需要迭代,這種解被稱爲“解析解”。非線性最小二乘問題則不然,它要複雜得多,沒有辦法變換爲矩陣方程形式,以至於它必須將問題化簡爲每一步均爲可以直接求解的子問題,整個求解過程是迭代的。


(1)

(2)


線性最小二乘問題與非線性最小二乘的關係,就是非線性最小二乘問題的求解過程,求解過程一講完,關係自然也就明瞭!本來想寫一篇很詳細的博客,介紹非線性最小二乘問題的解法,一直打算把求解非線性最小二乘問題的每一步數學公式都進行解釋,但是我發現,在CSDN中,大家往往對數學公式不大感冒,喜歡的往往就是通俗簡單的文字說明,加上實用的代碼。所以,我適應環境,下面就說說求解過程。


------------------------------------------------------------------------------------------------------------------------------------------------------------

1. 對原問題中的每一個函數fi(x)在x0處進行一階泰勒展開,因爲一階泰勒展開屬於線性函數(公式3),於是通過這種手段,就可以將非線性最小二乘問題簡化爲線性最小二乘問題來求解。

               (3)

2. 對得到的線性最小二乘問題,進行直接求解。這裏面涉及到兩個矩陣,一個是雅克比矩陣(公式4),一個是赫森矩陣(公式5)。

                        (4)

(5)

3. 得到子問題的解析解xk+1之後(公式2),xk+1與xk之間便自然地建立了等式關係(公式6)。

(6)

4. 更新參數xk(k=k+1, k=1....n),回到步驟1,直到滿足收斂條件,得到最優解x*

-----------------------------------------------------------------------------------------------------------------------------------------------------------


說完了,非線性最小二乘問題的解決思路就是這樣的,整個過程就是複雜問題簡單化,線性最小二乘簡單吧,那就想辦法利用簡單的來解決複雜的。一階泰勒展開剛好能起到“橋樑”一樣的角色,如此看來,大牛們還是很聰明的。

下面說說幾個注意事項。

第一:步驟1中,一定要一階泰勒展開,不能採用二階以上,因爲只有一階泰勒展開纔是線性函數,才能轉換爲線性最小二乘問題來直接求解。

第二:步驟2中,雅克比矩陣和赫森矩陣都是屬於子問題的,不是原問題的。

第三:步驟3中,是爲了得到新求解的參數xk+1與之前參數xk之間的關係,形成一種“鏈式反應”,也就是迭代了。

第四:步驟4中,收斂條件一般有1.梯度近乎爲0。2.變量變化很小。3.目標函數值變化很小等。

第五:許多優化算法,都可以用於解決非線性最小二乘問題。例如我之前講過的LM算法與信賴域算法(參考2與參考3),對應的matlab代碼已給出。

第六:函數fi(x)往往都是如下形式(公式7),千萬別以爲fi(x)就是hi(x),我之前犯過類似的錯誤,調代碼調的很慘。


(7)


希望我的理解對正在使用最小二乘模型的童鞋能夠所有幫助。


參考1:最優化理論與算法

參考2:利用Levenberg_Marquardt算法求解無約束的非線性最小二乘問題~

參考3:利用信賴域算法求解無約束的非線性最小二乘問題~


(轉載請註明:http://blog.csdn.net/wsj998689aa/article/details/41558945, 作者:迷霧forest)


發佈了42 篇原創文章 · 獲贊 193 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章