随机梯度、小批量与在线学习
层级:A|必学
1. 全量梯度为何不总可行
经验风险
的完整梯度要遍历全部数据。数据很大或持续到达时,每次更新都全量计算成本高。随机梯度用一个样本或小批量估计完整梯度,以更频繁、带噪声的更新换取吞吐和可扩展性。
2. SGD 与 mini-batch
单样本 SGD:
小批量 :
现代语境中的 “SGD” 通常实际指 mini-batch SGD。
3. 无偏性
若样本索引均匀抽取:
单次方向可能与全量梯度差很大甚至让损失上升,但平均方向正确。无偏不是必要条件,也不保证低方差;某些采样、裁剪和自适应方法会引入可控偏差。
4. 批量大小与方差
在独立近似下,batch 平均梯度方差大致随 降低;标准差随 。但有限数据无放回抽样、样本相关和硬件并行会改变细节。
- 小 batch:更新频繁、噪声大、内存少;
- 大 batch:梯度稳定、硬件吞吐好,但每个 epoch 更新次数少;
- 超大 batch:边际方差收益下降,可能需要学习率调整并影响泛化。
选择应以时间到目标指标、显存和可复现性衡量,不只看每步速度。
5. epoch、step 与 batch
- batch size :一次更新用多少样本;
- step/iteration:一次参数更新;
- epoch:大致完整遍历训练集一次;
- 每 epoch 步数通常约 。
比较学习率计划时必须知道按 step 还是 epoch 计数。最后一个不足 batch 可能被保留或丢弃。
6. 为什么要打乱数据
若数据按类别、时间或来源排序,连续 batch 可能偏差极大,导致周期震荡和错误 batch normalization 统计。每个 epoch 随机打乱可让 batch 更像总体样本。
但时间序列或在线因果任务不能随意打乱未来到过去;应使用符合部署过程的切分与顺序。
7. 有放回与无放回采样
理论常假设每步独立有放回抽样,分析简单;工程常每 epoch 随机排列、无放回遍历,覆盖均匀且通常表现好。两者梯度依赖结构不同,但无需为了理论形式放弃合理实现。
8. 学习率衰减条件
经典随机逼近中常见条件:
第一条避免总移动量有限而过早停,第二条让噪声累计可控,例如 。深度学习有限时长训练常用不同经验计划,不必机械遵循渐近条件。
9. 在线学习
数据流逐个到达,模型即时预测、接收反馈并更新。关注:
- 每步计算与内存;
- 概念漂移;
- 延迟反馈;
- regret(相对最佳固定决策的累计损失差);
- 数据顺序与非独立性。
在线学习不等于简单地 batch size=1;它还有时间与反馈协议。
10. 梯度累积
显存不足时,可对 个微批计算梯度并累积,再更新一次,近似大 batch。若每个微批损失取平均,应除以 或正确缩放,否则梯度大 倍。
含 batch normalization、dropout 和优化器 step 相关状态时,微批累积与真正大 batch 不完全相同。
11. 数据并行
多个设备各算本地 batch 梯度,再 all-reduce 求和/平均。要确认:
- 全局 batch size;
- 梯度是和还是平均;
- 学习率按全局 batch 调整;
- 随机种子与采样器避免重复数据;
- batch normalization 是本地还是同步。
12. 方差缩减方法
凸有限和问题中,SVRG、SAGA、SAG 等利用历史或周期性全量梯度构造低方差估计,可加速高精度收敛。深度学习中更常用动量、大 batch、控制变量和数据采样策略。
13. 非独立样本与加权
同一用户的多条记录、群组数据或过采样会破坏“每条观测同等独立”的直觉。损失权重和 batch 构造应反映评估单位与抽样机制,否则高活跃用户可能支配训练。
易错点
- 随机梯度单步不保证下降。
- batch 梯度求和与平均会改变学习率等价尺度。
- 训练数据打乱不能破坏时间因果结构。
- 梯度累积与真正大 batch 在状态层下不完全等价。
- epoch 在流式或动态数据集中可能没有固定含义。
常见问答
Q1:batch 越大梯度越准确,为什么不无限增大?
方差收益递减、内存与通信成本增加、更新次数减少,还可能改变优化轨迹与泛化。应优化端到端时间和最终指标。
Q2:SGD 噪声是好还是坏?
它降低单步精度但提高计算效率,并可能帮助离开某些尖锐区域;过大噪声会妨碍收敛。需要学习率和 batch 平衡。
Q3:类别不平衡应在 batch 内强制均衡吗?
可作为策略,但会改变训练分布,概率输出可能需校准。也可用损失权重、分层采样或任务指标驱动的目标。
练习
- 10000 样本、batch 128,每 epoch 约多少 step?
- 独立梯度方差为 ,batch 平均的理想方差约多少?
- 为什么每步 SGD 损失可能上升?
- 微批累积 4 次且每次损失已取平均,怎样保持等价大 batch 平均梯度?
- 为什么时间序列不能普通随机切分?
答案与提示
- 。
- 。
- 它是带噪估计,只在条件期望上等于全梯度。
- 每个微批损失再除以 4,或累计后梯度除以 4。
- 会让未来信息进入训练、破坏部署顺序并产生泄漏。