据我所知,我们有以下场景:
随机:为每个样本 s 计算误差。因此,我们可以计算 s 的梯度。我们可以根据这些梯度更新网络的权重。一个时期涉及对整个训练集的完整迭代。因此,如果我们有 N 个样本,在每个 epoch 中我们将有 N 次权重更新。
batch:算法计算每个样本s的误差。并且每个样本s的梯度被累加。在一个 epoch 结束时,我们取这个累积梯度的平均值,并更新网络的权重。因此,我们在每个 epoch 中只有一次权重更新。
mini-bach:该算法将训练集划分为称为 mini-batch 的子集。因此,对于每个 mini-batch m,算法计算每个样本 s 的误差,并将样本的梯度累加到 m 中。一旦处理了小批量 m 的每个样本,我们就取 m 的累积梯度的平均值,并更新网络的权重。因此,如果我们将训练集划分为 X 个 mini-batch,则在每个 epoch 结束时,我们将对网络的权重进行 X 次更新,每个 mini-batch 更新一次。
这个对吗?
在批量或小批量反向传播的情况下,我们真的使用“平均梯度”吗?或者,相反,我们只使用计算出的梯度之和?
如果这不正确,那么每种反向传播的实际操作顺序(误差计算、梯度计算、权重更新)是什么?