随机梯度下降(SGD)是一种用于数学优化的算法,它用随机抽取的观测样本所得到的估计值,代替目标函数的精确梯度。与全批量梯度下降不同,它不必处理整个数据集就能更新参数。由于每次更新的计算成本相对较低,它在大规模机器学习中十分重要,包括人工神经网络的训练。这个术语通常也涵盖小批量方法:这类方法对一小组观测样本的梯度取平均,而不是只使用一个样本。(leon.bottou.org)
数学表述
在监督学习中,目标函数通常具有以下形式:
其中, 是参数向量, 表示训练数据中的一个观测样本, 是损失函数。梯度 由目标函数对各个参数的偏导数组成。全批量梯度下降在每次更新之前,都会计算全部 个样本的梯度贡献。(leon.bottou.org)
SGD 则均匀随机抽取一个索引 ,并计算:
其中,正标量 是学习率,也称步长。每次重新进行均匀随机采样时,条件期望值满足:
因此,采样得到的梯度是无偏的,但单次更新未必会降低完整的目标函数值。同一框架也适用于总体目标函数 ,前提是求导与取期望的次序可以交换。(leon.bottou.org)
采样与小批量
对于包含 个采样观测的小批量 ,梯度估计量变为:
单样本 SGD 对应于 ;若计算所有样本,就会得到完整梯度。在相同参数处计算独立样本的梯度并取平均,会使梯度的协方差降至原来的 。因此,更大的批量能提供噪声更小的估计,但每次更新需要更多计算,同时处理时也需要更多内存。它们还能在现代硬件上实现高效的并行计算。(deeplearningbook.org)
实际实现中,常见的做法是将有限数据集随机打乱,然后按连续的小批量依次遍历。完整遍历一次称为一个训练轮次(epoch)。这种随机重排过程在数学上不同于独立的有放回采样:后续批量取决于哪些观测样本已经使用过。SGD 也可用于在线学习,在新观测样本到来时更新参数,而不是反复遍历一个固定的数据集。(deeplearningbook.org)
历史基础
SGD 属于随机逼近,这是一类利用含噪观测来求解问题的方法。1951 年,赫伯特·罗宾斯和萨顿·蒙罗提出了一种递归过程,用于求取未知期望响应函数的根。他们最初研究的是求根问题,而非神经网络训练,但这项工作为由随机测量驱动的迭代更新奠定了理论基础。(columbia.edu)
基于梯度的优化可以纳入这一框架:将方程 视为求根问题,并用采样估计值代替其中的精确梯度值。由此产生的参数序列是一个随机过程,分析其收敛性时,必须同时考虑目标函数的几何性质和累积的采样噪声。(leon.bottou.org)
收敛性与步长
收敛保证需要相应的假设,仅有无偏性并不足够。典型分析会对目标函数的光滑性、梯度估计量的矩以及迭代序列的稳定性施加条件。经典的递减步长条件为:
第一个条件防止累计可移动距离过早受到有限上界的限制,第二个条件则限制噪声的累积。与 成正比的步长方案满足这两个条件,但是否适用仍取决于具体问题。(leon.bottou.org)
对于凸优化,在适当的步长方案和假设下,可以得到 量级的期望目标函数误差界,通常针对的是迭代点的平均值。强凸性可将这一速率提升至 量级。对于光滑的非凸目标函数,理论保证通常涉及近似驻点,例如梯度范数平方的期望较小,而不是找到全局最小值。这些区别在深度学习中很重要,因为训练目标函数通常是非凸的。(leon.bottou.org)
当梯度噪声持续存在时,固定学习率通常会使迭代在解附近波动,而不能保证精确收敛。在满足相应假设的条件下,减小步长、增大批量或对迭代点取平均,都可以提高最终精度。(leon.bottou.org)
相关优化方法
动量法通过累积按时间衰减的历史梯度来改进 SGD。一种常用形式是:
这会强化那些反复指向一致的方向,并能减轻在曲率不同的方向之间出现的振荡。(deeplearningbook.org)
AdaGrad 利用累积的梯度平方逐坐标调整步长,使更新适应先前观测到的梯度几何特征。Adam 将自适应缩放与梯度一阶矩、二阶矩的指数加权估计相结合,并对这些估计的初始偏差进行校正。两者都使用随机梯度,但都不等同于普通 SGD。它们的表现和理论保证取决于目标函数、所作假设以及具体实现。(jmlr.org)
优化与泛化
SGD 规定参数如何变化;反向传播规定如何计算神经网络的梯度。因此,两者相互补充,而不能互相替代。SGD 也可以优化线性回归和逻辑回归等模型,并不要求模型采用神经网络架构。(deeplearningbook.org)
降低训练损失与改善对未见观测样本的预测并不是一回事。若将正则化的英文名称写作 ID “Regularization”,就会错误地将首字母大写;这里相关的概念是正则化,它通过改变学习过程来约束模型拟合。早停法根据验证集上的表现限制训练,有助于控制过拟合。随机更新本身并不能保证良好的泛化能力。(deeplearningbook.org)