以線性迴歸爲例,假設最佳函數爲 y=θTx, 對於每對觀測結果(x(i),y(i)),都有
y(i)=θTx(i)+ϵ(i)
最後就是從下式求解 θ。
y=⎣⎢⎢⎡x1x2...xm⎦⎥⎥⎤θ
1. 高斯牛頓法
高斯-牛頓法是在牛頓法基礎上進行修改得到的,用來(僅用於)解決非線性最小二乘問題。高斯-牛頓法相較牛頓法的最大優點是不需要計算二階導數矩陣(Hessian矩陣),當然,這項好處的代價是其僅適用於最小二乘問題。如下是其推導過程:
-
首先,假設 r(xi) 是最小二乘的殘差,那麼最小二乘的最終目標就是令殘差和 f(θ) 最小。
f(θ)=21i=1∑m[r(xi)]2
-
利用用牛頓法求解 f(θ) 的最小值,需要計算其梯度向量與 Hessian 矩陣。
先求梯度向量:
∇θf=∂θ∂f=i=1∑mri∂θ∂ri=⎣⎢⎢⎢⎡∇θr(x1)T∇θr(x2)T⋮∇θr(xm)T⎦⎥⎥⎥⎤T⎣⎢⎢⎡r(x1)r(x2)…r(xm)⎦⎥⎥⎤
我們假設 Jθ(r) 是 r 對 θ 求導 的 Jacobian 矩陣,因爲
Jr(θ)=⎣⎢⎢⎢⎡∂θ1∂r(x1)∂θ1∂r(x2)...∂θ1∂r(xn)∂θ2∂r(x1)∂θ2∂r(x2)∂θ2∂r(xn).........∂θn∂r(x1)∂θn∂r(x2)∂θn∂r(xn)⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡∇θr(x1)T∇θr(x2)T⋮∇θr(xm)T⎦⎥⎥⎥⎤
所以,∇θf=Jθ(r)(n×m)Tr
- 有了 ∇θf=∑i=1mri∂θ∂ri=∑i=1mri∇θri,我們然後就可以得到 Hessian 矩陣
H=i=1∑m(∇θri)T(∇θri)+ri(Hθri)
假設我們的殘差 ri 特別小,我們就可以忽略殘差項,也就是說 H≈∑i=1m(∇θri)(∇θri)T=JθT(r)Jθ(r)。
將梯度向量,Hessian矩陣(近似)帶入牛頓法公式,得到高斯-牛頓法的迭代式:
θi=θi−1−(JrTJr)(n×n)−1JrTr(m×1)
2. LM (Levenberg-Marquart) 法
與牛頓法一樣,當初始值距離最小值較遠時,高斯-牛頓法的並不能保證收斂。並且當 JrTJr 近似奇異 (determinant ≈0) 的時候,高斯牛頓法也不能正確收斂。Levenberg-Marquart 算法是對上述缺點的改進。L-M方法是對 梯度下降法 與 高斯-牛頓法 進行線性組合以充分利用兩種算法的優勢。通過在Hessian矩陣中加入阻尼係數 λ 來控制每一步迭代的步長以及方向:
- 初始化 θ0, λ0。
- 計算當前點 θi 處的殘差向量 ri與雅各比矩陣 Jr。
- 通過求解 (Hi+λI)ϵ=−JTrri求解迭代方向 ϵ。
- 計算 θi′=θi+ϵ點處的殘差向量ri′。
- 如果∣∣ri′∣∣2>∥ri∥2,即殘差沒有下降,則更新λ=βλ,增大 λ 重新回到第三步重新求解新的 ϵ。如果殘差下降,則更新θi+1=θi+ϵ ,到第二步,並且降低 λ=αλ,增大迭代步長。
在曲線擬合實踐中,α 通常選取 0.1,β 選取10。
我們可以看出,在 λ 較大時,亦即離最低點較遠時, λI>H,ϵ≈λ1JrTr,而這就是梯度下降的解。如果 λ 較小時,ϵ≈−H−1JrTr,而這是牛頓法的解。當然我們可以用高斯牛頓的解近似牛頓法。