【问题标题】:Mini-batch performs poorly than Batch gradient descent?Mini-batch 的表现不如 Batch 梯度下降?
【发布时间】:2020-10-31 10:48:13
【问题描述】:

我能够从批量梯度下降(批量大小 37000)中获得相当不错的结果,但是当我尝试小批量梯度下降时,我得到的结果非常糟糕(即使使用 adam 和 dropout)。

在批处理 gd 中,我能够获得 100% 的训练和 97% 的 dev/cv 准确度。 而在大小为 128 的 mini-batch 中,两者的准确率都只有 88% 左右。

训练损失似乎围绕 1.6 旋转,并且不会随着任何进一步的迭代而减少,但当我增加批量大小时会缓慢减少(因此提高了准确性)。最终我达到了 37000 的批量大小以获得最大准确度。

我尝试调整 alpha,但准确度仍然相同。

我正在训练 mnist 数字数据集。

可能是什么原因?请帮忙

【问题讨论】:

    标签: deep-learning neural-network


    【解决方案1】:

    我找到了解决办法

    我用于批处理 gd 的 lmbda 值(即 10)对于 mini batch gd 似乎太大了。 通过将其降低到 0.1 ,我解决了这个问题。

    【讨论】:

      【解决方案2】:

      在批量梯度下降中,所有训练数据都被考虑在内以采取一个步骤。在小批量梯度下降中,您在采取单个步骤之前会考虑一些数据,因此模型更新频率高于批量梯度下降。

      但是小批量梯度下降是有代价的:

      首先,mini-batch 使一些学习问题从技术上无法解决的问题变为可以解决的问题,因为使用较小的批大小减少了计算需求。

      其次,减小批量大小并不一定意味着降低梯度精度。许多训练样本有很多噪声、异常值或偏差。

      我相信由于小批量的波动,您可能会陷入局部最小值。尝试使用 mini-batch 提高学习率可能会解决问题。还可以尝试标准化图片,这也可能有所帮助。

      【讨论】:

      • 我通过将 lambda 从 10 降低到 0.1 来修复它。奇怪的修复,但它的工作原理。
      猜你喜欢
      • 2017-04-15
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2014-03-14
      • 2017-09-29
      • 1970-01-01
      相关资源
      最近更新 更多