1. 深度学习优化算法概述:从梯度下降到现代优化器
深度学习模型的训练本质上是一个高维空间中的优化问题。我们需要找到一组参数,使得损失函数的值最小化。这个过程中,优化算法的选择直接影响模型的收敛速度和最终性能。在深度学习发展初期,梯度下降(Gradient Descent)及其变种几乎是唯一的选择。但随着模型复杂度的提升和数据规模的扩大,研究者们陆续提出了动量法、AdaGrad、RMSProp、Adam等一系列改进算法。
关键认知:优化算法不是越新越好,不同场景下需要选择适合的优化器。例如全批量梯度下降在小数据集上表现稳定,而Adam更适合处理稀疏梯度问题。
1.1 梯度下降的三重面孔
最基本的梯度下降算法有三种实现形式:
-
批量梯度下降(BGD):使用整个训练集计算梯度
- 优点:梯度方向准确,收敛稳定
- 缺点:计算开销大,不适合大数据集
- 更新公式:θ = θ - η·∇θJ(θ)
-
随机梯度下降(SGD):每次随机选择一个样本计算梯度
- 优点:计算速度快,可以online learning
- 缺点:梯度波动大,收敛不稳定
- 实际代码示例:
python复制for epoch in range(epochs): np.random.shuffle(data) for sample in data: grad = compute_gradient(sample) params -= lr * grad
-
小批量梯度下降(Mini-batch GD):折中方案,使用小批量数据
- 通常batch size设为32-256
- 充分利用GPU并行计算能力
- 是现代深度学习最常用的形式
我在实际项目中发现,当训练ResNet等大型网络时,将batch size设置为128或256往往能在训练速度和模型性能间取得较好平衡。过小的batch size会导致梯度估计噪声太大,而过大的batch size又可能使模型陷入sharp minima。
1.2 学习率的艺术
学习率η是梯度下降中最重要的超参数之
