在深度学习过程中,经常会遇到训练数据的数据量很大的情况,由于训练过程是相对于所有的数据训练来进行的,需要一次性计算给定所有数据的情况下的权重梯度,显然,这在训练数据很大的情况下是不可能的。
Mini-batch
为了能够在这个情况下对深度学习模型进行优化,一般采用的是使用基于迷你批次的数据来估算神经网络的权重梯度,并且使用估算得到的权重梯度来对模型进行梯度下降优化。
一般流程
对所有的数据进行随机排列(shuffle),然后从这些随机排列的数据中抽取一定数目的数据,这个数目称为批次大小(batchsize),计算出每个数据的损失函数,并对损失函数求平均(或者求和),接着用平均后的损失函数进行方向传播,计算对应的权重梯度。
因为求导计算是线性的,因此损失函数平均求得的权重梯度和数据梯度等于mini-batch中给所有数据单个损失函数对应权重梯度和数据梯度的平均
称所有包含了迷你批次的集合为迭代期(Epoch)
随机梯度下降
因为迷你批次的大小在实际计算过程中远小于训练数据的数目,一个迷你批次计算出来的梯度不能代表所有数据的梯度,只能代表所有数据梯度的一个近似。因此,在梯度下降的过程中有一定的随机性,这种优化算法被称为随机梯度下降算法。
矫正当前梯度
- 引入动量
- 引入权重梯度的平方