Caffe 或 convnets 中的批量大小是多少
What is batch size in Caffe or convnets
我认为批量大小只是为了性能。批次越大,同时计算的图像就越多以训练我的网络。但我意识到,如果我改变我的批量大小,我的净准确率会变得更好。所以我不明白什么是批量大小。有人可以解释一下什么是批量大小吗?
Caffe 使用 Stochastic-Gradient-Descend (SGD) 进行训练:也就是说,在每次迭代时,它都会计算参数 w.r.t 训练数据的(随机)梯度,并在中移动(=更改参数)渐变的方向。
现在,如果你写下梯度方程w.r.t。训练数据你会注意到为了计算梯度 exactly 你需要评估 all 你的训练数据 在每次迭代:这非常耗时,尤其是当训练数据越来越大时。
为了克服这个问题,SGD 以一种随机的方式逼近精确的梯度,通过在每次迭代时仅 采样 训练数据的一小部分。这小部分就是批次。
因此,批量越大,每次迭代的梯度估计就越准确。
TL;DR: batch size 影响每次迭代估计梯度的准确性,改变 batch size 因此影响 "path" 优化需要并且可能改变训练过程的结果。
更新:
在 ICLR 2018 会议上展示了一项有趣的工作:
Samuel L. Smith, Pieter-Jan Kindermans, Chris Ying, Quoc V. Le Don't Decay the Learning Rate, Increase the Batch Size.
这项工作基本上涉及改变批量大小和学习率的影响。
我认为批量大小只是为了性能。批次越大,同时计算的图像就越多以训练我的网络。但我意识到,如果我改变我的批量大小,我的净准确率会变得更好。所以我不明白什么是批量大小。有人可以解释一下什么是批量大小吗?
Caffe 使用 Stochastic-Gradient-Descend (SGD) 进行训练:也就是说,在每次迭代时,它都会计算参数 w.r.t 训练数据的(随机)梯度,并在中移动(=更改参数)渐变的方向。
现在,如果你写下梯度方程w.r.t。训练数据你会注意到为了计算梯度 exactly 你需要评估 all 你的训练数据 在每次迭代:这非常耗时,尤其是当训练数据越来越大时。
为了克服这个问题,SGD 以一种随机的方式逼近精确的梯度,通过在每次迭代时仅 采样 训练数据的一小部分。这小部分就是批次。
因此,批量越大,每次迭代的梯度估计就越准确。
TL;DR: batch size 影响每次迭代估计梯度的准确性,改变 batch size 因此影响 "path" 优化需要并且可能改变训练过程的结果。
更新:
在 ICLR 2018 会议上展示了一项有趣的工作:
Samuel L. Smith, Pieter-Jan Kindermans, Chris Ying, Quoc V. Le Don't Decay the Learning Rate, Increase the Batch Size.
这项工作基本上涉及改变批量大小和学习率的影响。