随机梯度下降(stochastic gradient descent,SGD)
当样本数据过于庞大时,采用原来传统的梯度下降算法,训练时间过长,收敛太慢,所以使用SGD的方法来加快收敛,该方法伪代码如下:
每个参数更新时只使用一个样本,原先是使用所有样本,这样说来,该算法虽然大概率得不到全局最优解,但是当样本数量足够多时,总是能得到最优解附近的值,而且训练速度快。
后续在深度学习中广泛使用的mini-bach,每次更新参数使用几百个样本,这样做比使用一个样本大概率训练效果好些,而且训练速度也较快。伪代码如下:
关于该算法为何会收敛的问题:总的来说就是从expected loss用特卡洛(monte carlo)来表示计算,那batch GD, mini-batch GD, SGD都可以看成SGD的范畴。因为大家都是在一个真实的分布中得到的样本,对于分布的拟合都是近似的。那这个时候三种方式的梯度下降就都是可以看成用样本来近似分布的过程,都是可以收敛的!更详细的回答见: