1、前言
a、對於工程問題,一般描述為:從一些測量值(觀測量)x 中估計參數 p?即x = f(p),
其中,x為測量值構成的向量,參數p為待求量,為了讓模型能適應一般場景,這里p也為向量。
這是一個函數求解問題,可以使用Guass-Newton法進行求解,LM算法是對Newton法的改進。
c、如果函數f為線性函數,那這個問題就變成了最小二乘問題(請參閱我另一篇博客:最小二乘法),
d、這篇博客中講解的LM法、Newton法主要用於函數f為非線性函數的情況。
2、x = f(p)問題的Newton法求解
當迭代到第k次的時候得到參數
,其中
為殘差:
對f(p)進行一階泰勒公式展開,J為Jacobi(雅可比)矩陣,因為參數p是個向量,因此對p的求導即對p逐個元素求偏導:
計算第k+1次的殘差:
通過第k次到第k+1次的迭代,
可以發現已經把非線性問題
轉化為線性求解
,則最小二乘解為:
則k+1次的參數p為:
3、加權Newton迭代
在Newton法中,所有的因變量都是等量加權的,除此之外,可以使用一個加權的矩陣對因變量進行加權。
例如,當測量矢量 x 滿足一個協方差矩陣為
的高斯分布,且希望最小化Mahalanobis距離
。
當這個協方差矩陣可以是對角的,則表示 x 各坐標之間相互獨立。
當協方差矩陣為正定對稱矩陣時,正規變為:
備注:馬氏距離
通過協方差反向傳播,一階近似下的協方差可以這么計算:
如果不可逆,那這個取逆過程為廣義逆。
4、Levenberg-Marquardt迭代(LM算法)
LM算法是對Newton迭代的改進。
(4)式的正規方程可以簡化寫成:
LM算法將上式改為:
,其中
,即N的對角線元素乘以
,非對角線元素不變
的設定策略為:在初始化時,
通常設定為
。
如果通過解增量正規方程得到的
導致誤差減小,那么接受該增量並在下一次迭代前將
除以10。
反之,如果
值導致誤差增加,那么將
乘以10並重新解增量正規方程,繼續這一過程直到求出的一個誤差下降的
為止。
對不同的
重復地解增量正規方程直到求出一個可以接受的
。
LM算法的直觀解釋:當
非常小時,該方法與Newton迭代本質相同。
當
非常大時(本質上大於1),此時
的非對角線元素相對於對角元素而言變得不重要,此時算法傾向於下降法。
LM算法在Newton迭代和下降方法之間無縫地移動,Newton法將使得算法在解的領域附近快速收斂,下降法使得算法在
運行困難時保證代價函數是下降的。
5、Newton法(LM法)兩個適用場景的轉換
a、在上一篇博客Newton法(牛頓法 Newton Method)中講述了牛頓法適用的兩個場景:1、函數求解;2、目標函數的最優化求解
上一篇博客中的f(x)相當於這篇博客中的 x –f(p),上一篇博客中是為了求x,這篇博客中是已知x,求p,只是表述不同。
b、這兩個場景有時候是可以相互轉換的:
例如:函數求解問題 f(x) = 0,那也可以認為是求解 min||f(x)||,其中||.||表示二范數,即
例如:目標函數優化問題 min ||f(x)||,當這個優化問題的理論最優解就是為 0 時,那么這個問題也可以轉化為求解 f(x) = 0