常见深度学习优化器总结

一、优化器简介

    在深度学习中,优化器(optimizer)是一种用于调整神经网络模型参数以最小化损失函数的算法。优化器的目标是根据输入数据和期望的输出标签来调整模型的权重和偏置,使得模型能够更好地拟合训练数据并在未见过的数据上表现良好。 

二、常见的优化器

1、SGD(随机梯度下降)
功能:用于优化模型参数,通过更新参数以最小化损失函数。
公式:θ = θ - learning_rate * ∇J(θ)
其中,θ表示模型参数,learning_rate表示学习率,∇J(θ)表示损失函数J关于θ的梯度。
用法:常用于深度学习中的优化过程,每次迭代更新参数时仅使用一个样本或一小批样本。
主要参数:learning_rate(学习率)
优点:易于实现和理解,适用于大规模数据集。
缺点:可能陷入局部最小值,参数更新的震荡。
2、ASGD(平均随机梯度下降)
功能:通过平均多个随机梯度的方式来改善SGD的收敛性。
公式:θ = θ - learning_rate * (1/T) * (∑∇J(θ))
其中,θ表示模型参数,learning_rate表示学习率,T表示迭代次数,∇J(θ)表示损失函数关于θ的梯度。
用法:常用于处理大规模数据集时,通过平均梯度来减小变动性。
主要参数:learning_rate(学习率)
优点:通过平均梯度来减小变动性,容易跳出局部最小值。
缺点:需要额外的计算成本。
3、Adadelta
功能:根据梯度的二阶矩和参数更新的自适应学习率来调整参数。
公式:Δθ_t = - (sqrt(E[g^2]_t + ε) / sqrt(E[Δθ^2]_t + ε)) * g_t θ_t+1 = θ_t + Δθ_t
其中,θ表示模型参数,g表示梯度,ε表示一个很小的常数,E表示梯度平方的指数加权平均。
用法:自动调节学习率,适用于非稀疏数据和大规模模型。
主要参数:epsilon(一个很小的常数)
优点:自适应地调整学习率,减小学习率的手动调节。
缺点:需要额外的计算成本。
4、AdaGrad(Adaptive Gradient)
功能:通过自适应地调整不同参数的学习率来训练模型。
公式:θ_t+1 = θ_t - (learning_rate / (sqrt(Sum(g_t^2)) + ε)) * g_t
其中,θ表示模型参数,g表示梯度,Sum表示梯度平方的累积和,ε表示一个很小的常数。
用法:适用于处理稀疏梯度和非稀疏梯度的问题。
主要参数:learning_rate(学习率),epsilon(一个很小的常数)
优点:自适应地调整学习率,适用于非稀疏数据。
缺点:学习率可能会过于降低,导致训练过程中停滞。
5、Adam(自适应矩估计)
功能:结合了动量优化器和RMSprop的优点,自适应地调整学习率并具有较好的收敛性和鲁棒性。
公式:
.计算梯度 g 对于所有可训练参数: g = compute_gradient()
更新一阶矩估计: m = beta1 * m + (1 - beta1) * g
更新二阶矩估计: v = beta2 * v + (1 - beta2) * g^2校正一阶矩估计的偏差: m_hat = m / (1 - beta1^t) (t 表示当前迭代步骤的次数)
校正二阶矩估计的偏差: v_hat = v / (1 - beta2^t) (t 表示当前迭代步骤的次数) 更
新参数: parameter = parameter - learning_rate * m_hat / (sqrt(v_hat) + ε)(ε 是为了数值稳定性而加的小常数) 其中m 是一阶矩估计,用于追踪梯度的平均值,v 是二阶矩估计,用于追踪梯度的平方的平均值。通过将一阶矩估计和二阶矩估计进行归一化,即校正偏差,可以缓解训练初期的参数更新问题。此外,epsilon 是为了避免除以零的情况而添加的小常数,以保持数值稳定性。
用法:适用于大型模型和大规模数据集。
主要参数:learning_rate(学习率),beta1(一阶矩的平均率),beta2(二阶矩的平均率),epsilon(一个很小的常数)
优点:自适应地调整学习率,具有较好的收敛性和鲁棒性。
缺点:需要额外的计算成本。
6、AdamW
功能:Adam的一种改进版本,通过引入权重衰减来解决Adam在参数优化中的偏差问题。
公式:与Adam公式相同,但在更新参数时应用了权重衰减。
用法:适用于神经网络的权重衰减问题。
主要参数:与Adam相同
优点:解决了Adam的偏差问题。
缺点:需要额外的计算成本。
7、Adamax
功能:Adam的一种变体,采用了∞-范数来近似参数的无穷范数。
公式:参考Adam的公式,用g_t∞替换了g_t2。
用法:适用于处理稀疏梯度的问题。
主要参数:与Adam相同
优点:适用于处理稀疏梯度的问题。
缺点:需要额外的计算成本。
8、SparseAdam
功能:Adam的一种变体,适用于稀疏梯度的情况。
公式:参考Adam的公式,但只计算非零梯度分量的指数加权平均。
用法:适用于处理稀疏梯度的问题。
主要参数:与Adam相同
优点:适用于处理稀疏梯度的问题。
缺点:需要额外的计算成本。
9、RMSprop(Root Mean Square Propagation)
功能:根据梯度的历史信息来自适应地调整学习率。
公式:参考Adagrad的公式,但使用梯度的指数加权平均而不是累积和。
用法:适用于处理非稀疏数据和长期依赖的问题。
主要参数:learning_rate(学习率),epsilon(一个很小的常数)
优点:自适应地调整学习率,适用于非稀疏数据和长期依赖问题。
缺点:学习率可能会过于降低,导致训练过程中停滞。
10、Rprop(弹性反向传播)
功能:通过自适应地调整参数更新步长,并在参数更新过程中减小震荡。
用法:适用于非常深的神经网络和强大的计算资源。
主要参数:delta_pos(正梯度情况下的学习率增量),delta_neg(负梯度情况下的学习率增量)
优点:自适应地调整学习率,减小震荡。
缺点:对模型和资源的要求较高。
11、LBFGS(Limited-memory Broyden-Fletcher-Goldfarb-Shanno)
功能:利用BFGS拟牛顿法的变种来优化损失函数。
公式:使用BFGS拟牛顿法的迭代公式。
用法:适用于小批量数据集和较小规模的模型。
主要参数:max_iter(最大迭代次数),max_eval(最大函数评估次数)
优点:适用于小规模模型和小批量数据集。
缺点:对内存的需求较高,不适用于处理大规模数据集。

三、总结

我们常用的优化有以下几个:
随机梯度下降(SGD)
AdaGrad(Adaptive Gradient)
RMSprop(Root Mean Square Propagation)
Adam(Adaptive Moment Estimation)
这些优化器在深度学习中具有广泛的应用,但最适合的优化器会因问题和数据集而异。根据具体情况,可能需要尝试不同的优化器来找到最佳的性能和收敛速度

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值