1. 程式人生 > >迭代求解最優化問題——最小二乘問題、高斯牛頓法

迭代求解最優化問題——最小二乘問題、高斯牛頓法

最小二乘問題

最小二乘問題是應用最廣泛的優化問題,它的一般形式如下:

minx||r(x)||2
該問題的損失函式為S(x)=||r(x)||2。其中r(x)為殘差函式,一般表示預測值與實際值的差別。一個最簡單的最小二乘問題就是線性迴歸問題,對於這個問題的求解可以用上一節所說的梯度下降法,這也是機器學習領域常用的一種做法。

線性最小二乘問題

線性最小二乘問題是最簡單的最小二乘問題,它的一般形式如下:

minx||Axb||2
線性最小二乘問題的求解很容易,
h(x)=||Axb||2=(Axb)T(Axb)
對它求導並且令導數為零得到ATAxATb=0,這稱為最小二乘問題的標準方程(normal equation)。

解得

x=(ATA)1ATb
熟悉線性迴歸模型的話就可以發現,這就是線性迴歸模型引數的解析解。

非線性最小二乘問題

上面的問題中有r(x)=Axb。r(x)是一個線性函式。對它求導得到Jacobian矩陣Jr=A。於是有x=(JTrJr)1JTrb

而許多最小二乘問題的殘差函式並不是線性的,此類問題稱為非線性優化問題。

對於非線性優化的問題當然可以結合具體的殘差函式進行分析,但是對於一般的函式,我們也可以通過將非線性函式進行線性化的方式進行迭代求解。具體來說,由泰勒展開

r(x0+Δ)=r(x0)+JrΔ

求解

minΔ||r(x0+Δ)||2=minΔ||r(x0)+JrΔ||2

由上面線性最小二乘問題的推導可以得出此問題的解為Δ

=(JTrJr)1JTrr(x0)

於是通過不斷迭代x(k+1)=x(k)+αΔ,我們可以對非線性最小二乘問題的解進行逼近

高斯牛頓法

上述使用迭代求解非線性最小二乘問題的方法稱為高斯牛頓法。它是牛頓法求解非線性最小二乘問題時的一個特例。
事實上,對損失函式:

S(β)=||r(β)||2
使用牛頓法有
β(s+1)=β(s)H1g
H為S對β的二次導,g為S對β的梯度。

顯然g=2JTrr, H=2(JTrJr+HTrr),其中Jr為r對β的Jacobian矩陣,Hr為r對β的Hessian矩陣。

在此我們假設在非線性最小二乘問題中殘差函式的二次偏導的作用是不明顯的,於是我們可以將這一項省略,於是得到

H2JTrJr

帶入牛頓法的計算公式,我們有

β(s+1)=β(s)+αΔ,Δ=(JTrJ