梯度下降、随机梯度下降、批处理的随机梯度下降的区别

梯度下降(gradient descent):遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,更新梯度。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,需要计算所有的样本然后求平均,其计算得到的是一个标准梯度。计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient descent,批梯度下降。

随机梯度下降(Stochastic gradient descent,SGD):每看一个数据就算一下损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这个方法速度比较快,但是收敛性能不太好。因为每次只用了一个样本因而容易陷入到局部最优解中

批处理的随机梯度下降(Min-batch SGD):用一些小样本来近似全部的,其本质就是既然1个样本的近似不一定准,那就用更大的30个或50个样本来近似。将样本分成m个mini-batch,每个mini-batch包含n个样本;在每个mini-batch里计算每个样本的梯度,然后在这个mini-batch里求和取平均作为最终的梯度来更新参数,即:每跑一个batch就更新一次参数;然后再用下一个mini-batch来计算梯度,如此循环下去直到m个mini-batch操作完就称为一个epoch结束。==目前对于深度神经网络的训练,均采用批处理的随机梯度下降算法(mini-batch SGD)

你可能感兴趣的:(深度学习笔记)