小批量反向传播(mini batch backpropagation)训练流程正确性咨询
小批量训练流程问题解答
现有流程正误判断
你梳理的流程存在两处核心错误:
- 步骤5逻辑错误:标准小批量梯度下降没有“计算反向传播后得到的权重的平均值”这个操作,正确逻辑是基于当前batch的平均误差计算梯度,直接用梯度更新全局权重即可。
- 损失与激活函数选型不匹配:你做的是8分类任务,输出层用Logistic激活加误差平方和损失的组合不合理,建议输出层更换为Softmax激活,搭配交叉熵损失,分类效果会有明显提升。
权重更新疑问解答
你提到的两种逻辑对应完全不同的训练范式:
- 第一种:每个batch训练后直接更新权重,作为下一个batch的初始权重,这是标准小批量梯度下降,也是当前深度学习训练的主流方案,收敛速度快,对硬件内存要求低,你的场景直接用这个方案即可。
- 第二种:固定初始权重跑完所有batch,对所有batch的梯度(不是权重)取平均后再更新权重,这是批量梯度下降,收敛更稳定但需要占用更多内存存储梯度,训练速度慢,一般仅用于极小数据集或者要求极稳定收敛的场景。注意:绝对不要对所有batch得到的权重取平均,没有任何训练范式支持这种操作,会导致训练完全失效。
补充注意事项
- 每个epoch开始前要先打乱数据集再划分batch,避免模型学到样本顺序的无关规律。
- 如果继续使用误差平方和损失,需要先把8分类的标签转换为one-hot编码再计算误差。
- 当前batch size设为8是合理的,如果硬件内存充足也可以尝试16、32的batch size,梯度估计会更稳定。
内容的提问来源于stack exchange,提问作者axia_so2
相关产品推荐
相关产品推荐

