高斯牛頓法和LM法

以線性迴歸爲例,假設最佳函數爲 y=θTxy=\bold{\theta}^T\mathbf{x}, 對於每對觀測結果(x(i),y(i))(x^{(i)},y^{(i)}),都有
y(i)=θTx(i)+ϵ(i) y^{(i)}=\theta^T x^{(i)} + \epsilon^{(i)}
最後就是從下式求解 θ\bold{\theta}

y=[x1x2...xm]θ \mathbf{y} = \begin{bmatrix} \mathbf{x}_1 \\ \mathbf{x}_2 \\ ... \\ \mathbf{x}_m \\ \end{bmatrix} \bold{\theta}

1. 高斯牛頓法

高斯-牛頓法是在牛頓法基礎上進行修改得到的,用來(僅用於)解決非線性最小二乘問題。高斯-牛頓法相較牛頓法的最大優點是不需要計算二階導數矩陣(Hessian矩陣),當然,這項好處的代價是其僅適用於最小二乘問題。如下是其推導過程:

  1. 首先,假設 r(xi)r(\mathbf{x_i}) 是最小二乘的殘差,那麼最小二乘的最終目標就是令殘差和 f(θ)f(\theta) 最小。
    f(θ)=12i=1m[r(xi)]2 f(\theta)=\frac{1}{2} \sum_{i=1}^{m} [r\left(\mathbf{x}_{\mathbf{i}}\right)]^2

  2. 利用用牛頓法求解 f(θ)f(\theta) 的最小值,需要計算其梯度向量與 Hessian 矩陣。

先求梯度向量:
θf=fθ=i=1mririθ=[θr(x1)Tθr(x2)Tθr(xm)T]T[r(x1)r(x2)r(xm)] \nabla_{\theta} f=\frac{\partial f}{\partial \theta}=\sum_{i=1}^{m} r_{i} \frac{\partial r_{i}}{\partial \theta}= \left[\begin{array}{c}{\nabla_{\theta} r\left(x_{1}\right)^{T}} \\ {\nabla_{\theta} r\left(x_{2}\right)^{T}} \\ {\vdots} \\ {\nabla_{\theta} r\left(x_{m}\right)^{T}}\end{array}\right]^T \left[\begin{array}{cccc}{r\left(x_{1}\right)} \\ {r\left(x_{2}\right)} \\ {\dots} \\ {r\left(x_{m}\right)}\end{array}\right]

我們假設 Jθ(r)J_{\theta}(r)rrθ\theta 求導 的 Jacobian 矩陣,因爲

Jr(θ)=[r(x1)θ1r(x1)θ2...r(x1)θnr(x2)θ1r(x2)θ2...r(x2)θn...r(xn)θ1r(xn)θ2...r(xn)θn]=[θr(x1)Tθr(x2)Tθr(xm)T] J_{r}(\theta)=\begin{bmatrix} \frac{\partial r(x_1)}{\partial \theta_1} & \frac{\partial r(x_1)}{\partial \theta_2} & ... & \frac{\partial r(x_1)}{\partial \theta_n} \\ \frac{\partial r(x_2)}{\partial \theta_1} & \frac{\partial r(x_2)}{\partial \theta_2} & ... & \frac{\partial r(x_2)}{\partial \theta_n} \\ ...\\ \frac{\partial r(x_n)}{\partial \theta_1} & \frac{\partial r(x_n)}{\partial \theta_2} & ... & \frac{\partial r(x_n)}{\partial \theta_n} \\ \end{bmatrix}=\left[\begin{array}{c}{\nabla_{\theta} r\left(x_{1}\right)^{T}} \\ {\nabla_{\theta} r\left(x_{2}\right)^{T}} \\ {\vdots} \\ {\nabla_{\theta} r\left(x_{m}\right)^{T}}\end{array}\right]

所以,θf=Jθ(r)(n×m)Tr\nabla_{\theta} f = J_\theta(\mathbf{r})^T_{(n\times m)}\bold{r}

  1. 有了 θf=i=1mririθ=i=1mriθri\nabla_{\theta} f=\sum_{i=1}^{m}r_i\frac{\partial r_i}{\partial \theta}=\sum_{i=1}^{m}r_i\nabla_\theta r_i,我們然後就可以得到 Hessian 矩陣

H=i=1m(θri)T(θri)+ri(Hθri) H=\sum_{i=1}^{m} (\nabla_{\theta}r_i)^T (\nabla_\theta r_i) + r_i(H_\theta r_i)

假設我們的殘差 rir_i 特別小,我們就可以忽略殘差項,也就是說 Hi=1m(θri)(θri)T=JθT(r)Jθ(r)H \approx \sum_{i=1}^{m} (\nabla_{\theta}r_i) (\nabla_\theta r_i)^T = J^T_\theta(\mathbf{r})J_\theta(\mathbf{r})

將梯度向量,Hessian矩陣(近似)帶入牛頓法公式,得到高斯-牛頓法的迭代式:
θi=θi1(JrTJr)(n×n)1JrTr(m×1) \theta_{i}=\theta_{i-1}-\left(J_{r}^{T} J_{r}\right)^{-1}_{(n\times n)} J_{r}^{T} r_{(m\times 1)}

2. LM (Levenberg-Marquart) 法

與牛頓法一樣,當初始值距離最小值較遠時,高斯-牛頓法的並不能保證收斂。並且當 JrTJrJ^T_r J_r 近似奇異 (determinant 0\approx 0) 的時候,高斯牛頓法也不能正確收斂。Levenberg-Marquart 算法是對上述缺點的改進。L-M方法是對 梯度下降法高斯-牛頓法 進行線性組合以充分利用兩種算法的優勢。通過在Hessian矩陣中加入阻尼係數 λ\lambda 來控制每一步迭代的步長以及方向:

  1. 初始化 θ0\theta_0, λ0\lambda_0
  2. 計算當前點 θi\theta_i 處的殘差向量 rir_i與雅各比矩陣 JrJ_r
  3. 通過求解 (Hi+λI)ϵ=JTrri(H_i+λI)ϵ=−JT_r r_i求解迭代方向 ϵϵ
  4. 計算 θi=θi+ϵθ'_i=θ_i+ϵ點處的殘差向量rir'_i
  5. 如果ri2>ri2||r'_i||^2>∥r_i∥^2,即殘差沒有下降,則更新λ=βλλ=βλ,增大 λλ 重新回到第三步重新求解新的 ϵϵ。如果殘差下降,則更新θi+1=θi+ϵθ_{i+1} = θ_i+ϵ ,到第二步,並且降低 λ=αλλ=αλ,增大迭代步長。

在曲線擬合實踐中,αα 通常選取 0.1,ββ 選取10。

我們可以看出,在 λ\lambda 較大時,亦即離最低點較遠時, λI>H\lambda I> Hϵ1λJrTr\epsilon \approx \frac{1}{\lambda}J_r^Tr,而這就是梯度下降的解。如果 λ\lambda 較小時,ϵH1JrTr\epsilon \approx -H^{-1}J_r^Tr,而這是牛頓法的解。當然我們可以用高斯牛頓的解近似牛頓法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章