我见过其他着名的深度学习研究人员的类似陈述,但我仍然不清楚如何找到正确的小批量大小.看作更大的小批量可以允许更高的学习率,似乎需要大量的实验来确定某个小批量大小是否在训练速度方面产生更好的性能.
我有一个带4GB内存的GPU,并使用库Caffe和Keras.在这种情况下,如果每个观察具有一定的内存占用M,那么选择一个好的小批量大小的实用启发式是什么?
当我们训练网络时,当我们计算前向传球时,我们必须保留所有中间激活输出以用于向后传球.您只需计算在前向传递中存储所有相关激活输出所需的内存量,以及其他内存限制(将权重存储在GPU上等).因此,请注意,如果您的网络非常深,您可能需要采用较小的批量大小,因为您可能没有足够的内存.Minibatches: Use minibatches. Modern computers cannot be efficient if
you process one training case at a time. It is vastly more efficient
to train the network on minibatches of 128 examples, because doing so
will result in massively greater throughput. It would actually be nice
to use minibatches of size 1, and they would probably result in
improved performance and lower overfitting; but the benefit of doing
so is outweighed the massive computational gains provided by
minibatches. But don’t use very large minibatches because they tend to
work less well and overfit more. So the practical recommendation is:
use the smaller minibatch that runs efficiently on your machine.
选择小批量大小是内存约束和性能/准确性的混合(通常使用交叉验证进行评估).
我个人猜测 – 手动/计算我的前向/后向传递将消耗多少GPU内存并尝试一些值.例如,如果我能够容纳的最大值大约是128,我可以使用32,64,96等交叉验证,只是为了彻底查看我是否可以获得更好的性能.这通常用于更深的网络,这将推动我的GPU内存(我也只有4 GB的卡,无法访问怪物NVIDIA卡).
我认为通常会更加重视网络架构,交易的优化技巧/技巧,数据预处理.