梯度下降是一种基础的优化算法,它通过沿梯度 $\nabla J(\theta)$ 的相反方向移动来迭代调整参数 $\theta$ 以最小化成本函数 $J(\theta)$。批梯度下降(Batch Gradient Descent, BGD)是该算法的第一个具体变体。“批次”这个名称指的是它的主要特点:在算法的每个步骤中,它将整个训练数据集作为一个批次进行处理。批梯度下降的工作方式假设你有一个包含 $m$ 个训练样本的数据集。要使用批梯度下降对参数 $\theta$ 进行一次更新,你需要遵循以下步骤:计算预测值: 对于当前的参数值 $\theta$,计算模型对训练集中每个样本的预测值。计算误差: 确定每个训练样本的误差(预测值与实际目标值之间的差异)。计算梯度: 计算成本函数 $\nabla J(\theta)$ 的梯度。这一重要步骤涉及平均化来自所有 $m$ 个训练样本对梯度的贡献。如果 $J_i(\theta)$ 表示与第 $i$ 个训练样本相关的成本,则总体梯度通常计算为: $$ \nabla J(\theta) = \frac{1}{m} \sum_{i=1}^{m} \nabla J_i(\theta) $$ 该梯度表示当前参数在整个数据集上最陡峭上升的平均方向。更新参数: 通过沿着梯度下降方向迈一步来调整参数 $\theta$,步长由学习率 $\alpha$ 决定: $$ \theta := \theta - \alpha \nabla J(\theta) $$这个整个循环,即处理所有 $m$ 个样本以计算一个梯度并执行一次参数更新,构成一个迭代或一个周期(epoch)(尽管有时“周期”严格指数据的一次完整遍历,这与一次 BGD 迭代完全吻合)。算法重复这些步骤,直到满足某个收敛条件,例如成本函数的变化变得非常小,或达到最大迭代次数。digraph BGD_Concept { rankdir=LR; node [shape=box, style=rounded, fontname="helvetica", fontsize=10]; edge [fontname="helvetica", fontsize=9]; subgraph cluster_data { label = "完整训练数据集 (m 个样本)"; bgcolor="#e9ecef"; node [shape=point, color="#4263eb"]; d1, d2, d3, d_dots [label=""]; d_dots [label="..."]; dm [label=""]; } subgraph cluster_process { label = "一次批梯度下降步骤 (周期)"; bgcolor="#a5d8ff"; calc_grad [label="计算梯度 \u2207J(\u03b8)\n使用所有 m 个样本"]; update_theta [label="更新参数 \u03b8\n\u03b8 := \u03b8 - \u03b1 * \u2207J(\u03b8)"]; calc_grad -> update_theta [label=" 每个周期一次更新 "]; } {d1, d2, d3, d_dots, dm} -> calc_grad [style=dashed, color="#868e96", arrowhead=none]; }批梯度下降中的单一步骤涉及在更新模型参数之前,基于整个训练数据集计算梯度。批梯度下降的特点优点:稳定收敛: 因为梯度是在整个数据集上计算的,所以它能提供总体成本函数真实梯度的可靠估计。这通常会使得收敛路径更平滑地趋向最小值,尤其对于凸成本函数,在给定合适的学习率的情况下,它能保证找到全局最小值。与其他变体相比,其更新噪音较小。并行化: 每个样本的梯度贡献 ($ \nabla J_i(\theta) $) 的计算通常可以跨样本并行进行,从而在合适的硬件上加速梯度计算步骤。缺点:计算成本高: 主要缺点是每次迭代的计算开销。在对参数进行一次更新之前,计算梯度需要处理每一个训练样本。这对于现代机器学习中常见的超大数据集来说,速度极慢且资源消耗大。内存需求大: 算法可能需要将整个数据集加载到内存中来计算梯度,这对于超出可用 RAM 的数据集来说可能不可行。不支持在线学习: BGD 需要提前提供整个数据集,并且不能轻易地整合新到达的数据点(在线学习)。模型需要用增强后的数据集从头开始重新训练。何时使用批梯度下降尽管在大数据集上存在局限性,BGD 方法简单,并且在以下情况下可以有效:数据集足够小,可以轻松适应内存并在合理的时间范围内完成处理。倾向于平滑稳定的收敛路径,而非更快但可能噪音较大的更新。成本函数已知为凸函数,确保收敛到全局最小值。批梯度下降提供了梯度如何引导优化的基础性认识。然而,其计算需求为更具扩展性的替代方法铺平了道路,例如随机梯度下降和ミニ-批梯度下降,我们将在后续内容中探讨这些方法。这些方法以牺牲全批次梯度的稳定性来换取更快的更新。