常用的优化方法总结

本文详细介绍了优化问题中常见的几种方法,包括牛顿法、高斯牛顿法、梯度下降法和共轭梯度法,探讨了它们的原理、优缺点以及在实际应用中的表现。牛顿法利用二阶导数信息,通常收敛速度快,但计算Hessian矩阵可能复杂且不稳定性高。高斯牛顿法简化了牛顿法,适用于非线性最小二乘问题。梯度下降法简单易用,但可能收敛慢且路径曲折。共轭梯度法通过正交搜索方向提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多问题最终都归结为求一个算式的最小值问题,比如某个问题用MAP(最大后验概率),ML(最大似然估计)等等方式来建立数学模型,最终就归结为在L1或L2范数下的最小值问题,这在很多文献中都经常碰到。而解决的方法,也不外乎几种:牛顿法、最速下降法、共轭梯度法、高斯牛顿法等等。名字都很相似,文献中也经常不描述具体的求解过程,往往让人一头雾水。今天我们就来梳理一下这些方法。

1、牛顿法

牛顿法最初是用来求解一个方程的根: f(x)=0

Ganzhi001.jpg

如上图所示,f(x)首先可以在x0点展开成一个线性函数f(x)≈f(x0)+f'(x0)*(x-x0)

求解上述线性方程的根,得到 x1=x0-f(x0)/f'(x0),从图示可以看出这个x1比x0更加逼近原方程的根

用此方法,不断地迭代x(n+1)=xn-f(xn)/f'(xn),就能无限趋近于原方程的根。


在最优化方法中,我们是想求一个算式f(x)的最优值,由微积分的知识我们知道,在f(x)的极值处,f'(x)=0

为此就可以用牛顿法来求解上述方程的根了,迭代过程为


上面推导的是一维的情况,比较直观,对于二维以上的情况,f'(x)演变成一个梯度向量▽f,f''(x)则演变成了一个矩阵,叫Hessian矩阵,估计大家不会陌生

此时牛顿法演变成


其中Hessian矩阵Hf(x)为


以上步长为1的迭代方法并不常见,常见的迭代方式是取一个小步长γ

\mathbf{x}_{n+1} = \mathbf{x}_n - \gamma[H f(\mathbf{x}_n)]^{-1} \nabla f(\mathbf{x}_n).


wiki上有张图,用来说明二维情况下牛顿法的效果。图中红线是牛顿法的迭代过程,绿线是梯度下降法的迭代过程。

一般认为牛顿方法因为用到了曲率信息(curvature,也就是二阶导数),因此收敛速度比梯度下降法快得多。


(图片来源: http://en.wikipedia.org/wiki/Newton%27s_method_in_optimization)

但在高维时,直接计算Hessian矩阵非常复杂,而且Hessian矩阵求逆也往往带来不稳定性,导致结果不收敛。为此有很多准牛顿法(quasi-Newton),用近似的方法来构造Hessian矩阵。而为解决Hessian矩阵的不可逆性,也出现了很多算法,比如可以仿照Levenberg-Marquardt方法(著名的LM方法),在Hessian矩阵上再加一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值