神经网络中的批量学习方法中的权重是如何更新的?

机器算法验证 机器学习 神经网络
2022-01-28 20:39:21

有人可以告诉我应该如何使用批处理方法构建神经网络吗?

我已经读过,在批处理模式下,对于训练集中的所有样本,我们计算网络中每个神经元的误差、增量和增量权重,然后我们不是立即更新权重,而是累积它们,然后在开始之前下一个 epoch,我们更新权重。

我还在某处读到,批处理方法类似于在线方法,但不同之处在于只需对训练集中所有样本的误差求和,然后取其平均值,然后使用它来更新权重,就像一个在线方法(差异只是那个平均值)是这样的:

for epoch=1 to numberOfEpochs

   for all i samples in training set

         calculate the errors in output layer
         SumOfErrors += (d[i] - y[i])
   end

   errorAvg = SumOfErrors / number of Samples in training set

   now update the output layer with this error
   update all other previous layers

   go to the next epoch

end
  • 其中哪一个是真正正确的批处理方法形式?
  • 在第一个的情况下,累积所有增量权重不会导致巨大的数字吗?
3个回答

使用平均值或总和是等效的,因为存在成对的学习率,它们产生相同的更新。

为了确认这一点,首先调用更新规则:

Δwij=αEwij

然后,设为大小为的数据集在一个时期内的平均误差。那么误差之和是,并且因为不依赖于,所以这成立:μEnnμEnw

Δwij=α(nμ)wij=αnμwij

对于您的第二个问题,“累积增量权重”这句话意味着这些方法之一会保留权重更新。事实并非如此:批量学习会累积错误在给定的 epoch 中只有一个单一的(您的伪代码省略了更新 weights的步骤,之后可以丢弃。)ΔwΔw

这两个答案是等价的。我个人认为它是平均误差而不是总和。但是请记住,梯度下降有一个称为学习率的参数,并且只减去了误差梯度的一部分。所以误差是否被定义为总平均值可以通过改变学习率来补偿。

有人解释说;批量大小是一个超参数,它定义了在更新内部模型参数之前要处理的样本数量。

将批次想象成一个循环遍历一个或多个样本并进行预测。在批处理结束时,将预测与预期的输出变量进行比较,并计算出一个误差。根据这个误差,使用更新算法来改进模型,例如沿着误差梯度向下移动。

一个训练数据集可以分为一个或多个批次。

当所有训练样本都用于创建一个批次时,学习算法称为批次梯度下降。当批次为一个样本的大小时,学习算法称为随机梯度下降。当批量大小大于一个样本且小于训练数据集的大小时,这种学习算法称为小批量梯度下降。

您可以阅读更多神经网络中批次和时期之间的区别