像大多数最小化的方法一样,这是一个迭代的方法。首先根据泰勒展开式我们能把
写为下面的近似,这有两个好处:第一是线性、第二是只需要一阶微分。
其中
是
的雅可比矩阵。对于每次的迭代我们这么作:假设这次 iteration 的点是
,我们要找到一个
让
最小。
根据投影公式我们知道当下面式子被满足的时候能有最小误差:
我们将这个公式略加修改得到:
就是莱文伯格-马夸特方法。如此一来
大的时候这种算法会接近最速下降法,小的时候会接近高斯-牛顿方法。为了确保每次
长度的减少,我们这么作:先采用一个小的
,如果
长度变大就增加
。
这个算法当以下某些条件达到时结束迭代:
- 如果发现
长度变化小于特定的给定值就结束。
- 发现
变化小于特定的给定值就结束。
- 到达了迭代的上限设定就结束。