为深度学习选择小批量大小

时间:2016-01-03 00:29:37

标签: performance deep-learning

在Ilya Sutskever撰写的博客文章A brief overview of Deep Learning中,他描述了选择合适的小批量大小来有效训练深度神经网络的重要性。他给出了建议"使用在您的机器上高效运行的较小的小批量"。请参阅下面的完整报价。

我看过其他知名深度学习研究人员的类似陈述,但我仍然不清楚如何找到正确的小批量大小。看作更大的小批量可以允许更高的学习率,似乎需要大量的实验来确定某个小批量大小是否在训练速度方面产生更好的性能。

我有一个带4GB内存的GPU,并使用库Caffe和Keras。在这种情况下,如果每个观察都有一定的内存占用M,那么选择一个好的小批量大小的实用启发式是什么?

  

迷你游戏:使用迷你游戏。如果现代计算机效率不高   你一次处理一个培训案例。它的效率要高得多   因为这样做,在128个例子的小型车上训练网络   将导致更大的吞吐量。它实际上会很好   使用1号的小型客舱,他们可能会导致   提高性能,降低过度装配;但做的好处   所以超过了提供的大量计算收益   minibatches。但是不要使用非常大的小型车,因为他们倾向于   工作不太好,过度适合。所以实际的建议是:   使用在您的机器上高效运行的较小的小批量。

1 个答案:

答案 0 :(得分:6)

当我们训练网络时,当我们计算前向传球时,我们必须保留所有中间激活输出以用于向后传球。您只需计算在前向传递中存储所有相关激活输出所需的内存量,以及其他内存限制(将权重存储在GPU上等)。因此,请注意,如果您的网络非常深,您可能需要采用较小的批量大小,因为您可能没有足够的内存。

选择小批量大小是内存约束和性能/准确性的混合(通常使用交叉验证进行评估)。

我个人猜测 - 手动/计算我的前向/后向传递将消耗多少GPU内存并尝试使用一些值。例如,如果我能够容纳的最大值大约是128,我可以使用32,64,96等交叉验证,只是为了彻底查看我是否可以获得更好的性能。这通常用于更深的网络,这将推动我的GPU内存(我也只有4 GB的卡,不能访问怪物NVIDIA卡)。

我认为应该更加重视网络架构,交易的优化技巧/技巧,数据预处理。