小批量梯度下降如何批量更新每个示例的权重?


12

如果我们批量处理10个示例,我理解我们可以将每个示例的损失相加,但是反向传播在更新每个示例的权重方面如何工作?

例如:

  • 示例1->损失= 2
  • 示例2->损失= -2

这导致平均损失为0(E = 0),那么这将如何更新每个权重并收敛呢?仅仅是通过批次的随机化,我们“希望”早晚收敛?难道这还不是只为最后处理的示例计算第一组权重的梯度吗?

Answers:


15

梯度下降不能完全按照您的建议进行,但可能会发生类似的问题。

我们不计算批次的平均损失,而是计算损失函数的平均梯度。梯度是损失相对于权重的导数,在神经网络中,一个权重的梯度取决于该特定示例的输入,还取决于模型中的许多其他权重。

如果您的模型有5个权重,并且最小批量大小为2,那么您可能会得到以下信息:

例子1.损失= 2,gradients=(1.5,2.0,1.1,0.4,0.9)

示例2。损失= 3,gradients=(1.2,2.3,1.1,0.8,0.7)

计算此迷你批次中的梯度平均值,分别为(1.35,0.15,0,0.2,0.8)

对几个示例进行平均的好处是,梯度的变化较小,因此学习更加一致,并且对示例的具体要求更少。请注意,第三权重的平均梯度如何为,该权重不会更改此权重更新,但对于选择的下一个使用不同权重计算的示例,该权重可能非零。0

根据评论进行编辑:

在我上面的示例中,计算了梯度的平均值。对于的小批量大小,我们为每个示例计算损失,我们的目标是获得损失相对于权重的平均梯度。kLiwj

在示例中,我将其平均化的方式如下:Lwj=1ki=1kLiwj

您在评论中链接到的教程代码使用Tensorflow来最大程度地减少平均损失。

Tensorflow旨在最小化1ki=1kLi

为了最大程度地减少这一点,它计算了相对于每个权重的平均损失的梯度,并使用了梯度下降来更新权重:

Lwj=wj1ki=1kLi

可以将微分带入总和内,因此它与我的示例中方法的表达式相同。

wj1ki=1kLi=1ki=1kLiwj


知道了 您仍然想将损失平均在batch_size上正确吗?我不确定您是否熟悉tensorflow,但我一直在尝试与本教程协调理解:tensorflow.org/get_started/mnist/beginners您可以看到损失是整个批次的平均数(reduce_mean代码)。我想张量流保持内部权重/平均值的平均值吗?
碳纤维计算,

1
@carboncomputed哦,是的,他们对损失进行平均,因此当Tensorflow计算平均损失的梯度时,它可以有效地计算每个损失的梯度平均值。我将编辑答案以显示其数学运算。

有趣。感谢您的澄清。那么只是更深入地研究,是在正向传递过程中根据示例计算并存储权重梯度,还是在张量流的优化过程中计算权重梯度?我想我只是在张量流中缺少这些梯度?我看到了前向通过和损耗,所以张量流正在为我做这些梯度计算/求平均值?
碳计算技术,

1
@carboncomputed这就是Tensorflow的吸引力,它使用符号数学并且可以在后台进行区分
Hugh

谢谢你的回答。不过,我不明白TF怎么知道如何备份繁殖,平均损失在所示这个例子中code line 170
罪人

-1

使用小批量的原因是要有大量的训练示例,以便通过平均效果来减少其可能产生的噪音,但是对于许多数据集来说,这并不是一个完整的批处理,可能需要大量的内存。一个重要事实是,您评估的误差始终是一个距离在您的预测输出和实际输出之间:这意味着它不能为负,因此您不能像您所说的那样将2和-2的误差抵消掉,但是它将变成4的误差然后,您可以评估误差相对于所有权重的梯度,因此您可以计算出权重中的哪些变化会最大程度地减少误差。一旦这样做,您将根据学习率alpha的大小朝该方向迈出“一步”。(这是基本概念,对于深度NN的反向传播,我不作详细介绍。)在您的数据集上运行了一定次数的训练后,如果您的学习步骤不太大,您可以期望网络收敛使它发散。您仍然可以达到本地最低要求,可以通过不同地初始化您的权重,使用差分优化器并尝试进行规范化来避免这种情况。


补充一下:我们主要使用迷你批处理来提高计算效率。我们需要在下降精度和权重更新频率之间进行权衡。数据必须非常大才能不适合内存。
卢卡斯奇格勒

我理解每一个,但是我们如何更新特定批次的重量?每个示例的权重梯度是否也相加?
碳计算技术,

不,总批处理误差只有一个梯度,它是导数的向量。这意味着我们将根据梯度(即使该小批量中的错误减少幅度最大的更新方向)更新权重一次。梯度由偏导数构成,即相对于每个砝码的最小批次误差的导数:这告诉我们每个砝码是变小还是变大以及变大。所有砝码都获得一个批次的更新,以减少该小型批次的误差,该误差独立于其他小型批次。
但丁
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.