跳到主内容
快讯直播
AI智模界
AI 词典

批大小:一次喂多少样本,决定了什么

一句话定义:批大小(Batch Size)是训练神经网络时,一次前向传播和反向传播同时处理的样本数量。一次喂 32 张图片,批大小就是 32。

打个比方:刷题

假设你在备考,每做完一道题就立刻对答案、调整复习重点。问题是单道题太没代表性——碰上一道偏题,你可能整晚都在补一个根本不重要的知识点。这就是批大小等于 1:梯度抖动剧烈,训练容易来回横跳。

反过来,做完整套卷子再统一对答案,"我哪里弱"这个判断就靠谱得多。批大小变大,就是让模型每走一步之前多看点样本,把这一步的方向算得更准。但代价是桌上摊的卷子变多了——对应到机器上就是显存。

它到底影响什么

训练稳定性:反向传播算出的梯度,实际上是这一批样本梯度的平均值。批越大,这个平均值越接近全体数据的真实方向,噪声越小,曲线越平滑,训练越稳。

学习率上限:批小、梯度噪声大,学习率开大就容易发散;批大、方向准,就敢用更大的学习率。批大小和学习率通常是绑在一起调的,批大小翻倍而学习率不动,结果往往变差。至于具体该按线性还是平方根缩放,属于经验性做法,以自己任务上的实验为准。

显存占用:激活值、梯度等中间结果大致随批大小线性增长。实际调参时第一个撞上的天花板通常是显存,而不是算力。

但批也不是越大越好。批太大可能损失一些泛化能力,而且每一步耗时更长;步数少了、每步慢了,总时间未必省。小批量自带的噪声,本身还有一点正则化的味道。

几个容易混淆的邻居

概念含义单位
批大小一次更新看多少样本样本数
迭代 / 步(step)参数更新一次
轮次(epoch)整个数据集完整过一遍

换算关系大致是:一个 epoch 的步数 ≈ 样本总数 ÷ 批大小。

还有两个常被提起的做法:

  • 随机梯度下降(SGD) 指批大小为 1;批量梯度下降 指一批就是全量数据。实践中几乎都用中间路线,叫小批量(Mini-batch)
  • 梯度累积(Gradient Accumulation):显存不够时,把一个大 batch 拆成几份小的依次算梯度、累加起来,再统一更新一次,效果上等效于大 batch,代价是训练更慢。

对你的实际意义

做训练的人:把批大小和学习率当成一个组合来调,别单独动其中一个;显存不够时,先考虑梯度累积或降批大小配小学习率;在多卡分布式训练里,真正起作用的是所有卡加起来的全局批大小,只看单卡数字容易误判。

不碰训练的人:理解这一点就够了——模型的显存占用和每步耗时,很大程度由"一次喂多少、每条多长"决定,这也是大模型训练成本高昂的直接原因之一。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。