跳转到内容

莱文伯格-马夸特方法

维基百科,自由的百科全书

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

问题描述

[编辑]

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

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

解法

[编辑]

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

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

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

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

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

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

参考资料

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