自学内容网 自学内容网

机器学习:常用优化算法(总结)——寻找目标函数的最优解

(一)梯度下降法(Gradient Descent)

核心思想:

根据目标函数对参数的梯度,逐步沿负梯度方向更新参数,以最小化损失函数。

更新公式:

\theta_{t+1} = \theta_t - \eta \cdot \nabla_{\theta} J(\theta)

  • θt​:当前参数
  • η:学习率(步长)
  • \nabla_{\theta} J(\theta):损失函数 J(\theta) 对参数 θ 的梯度

变种:

  • (全)批量梯度下降(Batch Gradient Descent, BGD):使用全部训练数据计算梯度,更新较稳定,但计算成本高。

  • 随机梯度下降(Stochastic Gradient Descent, SGD):每次仅使用一个样本计算梯度,计算快但噪声较大。

  • 小批量梯度下降(Mini-Batch Gradient Descent, MBGD):每次使用一个小批量的样本更新参数,权衡了效率和稳定性。

(二)动量梯度下降法(Momentum Gradient Descent)

核心思想:

引入动量项,结合之前的更新方向以加速收敛,同时减少局部震荡。

更新公式:

v_{t+1} = \gamma v_t + \eta \cdot \nabla_{\theta} J(\theta)

\theta_{t+1} = \theta_t - v_{t+1}

  • vt​:动量,表示累积的梯度方向

  • \gamma:动量系数(通常在 0.9 左右)

(三)自适应梯度算法(Adaptive Gradient Algorithm,Adagrad)

核心思想:

对每个参数动态调整学习率,学习率与历史梯度大小的平方和成反比。

更新公式:

g_t = \nabla_{\theta} J(\theta)

\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t

G_t = \sum_{i=1}^{t} g_i^2

  • Gt:累积的梯度平方和

  • ϵ :平滑项,避免分母为 0

(四)均方根传播(RMSProp)

核心思想:

对自适应梯度算法(Adagrad) 的改进,引入指数加权移动平均减少历史梯度累积过大的影响。

更新公式:

E[g_t^2] = \beta E[g_{t-1}^2] + (1-\beta) g_t^2

\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g_t^2] + \epsilon}} \cdot g_t

  • β:衰减系数,通常为 0.9

  • E[g_t^2]:梯度平方的加权平均

(五)自适应矩估计(Adaptive Moment Estimation,Adam)

核心思想:

结合动量和 RMSProp 的思想,同时估计一阶动量(梯度的均值)和二阶动量(梯度平方的均值)。

更新公式:

m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t

v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2

\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t}

\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \cdot \hat{m}_t

  • mt:梯度的一阶动量

  • vt:梯度的二阶动量

  • β1,β2:动量系数(通常β1​=0.9,β2​=0.999)

(六)牛顿法

核心思想:

利用二阶导数(Hessian 矩阵)加速收敛,直接找到目标函数的极小值。

更新公式:

\theta_{t+1} = \theta_t - H^{-1} \nabla_{\theta} J(\theta)

  • H:Hessian 矩阵(损失函数的二阶导数矩阵)

  • H^{-1}:Hessian 的逆矩阵

优缺点:

  • 收敛速度快,但计算二阶导数和矩阵逆较耗时。

(七)拟牛顿法 

拟牛顿法是优化问题中对牛顿法的改进,避免了直接计算 Hessian 矩阵的逆(计算量大、对存储要求高)。拟牛顿法通过逐步逼近 Hessian 矩阵或其逆矩阵,用低成本的方式实现高效优化。

原理细节: 

核心思想

  • 使用目标函数的一阶导数(梯度)来逐步构造二阶导数(Hessian 矩阵)的近似。

  • 保证近似的 Hessian 矩阵正定,从而确保下降方向的正确性。

基本更新公式

\theta_{t+1} = \theta_t - H_t^{-1} \nabla_{\theta} J(\theta)

  • H_t^{-1}:Hessian 矩阵的逆的近似
  • \nabla_{\theta} J(\theta):当前点的梯度

Hessian 矩阵更新

拟牛顿法通过迭代更新 H_t^{-1}​ 或 H_t 的近似值,满足以下条件:

拟牛顿条件: 保证对称性和正定性,近似的 Hessian 矩阵 Ht满足:

H_{t+1} (s_t) = y_t

其中:

  • s_t = \theta_{t+1} - \theta_t(参数更新量)
  • y_t = \nabla_{\theta} J(\theta_{t+1}) - \nabla_{\theta} J(\theta_t)(梯度的变化量)

 常用的拟牛顿法:

1. BFGS

最常用的拟牛顿方法之一,更新公式为:

H_{t+1} = H_t + \frac{y_t y_t^\top}{y_t^\top s_t} - \frac{H_t s_t s_t^\top H_t}{s_t^\top H_t s_t}

  • Ht:当前的 Hessian 矩阵近似

  • yt:梯度差

  • st​:参数差

更新 H_t^{-1}​ 的逆公式(更常用):

H_{t+1}^{-1} = H_t^{-1} + \frac{(s_t s_t^\top)}{y_t^\top s_t} - \frac{H_t^{-1} y_t y_t^\top H_t^{-1}}{y_t^\top H_t^{-1} y_t}

2. L-BFGS

  • 针对高维问题优化了 BFGS 方法,只存储有限步数的历史信息(如梯度和更新方向),降低内存消耗。

  • 不显式计算或存储 Hessian 矩阵,仅利用历史更新信息进行优化。

L-BFGS 是大规模机器学习和深度学习常用的一种拟牛顿法。

#  文章内容来源于各渠道整理。若对大噶有帮助的话,希望点个赞支持一下叭!

#  文章如有错误,欢迎大噶指正!


原文地址:https://blog.csdn.net/weixin_74268817/article/details/143918072

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!