核心要点
Epoch(轮):把全部训练数据完整过一遍叫一个 epoch。
Batch(批):每次更新参数所用的一小批样本,数量由 batch size 决定。
Iteration(迭代):用一个 batch 完成一次参数更新,叫一次 iteration。
换算关系:1 个 epoch 包含的 iteration 数 = 样本总数 ÷ batch 大小。
标准回答
为什么要分批
训练数据可能有上百万条,一次性全塞进显存既放不下、更新也慢。所以把数据切成一小批一小批(batch),每次只用一批来更新一次模型参数。
三者的关系
- Batch:一次喂给模型的一小撮样本,比如 64 条。
- Iteration:用这 64 条算一次梯度、更新一次参数,就是一次 iteration。
- Epoch:当所有样本都被用过一遍(不重不漏),就完成了一个 epoch。
用刷题打比方
假设题库有 1000 道题(样本),你每次拿 100 道一起做并总结(batch=100)。做完并总结一次就是一次 iteration;把 1000 道全部做完一遍就是一个 epoch,这一个 epoch 里你总结了 1000÷100 = 10 次,也就是 10 次 iteration。通常要刷很多遍(多个 epoch)模型才学得好。
常见误区
⚠️ 常见踩坑
不要把 epoch 和 iteration 混为一谈。一个 epoch 通常包含很多次 iteration;batch 越小,一个 epoch 里的 iteration 次数越多,参数更新越频繁。
追问
追问 1:Batch size 设大设小有什么影响?
batch 大:每次更新更稳定、能更好利用 GPU 并行,但占显存多、每个 epoch 更新次数变少。batch 小:更新更频繁、噪声大、有时反而有助于跳出不好的解,但训练可能更慢、不稳定。常见取值如 32、64、128,需结合显存和效果调。
追问 2:为什么要训练多个 epoch?
一遍数据往往不够模型把规律学透。多跑几个 epoch 让模型反复看数据、逐步收敛。但 epoch 太多又可能过拟合(把训练集背下来、对新数据变差),所以常用验证集监控,适时停止。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。