随机梯度下降(SGD)与经典的梯度下降法的区别

随机梯度下降(SGD)与经典的梯度下降法的区别

经典的优化方法,例如梯度下降法,在每次迭代过程中需要使用所有的训练数据,这就给求解大规模数据优化问题带来挑战。

知识点随机梯度下降法(SGD)小批量梯度下降法

在机器学习中,目标函数通常可以表示成为如下形式:
随机梯度下降(SGD)与经典的梯度下降法的区别_第1张图片
而经典的梯度下降法采用所有的训练数据的平均损失来近似目标函数。其中M是训练样本的个数。
随机梯度下降(SGD)与经典的梯度下降法的区别_第2张图片
模型参数的更新公式为:
随机梯度下降(SGD)与经典的梯度下降法的区别_第3张图片

因此,经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大的时候,就需要耗费巨大的计算资源和计算时间,这在实际过程中基本不可行。那么,该怎么办呢?
为了解决该问题,随机梯度下降法(Stochastic Gradient Descent, SGD)应运而生。它采用单个训练样本的损失来近似平均损失

随机梯度下降(SGD)与经典的梯度下降法的区别_第4张图片
因此随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了训练速度。

为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际操作中,我们会同时处理若干训练数据,该方法叫做小批量随机梯度下降法(Mini_Batch Gradient Densent)。假设需要同时处理m个训练数据
随机梯度下降(SGD)与经典的梯度下降法的区别_第5张图片

关于小批量梯度下降法,需要注意的几点

1.如何选取mini_batch的大小m?在实际应用过程当中,最优的m通常会不一样,需要通过调参选取。一般m取2的幂次时能充分利用矩阵运算操作。因此可以在2的幂次中挑选最优取值。例如16、32、64、128、256等等。
2.如何选择m个训练数据?为了避免数据的特定顺序给算法收敛带来的影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序。然后在每次迭代时按顺序挑选m个训练数据直至遍历完所有数据
3. 学习率 α \alpha α应该如何选取?为了加快收敛速度,缩短训练时间,同时为了提高求解精度,通常会采用衰减学习速率的方法,即一开始算法采用较大的学习速率,当误差曲线进入平台期后,减小学习率以做更精细的调整。最优学习率 α \alpha α通常也需要调参才能得到。

总结:

综合上述,通常采用小批量随机梯度下降法(Mini_Batch Gradient Descent)解决训练数据量过大的问题。每一次更新模型参数时,只需要处理m个训练数据即可,其中m是一个远小于总训练样本数M的常数(通常取2的整数次幂),这样可以大大加快训练过程。

你可能感兴趣的:(机器学习)