常见的优化器

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 是为了避免除以零的情况而添加的小常数,以保持数值稳定性。

用法:适用于大型模型和大规模数据集。

主要参数

  1. learning_rate(学习率)
  2. beta1(一阶矩的平均率)
  3. beta2(二阶矩的平均率)
  4. epsilon(一个很小的常数)
  • 优点:自适应地调整学习率,具有较好的收敛性和鲁棒性。
  • 缺点:需要额外的计算成本

6、AdamW

功能:Adam的一种改进版本,通过引入权重衰减来解决Adam在参数优化中的偏差问题。

公式:与Adam公式相同,但在更新参数时应用了权重衰减。

用法:适用于神经网络的权重衰减问题。

主要参数:与Adam相同

  • 优点:解决了Adam的偏差问题。
  • 缺点:需要额外的计算成本。

7、Adamax

功能:Adam的一种变体,采用了∞-范数来近似参数的无穷范数。

公式:参考Adam的公式,用g_t^∞替换了g_t^2。

用法:适用于处理稀疏梯度的问题。

主要参数:与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)

这些优化器在深度学习中具有广泛的应用,但最适合的优化器会因问题和数据集而异。根据具体情况,可能需要尝试不同的优化器来找到最佳的性能和收敛速度

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch中常见优化器有: 1. SGD (Stochastic Gradient Descent):随机梯度下降法,是最基本的优化器,使用最广泛。它通过计算每个样本的损失函数梯度来更新模型参数。 2. Adam (Adaptive Moment Estimation):自适应矩估计算法,是一种自适应学习率优化算法。它基于梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,能够有效地处理稀疏梯度和非平稳目标函数。 3. Adagrad (Adaptive Gradient Algorithm):自适应梯度算法,是一种自适应学习率优化算法。它通过累积每个参数的梯度平方和来自适应地调整每个参数的学习率,在学习初期效果非常好,但随着训练的进行,学习率会逐渐减小,导致模型学习速度变慢。 4. Adadelta (Adaptive Delta):自适应 Delta 算法,是一种自适应学习率优化算法。它基于梯度的一阶矩估计和二阶矩估计来自适应地调整每个参数的学习率,能够有效地处理学习率下降过快的问题。 5. RMSprop (Root Mean Square Propagation):均方根传播算法,是一种自适应学习率优化算法。它通过累积每个参数的梯度平方和来自适应地调整每个参数的学习率,并使用一个移动平均来平滑学习率的变化,能够有效地处理稀疏梯度和非平稳目标函数。 6. AdamW:Adam的一种变体,主要的区别在于对权重衰减的处理方法不同,AdamW采用L2正则化的方式。 以上是PyTorch中常见优化器,每种优化器都有其独特的优势和适用场景,需要根据具体情况选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值