文章目录
- 前言
- 随机梯度下降SGD
- Mini-batch 随机梯度下降
- 常见优化算法的改进版本
前言
梯度下降更新的通用形式:
论文中类似的表达形式,都表示根据 损失函数对这些参数的梯度 进行更新参数。梯度值较大时,说明当前控制参数对损失有较大的影响,需要通过梯度下降减小该参数的值,以降低损失。
其中η表示学习率,如果学习率太大,损失函数会在训练过程中出现震荡甚至不收敛。如果学习率太小,损失函数会下降得非常缓慢,训练过程耗时较长。一个好的学习率会使损失函数稳步下降。
随机梯度下降SGD
它是梯度下降法(Gradient Descent)的一种变体,区别在于它并不是在整个数据集上计算梯度,而是在每次更新时使用数据集的一个小批量数据(mini-batch)或单个样本来计算梯度。
全批量梯度下降
(Batch Gradient Descent):在传统的梯度下降算法中,所有样本都会被用来计算损失函数的梯度。虽然这种方法保证每次更新的方向最优,但在大数据集上计算每次更新所需的梯度非常耗时。
随机梯度下降(SGD)
:为了加快梯度计算速度,SGD 不再使用全部样本来计算梯度,而是随机选取一个样本或一个小批量样本进行梯度估计和参数更新。这降低了每次更新的计算开销,并引入了随机性,使得模型能够更快跳出局部最优解。
类似的,论文中使用随机梯度下降方法,用局部数据集更新局部模型的公式如下:
Mini-batch 随机梯度下降
为了缓解 SGD 的收敛波动问题,通常使用 Mini-batch SGD,即每次使用一个小批量样本(mini-batch)来计算梯度。这种方法结合了全批量梯度下降的稳定性和随机梯度下降的高效性:
每次选取一个固定大小的 mini-batch 进行参数更新,而不是单个样本。
常见的 mini-batch 大小为 32、64、128 等。
常见优化算法的改进版本
Momentum(动量法):
为了加速 SGD 收敛,加入动量项,可以让更新的方向更为平滑,减少梯度方向的波动。
更新公式为
Adam(自适应动量估计):
Adam 是目前最常用的优化算法之一,它结合了动量和自适应学习率的方法,根据梯度的一阶和二阶矩自适应调整学习率。它比标准的 SGD 更加稳定,适合处理稀疏梯度或高维数据。