Batch size对模型训练的影响
在模型训练时设置batchsize,实际上是用Batch size大小的数据集上计算得到的梯度近似整个数据集(真实分布)上的真实梯度。batch小将会引入噪声(噪声影响大)batch大,则噪声小,对真实梯度的拟合更好,、下降方向更准,同时跑完一次训练集的时间更短。但是注意当梯度足够精确时,没必要使批处理更大而浪费算力。一次整个训练集的时间变短,要想获得相同的精度,需要花费更多的时间,因而参数的..
在模型训练时设置batchsize,实际上是用Batch size大小的数据集上计算得到的梯度近似整个数据集(真实分布)上的真实梯度。
batch小将会引入噪声(噪声影响大)
batch大,则噪声小,对真实梯度的拟合更好,、下降方向更准,同时跑完一次训练集的时间更短。但是注意当梯度足够精确时,没必要使批处理更大而浪费算力。一次整个训练集的时间变短,要想获得相同的精度,需要花费更多的时间,因而参数的修正显得更缓慢。
g r a d = g r a d ∗ + g r a d n grad = grad^{*} + grad_n grad=grad∗+gradn
视
g r a d B = 1 B ∑ b = 1 B g r a d ( b ) = 1 B ∑ b = 1 B ( g r a d ∗ ( b ) + g r a d n ( b ) ) = 1 B ∑ b = 1 B g r a d ∗ ( b ) + 1 B ∑ b = 1 B g r a d n ( b ) = g r a d ∗ + m e a n ( g r a d n ) grad_B = \frac{1}{B} \sum_{b=1}^{B} grad^{(b)}\\=\frac{1}{B} \sum_{b=1}^{B}\left( grad^{*(b)} + grad_n^{(b)}\right)\\= \frac{1}{B} \sum_{b=1}^{B} grad^{*(b)} + \frac{1}{B} \sum_{b=1}^{B} grad_n^{(b)} \\= grad^* + mean(grad_n) gradB=B1b=1∑Bgrad(b)=B1b=1∑B(grad∗(b)+gradn(b))=B1b=1∑Bgrad∗(b)+B1b=1∑Bgradn(b)=grad∗+mean(gradn)
若
B 1 > > B 2 B_1>> B_2 B1>>B2
则
r a t i o ( g r a d B 1 → g r a d ∗ ) > r a t i o ( g r a d B 2 → g r a d ∗ ) ratio(grad_{B_1} \rightarrow grad^*) > ratio(grad_{B_2} \rightarrow grad^*) ratio(gradB1→grad∗)>ratio(gradB2→grad∗)
不仅batch size影响梯度值,lr也会影响梯度值。
batch size与lr的一致性
线性缩放准则,batch size N倍,lr变为N倍。
权重方差不变准则,batch size N倍,lr变为sqrt(N).
更多推荐
所有评论(0)