【深度学习】学习算法中为什么要使用“小批量随机”
开门见山
目的 | 具体好处 | 细节解释 |
---|---|---|
估计方向:在“噪声”与“准确”间折衷 | - 全量梯度(Batch)几乎无噪声但一次计算代价大。 - 单样本梯度(纯SGD)噪声太大、收敛震荡。 - 随机抽的小批量可在 O(1/√B) 的方差下降与计算量之间取得平衡。 | batch size = B 时,梯度估计方差≈σ²/B;B 越大越平滑,但算得越慢;B 越小越快却抖。 |
避免偏差:随机打破数据顺序 | - 若按固定顺序喂数据,模型易被局部相关性“洗脑”,收敛到次优点。 - 每一步重新随机采样,可在期望意义上恢复“独立同分布”假设,减小系统性偏差。 | 把 epoch 看成“有放回”从数据分布采样 N 次;随机洗牌/重采样让梯度方向在多次期望下逼近真实梯度。 |
提升泛化:噪声是一种正则化 | - 随机梯度带来的噪声有助于跳出鞍点/浅局部极小值。 - 像在解的邻域内加入小扰动,效果类似 dropout、权重噪声。 | 特别在高度非凸的深度网络中,小批量噪声往往促使模型收敛到“宽而浅”的低损失谷,泛化更好。 |
硬件效率:并行又不过载显存 | - GPU/TPU 天生适合并行处理一批样本。 - 批太大占满显存,批太小核间利用率低;经验上 32-1024 可跑满加速卡。 | 现代框架常把 mini-batch 维度映射到 GPU 的线程块。 |
易于自适应学习率算法 | - Adam/Adagrad/RMSProp 等都基于批内均值/方差;批随机抽样避免统计量失效。 | 若用固定顺序,梯度一贯相似,方差估计被低估,导致学习率调节失灵。 |
小批量大小的选取依据
在真实训练过程中,我们通常沿着“显存上限→吞吐率峰值→验证集曲线”三步调整批量大小;批过大可配合学习率线性增大(“Linear Scaling Rule”)或使用 LARS/LAMB 等优化器。
关于数据集大小和小批量的大小,通常认为小数据集,可每个 epoch 只洗牌一次;而流式/海量数据,常用“在线采样”(random shuffling buffer)保持近似随机。