回答者:哥本哈根诠释2023日期:06月26日

回归与分类等监督学习是机器学习中最常见的一类学习问题, 它提供了包含输入数据和目标数据的训练数据集。为了探讨输入与目标之间的关系,需要先建立含参数的表示模型,再通过最小化所有样本的平均损失函数来获得最优的参数, 此处的优化模型通常为经验风险最小化ERM。梯度下降法是求解ERM模型最常用的方法,也是二阶方法和黎曼优化的重要基础。

传统的梯度下降法在计算目标函数的梯度时, 需计算每个样本对应的梯度, 总计算复杂度线性地依赖于样本数目。随着数据规模的日益增大, 求解所有样本的梯度需要相当大的计算量, 因而传统的梯度下降算法在解决大规模机器学习问题时往往不再奏效。

随机梯度下降算法SGD源于1951年Robbins 和Monro提出的随机逼近, 最初应用于模式识别和神经网络。这种方法在迭代过程中随机选择一个或几个样本的梯度来替代总体梯度, 从而大大降低了计算复杂度。1958 年Rosenblatt研制出的感知机采用了随机梯度下降法的思想, 即每轮随机选取一个误分类样本, 求其对应损失函数的梯度, 再基于给定的步长更新参数。1986年Rumelhart 等分析了多层神经网络的误差反向传播算法, 该算法每次按顺序或随机选取一个样本来更新参数, 它实际上是小批量梯度下降法的一个特例。近年来, 随着深度学习的迅速兴起, 随机梯度下降算法已成为求解大规模机器学习优化问题的一类主流且非常有效的方法。目前, 随机梯度下降算法除了求解逻辑回归、岭回归、Lasso、支持向量机和神经网络等传统的监督机器学习任务外, 还成功地应用于深度神经网络、主成分分析、奇异值分解、典型相关分析、矩阵分解与补全、分组最小角回归、稀疏学习和编码、相位恢复以及条件随机场等其他机器学习任务。

随着大数据的不断普及和对优化算法的深入研究, 衍生出随机梯度下降算法的许多不同版本。这些改进算法在传统的随机梯度下降算法的基础上引入了许多新思想, 从多个方面不同程度地提升了算法性能。搜索方向的选取和步长的确定是梯度下降算法研究的核心,按照搜索方向和步长选取的方式不同, 将随机梯度下降算法的改进策略大致分为动量、方差缩减、增量梯度和自适应学习率等四种类型。其中, 前三类方法主要是校正梯度或搜索方向,适用于逻辑回归、岭回归等凸优化问题; 第四类方法针对参数变量的不同分量自适应地设置步长, 适用于深度神经网络等非凸优化问题。在传统梯度下降算法的基础上添加动量项可以有效避免振荡, 加速逼近最优解. 采用动量更新策略的方法主要包括经典动量算法和Nesterov 加速梯度算法。简单版本的随机梯度下降算法在随机取样的过程中产生了方差并且随着迭代次数的增加而不断累加, 无法保证达到线性收敛。为此研究者们相继提出了一系列基于方差缩减的随机梯度下降算法, 主要包括随机方差缩减梯度算法、近端随机方差缩减梯度算法、Katyusha和MiG等。

回答者:北航秦曾昌日期:2018年09月16日·科研工作者 优质科学领域创作者

随机梯度下降算法是基于梯度下降法中最原始的方法——批量梯度下降法(BGD)的缺点而演变出的改良。

在训练过程中常见的损失函数为:

批量梯度下降法(Batch Gradient Descent,简称BGD)的方法是先求偏导,再用每个θ各自的梯度负方向依次更新每个θ:

它的效果如图:

可以看出是一种思路简单、易于实现的算法,并且在较少迭代次数的情况下就可以得到全局最优解,但是每次迭代都要调用全部数据,如果样本数量(上面式子中的m)较大,将会导致计算极其慢。基于这一缺点,随机梯度下降法(Stochastic Gradient Descent,简称SGD)被提出。它不再每次迭代都用上所有样本,而是每次迭代仅仅对一个样本进行更新,从而达到对于数量庞大的样本只需使用其中的相对少量就把θ最优化的目的。它的方法是在改写损失函数之后,θ的更新是基于每个样本对theta求偏导后所得梯度:

相比BGD算法SGD算法速度大幅提升,几十万条样本基本只需要用上万或者只要上千条样本就饿可以得到结果。但是SGD伴随更多噪音、最优化方向准确度下降的问题。效果如下图,可以看出相比于BGD,SGD迭代次数显著增加,并且并不是每一次迭代都是向着最优化方向。同时,SGD算法在实现难度上不如BGD算法简单。

虽然理论上BGD比SGD得到全局最优,但是在生产场景中,并不是每一个最优化问题中的目标函数都是单峰的,反而是sgd更容易跳出局部最优。

回答者:自由坦荡的湖泊AI日期:06月26日

随机梯度下降算法(Stochastic Gradient Descent,SGD)是一种用于最小化可微目标函数的迭代算法,是梯度下降算法的随机近似。它的基本思想是,每次迭代时,随机选取一个或一小批样本,计算它们对应的梯度,然后用这个梯度来更新参数。这样可以加快计算速度,同时避免陷入局部最优。

随机梯度下降算法的一般步骤如下:

  1. 初始化参数,设定学习率和迭代次数。
  2. 对于每次迭代,执行以下操作:随机打乱训练数据的顺序。对于每个样本或每个小批量样本,计算目标函数的梯度。用梯度的负方向乘以学习率来更新参数。
  3. 重复第2步,直到达到预设的迭代次数或满足收敛条件。

随机梯度下降算法的优点是:

  • 计算效率高,每次只需要少量的样本和梯度。
  • 可以适应动态变化的数据,因为每次都是随机选取样本。
  • 可以跳出局部最优,有更大的概率找到全局最优。

随机梯度下降算法的缺点是:

  • 更新方向不稳定,可能会导致震荡或偏离最优方向。
  • 需要调整合适的学习率和迭代次数,否则可能会过早收敛或无法收敛。
  • 对于非凸函数,可能会收敛到鞍点或极小值。

回答者:杨晨音乐MV日期:2017年12月26日

是最小化风险函数、损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路。随机梯度下降损失函数对应的是训练集中每个样本的粒度,最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近。