莱文伯格-马夸特方法

莱文伯格-马夸特方法(英语:Levenberg–Marquardt algorithm)能提供数非线性最小化(局部最小)的数值解。此演算法能借由执行时修改参数达到结合高斯-牛顿算法以及梯度下降法的优点,并对两者之不足作改善(比如高斯-牛顿算法之反矩阵不存在或是初始值离局部极小值太远)。[1]

问题描述

编辑

假设   是一个从   的非线性映射,也就是说   , 那么:

 

而我们的目的就是希望任意给定一个   以及合理的初始值  ,我们能找到一个  ,使得   尽量小(局部极小),其中  

解法

编辑

像大多数最小化的方法一样,这是一个迭代的方法。首先根据泰勒展开式我们能把   写为下面的近似,这有两个好处:第一是线性、第二是只需要一阶微分。

 

其中  雅可比矩阵。对于每次的迭代我们这么作:假设这次 iteration 的点是  ,我们要找到一个    最小。 根据投影公式我们知道当下面式子被满足的时候能有最小误差:

 

我们将这个公式略加修改得到:

 

就是莱文伯格-马夸特方法。如此一来   大的时候这种算法会接近最速下降法,小的时候会接近高斯-牛顿方法。为了确保每次   长度的减少,我们这么作:先采用一个小的  ,如果   长度变大就增加  

这个演算法当以下某些条件达到时结束迭代:

  1. 如果发现   长度变化小于特定的给定值就结束。
  2. 发现   变化小于特定的给定值就结束。
  3. 到达了迭代的上限设定就结束。

参考资料

编辑
  1. ^ Levenberg-Marquardt backpropagation - MATLAB trainlm. www.mathworks.com. [2019-07-21]. (原始内容存档于2020-10-25).