趋近智
一阶优化方法是训练许多机器学习模型的主力,特别是深度神经网络。尽管本课程侧重于高级方法,但对梯度下降的几种根本方法有扎实的理解是必需的。这些算法迭代地调整模型参数以最小化损失函数,主要依靠梯度,梯度指出最陡峭的上升方向。
梯度下降(常被称为批量梯度下降或BGD)是一种基础的优化方法。它使用整个训练数据集计算损失函数 J(θ) 关于参数 θ 的梯度。在迭代 t 时的参数更新规则是:
θt+1=θt−η∇θJ(θt)这里,η 是学习率,一个控制步长的超参数。尽管GD保证非凸函数的收敛到局部最小值,以及凸函数的收敛到全局最小值(在给定合适学习率的情况下),但对于现代机器学习中常见的大型数据集,计算整个数据集上的梯度可能在计算上不可行。每次更新都需要处理每一个训练样本。
为解决BGD的计算负担,随机梯度下降 (SGD) 在每一步只使用一个随机选择的训练样本 (x(i),y(i)) 来计算梯度并更新参数:
θt+1=θt−η∇θJ(θt;x(i),y(i))此外,通常使用包含 m 个样本的小批量数据(一个mini-batch),这在单样本SGD的计算效率和BGD更精确的梯度估计之间取得了折衷。这通常被称为小批量梯度下降,但在实践中常简称为SGD。
θt+1=θt−ηm1i=1∑m∇θJ(θt;x(i),y(i))SGD(无论是单样本还是小批量)的主要特点是梯度估计中引入了随机性或噪声。虽然这使得更新速度快得多,但趋向最小值的路径通常是不稳定的,表现出高方差。这种噪声有时可以帮助脱离浅层局部最小值,但这也意味着SGD通常会以锯齿状接近最优值,并且在不衰减学习率的情况下可能无法精确地稳定在最小值。
批量梯度下降与随机梯度下降的比较。
SGD更新中的高方差可能导致振荡,特别是在损失曲面弯曲陡峭的方向,而平坦方向上的进展仍然缓慢。动量方法旨在减弱这些振荡并加速收敛,通过将前一次更新向量 vt−1 的一个分数 γ(通常约为0.9)加到当前梯度步长中。
更新规则是:
vt=γvt−1+η∇θJ(θt)θt+1=θt−vt想象一个球从山上滚下来。动量 (vt) 在梯度持续指向下坡的方向上积累速度,使它能够更快地穿过平坦区域,并通过时间上的梯度平均来平滑更新路径。这通常会比标准SGD更快地收敛。
Nesterov加速梯度 (NAG) 是动量方法的一种改进。NAG不是在当前位置 θt 计算梯度然后加上动量项,而是采取“向前看”一步。它首先应用动量更新(估算下一个位置),然后在这个未来的估算位置计算梯度。
更新规则,尽管实现方式略有不同但都体现了向前看这一想法,是:
vt=γvt−1+η∇θJ(θt−γvt−1)θt+1=θt−vt表达式 θt−γvt−1 代表估算的未来位置。通过在这个向前看的位置计算梯度,NAG可以预测参数的去向并更有效地修正路径。这种“更智能”的动量通常比标准动量更快地收敛并表现更佳,尤其是在损失曲面复杂的问题上。
SGD、动量和NAG在损失曲面上的收敛路径图示。SGD表现出更多振荡,而动量和NAG采取更直接的路径趋向最优值(红圈)。
这些一阶方法,特别是带有动量或NAG的SGD,构成了当今许多优化器的根本。然而,它们对所有参数都依赖于单一的学习率 η,并且不能本质上适应损失曲面的几何形状。了解它们的行为和局限性促使人们研究更复杂的方法,例如自适应学习率和二阶方法,我们将在后续章节中介绍。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造