小批量(Mini-batch)

每次训练只喂一小份数据给网络。全喂太慢(full batch),一条一条太不稳(SGD),小批量(通常 32/64/128 条)兼顾速度和稳定性,是现代训练的标准做法。

一句话版本

把训练数据分成小份,每次只用一份来更新参数——兼顾速度和稳定性。

三种方案对比

方案每次用多少数据优点缺点
Full Batch全部数据方向最准太慢,内存装不下
SGD(逐个样本)1 条更新最快方向不稳,来回抖动
Mini-batch一小批(32/64/128)速度和稳定性的折中需要选 batch_size

为什么 Mini-batch 赢了

用字帖类比:字帖有 1000 个字。

  • 全练完再调整(full batch):每次调整都很准,但一轮要练完 1000 个字才能改一次——太慢
  • 练一个字就调整(SGD):改得快,但可能被某个特别难的字带偏
  • 每次练 100 个字再调整(mini-batch):不太慢,也不太抖——刚刚好

典型 batch_size

实践中常用 32、64、128。选择取决于 GPU 内存大小和数据特点。batch_size 太大接近 full batch(慢),太小接近 SGD(抖)。

引用本术语的文章