若有100万个样本,则平均分为1000份,每一份包含1000个样本,称为batch
X = { x 1 , x 2 , . . . , x 1000000 } X=\{x_1,x_2,...,x_{1000000}\} X={x1,x2,...,x1000000}
分为:
X 1 = { x 1 , x 2 , . . . , x 1000 } , X 2 = { x 1001 , x 1002 , . . . , x 2000 } , . . . X^{1}=\{x_1,x_2,...,x_{1000}\},X^{2}=\{x_{1001},x_{1002},...,x_{2000}\},... X1={x1,x2,...,x1000},X2={x1001,x1002,...,x2000},...
由于计算机的性能限制,不能一下子处理100万的样本,若只用for循环,则时间复杂度太高,而当使用mini-batch时,每个batch中都可用**向量化**的方法来提升计算速度
对于
W = W − α d W W=W-\alpha dW W=W−αdW
有
W i = W i − α d W i , i ∈ [ 1 , 1000 ] W^{i}=W^i-\alpha dW^i,i\in[1,1000] Wi=Wi−αdWi,i∈[1,1000]
公 式 : V t = β V t − 1 + ( 1 − β ) θ t \huge公式:V_t=\beta V_{t-1}+(1-\beta)\theta_t 公式:Vt=βVt−1+(1−β)θt
其中Vt代表前t天的平均温度,θt代表第t天的温度值,β代表可调节的超参数的值(一般取0.9)
V 100 = 0.9 V 99 + 0.1 θ 100 V 99 = 0.9 V 98 + 0.1 θ 99 . . . V_{100}=0.9V_{99}+0.1\theta_{100}\\V_{99}=0.9V_{98}+0.1\theta_{99}\\... V100=0.9V99+0.1θ100V99=0.9V98+0.1θ99...
V 100 = 0.1 ∗ θ 100 + 0.1 ∗ 0.9 ∗ θ 99 + 0.1 ∗ 0. 9 2 ∗ θ 98 + . . . V_{100}=0.1*\theta_{100}+0.1*0.9*\theta_{99}+0.1*0.9^2*\theta_{98}+... V100=0.1∗θ100+0.1∗0.9∗θ99+0.1∗0.92∗θ98+...
本质就是以***指数式***递减加权:各数值的加权随时间而指数级递减,越近期的数据权重越大。
而普通的平均数求法
V a v g = v 1 + v 2 + . . . + v 100 100 V_{avg} =\frac{v_1+v_2+...+v_{100}}{100} Vavg=100v1+v2+...+v100
它的每一项权值都是一样的。
只需保留0-(t-1)时刻的平均值Vt-1和t时刻的温度值θt即可,这对于深度学习中的海量数据来说,是一个很好的减少内存和空间的做法。