前置知識
1. 牛頓法
作用:1. 求根 2.求極值
-
求根
目標(biāo): 求解 的根
計算穿過初始點 并且斜率為 的直線與x軸的交點可得
?
迭代公式:
-
求解一維無約束最小值
目標(biāo): 求解 的根
牛頓法也可用來求解函數(shù)的極值空入。極值點是導(dǎo)數(shù)為0,可用牛頓法求導(dǎo)數(shù)的零點。
的二階泰勒展開為
求解
可得
?迭代公式:
-
求解高維無約束最小值
高維情況下泰勒二階展開為
?
因此迭代公式:
優(yōu)點
- 牛頓法是二階收斂,比一般梯度下降法更快收斂竞阐,特別是當(dāng)初始點距離目標(biāo)足夠靠近摸航。
缺點
- 應(yīng)用求極值的時候需要目標(biāo)函數(shù)二次可微,而梯度下降法只需要可微
- 需要 矩陣正定铜邮,遇到 的極值點仪召,或者初始點距離目標(biāo)遠時候可能無法收斂
- 每次迭代需要求 的逆矩陣,運算量非常大
2. 高斯-牛頓法
作用:降低牛頓法的計算量松蒜,提高計算效率
最小二乘法問題
對于向量函數(shù)
最小化 或者找到
這里
牛頓法推導(dǎo)
已知牛頓法迭代公式:
的梯度
即
矩陣有
忽略二階導(dǎo)數(shù)項有:
所以:
高斯-牛頓迭代公式:
優(yōu)點
- 滿秩扔茅,此時二次項 可以忽略,高斯牛頓和牛頓法都會收斂
- 無需計算 矩陣
缺點
- 若 或 比較大秸苗,會導(dǎo)致難以忽略該二次項召娜,高斯牛頓法的收斂速度會很慢,甚至無法收斂惊楼。
Levenberg-Maquardt 算法
根據(jù)目標(biāo)函數(shù) 二階近似得到:
?
我們定義下降方向為
?
高斯牛頓法迭代公式:
LM迭代公式:
? or
?
作用:結(jié)合了高斯牛頓法與梯度下降法的特點玖瘸,引入阻尼因子來調(diào)節(jié)算法特性。
因子作用:
- 當(dāng) 時保證系數(shù)矩陣正定檀咙,從而確保迭代的下降方向
- 當(dāng) 很大時雅倒,退化為梯度下降法:
- 當(dāng) 很小時,退化為高斯牛頓法:
的計算
-
初始取值: 的初始值 與 矩陣的元素個數(shù)有關(guān):
?
-
更新: 由系數(shù) 來控制弧可,這里:
?
? 分子的目標(biāo)函數(shù)在步長 下的實際變化蔑匣,分母為目標(biāo)函數(shù)二階近似的變化:
?
可以看出
- 越大,表明 對 的效果越好,可以縮小 以使得 算法接近高斯牛頓法
- 越小裁良,表明 對 的效果越差凿将,所以增大 以使得 算法接近梯度下降法并減少步長
?
? 和 關(guān)系曲線圖
LM算法流程圖
Reference
boksic 非線性優(yōu)化整理-1.牛頓法 http://blog.csdn.net/boksic/article/details/79130509
boksic 非線性優(yōu)化整理-2.高斯牛頓法 https://blog.csdn.net/boksic/article/details/79055298
boksic 非線性優(yōu)化整理-3.Levenberg-Marquardt法(LM法)https://blog.csdn.net/boksic/article/details/79177055#
Timmy_Y 訓(xùn)練數(shù)據(jù)常用算法之Levenberg–Marquardt(LM)https://blog.csdn.net/mingtian715/article/details/53579379
Miroslav Balda 的Methods for non-linear least square problems http://download.csdn.net/detail/mingtian715/9708842