深度学习(十七):全批量梯度下降 (BGD)、随机梯度下降 (SGD) 和小批量梯度下降 (MBGD)

**梯度下降(Gradient Descent)**是深度学习中用于最小化损失函数(Loss Function)的核心优化算法。它的基本思想是:沿着损失函数对模型参数的梯度(即最陡峭的下降方向)的反方向,迭代地更新参数,直到收敛到局部(或全局)最小值。

在实践中,根据每次参数更新时所使用的训练样本数量,梯度下降算法被划分为三种主要变体,它们在计算效率、收敛速度和稳定性方面各有权衡。

全批量梯度下降 (Batch Gradient Descent, BGD)

1. 原理与方法

全批量梯度下降 ,通常简称为梯度下降 (GD) ,在每一次参数更新迭代时,都使用整个训练数据集来计算损失函数的梯度。

  • 数据使用量: N(整个数据集的样本总数)
  • 更新频率: 每一轮 (Epoch) 训练只更新一次参数。

流程:

  1. 将整个训练集输入网络。
  2. 计算所有 N 个样本的损失,并求平均损失。
  3. 计算平均损失对所有参数的梯度。
  4. 根据梯度更新参数,完成一次迭代。

2. 特点与权衡

优点 缺点
精确稳定的梯度: 由于使用了全部数据,计算出的梯度是损失函数的真实梯度,方差最小,参数更新方向最准确。 训练速度极慢: 对于大型数据集,每次迭代都需要遍历全部样本,计算量巨大,耗时极长。
收敛路径平滑: 损失函数会沿着一个相对平滑的路径单调下降,能够稳定地收敛到局部最小值(对于凸函数可收敛到全局最小值)。 内存消耗巨大: 需要将整个训练集加载到内存或显存中进行计算。
适合凸损失函数: 在损失函数是凸函数的情况下,收敛性有理论保证。 容易陷入局部最优: 收敛路径过于平稳,缺乏随机性,在非凸的深度学习损失曲面中,容易在"碗底"的局部最优解处停止,缺乏逃逸能力。

3. 应用场景

在现代深度学习中,由于数据集规模庞大,BGD 几乎很少被单独使用,它主要用于以下场景:

  • 数据集非常小(如几百个样本)。
  • 需要精确追踪损失函数随迭代次数的变化。
  • 作为理论分析的基础。

随机梯度下降 (Stochastic Gradient Descent, SGD)

1. 原理与方法

随机梯度下降 是 BGD 的一个极端版本。它在每一次参数更新迭代时,只随机选取训练集中的 一个样本 来计算梯度。

  • 数据使用量: 1
  • 更新频率: 每处理一个样本就更新一次参数。在一个 Epoch 内,如果数据集大小为 N,则参数更新 N 次。

流程:

  1. 从训练集中随机选取一个样本 (xi,yi)。
  2. 计算该样本的损失。
  3. 计算该样本损失对参数的梯度。
  4. 根据梯度更新参数,完成一次迭代。
  5. 重复 N 次完成一个 Epoch。

2. 特点与权衡

优点 缺点
训练速度最快: 每次迭代计算量极小(只需处理一个样本),参数更新频率最高,收敛速度在样本数上非常快。 梯度方差大(更新路径"嘈杂"): 单一样本的梯度是对真实梯度的随机近似,噪声大,更新方向波动性强。
内存消耗极低: 每次只需处理一个样本,对内存/显存要求最低。 收敛震荡剧烈: 学习路径波动大,不会平稳地收敛到最小值,而是在最小值附近不断震荡
更强的逃逸能力: 梯度中的随机性有助于模型跳出浅层的局部最小值,最终可能找到更好的全局/近似全局最优解。 无法充分利用硬件并行计算能力: 现代硬件(GPU/TPU)针对矩阵/向量运算优化,处理单个样本的效率远低于批量处理。

3. 应用场景

虽然 SGD 这个名称在深度学习文献中经常用来泛指所有随机优化器(包括小批量),但纯粹的单样本 SGD 在现代深度学习中也很少使用,因为它效率低下且更新路径过于不稳定。

小批量梯度下降 (Mini-Batch Gradient Descent, MBGD)

1. 原理与方法

小批量梯度下降 是 BGD 和 SGD 之间的一个最优折衷 方案,也是当前深度学习最常用、最推荐的优化算法。它在每次参数更新时,使用训练集中的一个**小批量(Mini-Batch)**样本来计算梯度。

  • 数据使用量: B(批量大小,通常 1<B<N)
  • 更新频率: 每处理 B 个样本就更新一次参数。在一个 Epoch 内,更新 N/B 次。

流程:

  1. 将训练集划分为 M=N/B 个小批量数据块。
  2. 选取第 k 个小批量 {(x(k),y(k))}i=1B 输入网络。
  3. 计算这 B 个样本的平均损失
  4. 计算平均损失对参数的梯度。
  5. 根据梯度更新参数,完成一次迭代。

2. 核心优势与特点

优点 缺点
平衡了稳定性和速度: 梯度方差小于 SGD(更稳定),更新频率高于 BGD(更快)。 需要调参: 批量大小 B 是一个需要优化的超参数。
高效利用硬件: 小批量数据可以高效地进行向量化和并行计算,充分利用 GPU/TPU 的矩阵运算能力,这是其核心优势。 收敛路径仍有波动: 相比 BGD,收敛路径仍有轻微波动,但比 SGD 平稳得多。
适中的逃逸能力: 适度的梯度噪声使其能有效避免陷入局部最优解。

3. 批量大小(Batch Size, B)的选择

批量大小 B 是一个关键超参数,它直接影响训练的效率泛化能力

批量大小 B 影响 适用场景
小批量 (e.g., B=16,32,64) 泛化能力更好,收敛速度更快,内存效率高。梯度噪声略大。 大多数深度学习任务的标准选择,如 CV 和 NLP。
大批量 (e.g., B=256,512,1024) 梯度估计更准确,收敛更稳定,但可能牺牲泛化能力(大批量可能导致泛化能力下降)。 硬件资源充足,或需要更精确梯度的场景。

三种方法的详细对比与总结

下表从多个维度对这三种梯度下降变体进行总结比较:

特性 全批量梯度下降 (BGD) 随机梯度下降 (SGD) 小批量梯度下降 (MBGD)
数据量/次更新 整个数据集 N 1 个样本 B 个样本 (1<B<N)
更新频率/Epoch 1 次 N 次 N/B 次
梯度方差/噪声 最低 (真实梯度) 最高 (随机噪声) 中等
收敛路径 平稳,单调下降 剧烈震荡,最终在最小值附近徘徊 平稳且快速,有轻微震荡
收敛速度 (迭代次数) 慢(迭代次数少,但单次耗时长) (更新频繁) 最快(平衡了效率和更新频率)
计算效率 (单次计算成本高) 低(无法并行计算) (可高度并行化)
内存/显存 中等
深度学习应用 几乎不用 理论基石,但纯粹的单样本很少用 工业界和研究中最常用的方法

总结

小批量梯度下降(MBGD)在现代深度学习中占据主导地位,但它仍然是梯度下降优化器家族的一个基础版本 。为了进一步提升训练效率、加速收敛,并在非凸损失曲面上表现更好,研究人员在 MBGD 的基础上加入了动量(Momentum)、**自适应学习率(Adaptive Learning Rate)**等机制,从而发展出了更先进的优化器:

  1. 带动量的 SGD (SGD with Momentum): 使用梯度的历史信息来平滑更新路径,减少震荡,加速收敛,尤其是沿着平坦方向。
  2. 自适应学习率优化器:
    • Adagrad/Adadelta/RMSprop: 根据参数的历史梯度平方和,为每个参数设置不同的学习率,对不常更新的参数给予更大的学习率。
    • Adam (Adaptive Moment Estimation): 结合了动量和 RMSprop 的优点,同时使用梯度的一阶矩 (均值)和二阶矩(非中心方差)来调整每个参数的学习率,是当前最流行的优化器之一。

核心总结: 深度学习中的优化技术,无论是早期的 SGD,还是现代的 Adam,其基础计算框架都是小批量梯度下降 (MBGD)。MBGD 巧妙地利用了现代硬件的并行计算能力,同时在梯度稳定性和逃逸局部最优的能力之间找到了完美的平衡,是实现高效深度学习训练的基石。

相关推荐
我星期八休息3 小时前
C++异常处理全面解析:从基础到应用
java·开发语言·c++·人工智能·python·架构
常州晟凯电子科技3 小时前
海思Hi3516CV610/Hi3516CV608开发笔记之环境搭建和SDK编译
人工智能·笔记·嵌入式硬件·物联网
William_cl3 小时前
2025 年 AI + 编程工具实战:用新工具提升 50% 开发效率
人工智能
珊珊而川4 小时前
Reflexion对ReAct的改进
人工智能
量化交易曾小健(金融号)4 小时前
GPT-5 Instant能修补模型情商漏洞了
人工智能
听到微笑4 小时前
LLM 只会生成文本?用 ReAct 模式手搓一个简易 Claude Code Agent
人工智能·langchain·llm
沐雪架构师4 小时前
让 Agent 说“机器能懂的话”——LlamaIndex 构建 Agent 的结构化输出策略
人工智能
Elastic 中国社区官方博客4 小时前
在 Elasticsearch 中改进 Agentic AI 工具的实验
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
AI数据皮皮侠4 小时前
中国地级市旅游人数、收入数据(2000-2023年)
大数据·人工智能·python·深度学习·机器学习·旅游