GN(高斯牛顿法)和LM(列文伯格-马夸尔特)的基本原理

优化算法详解:从梯度下降到LM法
文章介绍了优化算法的基本思想和几种常见方法,包括梯度下降、牛顿法、高斯牛顿法和LM法。梯度下降是最简单的迭代方法,但可能陷入局部最小值;牛顿法则利用二阶导数信息,收敛更快,但计算Hessian矩阵成本高;高斯牛顿法是牛顿法的近似,避免了Hessian矩阵的计算,但可能遇到病态问题;LM法在高斯牛顿法基础上增加了调整项,提高了鲁棒性。这些算法在机器学习和数据分析中广泛应用。

优化算法部分的介绍顺序是:梯度下降、牛顿法、高斯牛顿法、LM法

一般待优化的目标函数都是由误差的平方和组成,也就是我们常见的最小二乘问题:
在这里插入图片描述
这里的 f 一般是非线性函数。如果想要求目标函数的极值(可能是极大值、极小值或者鞍点处的值),可以通过令目标函数的导数(如果可导)为零,求解析解得到。但是实际应用中函数 f 一般是非常复杂的非线性函数,没有解析解。所以一般最常用的优化方法就是迭代求解。

如何迭代呢?

迭代求解

以迭代求解极小值为例(如果求极大值,在前面加个负号转化为求极小值问题)。通用的方法就是先给定一个初值 θ0,对应目标函数值为 f(θ0),这个初值可以是经验估计的或者随机指定(随机的话收敛会慢一些),然后我们改变(增大或减少) θ0 的值,得到一个新的值 θ1,如果 f(θ1)<f(θ0),那么说明我们迭代的方向是朝着目标函数值减小的方向,离我们期待的极小值更近了一步,继续朝着这个方向改变 θ1的值,否则朝着相反的方向改变 θ1的值。如此循环迭代多次,直到达到终止条件结束迭代过程。这个终止条件可以是:相邻几次迭代的目标函数值差别在某个阈值范围内,也可以是达到了最大迭代次数等。我们认为迭代终止时的目标函数值就是极小值。

因此迭代的一般过程如下:

1、对于目标函数 f(x),给定自变量某个初始值x0。这个初值可以是经验估计的或者随机指定。

2、根据采用的具体方法(梯度下降、牛顿、高斯牛顿、LM等)确定一个增量△xk

3、计算目标函数添加了增量后的值如下
在这里插入图片描述
4、如果达到迭代终止条件(达到最大迭代次数或函数值/自变量变化非常小),则迭代结束,可以认为此时对应的目标函数值就是最小值。

5、如果没有达到迭代终止条件,按如下方式更新自变量,并返回第2步。

在这里插入图片描述
因此,不同的优化算法的不同主要体现在增量的更新方式上。如果采用不合适的更新方式,其实很容易陷入局部最小值。这里给出一个关于局部最小值和全局最小值的直观的理解。如下图所示:
在这里插入图片描述
通常我们希望迭代得到的是全局最小值(只有一个)而不是局部最小值(可能有多个)。下图表示的是不同初始值对迭代结果的影响。如果我们初值设的是红色的θ0,最后找到的极小值位于 θ∞,在这个例子中它是全局最小值。但是如果我们初值设的是蓝色的 θ’0,最后我们找到的极小值位于 θ’∞,显然只是局部最小值,不是全局最小值。
在这里插入图片描述
实际上按照上述迭代方法,很多时候我们找到的所谓「全局最小值」其实只是局部最小值,这并不是我们期望的。有没有保证局部最小值一定是全局最小值的情况呢?

答案是有,当然这就需要对目标函数有一定的限制。如果我们的目标函数是凸函数,那么可以保证最终找到的极小值就是最小值。很多人可能忘记了什么是凸函数,下面简单介绍一下。

凸函数的概念

凸函数(convex function)在优化算法中是一个非常重要的概念,其定义如下:
在这里插入图片描述
如果上面定义没有看懂也没关系,我们可以发现,凸函数其实就是一个「碗」状曲线,碗口向上。下图列举了几种凸函数和非凸函数的例子。如果一个函数是凸函数,那么它只有一个极小值点,也就是最小值点,从下图中也可以看出来。下图从左到右从上到下分别展示了:只有一个极小值的凸函数、只有一个极小值的非凸函数、有多个极值的非凸函数、加了噪音的非凸函数。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值