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


15

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

我已经读到,在批处理模式下,对于训练集中的所有样本,我们计算网络中每个神经元的误差,增量和增量权重,然后而不是立即更新权重,而是对其进行累加,然后再开始在下一个时期,我们将更新权重。

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

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
  • 哪一种是批处理方法的正确形式?
  • 如果是第一个,是否不累积所有增量权重会导致数量巨大?

1
“正确”方法取决于上下文。事实证明,在许多情况下,每个时期仅更新一次权重将比随机更新(在每个示例后更新权重)收敛得慢得多。我会补充说,大家普遍希望使用某种形式的批处理更新,但通常每个周期要多于1x。
塔罗尔

Answers:


9

在存在成对的学习速率的意义上,使用均值或总和是等效的,它们会产生相同的更新。

要确认这一点,请首先调用更新规则:

Δwij=αEwij

然后,令为一个时期内大小为的数据集的平均误差。然后,误差之和为,并且由于不依赖于,因此成立: Ñ Ñ μ ë Ñ 瓦特μEññμËñw

Δw一世Ĵ=-αñμw一世Ĵ=-αñμw一世Ĵ

对于您的第二个问题,短语“累加增量权重”将表示这些方法之一保留了权重更新。事实并非如此:批处理学习会累积错误。在给定的纪元中,只有一个矢量。(您的伪代码省略了更新权重的步骤,此后可以丢弃。)Δ w ^ΔwΔw


1
小批量梯度下降是否与同一批量梯度下降相同?我在这里迷路了!如果不是,两者之间有什么区别?如果我错了,请纠正我,在批处理模式下,需要按批读取整个数据集,计算梯度,当读取所有梯度时,将其平均后再更新参数,而在小批量中,每个读取批处理,计算梯度,然后更新参数,然后读取下一个小批处理,直到一个纪元结束。
丽卡

1
这是通常给出的定义:一次使用一个训练数据子集更新参数。(有一些方法,其中微型批次随机抽样,直到收敛,即,将批料不会在一个划时代被遍历。)请参阅如果是很有帮助的。
肖恩·复活节,

0

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


谢谢,但是如果它们确实相同,为什么当我们只能对仅是一个简单变量的错误求和时,为什么要浪费这么多的内存来保留每种模式的累积更新呢?
里卡2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.