Batch Size(批量大小)
batch size 就是每次喂给模型多少条数据,然后才更新一次权重。
亦作、亦称:批量大小 · Mini-batch Size · 批大小 · 批次大小
Batch Size 决定了每次梯度更新所使用的样本数量,是深度学习训练效率与泛化能力之间最核心的权衡旋钮。合理选择 batch size 对模型收敛速度、显存使用和最终精度均有显著影响。
概述
Batch Size 是深度学习训练流程中控制每次参数更新所用样本数的超参数。
- 批量梯度下降(BGD):batch size = 全量训练集,梯度精确但每步耗时长
- 随机梯度下降(SGD):batch size = 1,更新频繁、噪声大
- 小批量梯度下降(Mini-batch SGD):batch size 在 2~数千之间,兼顾效率与稳定性,是当前主流
- 典型默认值为 32,也常见 64、128、256
- 在 LLM 训练中常以 token 数 而非样本数衡量 batch size
工作原理
每个训练步骤(step)由以下流程组成。
- 采样:从训练集中随机抽取 B 条样本组成一个 mini-batch
- 前向传播:将 B 条样本并行送入模型,计算预测输出与损失
- 反向传播:对 B 条样本的损失取均值,计算梯度 ∇L
- 参数更新:优化器用梯度 ∇L 更新全部可训练参数
- 梯度方差:batch size 越大,梯度估计方差越小(理论上方差 ∝ 1/B)
对训练的影响
Batch size 的选择深刻影响训练动态与最终模型质量。
- 小 batch(2~32):梯度噪声大,有助于逃离尖锐极小值,通常泛化更好;但每步方差大,训练曲线震荡
- 大 batch(1024+):梯度估计准确,训练曲线平滑,但倾向于收敛到尖锐极小值(sharp minima),测试集性能下降
- Keskar et al. (2017) 实证表明:大 batch 训练存在显著泛化差距(generalization gap)
- 学习率缩放规则(Linear Scaling Rule):batch size 翻倍时,学习率也应翻倍,以维持等效更新步长
工程实践要点
在实际落地时,batch size 的配置需结合硬件与任务综合考量。
- 2 的幂次:选 32、64、128 等值可最大化 GPU 内存对齐与 CUDA 并行效率
- 梯度累积(Gradient Accumulation):在显存受限时,将多个小 batch 的梯度累加后再更新,等价于大 batch
- 动态 batch size:部分训练框架支持 warmup 阶段从小 batch 逐步增大,兼顾早期稳定与后期效率
- LLM 训练:以 token 数而非样本数度量,典型值为 0.5M~4M tokens/step
- BatchNorm 敏感性:极小的 batch size(<4)会导致 Batch Normalization 统计量不稳定,需改用 LayerNorm 或 GroupNorm
与相邻概念的区别
Batch size 常与其他训练超参数混淆,需注意区分。
- Batch size vs. 学习率:两者需联动调整,batch size 增大时通常需同步提高学习率
- Batch size vs. Epoch:epoch 是全量数据遍历次数,batch size 决定每个 epoch 内的更新步数(steps = N / B)
- Mini-batch vs. 在线学习:在线学习(online learning)batch size 为 1,但侧重实时更新而非批量优化
- Batch size vs. 序列长度:在 Transformer 中,序列长度和 batch size 共同决定显存消耗,两者需联合权衡
局限与常见误区
围绕 batch size 存在若干常见误解,需谨慎对待。
- 误区:batch size 越大训练越好——大 batch 训练速度快,但泛化差距真实存在,不能无限扩大
- 误区:batch size 固定设 32 就够——不同任务、网络结构和优化器对 batch size 的敏感度差异很大
- 硬件瓶颈:batch size 超过显存上限会引发 OOM(Out of Memory),需使用梯度累积或混合精度解决
- 学习率未联动:扩大 batch size 而不调整学习率,常导致训练发散或收敛过慢
- BatchNorm 依赖:使用 BatchNorm 的网络在极小 batch size 下统计不准,影响训练稳定性
发展脉络
Batch size 的研究随深度学习的规模扩张而不断演进。
- 1980s:反向传播算法确立,早期多用全量批次或单样本更新
- 1990s~2000s:LeCun 等人推广 Mini-batch SGD,验证其在实践中的高效性
- 2012:AlexNet 使用 128 的 batch size 在 GPU 上训练,标志大规模 mini-batch 训练范式成熟
- 2017:Keskar et al. 发表 ICLR 论文,系统揭示大 batch 训练的泛化差距与尖锐极小值问题
- 2017:Goyal et al.(Facebook)提出 Linear Scaling Rule,成功将 ResNet 的 batch size 扩展到 8192
- 2020s:LLM 预训练采用超大 batch(百万 token 级),配合学习率调度与梯度裁剪实现稳定训练
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「batch size 就是每次喂给模型多少条数据,然后才更新一次权重。」
- 「batch size 越大,训练越快,但不一定效果越好,甚至可能泛化变差。」
- 「设成 32 或 64 大多数时候就够用,太大了反而容易过拟合尖锐极值。」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「Batch Size」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。