当前位置: 首页 > news >正文

4.5 优化器中常见的梯度下降算法

梯度下降算法(Gradient Descent)的数学公式可以通过以下步骤严格表达:


1. 基本梯度下降(Batch Gradient Descent)

目标:最小化损失函数L(θ)\mathcal{L}(\theta)L(θ),其中 θ\thetaθ是模型参数。
参数更新规则θt+1=θt−η⋅∇θL(θt)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(\theta_t)θt+1=θtηθL(θt)

  • θt\theta_tθt:第 $t $次迭代的参数值
  • η\etaη:学习率(Learning Rate)
  • ∇θL(θt)\nabla_\theta \mathcal{L}(\theta_t)θL(θt):损失函数对参数 θ\thetaθ的梯度(所有训练样本的平均梯度)。

2. 随机梯度下降(Stochastic Gradient Descent, SGD)

每次迭代随机选取一个样本计算梯度:
θt+1=θt−η⋅∇θL(θt;xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)θt+1=θtηθL(θt;xi,yi)

  • ∇θL(θt;xi,yi)\nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)θL(θt;xi,yi):仅基于单个样本 (xi,yi)(x_i, y_i)(xi,yi)的梯度。

3. 小批量梯度下降(Mini-Batch Gradient Descent)

每次迭代使用一个小批量(Batch)数据计算梯度:

θt+1=θt−η⋅1B∑i=1B∇θL(θt;xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}(\theta_t; x_i, y_i)θt+1=θtηB1i=1BθL(θt;xi,yi)

  • BBB:批量大小(Batch Size)
  • 1B∑i=1B∇θL\frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}B1i=1BθL:批量内样本梯度的平均值。

4. 带动量的梯度下降(Momentum)

引入动量项 vtv_tvt加速收敛并减少震荡:

vt+1=βvt+(1−β)∇θL(θt)v_{t+1} = \beta v_t + (1-\beta) \nabla_\theta \mathcal{L}(\theta_t)vt+1=βvt+(1β)θL(θt)
θt+1=θt−η⋅vt+1\theta_{t+1} = \theta_t - \eta \cdot v_{t+1}θt+1=θtηvt+1

  • β\betaβ:动量系数(通常设为 0.9),控制历史梯度的影响。

5. Adam 优化器

结合动量(一阶矩)和自适应学习率(二阶矩),并引入偏差修正:

mt+1=β1mt+(1−β1)∇θL(θt)(一阶矩估计)m_{t+1} = \beta_1 m_t + (1-\beta_1) \nabla_\theta \mathcal{L}(\theta_t) \quad \text{(一阶矩估计)}mt+1=β1mt+(1β1)θL(θt)(一阶矩估计)
vt+1=β2vt+(1−β2)(∇θL(θt))2(二阶矩估计)v_{t+1} = \beta_2 v_t + (1-\beta_2) \left( \nabla_\theta \mathcal{L}(\theta_t) \right)^2 \quad \text{(二阶矩估计)}vt+1=β2vt+(1β2)(θL(θt))2(二阶矩估计)
m^t+1=mt+11−β1t+1(一阶矩偏差修正)\hat{m}{t+1} = \frac{m{t+1}}{1 - \beta_1^{t+1}} \quad \text{(一阶矩偏差修正)}m^t+1=1β1t+1mt+1(一阶矩偏差修正)
v^t+1=vt+11−β2t+1(二阶矩偏差修正)\hat{v}{t+1} = \frac{v{t+1}}{1 - \beta_2^{t+1}} \quad \text{(二阶矩偏差修正)}v^t+1=1β2t+1vt+1(二阶矩偏差修正)
θt+1=θt−η⋅m^t+1v^t+1+ϵ\theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}{t+1}}{\sqrt{\hat{v}{t+1}} + \epsilon}θt+1=θtηv^t+1+ϵm^t+1

  • β1,β2\beta_1, \beta_2β1,β2:衰减率(通常设为 0.9 和 0.999)
  • ϵ\epsilonϵ:数值稳定性常数(通常设为$10^{-8} $)。

6. 梯度下降的数学意义

梯度下降的更新方向由 负梯度方向 −∇θL-\nabla_\theta \mathcal{L}θL决定,其本质是沿着损失函数曲面的最速下降方向移动参数 θ\thetaθ。学习率 η\etaη控制步长,过大可能导致震荡,过小则收敛缓慢。


公式总结表

算法公式
批量梯度下降θt+1=θt−η⋅∇θL\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}θt+1=θtηθL
随机梯度下降θt+1=θt−η⋅∇θL(xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \nabla_\theta \mathcal{L}(x_i, y_i)θt+1=θtηθL(xi,yi)
小批量梯度下降θt+1=θt−η⋅1B∑i=1B∇θL(xi,yi)\theta_{t+1} = \theta_t - \eta \cdot \frac{1}{B} \sum_{i=1}^B \nabla_\theta \mathcal{L}(x_i, y_i)θt+1=θtηB1i=1BθL(xi,yi)
Momentumvt+1=βvt+(1−β)∇θL),(θt+1=θt−ηvt+1v_{t+1} = \beta v_t + (1-\beta)\nabla_\theta \mathcal{L} ),( \theta_{t+1} = \theta_t - \eta v_{t+1}vt+1=βvt+(1β)θL)(θt+1=θtηvt+1
Adamθt+1=θt−η⋅m^t+1v^t+1+ϵ\theta_{t+1} = \theta_t - \eta \cdot \frac{\hat{m}{t+1}}{\sqrt{\hat{v}{t+1}} + \epsilon}θt+1=θtηv^t+1+ϵm^t+1

关键点

  1. 梯度方向:负梯度方向是函数值下降最快的方向(由泰勒展开的一阶近似可得)。
  2. 学习率选择:学习率 $\eta $需通过实验调参(或使用自适应方法如 Adam)。
  3. 收敛性:在凸函数中,梯度下降收敛到全局最优;在非凸函数中可能收敛到局部极小或鞍点。
  4. 复杂度:批量梯度下降计算成本高,小批量/随机梯度下降更适合大规模数据。

通过上述公式,梯度下降算法被严格地数学化,成为深度学习模型优化的基础工具。

http://www.lryc.cn/news/597939.html

相关文章:

  • 绿色转向的时代红利:创新新材如何以技术与标准主导全球铝业低碳重构
  • 从手动操作到自动化:火语言 RPA 在多系统协作中的实践
  • 飞腾D3000麒麟信安系统下配置intel I210 MAC
  • 基础入门 [CMD] Windows SSH 连接服务器教程(系统自带方式)
  • Linux和Windows基于V4L2和TCP的QT监控
  • 【MAC电脑系统变量管理】
  • 进程调度的艺术:从概念本质到 Linux 内核实现
  • n8n AI资讯聚合与分发自动化教程:从数据获取到微信与Notion集成
  • RabbitMQ--消息顺序性
  • 【华为】笔试真题训练_20250611
  • go下载包
  • 数据库常用DDL语言
  • 文件管理困境如何破?ZFile+cpolar打造随身云盘新体验
  • M²IV:面向大型视觉-语言模型中高效且细粒度的多模态上下文学习
  • RabbitMQ简述
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-16,(知识点:电平转换电路)
  • RabbitMQ—仲裁队列
  • <论文>(斯坦福)DSPy:将声明式语言模型调用编译为自我优化的pipeline
  • 等保二级、三级配置表(阿里云)
  • RuoYi-Vue 项目 Docker 全流程部署实战教程
  • 【LeetCode数据结构】二叉树的应用(一)——单值二叉树问题、相同的树问题、对称二叉树问题、另一棵树的子树问题详解
  • [数据结构]#6 树
  • JVM Java虚拟机
  • 【Qt开发】信号与槽(一)
  • 机器学习入门指南它来了
  • LeetCodeOJ题:回文链表
  • Java学习----原型模式
  • vant-field 显示radio
  • 【Java】空指针(NullPointerException)异常深度攻坚:从底层原理到架构级防御,老司机的实战经验
  • 高级 JAVA 工程师卷 1