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

机器学习-常用的三种梯度下降法

梯度下降法是优化问题中常用的算法,根据其更新方式和数据处理的特点,主要分为以下三种类型:

1. 批量梯度下降法(Batch Gradient Descent, GD)

特点
  • 使用整个数据集计算损失函数的梯度,然后更新模型参数。
  • 每次迭代时,更新公式为:

优点
  1. 更新方向精确,收敛平稳。
  2. 适合小数据集,因其可完全利用全局信息。
缺点
  1. 计算开销高:每次更新都需要遍历整个数据集。
  2. 不适合大规模数据:计算时间长,迭代效率低。
  3. 无法实现在线学习:无法及时更新参数。
应用场景
  • 小型数据集: 数据规模较小,计算资源充足的情况下,例如线性回归或简单分类任务。
  • 静态模型训练: 数据不会频繁更新的环境。
举例

训练一个只有1000条数据的线性回归模型,批量梯度下降一次即可准确计算损失的梯度并更新参数。

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

特点
  • 每次迭代使用一个样本计算梯度并更新参数。
  • 更新公式为: 

优点
  1. 计算效率高:每次更新仅需一个样本。
  2. 可以跳出局部最优:由于更新路径带有噪声,易摆脱局部极小值。
  3. 支持在线学习:可以实时更新参数。
缺点
  1. 收敛不稳定:更新路径震荡较大,最终可能无法到达全局最优点。
  2. 参数调整复杂:对学习率 α\alpha 敏感。
应用场景
  • 大规模数据集: 如推荐系统或社交网络中的大数据。
  • 在线学习: 实时动态环境,例如股市预测模型。
举例

在动态推荐系统中,当用户完成一次点击行为时,模型会基于当前行为的梯度及时更新推荐参数。

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

特点
  • 每次迭代使用一个小批量(mini-batch)的样本计算梯度并更新参数。
  • 更新公式为:
  • 其中 m 是 mini-batch 的大小。
优点
  1. 效率与稳定性兼顾:相比 GD 更高效,相比 SGD 更平稳。
  2. 适合硬件加速:能充分利用 GPU 并行计算。
  3. 收敛速度快:在合理的 batch size 下表现优异。
缺点
  1. 调参复杂:需要调节 batch size 和学习率 α\alpha。
  2. 资源占用中等:比 SGD 需要更多计算资源。
应用场景
  • 深度学习: 大规模数据集和模型,如图像分类(CNN)或自然语言处理(Transformer)。
  • 硬件加速场景: 可利用 GPU 计算能力提升训练速度。
举例

训练一个大型神经网络时,每次使用 32 或 64 个样本的 mini-batch,在 GPU 上并行计算梯度。

对比总结

梯度下降法每次更新数据量计算效率收敛稳定性应用场景
批量梯度下降法全数据集稳定小规模数据集,静态模型训练
随机梯度下降法单个样本不稳定(波动大)大数据集,在线学习,动态环境
小批量梯度下降法小批量(如 32 或 64)较快较稳定深度学习,硬件加速场景,大规模训练任务

常见优化改进

  1. 动态学习率调整: 如学习率衰减或自适应优化方法(Adam、RMSProp)。
  2. 加动量(Momentum): 减少梯度更新的震荡,提高收敛速度。
  3. 正则化: 防止过拟合,提升模型泛化能力。

4. 分别用批量梯度下降法随机梯度下降法小批量梯度下降法举例

下面通过线性回归的例子来说明如何通过梯度下降法确定参数,分别用批量梯度下降法随机梯度下降法小批量梯度下降法举例。

我们有一个简单的数据集:

xxyy
13
25
37
49

目标是用线性回归模型:

拟合这些数据,找到最优的参数 θ0\theta_0 和 θ1\theta_1。

损失函数(均方误差):

1. 批量梯度下降法

特点: 每次迭代使用全部数据计算梯度。

更新公式

举例

2. 随机梯度下降法

特点: 每次迭代只用一个样本计算梯度,更新参数。

更新公式

举例

3. 小批量梯度下降法

特点: 每次迭代使用数据的一部分(小批量)计算梯度。

更新公式

其中 m 是批量大小。

举例

     5.随机选择下一批数据,重复直到收敛。

  1. 批量梯度下降法: 使用全数据集计算梯度,一步更新参数,适合小数据集。
  2. 随机梯度下降法: 每次使用一个样本计算梯度,更新参数,适合大数据集,但更新方向可能不稳定。
  3. 小批量梯度下降法: 结合两者优点,使用部分数据计算梯度,更新稳定且计算效率较高,适用于大部分场景。

附:直到收敛,收敛的含义是么?

在梯度下降法中,收敛的意思是算法经过多次迭代后,模型的参数(如 θ_0, θ_1)不再发生显著变化,或损失函数的值接近于最优值(最小值)。换句话说,梯度下降法找到了一个稳定点,此时可以认为模型的参数已经“收敛”到了较优解。

判断收敛的常用标准

  1. 损失函数的变化小于某个阈值:

    • 在两次迭代之间,损失函数的值变化非常小(比如小于 10^{-6}),表示算法已经接近最优点,可以停止迭代。
    • 数学表达式:

  1. 梯度接近零:

    • 梯度下降的核心思想是沿着负梯度方向移动。如果梯度的值接近零,说明当前参数已经接近极小值点。
    • 数学表达式: 

  1. 迭代次数达到预设上限:

    • 如果算法迭代了很多次,但仍未达到上述两个条件,则可以人为设置一个最大迭代次数作为停止条件,避免计算资源浪费。

收敛的直观理解

可以将收敛类比为“滚雪球下山”:

  1. 起点在山顶(初始参数)。
  2. 滚动的过程中,雪球在梯度(山坡的陡峭度)作用下逐渐接近山谷。
  3. 当雪球到了山谷(梯度接近零,或者损失变化不明显),它的移动速度会变得很慢,几乎停止。

此时就可以认为算法收敛了,即找到或接近了损失函数的最小值。

例子

对于简单的线性回归问题:

注意事项

  • 过早停止: 如果收敛阈值设得太大,可能导致算法未完全找到最优解。
  • 永远不收敛: 如果学习率太大,可能导致算法在最优点附近来回震荡,无法收敛。
  • 局部最优: 对于非凸函数,梯度下降可能停在局部最优点,而不是全局最优点。

http://www.kler.cn/a/507395.html

相关文章:

  • C 语言运算符的优先级和结合性
  • DNS介绍与部署-Day 01
  • STM32网络通讯之CubeMX实现LWIP项目设计(十五)
  • C# 获取PDF文档中的字体信息(字体名、大小、颜色、样式等
  • vue用户点进详情页再返回列表页,停留在原位置
  • Java并发编程——线程池(基础,使用,拒绝策略,命名,提交方式,状态)
  • CSS 样式 margin:0 auto; 详细解读
  • Jackson 中的多态类型支持:@JsonTypeInfo 和 @JsonSubTypes 使用技巧
  • 蓝桥杯刷题第四天——字符排序
  • 基于智能物联网的肉鸡舍控制器:设计、实施、性能评估与优化
  • 个人vue3-学习笔记
  • 服务器数据恢复—EMC存储POOL中数据卷被删除的数据恢复案例
  • Qt类的提升(Python)
  • 大模型赋能医疗项目,深兰科技与武汉协和医院达成合作
  • deepin-如何在 ArchLinux 发行版上安装 DDE 桌面环境
  • 老centos7 升级docker.io为docker-ce 脚本
  • 【GIS操作】使用ArcGIS Pro进行海图的地理配准(附:墨卡托投影对比解析)
  • 七大排序算法
  • 网络协议基础--IP协议
  • 【Linux】gawk编辑器二
  • nginx 修改内置 404 页面、点击劫持攻击。
  • 三十二、服务应用操作
  • Spring boot面试题----Spring Boot核心注解有哪些
  • 大文件上传的解决办法~文件切片、秒传、限制文件并发请求。。。
  • Lambda 架构之实时处理层的深度剖析:从原理到 Java 实战
  • XML序列化和反序列化的学习