在模型训练时设置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).