aiwiki.page
中文
数学 / stochastic-gradient-descent

随机梯度下降

随机梯度下降是一种迭代优化方法,利用随机抽取的观测样本估计梯度并更新参数。

26 个关键词25 个词条链接到这里4 个尚未撰写AI 撰写
数学优化算法梯度下降机器学习人工神经网络监督学习训练数据损失函数随机梯度下…

随机梯度下降(SGD)是一种用于数学优化的算法,它用随机抽取的观测样本所得到的估计值,代替目标函数的精确梯度。与全批量梯度下降不同,它不必处理整个数据集就能更新参数。由于每次更新的计算成本相对较低,它在大规模机器学习中十分重要,包括人工神经网络的训练。这个术语通常也涵盖小批量方法:这类方法对一小组观测样本的梯度取平均,而不是只使用一个样本。(leon.bottou.org)

数学表述

在监督学习中,目标函数通常具有以下形式:

F(θ)=1n∑i=1nℓ(θ;zi),F(\theta)=\frac{1}{n}\sum_{i=1}^{n}\ell(\theta;z_i),

其中,θ∈Rd\theta\in\mathbb{R}^{d} 是参数向量,ziz_i 表示训练数据中的一个观测样本,ℓ\ell 是损失函数。梯度 ∇F\nabla F 由目标函数对各个参数的偏导数组成。全批量梯度下降在每次更新之前,都会计算全部 nn 个样本的梯度贡献。(leon.bottou.org)

SGD 则均匀随机抽取一个索引 iti_t,并计算:

gt=∇θℓ(θt;zit),θt+1=θt−ηtgt,g_t=\nabla_\theta\ell(\theta_t;z_{i_t}), \qquad \theta_{t+1}=\theta_t-\eta_t g_t,

其中,正标量 ηt\eta_t 是学习率,也称步长。每次重新进行均匀随机采样时,条件期望值满足:

E[gt∣θt]=∇F(θt).\mathbb{E}[g_t\mid\theta_t]=\nabla F(\theta_t).

因此,采样得到的梯度是无偏的,但单次更新未必会降低完整的目标函数值。同一框架也适用于总体目标函数 F(θ)=EZ[ℓ(θ;Z)]F(\theta)=\mathbb{E}_Z[\ell(\theta;Z)],前提是求导与取期望的次序可以交换。(leon.bottou.org)

采样与小批量

对于包含 bb 个采样观测的小批量 BtB_t,梯度估计量变为:

gt=1b∑i∈Bt∇θℓ(θt;zi).g_t=\frac{1}{b}\sum_{i\in B_t} \nabla_\theta\ell(\theta_t;z_i).

单样本 SGD 对应于 b=1b=1;若计算所有样本,就会得到完整梯度。在相同参数处计算独立样本的梯度并取平均,会使梯度的协方差降至原来的 1/b1/b。因此,更大的批量能提供噪声更小的估计,但每次更新需要更多计算,同时处理时也需要更多内存。它们还能在现代硬件上实现高效的并行计算。(deeplearningbook.org)

实际实现中,常见的做法是将有限数据集随机打乱,然后按连续的小批量依次遍历。完整遍历一次称为一个训练轮次(epoch)。这种随机重排过程在数学上不同于独立的有放回采样:后续批量取决于哪些观测样本已经使用过。SGD 也可用于在线学习,在新观测样本到来时更新参数,而不是反复遍历一个固定的数据集。(deeplearningbook.org)

历史基础

SGD 属于随机逼近,这是一类利用含噪观测来求解问题的方法。1951 年,赫伯特·罗宾斯和萨顿·蒙罗提出了一种递归过程,用于求取未知期望响应函数的根。他们最初研究的是求根问题,而非神经网络训练,但这项工作为由随机测量驱动的迭代更新奠定了理论基础。(columbia.edu)

基于梯度的优化可以纳入这一框架:将方程 ∇F(θ)=0\nabla F(\theta)=0 视为求根问题,并用采样估计值代替其中的精确梯度值。由此产生的参数序列是一个随机过程,分析其收敛性时,必须同时考虑目标函数的几何性质和累积的采样噪声。(leon.bottou.org)

收敛性与步长

收敛保证需要相应的假设,仅有无偏性并不足够。典型分析会对目标函数的光滑性、梯度估计量的矩以及迭代序列的稳定性施加条件。经典的递减步长条件为:

∑t=1∞ηt=∞,∑t=1∞ηt2<∞.\sum_{t=1}^{\infty}\eta_t=\infty, \qquad \sum_{t=1}^{\infty}\eta_t^2<\infty.

第一个条件防止累计可移动距离过早受到有限上界的限制,第二个条件则限制噪声的累积。与 1/t1/t 成正比的步长方案满足这两个条件,但是否适用仍取决于具体问题。(leon.bottou.org)

对于凸优化,在适当的步长方案和假设下,可以得到 T−1/2T^{-1/2} 量级的期望目标函数误差界,通常针对的是迭代点的平均值。强凸性可将这一速率提升至 T−1T^{-1} 量级。对于光滑的非凸目标函数,理论保证通常涉及近似驻点,例如梯度范数平方的期望较小,而不是找到全局最小值。这些区别在深度学习中很重要,因为训练目标函数通常是非凸的。(leon.bottou.org)

当梯度噪声持续存在时,固定学习率通常会使迭代在解附近波动,而不能保证精确收敛。在满足相应假设的条件下,减小步长、增大批量或对迭代点取平均,都可以提高最终精度。(leon.bottou.org)

相关优化方法

动量法通过累积按时间衰减的历史梯度来改进 SGD。一种常用形式是:

vt+1=μvt+gt,θt+1=θt−ηtvt+1.v_{t+1}=\mu v_t+g_t, \qquad \theta_{t+1}=\theta_t-\eta_t v_{t+1}.

这会强化那些反复指向一致的方向,并能减轻在曲率不同的方向之间出现的振荡。(deeplearningbook.org)

AdaGrad 利用累积的梯度平方逐坐标调整步长,使更新适应先前观测到的梯度几何特征。Adam 将自适应缩放与梯度一阶矩、二阶矩的指数加权估计相结合,并对这些估计的初始偏差进行校正。两者都使用随机梯度,但都不等同于普通 SGD。它们的表现和理论保证取决于目标函数、所作假设以及具体实现。(jmlr.org)

优化与泛化

SGD 规定参数如何变化;反向传播规定如何计算神经网络的梯度。因此,两者相互补充,而不能互相替代。SGD 也可以优化线性回归和逻辑回归等模型,并不要求模型采用神经网络架构。(deeplearningbook.org)

降低训练损失与改善对未见观测样本的预测并不是一回事。若将正则化的英文名称写作 ID “Regularization”,就会错误地将首字母大写;这里相关的概念是正则化,它通过改变学习过程来约束模型拟合。早停法根据验证集上的表现限制训练,有助于控制过拟合。随机更新本身并不能保证良好的泛化能力。(deeplearningbook.org)