深度学习入门笔记手稿(九)mini-batch梯度下降
mini-batch梯度下降
数据特别大时在,在全部处理完全部数据之前,先让梯度下降处理一部分,算法速度会加快。把训练集分割为小一点的子训练集,这些子集取名为mini batch
#一代 只是一次遍历训练集
例子 500万数据
X=[x(1),x(2),…x(1000)] 【x(1001),…x(2000)】…[…x(m)]
X=x{1},x{2}…x{5000}
Y=[y(1),y(2)…y(1000)]…
Y=y{1},y{2}…y{5000}
for t=1…5000
forward prop on x{t}
z[1]=w[1]x(t)+b(1)
A[1]=g【1】(z(1))
…
z[l]=w[l]x(t)+b(l)
A[l]=g【l】(z(l))
cost j
backprop
w[l]=w[l]-adw(t) b[l]=b[l]-adb[t]
使用batch梯度下降一次遍历 只能做一个梯度下降,使用mini batch一次遍历能做5000个梯度下降。
特性
mini batch和batch的损失函数和迭代次数关系图如下
if mini batch size=m :batch gradient descent (x{1},y{1})=(X,Y)
if mini batch size=1: stochastic gradient descent(随机梯度下降)
小于2000个样本可直接使用batch梯度下降法。
一般的mini batch大小为64-512 mini batch为2的次方代码运行速度会快一些
x{t},y{t}要符合cpu/Gpu内存,否则算法表现急转直下
mini batch 大小是一个重要变量,需要快速尝试。