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

改善深层神经网络 第二周:优化算法(一)Mini-batch 梯度下降

1. Mini-batch 梯度下降法

其实我们早就在使用这个方法了,现在来系统的阐述一下。

如果你有些遗忘了梯度下降法本身的概念,可以回看之前的笔记:梯度下降法

而发展出的随机梯度,Mini-batch 梯度,batch 梯度只是一次迭代中使用样本数量的不同。

1.1 随机梯度下降法

实际上,在第一周学习向量化之前,我们理解的梯度下降法就是随机梯度下降法(Stochastic Gradient Descent,SGD)。

具体展开概念:

随机梯度下降法是一种优化算法,常用于训练机器学习模型,尤其是在深度学习中。随机梯度下降法在每次更新时只使用一个样本来计算梯度并进行参数更新,而与之相对的批量梯度下降法,就是使用全部样本计算梯度并更新。

也就是说,在一次训练中,我们有多少个样本,就会进行多少次参数更新。

现在展开几个小问题。

(1)使用随机梯度下降和是否向量化的关系?

之前在向量化部分我们提到,使用向量化是为了在代码中避免显示的for循环,以并行提高效率。

通过向量化,我们可以并行地进行多个样本的训练,用多个样本的损失更新参数。

那现在使用随机梯度下降,我们一次迭代只用一个样本,那是不是就代表我们要使用非向量化的输入?

先说结论:随机梯度下降 ≠ 非向量化,因为 “是否向量化” 和 “是否使用随机梯度” 是两个不同维度的问题:

向量化 → 指的是代码实现方式(是否用for循环逐样本计算)。

SGD / Mini-batch / Batch GD → 指的是算法在每次更新参数时使用多少样本。

也就是说:

我们完全可以向量化地实现SGD,即一次用一个样本,但仍然用矩阵操作计算,二者可以并存。

举个例子:

就像做饭时,“你一次炒几份菜”与“你用不用电磁炉这种高效设备”是两件不同的事情。

是否向量化,就像是你用不用电磁炉、用不用多头灶台,它决定的是你做菜的效率,是工具层面的提升。

而随机梯度下降、Batch 或 Mini-batch 则是你每次炒几人份:一次炒一份、一次炒十份、还是一次炒满整锅,这是做饭方式的选择。

你完全可以同时做到“使用电磁炉(向量化)”并且“每次只炒一份(SGD)”。两者互不矛盾,只是一个管“快不快”,一个管“每次做多少”。

这就是二者的区别。

Pasted image 20251107135435

(2)随机梯度下降的优劣?

先总地看一下这个算法的优劣:

SGD 的特点 它带来的优点 它造成的缺点

每次只使用 1 个样本更新(高频、小步、噪声大) 更新非常频繁,模型能更快开始学习;带噪声的更新更容易跳出局部最优 噪声过大导致收敛不稳定;损失曲线抖动明显;学习率一旦偏大容易发散

每次计算量小(占用内存少) 不需要大显存,小设备也能训练;适合超大规模数据 单次处理数据量太小,无法用好 GPU 的并行能力,整体训练速度反而偏慢

更新方向依赖单一样本(信息量少) 每次更新成本低,可以快速迭代 单一样本可能不能代表整体趋势,更新方向偏差大,需要更多 epoch 才能收敛

对于其中第一点可能不太清晰,我们来详细解释一下。

(3)SGD的收敛不稳定现象

我们刚刚提到,“每次只使用一个样本更新”会带来一个核心影响:更新方向带有更多的噪声。

为了更好的理解这点,我们依旧把最小化损失类比成从山谷下山。

如果我们使用批量梯度下降(Batch GD),每次更新方向是所有样本平均后的梯度,因此方向非常稳定,像是沿着山谷中心线稳稳地往下走。

但 SGD 不同。因为它每次只使用一个样本,如果这个样本是个“好样本”,那更新后损失就向谷底走一步,如果下一个样本是噪声样本,更新后损失甚至可能回反着走回去。这样每次更新对单一样本的依赖就会带来损失的“振荡”,导致收敛不稳定,就像一个不准的导航,让你绕着弯下山。

Pasted image 20251107143716

1.2 Mini-batch 梯度下降法

Mini-batch 梯度下降法是介于Batch GD和SGD之间的一种折中方案。它每次更新使用一个小批量样本,而不是全部样本或单个样本。

举个实例,假设我们有 1000 个样本,设置 mini-batch 大小为 10,那么每次迭代我们会随机选 10 个样本计算平均梯度,并更新参数,这样下来,一个 epoch 需要进行 (1000 / 10 = 100) 次参数更新。

(1)Mini-batch 的优缺点

Mini-batch 特点 它带来的优点 它造成的缺点

每次使用部分样本更新 更新方向比 SGD 稳定,损失曲线波动小,收敛更可靠 每次更新仍存在一定噪声,收敛路径不是完全平滑

计算量适中,可利用并行 可以充分利用 GPU 并行能力,训练速度快 mini-batch 太小会像 SGD 一样噪声大,太大又趋向 Batch GD,灵活性降低

在噪声和稳定性之间折中 既有一定跳出局部最优的能力,又不会像 SGD 那样过于颠簸 超参数(batch size)需要调节,不同任务最优值不同

(2)Mini-batch 的收敛表现

在“下山”比喻下,Mini-batch 就像是手里拿着局部准确的地图:

噪声被部分平滑:每次看几个人的样本,方向不会因为单一样本异常而大幅偏离。

路径仍有微小抖动:相比 Batch GD,仍然可以“微调”路线,更灵活地适应复杂地形。

训练效率较高:每次更新占用内存适中,可以充分利用 GPU 并行,整体训练时间比 SGD 更短。

Pasted image 20251107143949

总的来说,Mini-batch 在性能和成本上的平衡让其成为了我们的最佳选择。

但Mini-batch也带来一个新的超参数:批次大小(Batch size)。

(3)Batch size 的选择

Mini-batch 的核心超参数是 batch size,一般来说:

小 batch(如 1~32) → 噪声大,收敛不稳定,但可能帮助跳出局部最优

中 batch(如 64~256) → 收敛稳定,训练速度较快,适合大部分任务

大 batch(如 1024 以上) → 接近 Batch GD,收敛平稳,但对 GPU 显存要求高

因此,我们通常的选择是这样的:

小数据集 → 可用大 batch,保证稳定收敛

大数据集 → 使用中等 batch,兼顾效率与稳定性

尽量避免过小或过大的批次大小。

http://www.jsqmd.com/news/87165/

相关文章:

  • C++ bitset类的使用与简介
  • 大数据中的数据同步预处理:保障数据质量的第一道防线
  • 关于指纹浏览器
  • 【大模型预训练】10-训练数据集处理代码案例:Python抽象代码示例展示数据处理逻辑
  • 云服务器与传统服务器
  • JWT认证与OAuth2集成
  • 深入理解 C# 中的值类型与引用类型
  • 【大模型预训练】11-大模型预训练动机:通过海量数据学习通用表征能力的必要性
  • 300K 迷你神器!一键揪出重复文件,免费无广超高效!
  • 如何使用stlink解锁stm32芯片
  • Step-Audio 2:颠覆性多模态音频AI如何重新定义人机交互?
  • 2025年评价高的斜纹纸布厂家推荐及选购参考榜 - 品牌宣传支持者
  • 3个关键步骤实现LanceDB读写分离:彻底解决向量数据库性能瓶颈
  • 【Python】批量转换文件夹内的图片为ICO
  • 基于C++的爬虫框架 - 实践
  • 7个重塑知识生产力的Obsidian Zettelkasten模板设计策略
  • 2025年知名的机制净化板/净化板厂家最新TOP实力排行 - 品牌宣传支持者
  • Nord调色板国际化色彩应用:构建全球统一视觉体验的专业指南
  • 数据分析师的基本功总结
  • AutoGPT事件驱动设计:通过消息队列实现松耦合
  • Unity教学 项目2 2D闯关游戏
  • 2025轻量AI革命:Granite-4.0-H-Micro-Base如何重塑企业智能落地范式
  • 《大明王朝 1566》电子版书籍 + 46 集影视高清资源,速存防失效
  • 爆炸事件检测与识别 _ 基于YOLOv5-AFPN-P2345模型的改进实现
  • Refine+Next.js+Ant Design实战避坑指南:从版本冲突到性能优化的完整解决方案
  • 通信基站抛物面天线检测--基于RPN与FPN的改进算法实现
  • 2025年热门的光照振荡培养箱/水浴恒温振荡培养箱厂家推荐及选购参考榜 - 品牌宣传支持者
  • CosyVoice ONNX模型部署终极指南:5大实战技巧快速掌握
  • FastAPI性能优化技巧
  • Seal视频下载器智能文件名生成功能详解