我正在努力训练发现的模型https://github.com/silicon-valley-data-science/RNN-Tutorial使用https://github.com/jupiter126/Create_Speech_Dataset生成的数据集(大约340000 …
如果批量较大,则可以更好地估算梯度,反之亦然小批量。然而,有点嘈杂的渐变并不总是坏的。它们帮助网络摆脱(可能)糟糕的局部最小值,换句话说,它为优化器提供了探索其他局部最小值的机会,这可能会更好。据我所知,没有傻瓜式的方法来了解最佳批量大小。拇指规则是将批量大小考虑在32到128之间,但这又取决于应用程序,您使用的GPU数量等。
关于速度,我的猜测是,即使批量大小小20倍,GPU总是会赢。您可以通过简单地测量处理一定量样品(而不是批次)所需的时间来计时。如果您发现批量大小正在影响验证的准确性和收敛性,那么您可能会考虑转移到CPU上。
底线:做上述测试,但从我可获得的信息来看,我会说接受GPU培训。
我使用卷积神经网络在项目中试验了批量大小,发现了一些有趣的东西:批量大小是一个正则化器。
我有一个网络(在这种情况下卷积,但这一点延续到你的情况),我有一个小型和大型数据集。
我对网络中的20个超参数进行了全面的超参数搜索(需要培训的天数),包括批量大小,L2正则化,丢失,卷积参数,完全连接层中的神经元等。超参数搜索在持有的情况下进行判断验证数据集。
当我有小数据集(数千个样本中的10个)时,超参数搜索有利于L2和丢失的更多正则化,这些值在验证集上产生更好的结果。它也有利于较低的批量。
当我有一个大型数据集(数百万个样本)时,数据集本身足够大以避免过度拟合。超参数搜索有利于较低的L2正则化和丢失(事实上它选择了98%的丢失概率)。而这次它有利于大批量生产。
这是出乎意料的,我没有看到很多文献会将批量大小作为正则化参数,但在这些实验中我的结果非常清楚。
所以直接说到这一点,它可能会产生一些小的差异,但你可以用其他正则化技术来弥补。通过更快地训练和测试更多超参数组合,您可以获得更多的里程,而不是专注于批量大小并牺牲您进行大量实验的能力。
这篇报告 研究批量大小和学习率的关系。 它们不会降低学习率,而是通过相同的因子增加批量大小。
在相同数量的训练时期之后,它达到相同的测试精度,但参数更新更少,导致更大的并行性和更短的训练时间。
简而言之,如果您使用更大的批量大小,您可以使用更大的学习率来减少培训时间。