莱文伯格-马夸特方法

来自testwiki
跳转到导航 跳转到搜索

莱文伯格-马夸特方法Template:Lang-en)能提供數非線性最小化(局部最小)的數值解。此演算法能藉由執行時修改參數達到結合高斯-牛顿算法以及梯度下降法的優點,並對兩者之不足作改善(比如高斯-牛顿算法之反矩陣不存在或是初始值離局部極小值太遠)。[1]

問題描述

假設 f 是一個從 mn 的非线性映射,也就是說 𝐏m𝐗n, 那麼:

f(𝐏)=𝐗

而我們的目的就是希望任意給定一個 𝐱 以及合理的初始值 𝐩0,我們能找到一個 𝐩+,使得 ϵTϵ 盡量小(局部極小),其中 ϵ=f(𝐩+)𝐱

解法

像大多數最小化的方法一樣,這是一個迭代的方法。首先根據泰勒展开式我們能把 f(𝐩+δ𝐩) 寫為下面的近似,這有兩個好處:第一是線性、第二是只需要一階微分。

f(𝐩+δ𝐩)f(𝐩)+𝐉δ𝐩

其中𝐉f雅可比矩阵。對於每次的迭代我們這麼作:假設這次 iteration 的點是 𝐩k,我們要找到一個 δ𝐩,k|𝐱f(𝐩k+δ𝐩,k)||𝐱f(𝐩k)𝐉δ𝐩,𝐤|=|ϵk𝐉δ𝐩,𝐤| 最小。 根據投影公式我們知道當下面式子被滿足的時候能有最小誤差:

(𝐉T𝐉)δ𝐩,𝐤=𝐉Tϵk

我們將這個公式略加修改得到:

[μ𝐈+(𝐉T𝐉)]δ𝐩,𝐤=𝐉Tϵk

就是莱文伯格-马夸特方法。如此一來 μ 大的時候這種算法會接近最速下降法,小的時候會接近高斯-牛顿方法。為了確保每次 ϵ 長度的減少,我們這麼作:先採用一個小的 μ,如果 ϵ 長度變大就增加 μ

這個演算法當以下某些條件達到時結束迭代:

  1. 如果發現 ϵ 長度變化小於特定的給定值就結束。
  2. 發現 δ𝐩 變化小於特定的給定值就結束。
  3. 到達了迭代的上限設定就結束。

參考資料

Template:Reflist

Template:Authority control