神经网络训练动量权重更新:跨epoch是否保留old_delta_w?
神经网络动量更新的跨epoch处理规则
核心结论
动量优化中的历史更新量(old_delta_w)不需要在每个epoch开始时重置为0,而是要跨所有迭代步骤(包括跨epoch)持续保留和累积。
结合你的场景详细说明
你的场景:100个样本的数据集,batch size=90,训练2个epochs,alpha为动量系数,初始无历史更新量(delta_w为NULL)。
第1个epoch 第1次迭代(处理90个样本)
首次迭代无历史动量,等价于历史项为0,更新公式:weight_update = delta_w_0 + (alpha * 0)第1个epoch 第2次迭代(处理剩余10个样本)
沿用前一次迭代的delta_w_0作为历史动量,更新公式:weight_update = delta_w_1 + (alpha * delta_w_0)第2个epoch 第1次迭代(再次处理90个样本)
正确的更新规则是继续使用上一次迭代(第1个epoch最后一次)的delta_w_1作为历史动量,公式为:weight_update = delta_w_2 + (alpha * delta_w_1)
原因解释
动量优化的核心是模拟物理惯性,让参数更新延续之前的迭代趋势,从而加速收敛、抑制震荡。每一次参数更新(无论属于哪个epoch)都是连续的优化过程,epoch只是数据集的完整遍历周期,并非动量累积的重置边界。如果在epoch开始时重置历史动量,会打断优化的惯性趋势,削弱动量的效果,违背其设计初衷。
内容的提问来源于stack exchange,提问作者PwNzDust
相关产品推荐
相关产品推荐

