1. 优化算法概述:从SGD到AdamW的演进之路
在深度学习模型的训练过程中,优化算法扮演着至关重要的角色。作为一名长期从事算法研发的工程师,我见证了优化算法从最基础的梯度下降(GD)到如今广泛使用的AdamW的整个发展历程。这些算法各有特点,适用于不同的场景和需求。
优化算法的核心任务是调整模型参数,使损失函数的值最小化。这个过程看似简单,实则充满挑战:如何在保证收敛速度的同时避免陷入局部最优?如何处理不同参数的不同学习需求?如何平衡计算效率和收敛精度?这些问题推动着优化算法的不断演进。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础算法解析:SGD及其变种
2.1 批量梯度下降(BGD)的原理与局限
批量梯度下降(Batch Gradient Descent)是最基础的优化算法,其核心思想是在每次参数更新时使用整个训练集的梯度。数学表达式为:
θ = θ - η·∇θJ(θ)
其中θ表示模型参数,η是学习率,∇θJ(θ)是整个数据集上的损失函数梯度。
BGD的主要优点在于:
- 每次更新方向都是当前最优的下降方向
- 理论上有很好的收敛保证
但实际应用中存在明显缺陷:
- 计算成本高:每次迭代都需要计算全量数据的梯度
- 内存消耗大:大规模数据集无法一次性载入内存
- 容易陷入局部最优:缺乏随机性,难以跳出不良的局部极小点
提示:当数据集超过100万样本时,BGD通常就变得不实用了,因为每次迭代的计算开销实在太大。
2.2 随机梯度下降(SGD)的突破与优势
随机梯度下降(Stochastic Gradient Descent)通过每次随机选取单个样本计算梯度,解决了BGD的计算效率问题:
θ = θ - η·∇θJ(θ;x(i);y(i))
其中(x(i),y(i))是随机选取的一个训练样本。
SGD的核心优势包括:
- 计算效率高:每次迭代只需处理一个样本
- 内存友好:不需要存储整个数据集的梯度
- 随机性帮助逃离局部最优:噪声可能推动参数跳出不良的局部极小点
但SGD也存在一些挑战:
- 更新方向波动大:单个样本的梯度不能代表整体分布
- 收敛路径曲折:需要精心调整学习率
- 可能错过最优解:随机性可能导致在最优解附近震荡
2.3 Mini-batch SGD的平衡之道
实践中,最常用的是Mini-b
