机器学习:常用优化算法(总结)——寻找目标函数的最优解
(一)梯度下降法(Gradient Descent)
核心思想:
根据目标函数对参数的梯度,逐步沿负梯度方向更新参数,以最小化损失函数。
更新公式:
- θt:当前参数
- η:学习率(步长)
- :损失函数 对参数 θ 的梯度
变种:
-
(全)批量梯度下降(Batch Gradient Descent, BGD):使用全部训练数据计算梯度,更新较稳定,但计算成本高。
-
随机梯度下降(Stochastic Gradient Descent, SGD):每次仅使用一个样本计算梯度,计算快但噪声较大。
-
小批量梯度下降(Mini-Batch Gradient Descent, MBGD):每次使用一个小批量的样本更新参数,权衡了效率和稳定性。
(二)动量梯度下降法(Momentum Gradient Descent)
核心思想:
引入动量项,结合之前的更新方向以加速收敛,同时减少局部震荡。
更新公式:
-
vt:动量,表示累积的梯度方向
-
:动量系数(通常在 0.9 左右)
(三)自适应梯度算法(Adaptive Gradient Algorithm,Adagrad)
核心思想:
对每个参数动态调整学习率,学习率与历史梯度大小的平方和成反比。
更新公式:
-
Gt:累积的梯度平方和
-
ϵ :平滑项,避免分母为 0
(四)均方根传播(RMSProp)
核心思想:
对自适应梯度算法(Adagrad) 的改进,引入指数加权移动平均减少历史梯度累积过大的影响。
更新公式:
-
β:衰减系数,通常为 0.9
-
:梯度平方的加权平均
(五)自适应矩估计(Adaptive Moment Estimation,Adam)
核心思想:
结合动量和 RMSProp 的思想,同时估计一阶动量(梯度的均值)和二阶动量(梯度平方的均值)。
更新公式:
-
mt:梯度的一阶动量
-
vt:梯度的二阶动量
-
β1,β2:动量系数(通常β1=0.9,β2=0.999)
(六)牛顿法
核心思想:
利用二阶导数(Hessian 矩阵)加速收敛,直接找到目标函数的极小值。
更新公式:
-
H:Hessian 矩阵(损失函数的二阶导数矩阵)
-
:Hessian 的逆矩阵
优缺点:
-
收敛速度快,但计算二阶导数和矩阵逆较耗时。
(七)拟牛顿法
拟牛顿法是优化问题中对牛顿法的改进,避免了直接计算 Hessian 矩阵的逆(计算量大、对存储要求高)。拟牛顿法通过逐步逼近 Hessian 矩阵或其逆矩阵,用低成本的方式实现高效优化。
原理细节:
核心思想
使用目标函数的一阶导数(梯度)来逐步构造二阶导数(Hessian 矩阵)的近似。
保证近似的 Hessian 矩阵正定,从而确保下降方向的正确性。
基本更新公式:
- :Hessian 矩阵的逆的近似
- :当前点的梯度
Hessian 矩阵更新
拟牛顿法通过迭代更新 或 的近似值,满足以下条件:
拟牛顿条件: 保证对称性和正定性,近似的 Hessian 矩阵 Ht满足:
其中:
- (参数更新量)
- (梯度的变化量)
常用的拟牛顿法:
1. BFGS
最常用的拟牛顿方法之一,更新公式为:
Ht:当前的 Hessian 矩阵近似
yt:梯度差
st:参数差
更新 的逆公式(更常用):
2. L-BFGS
针对高维问题优化了 BFGS 方法,只存储有限步数的历史信息(如梯度和更新方向),降低内存消耗。
不显式计算或存储 Hessian 矩阵,仅利用历史更新信息进行优化。
L-BFGS 是大规模机器学习和深度学习常用的一种拟牛顿法。
# 文章内容来源于各渠道整理。若对大噶有帮助的话,希望点个赞支持一下叭!
# 文章如有错误,欢迎大噶指正!
原文地址:https://blog.csdn.net/weixin_74268817/article/details/143918072
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!