PyTorch LSTM:我应该使用小批量大小还是单批量,但在计算损失时随机删除 n 个观察值?

问题描述 投票:0回答:1

据我了解,小批量大小的想法相当于在每一步仅将模型拟合到所有训练数据的一部分(一个时期由许多步骤组成,具体取决于批量大小)以避免过度拟合

因此,如果我在计算每个时期的损失时使用完整批次(所有数据)并随机删除 n 个观察值。这与小批量大小的想法等效吗?

我正在使用 LSTM 神经网络并训练时间序列数据。在这里,我们假设我有无限的存储和计算能力

感谢您的评论

pytorch time-series lstm batchsize mini-batch
1个回答
0
投票

通常完整批次不适合您的 GPU,但是迷你批次却可以。看看另一个极端,即小批量大小为 1 的情况,很明显梯度的噪声很大,因为它取决于单个输入。嘈杂的梯度将导致优化器在搜索空间中遵循一条非常摇摆的路径,这是低效的。

我无法理解你的论点:

因此,如果我在计算每个时期的损失时使用完整批次(所有数据)并随机删除 n 个观察值。这与小批量大小的想法等效吗?

这是我的理解:

  1. 您对整批网络进行评估
  2. 您计算子集的损失
  3. 因此梯度仅适用于该子集
  4. 优化器应用梯度步骤并且仅考虑子集
  5. 您得到的结果与首先使用
    all-n
    小批量大小相同

您应该选择适合您问题的批量大小(也许可以查看有关您主题的论文)。太大的批量大小会使梯度平滑,但随机性也有好处,因为它可以帮助您逃脱局部最小值,并使您的网络在未见过的情况下更加稳健(泛化)。

© www.soinside.com 2019 - 2024. All rights reserved.