反向传播中计算dW_curr为何要除以m,是否仅交叉熵损失需要该操作
反向传播中
dW_curr除以m的相关问题解答 为什么要除以m
核心原因和批量训练的梯度计算逻辑直接相关:
- 代码中
np.dot(dZ_curr, A_prev.T)这一步,已经完成了批次内所有样本的单样本梯度求和操作,这里的m是当前批次的样本总数,除以m本质是对批次内的梯度取平均值。 - 该操作最核心的作用是保证梯度的量级和批次大小无关:如果不做除法,当你把批次大小从32调整为128时,梯度的数值会直接变为原来的4倍,你必须同步调整学习率才能保证训练正常进行;做了平均之后,无论批次大小怎么变,梯度的尺度都是统一的,学习率不用频繁调整。
- 同时平均梯度也能提升训练稳定性:避免批次样本较多时,求和得到的梯度过大导致训练过程震荡。
该操作是否仅适用于交叉熵损失
不是,这个除法操作和你选择的损失函数完全无关,是批量训练场景下的通用操作:
无论你使用均方误差(MSE)、平均绝对误差(MAE)还是交叉熵作为损失函数,只要你在计算损失时用的是批次内所有样本的平均损失(这是几乎所有深度学习训练的默认实现),反向传播时就需要对梯度做平均,也就是除以m。只有当你刻意使用批次总损失而非平均损失时,才可以去掉这个除法,这种情况非常少见。
内容的提问来源于stack exchange,提问作者Gabriel Oliveira Guimarães
相关产品推荐
相关产品推荐

