gpt4 book ai didi

deep-learning - 神经网络 : Epoch and Batch Size

转载 作者:行者123 更新时间:2023-12-04 08:42:25 25 4
gpt4 key购买 nike

我正在尝试训练一个神经网络来将单词分类到不同的类别中。我注意到两件事:

当我使用较小的 batch_size(如 8、16、32)时,损失并没有减少,而是偶尔变化。当我使用更大的 batch_size(如 128、256)时,损失正在下降,但非常缓慢。

更重要的是,当我使用更大的 EPOCH 值时,我的模型在减少损失方面做得很好。但是我使用了一个非常大的值 (EPOCHS = 10000)。

问题:如何获得最佳的EPOCHbatch_size 值?

最佳答案

无法根据某些规则来决定这些值。不幸的是,最好的选择取决于问题和任务。不过,我可以给你一些见解。

当你训练一个网络时,你会计算一个梯度来减少损失。为此,您需要反向传播损失。现在,理想情况下,您可以根据数据中的所有样本计算损失,因为这样您基本上会考虑每个样本,并得出一个可以捕获所有样本的梯度。实际上,由于计算所有样本的梯度的计算复杂性,这是不可能的。因为对于每次更新,您都必须计算所有样本的前向传播。这种情况将是 batch_size = N,其中 N 是您拥有的数据点总数。

因此,我们使用 small batch_size 作为近似值!这个想法不是考虑所有样本,我们说我根据一些小样本集计算梯度,但问题是我丢失了有关梯度的信息。

经验法则:较小的批处理大小会产生噪声梯度,但它们收敛得更快,因为每个时期都有更多的更新。如果您的批量大小为 1,则每个时期将有 N 次更新。如果是 N,则每个纪元只有 1 次更新。另一方面,较大的批量大小提供更多信息的梯度,但它们收敛速度较慢。

这就是为什么对于较小的批处理大小,您会观察到不同的损失,因为梯度是嘈杂的。对于较大的批处理大小,您的梯度提供了丰富的信息,但由于更新频率较低,因此您需要很多时期。

理想的批量大小应该是能够为您提供信息梯度但又足够小以便您可以有效地训练网络的批量大小。只有实际尝试才能找到它。

关于deep-learning - 神经网络 : Epoch and Batch Size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64493769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com