在模型训练时设置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=1Bgrad(b)=B1b=1B(grad(b)+gradn(b))=B1b=1Bgrad(b)+B1b=1Bgradn(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(gradB1grad)>ratio(gradB2grad)

不仅batch size影响梯度值,lr也会影响梯度值。

batch size与lr的一致性

线性缩放准则,batch size N倍,lr变为N倍。

权重方差不变准则,batch size N倍,lr变为sqrt(N).

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐