SGD(随机梯度下降)

在深度学习领域, 该优化算法是使用最优化的算法, 利用它, 通过不断的估计objective function的梯度, 更新模型参数,不断迭代, 直至收敛或者达到我们early stoping 的条件, 也就是说模型相对于validation set上performance开始下降。

SGD 又称 online 的梯度下降, 每次估计梯度的时候, 只选用一个训练样本。

之所以称为stochastic, 是因为我们训练之前Randomly shuffle examples in the training set. 这相当于我们随机的选取一个exanple 进行online 的trainging。 但是这也是有区别的, 因为每次训练的时候都会逐次的选取一个样本,注意随机shuffle 之后, 我们取样本的次序就固定了。

我们在训练的时候, 扫完一次训练数据集中所有的example的被称为一个epoch。 

参数更新公式如下:


其中B = 1 的时候, 就是一般的online gradient descent.

    B = the training set size , 这称为standard(also called batch) gradient descent。 注意此时就不能称为stochastic gradient descent 了, 因为毫无随机可言, 这是确定的梯度下降

B= some valur between 1(exclusive) and the training set size (exclusive), 这就称为minibatch gradient descent, 当时也属于随机梯度下降了。

B 和 learning rate 都是hyperparameter, 所谓的超参数, 就是这些参数需要在validation set 到达最佳的时候来确定大小的。


SGD的算法的伪代码如下:(下面我们即w 为模型参数, Q为代价函数)

SGD(随机梯度下降)_第1张图片

你可能感兴趣的:(DeepLearning)